create-engine について
create-engineは、Rails engine、プラグイン、engine gemの作成、スキャフォールド、リファクタリングを支援するスキルです。種類の選択、ホストアプリとの契約定義、最小構成の作成、統合の検証を案内します。
主な機能
- 01engineの種類選択ガイド
- 02ホストアプリ契約の定義
- 03スキャフォールドと名前空間の規則
- 04Rakeとルートの検証ポイント
- 05統合テストの案内
活用シーン
- 01mountable Rails engineの構築
- 02ホストアプリとの統合境界の定義
- 03既存Railsプラグインのリファクタリング
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ igmarin/ rails-agent-skills --skill create-engineインストール後、Claude Code で/create-engineを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
EXAMPLES.mdreference.mdTESTING.mdassets/examples.mdREADME_NOTE.txtrelease-checklist.mdscripts/generate_engine_scaffold.sh詳細
エンジンの作成
Rails エンジン、Rails プラグイン、またはエンジン gem を作成、スキャフォールド、リファクタリングするタスクでは、このスキルを使用してください。
このスキルでは、構造と設計に焦点を当てます。インストーラーの詳細、充実したテストカバレッジ、リリースワークフロー、ドキュメント作成には、関連するスキルを使用してください。
クイックリファレンス
| エンジンの種類 | 使用する場面 |
|---|---|
| プレーンな gem | Rails のフックやアプリディレクトリが不要で、純粋な Ruby ライブラリの場合 |
| Railtie | Rails の初期化フックが必要だが、モデル、コントローラー、ルート、ビューは不要な場合 |
| エンジン | Rails のオートロードパス、イニシャライザー、マイグレーション、アセット、ジョブ、またはホストとの統合が必要な場合 |
| マウント可能なエンジン | 独自のルート、コントローラー、ビュー、アセット、名前空間の境界が必要な場合 |
HARD-GATE
Before engine work is complete, confirm all of the following:
STRUCTURE & CONTRACT:
1. Root file requires only version, configuration, and engine.
2. Public engines use isolate_namespace; configuration exposes .configure block.
3. Host model references are configurable strings (e.g., "User"), never hard-coded ::User.
4. Host-app contract is documented (see Host App Contract section).
SAFETY CHECKS:
5. Engine code never auto-applies migrations at boot (no db:migrate, ActiveRecord::Migrator, or config.paths['db/migrate'] in initializers).
6. Initializers are idempotent and safe in development reloads.
7. Assets and generators are namespaced and idempotent.
VERIFICATION COMMANDS:
8. Dummy app exists: `ls spec/dummy` or `ls test/dummy` should return the app directory.
9. Integration tests pass: `bundle exec rspec` or `bundle exec rake test` exits 0.
10. Routes load correctly: `bundle exec rails routes` inside dummy app shows engine routes.
11. No hard-coded host constants: `grep -r "::User\|::Employee" lib/ app/` returns nothing.
12. No migration auto-apply patterns: `grep -r "db:migrate\|ActiveRecord::Migrator\|config.paths\['db/migrate'\]" lib/` returns nothing.
基本的な手順
- コードを書く前にエンジンの種類を特定します。適切なジェネレーターでスキャフォールドします。
rails plugin new my_engine --mountable # mountable engine rails plugin new my_engine --full # full engine (non-isolated) rails plugin new my_engine # plain Railtie/gem - ホストアプリとの契約を定義します(ホストが提供するもの、エンジンが公開するもの、サポートされる拡張ポイント)。契約の完全なテンプレートについては、reference.md を参照してください。
- 最小限のエンジン構造を作成します。チェックポイント: エンジン内で
bundle exec rakeが成功すること。 - 名前空間の内側に機能を実装します。チェックポイント: ダミーアプリのルートにエンジンをマウントし、
bundle exec rails routesで確認します。 - ダミーアプリを通じた最低限の統合テストを作成します。カバレッジ要件については TESTING.md を参照してください。
- 次の作業を行う人が理解できるよう、ホストアプリとの契約を明確に文書化します。
ユーザーがエンジンの種類を指定していない場合は、求められている動作から種類を推測し、選択した種類を明示してください。
その他のリソース
- reference.md — ホストアプリとの契約の完全なテンプレート、推奨ファイル構成、コードスキャフォールドの例
- EXAMPLES.md — エンジンの詳細な例
- TESTING.md — カバレッジ要件とダミーアプリのセットアップ
- assets/examples.md
- assets/release-checklist.md
出力形式
Rails エンジンの作成またはスキャフォールドを依頼された場合、出力する answer.md は次の形式に従う必要があります。
- 具体的な成果物ファイル:エンジンの名前空間に正しく対応した、生成される
.gemspecとRakefileの完全な内容を示します。 - 検証と Rake の結果:エンジン内で
bundle exec rakeが成功する(終了コード 0)ことを明示し、成功を示す出力ブロックをシミュレーションして提示します。 - 統合テストのカバレッジ:設定、ルーティング、HTTP リクエストフロー、ドメインサービス、ホスト統合フックを網羅する統合テストの spec を作成します。必要な spec のカテゴリとパスについては TESTING.md を参照してください。モデル/サービスの単体テストは、リクエスト/統合テストとは分けてください。
- 言語:明示的に別の言語が指定されていない限り、英語を使用してください。
連携
| スキル | 連携する場面 |
|---|---|
| test-engine | ダミーアプリのセットアップ、統合テスト、回帰テストカバレッジ |
| review-engine | 指摘事項を優先する監査、構造レビュー |
| document-engine | README、インストールガイド、ホストアプリとの契約に関するドキュメント |
| create-engine-installer | ジェネレーター中心のセットアップ、インストールスクリプト、マイグレーションのコピー |
| generate-api-collection | エンジンが HTTP エンドポイントを公開する場合(Postman コレクションの生成/更新) |
コメント
Markdown 対応