mcpField
R
review-engine

review-engine

github.com/igmarinテスト・品質2838 回インストール4 週間前に更新
リポジトリ

review-engine について

既存の Rails エンジンを評価し、改善案を検討する開発者向けのレビュー用スキルです。アーキテクチャ、ホスト連携、初期化の安全性、マイグレーション、統合テストを優先し、指摘を重大度別に整理します。

主な機能

  1. 01名前空間の分離と公開 API の確認
  2. 02ホストアプリ連携の接点をレビュー
  3. 03初期化と再読み込みの安全性を検査
  4. 04マイグレーションとインストール用ジェネレーターの監査
  5. 05ダミーアプリと統合テストの確認
  6. 06重大度順に指摘を整理

活用シーン

  1. 01既存 Rails エンジンのレビュー
  2. 02ホストとの結合や起動時の副作用の評価
  3. 03マイグレーションとジェネレーターの安全性確認
  4. 04レビュー指摘に基づくエンジン改善の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/igmarin/rails-agent-skills --skill review-engine

インストール後、Claude Code で/review-engineを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

FINDINGS.md
assets/
examples.md
finding-schema.json

詳細

レビューエンジン

既存の Rails エンジンをレビューする場合や、改善案を提案する場合にこのスキルを使用します。

クイックリファレンス

レビュー項目主な確認事項
名前空間isolate_namespace が使用されているか。境界が明確か。ホストの定数が漏れていないか
ホストとの統合設定の接点、アダプターがあるか。ホストのモデルに直接アクセスしていないか
初期化読み込み時に副作用がないか。config.to_prepare にリロードセーフなフックがあるか
マイグレーション文書化され、ジェネレーター経由でコピーされるか。暗黙的または破壊的な手順がないか
ダミーアプリspec/ に存在するか。統合テストで使用されているか。実際のマウントと設定を検証しているか

厳格な必須条件

Before writing findings, confirm every row in the Quick Reference table has been addressed:
- [ ] Namespace isolation verified
- [ ] Host integration points checked
- [ ] `engine.rb` initializer blocks inspected
- [ ] Migration/generator flow confirmed
- [ ] Dummy app presence and usage confirmed
- [ ] Integration tests exercise real mount

If any box cannot be checked (e.g., file not provided), record it as an open assumption.

基本的な手順

  1. エンジンの種類と目的を特定します。 lib/<engine_name>/engine.rb と lib/<engine_name>/railtie.rb を読みます。名前空間が分離されているか、プレーンなエンジンかを確認します。
  2. 名前空間と公開 API の範囲を調べます。 isolate_namespace と、修飾されていないトップレベルの定数参照を確認します。
  3. ホストアプリとの統合箇所を確認します。 ホストの定数への直接参照を指摘します。ホストへの依存が設定の接点を介して渡されていることを確認します。
  4. 初期化とリロード時の動作を確認します。 initializer、config.to_prepare、ActiveSupport.on_load を調べます。イニシャライザブロック外で、require 時にグローバル状態を変更する処理があれば指摘します。
  5. マイグレーション、ジェネレーター、インストール手順を確認します。 マイグレーションがジェネレーター経由でコピーされることを確認します。破壊的、またはロールバックできないマイグレーションがないか確認します。
  6. ダミーアプリと統合テストを確認します。 spec/dummy/ が存在し、マウントポイントを検証していることを確認します。
  7. 重要度別に指摘事項を要約します。 重要度の高い指摘を最初に示します。アーキテクチャ上の問題より先に、重要度の低い指摘を挙げないでください。

重要度の高い指摘の例(エンジンがホストに直接アクセスしている場合):

# Bad: engine assumes host model
class MyEngine::SomeService
  def call
    User.find(current_user_id)  # User is host app; engine is coupled
  end
end

修正方法:設定(MyEngine.config.user_finder = ->(id) { User.find(id) })を導入して使用します。

適切な例(設定の接点):

# Good: engine uses configured dependency
class MyEngine::SomeService
  def call
    MyEngine.config.user_finder.call(current_user_id)
  end
end

不適切な例(require 時のパッチ適用 — リロードセーフではありません):

# Bad: patches at require time — double-includes on code reload
ActionController::Base.include(MyEngine::ControllerHelpers)

適切な例(ActiveSupport.on_load による遅延読み込み):

# Good: patches only when the framework component is ready, reload-safe
ActiveSupport.on_load(:action_controller) do
  include MyEngine::ControllerHelpers
end

出力スタイル

エンジンのレビューを依頼された場合、出力する answer.md は次の要件を必ず満たす必要があります。

  1. 指摘事項を最初に記載する:具体的な成果物 answer.md の最初のセクションに(計画が求められている場合は短い計画の直後に)、重要度の高い順(HIGH → MEDIUM → LOW)で指摘事項を記載します。各指摘には、重要度、該当するファイルまたは領域、リスク、実行可能な最小限の修正を含めます。
  2. 検証コマンド:使用した検証コマンドを記載します。名前空間の分離には grep -r "isolate_namespace" lib/ を含め、破壊的またはロールバックできない変更の監査には grep -R "remove_column\|drop_table\|change_column" db/migrate lib/**/db/migrate のようなコマンドを含めます。また、初期化のリロードセーフ性を確認するため、grep -r "ActiveSupport.on_load" lib/ または grep -r "initializer" lib/ を含めます。
  3. 未確認の前提と、次に推奨する変更を記載します。
  4. 意味のある指摘事項がない場合は、その旨を明記し、残っているテスト上の不足にも触れます。
  5. 言語 — 明示的に別の言語を指定されない限り、英語で記述する必要があります。

連携

スキル連携するタイミング
create-engine提案した修正の実装やエンジンのリファクタリングを行う場合
test-engine不足しているダミーアプリや統合テストのカバレッジを追加する場合
upgrade-engineRails/Ruby のバージョンサポートや非推奨化の影響を評価する場合

拡張リファレンス

補足情報です。コアプロセスを完了してから参照してください。

重大度の分類

  • 高 — 本番環境での障害やホストとの統合不全を引き起こします(例:ホストの定数への直接的な依存、安全でない起動時の副作用、down メソッドのない取り消し不能なマイグレーション)。
  • 中 — 保守性を損なう、またはホストアプリ間でエンジンが不安定になります(例:文書化されていない設定の接点、インストールジェネレーターの欠如、ダミーアプリがない)。
  • 低 — スタイルや軽微な明瞭さの問題です。アーキテクチャ上の指摘より先に取り上げないでください。

よくある間違い

  • アーキテクチャより先にコードスタイルをレビューする。
  • ダミーアプリのカバレッジ確認を忘れる(ダミーアプリが存在し、使用されている必要があります)。
  • engine.rb を見落とす(起動時の副作用が含まれていることがよくあります)。

拡張リソース(段階的な開示)

各ファイルの内容が必要な場合にのみ読み込んでください。

  • FINDINGS.md — 指摘の形式や重大度分類の例が必要な場合に使用します
  • assets/examples.md — 指摘と推奨事項を含む、エンジンレビューの完全な例が必要な場合に使用します
  • assets/finding-schema.json — エンジンレビューの指摘出力に使用する構造化スキーマが必要な場合に使用します

コメント