用途:面向 Rails 可挂载引擎(mountable engine)的完整开发循环,按阶段组织为编写、测试、实现与审查、文档与发布。
主要能力:
- 编写阶段(create-engine 子技能):设计命名空间隔离、目录结构与 gemspec 配置。脚手架命令:rails plugin new my_engine --mountable --test-framework=rspec。需核对 lib/my_engine/engine.rb(含 isolate_namespace MyEngine)、lib/my_engine/version.rb、my_engine.gemspec、test/dummy/。结构检查命令:grep -r 'module MyEngine' lib/my_engine/engine.rb;ruby -e "require 'rubygems'; spec = Gem::Specification.load('my_engine.gemspec'); puts spec.validate";grep 'isolate_namespace|engine.config.isolate_namespace' lib/my_engine/engine.rb。检查失败需返回 create-engine 修复。
- 测试阶段(test-engine 子技能):搭建 dummy 应用、spec 辅助、工厂隔离与测试数据库,编写挂载、生成器与核心功能的特征测试。运行:cd my_engine && bundle exec rspec;bundle exec rspec --format progress 2>&1 | tail -5。集成前硬性门槛:引擎测试独立通过、命名空间隔离、迁移不冲突、依赖声明清晰。
- 实现与审查:复杂功能用 tdd agent,简单改动用单项技能;配合 review-engine、upgrade-engine。依赖检查:bundle exec rake dependencies;bundle exec bundler-audit check --update。
- 文档与发布:document-engine 负责安装、配置、用法示例与变更日志;release-engine 负责 SemVer 版本号、变更日志、升级说明与 git tag。发布命令:gem build my_engine.gemspec;gem push my_engine-1.0.0.gem;git tag v1.0.0 && git push origin v1.0.0。可选 create-engine-installer 提供幂等的 rails g my_engine:install 生成器。
快速参考:新引擎 → create-engine → test-engine;从应用抽取 → extract-engine → create-engine;发布 → review-engine → release-engine;不确定 → skill-router。
常见反模式与修复:命名空间泄漏(::MyEngine 而非 MyEngine::)需确认 isolate_namespace MyEngine;迁移冲突需在 dummy 应用中隔离运行引擎迁移;gemspec 依赖缺失需在第三阶段末运行依赖与审计检查;dummy 应用加载错误需按 test-engine 诊断步骤处理。
限制:资料未提供具体版本要求、支持平台、收费与效果信息。