返回顶部
d

dhh-rails-styleDHH风格编码

This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style. It applies when writing Ruby code, Rails applications, creating models, controllers, or any Ruby file. Triggers on Ruby/Rails code generation, refactoring requests, code review, or when the user mentions DHH, 37signals, Basecamp, HEY, or Campfire style. Embodies REST purity, fat models, thin controllers, Current attributes, Hotwire patterns, and the "clarity over cleverness" philosophy.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.0
安全检测
已通过
334
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

dhh-rails-style


将37signals/DHH的Rails惯例应用于Ruby和Rails代码。此技能提供从分析生产环境37signals代码库(Fizzy/Campfire)和DHH的代码审查模式中提取的全面领域专业知识。


核心理念

最好的代码是你没有写的代码。第二好的代码是明显正确的代码。

纯Rails已足够:

  • - 富领域模型优于服务对象
  • CRUD控制器优于自定义操作
  • 使用Concerns实现水平代码共享
  • 用记录而非布尔列表示状态
  • 一切基于数据库(无需Redis)
  • 在引入Gem之前先构建解决方案

他们刻意避免的内容:

  • - devise(改用约150行的自定义认证)
  • pundit/cancancan(在模型中进行简单的角色检查)
  • sidekiq(Solid Queue使用数据库)
  • redis(一切使用数据库)
  • viewcomponent(局部视图即可)
  • GraphQL(REST配合Turbo已足够)
  • factorybot(fixture更简单)
  • rspec(Minitest随Rails自带)
  • Tailwind(使用带层级的原生CSS)

开发理念:

  • - 发布、验证、优化——将原型质量代码投入生产以学习
  • 修复根本原因,而非表面症状
  • 写时操作优于读时计算
  • 数据库约束优于ActiveRecord验证


你在处理什么?

  1. 1. 控制器 - REST映射、concerns、Turbo响应、API模式
  2. 模型 - Concerns、状态记录、回调、作用域、POROs
  3. 视图与前端 - Turbo、Stimulus、CSS、局部视图
  4. 架构 - 路由、多租户、认证、任务、缓存
  5. 测试 - Minitest、fixtures、集成测试
  6. Gem与依赖 - 使用与避免的内容
  7. 代码审查 - 对照DHH风格审查代码
  8. 通用指导 - 理念与惯例

请指定数字或描述你的任务。


响应需阅读的参考文档
1, controllercontrollers.md
2, model
models.md |
| 3, view, frontend, turbo, stimulus, css | frontend.md |
| 4, architecture, routing, auth, job, cache | architecture.md |
| 5, test, testing, minitest, fixture | testing.md |
| 6, gem, dependency, library | gems.md |
| 7, review | 阅读所有参考文档,然后审查代码 |
| 8, general task | 根据上下文阅读相关参考文档 |

阅读相关参考文档后,将模式应用于用户的代码。


命名惯例

动词: card.close、card.gild、board.publish(而非set_style方法)

谓词: card.closed?、card.golden?(通过相关记录的存在性推导)

Concerns: 描述能力的形容词(Closeable、Publishable、Watchable)

控制器: 匹配资源的名词(Cards::ClosuresController)

作用域:

  • - chronologically、reversechronologically、alphabetically、latest
  • preloaded(标准预加载名称)
  • indexedby、sorted_by(参数化)
  • active、unassigned(业务术语,非SQL风格)

REST映射

不要使用自定义操作,而是创建新资源:

POST /cards/:id/close → POST /cards/:id/closure
DELETE /cards/:id/close → DELETE /cards/:id/closure
POST /cards/:id/archive → POST /cards/:id/archival

Ruby语法偏好

ruby

符号数组在括号内带空格


beforeaction :setmessage, only: %i[ show edit update destroy ]

私有方法缩进

private def set_message @message = Message.find(params[:id]) end

无表达式的case用于条件判断

case when params[:before].present? messages.page_before(params[:before]) else messages.last_page end

使用Bang方法实现快速失败

@message = Message.create!(params)

使用三元运算符处理简单条件

@room.direct? ? @room.users : @message.mentionees

关键模式

状态作为记录:
ruby
Card.joins(:closure) # 已关闭的卡片
Card.where.missing(:closure) # 未关闭的卡片

当前属性:
ruby
belongs_to :creator, default: -> { Current.user }

模型上的授权:
ruby
class User < ApplicationRecord
def can_administer?(message)
message.creator == self || admin?
end
end


领域知识

references/中的所有详细模式:

文件主题
controllers.mdREST映射、concerns、Turbo响应、API模式、HTTP缓存
models.md
Concerns、状态记录、回调、作用域、POROs、授权、广播 |
| frontend.md | Turbo Streams、Stimulus控制器、CSS层级、OKLCH颜色、局部视图 |
| architecture.md | 路由、认证、任务、Current属性、缓存、数据库模式 |
| testing.md | Minitest、fixtures、单元/集成/系统测试、测试模式 |
| gems.md | 使用与避免的内容、决策框架、Gemfile示例 |


当以下条件满足时,代码遵循DHH风格:

  • - 控制器映射到资源的CRUD动词
  • 模型使用concerns实现水平行为
  • 状态通过记录而非布尔值追踪
  • 没有不必要的服务对象或抽象层
  • 优先使用数据库支持的解决方案而非外部服务
  • 测试使用Minitest和fixtures
  • 使用Turbo/Stimulus实现交互(无重型JS框架)
  • 使用现代特性的原生CSS(层级、OKLCH、嵌套)
  • 授权逻辑位于User模型上
  • 任务是调用模型方法的浅层包装器


基于Marc Köhlbrugge的《非官方37signals/DHH Rails风格指南》,通过对Fizzy代码库中265个拉取请求的深度分析生成。

重要免责声明:

  • - LLM生成的指南——可能包含不准确之处
  • 来自Fizzy的代码示例根据OSaasy许可证授权
  • 与37signals无关联或未经其认可

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 dhh-rails-style-1776273726 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 dhh-rails-style-1776273726 技能

通过命令行安装

skillhub install dhh-rails-style-1776273726

下载

⬇ 下载 dhh-rails-style v0.1.0(免费)

文件大小: 23.64 KB | 发布时间: 2026-4-16 18:34

v0.1.0 最新 2026-4-16 18:34
Initial release of dhh-rails-style skill.

- Provides guidance and code review for Ruby and Rails projects in the 37signals/DHH style.
- Includes principles: favor vanilla Rails, fat models, thin controllers, REST purity, Current attributes, Hotwire/Turbo patterns, and "clarity over cleverness".
- Offers quick references for naming, REST resource mapping, Ruby idioms, and DHH-preferred patterns.
- Outlines what to use vs avoid (no devise, sidekiq, Redis, etc.).
- Supports architecture, testing, gems, code review, and general Rails style guidance.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部