solid-ruby 是 fusengine/claude-plugins 仓库下的一个技能插件,目标是在 Ruby/Rails 代码的编写与重构过程中,帮助落实 SOLID 原则和模块化架构。根据其说明,它适用于编写或重构 Ruby/Rails 代码、组织 app/modules/[feature]/ 各层结构,以及定义 contracts/ 模块等场景。
主要能力与强制规则:
- 架构分层:控制器放在 app/modules/[feature]/controllers/,服务放在 app/modules/[feature]/services/,仓储放在 app/modules/[feature]/repositories/,契约放在 app/modules/[feature]/contracts/,模型放在 app/modules/[feature]/models/,共享代码放在 app/modules/core/{services,contracts,concerns}/。明确禁止使用扁平的 app/ 结构,必须使用 app/modules/[feature]/。
- DRY 检查:在写任何新代码之前,必须在代码库中检索相似的模块、服务或逻辑,并检查 app/modules/core/services/ 与 app/modules/core/contracts/ 等共享位置;若已有相似代码,应扩展或复用而不是重复;若代码会被两个及以上功能使用,应放到 app/modules/core/。
- 关键规则:文件行数受 FUSE_SOLID_MAX_LINES 限制;控制器必须轻薄并委派给服务;契约只放在 contracts/ 目录(duck typing 模块);每个公开方法都要有 YARD 文档;每个文件都要有 # frozen_string_literal: true;共享行为(类似接口)使用 Concerns。
- 工作流:说明中标注为强制的工作流要求在任何实现之前并行启动三个代理,分别用于分析现有架构(fuse-ai-pilot:explore-codebase)、通过 Context7 核实 Ruby/Rails 文档(fuse-ai-pilot:research-expert)、以及实现后验证(fuse-ai-pilot:sniper)。
- 参考与模板:提供 solid-principles.md 作为总览,single-responsibility.md、open-closed.md、liskov-substitution.md、interface-segregation.md、dependency-inversion.md 分别对应 SRP/OCP/LSP/ISP/DIP 的细节,architecture-patterns.md 用于模块化 Rails;模板包括 module.md(功能模块结构)、service.md(业务逻辑服务)、contract.md(duck typing 契约)、model.md(Active Record 模型)、error.md(自定义异常)、test.md(RSpec 测试)。
- 反模式清单:文件超过 FUSE_SOLID_MAX_LINES 应按职责拆分;模型中的业务逻辑应提取到服务;胖控制器应委派给服务;扁平 app/ 结构应改为 app/modules/[feature]/;上帝类应按职责拆分。
使用方式:该技能通过 agent 工作流和强制规则约束代码编写过程,具体安装命令与运行入口在现有资料中暂未提供。适用场景包括 Ruby/Rails 项目中的新功能编写、代码重构、模块分层设计以及契约定义。限制方面,资料未说明其收费标准、支持的 Ruby/Rails 版本范围、运行环境要求或性能效果;文件行数限制的具体数值由 FUSE_SOLID_MAX_LINES 环境变量决定,资料未给出默认值。