mcpField
A
apply-code-conventions

apply-code-conventions

github.com/igmarin開発2845 回インストール4 週間前に更新
リポジトリ

apply-code-conventions について

apply-code-conventions は、Rails コードのレビューやリファクタリング向けのスキルです。設定済みの Linter によるスタイル規則に加え、テストゲート、構造化ログ、パス別の指針を示します。

主な機能

  1. 01Linter のスタイル規則に準拠
  2. 02テスト先行の実装ゲート
  3. 03構造化ログの要件
  4. 04パス別の Rails 指針
  5. 05専門スキルとの連携

活用シーン

  1. 01Rails のコード変更のレビュー
  2. 02コントローラーやサービスのリファクタリング
  3. 03ログや TODO コメントの確認

インストール

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

$npx skills add https://github.com/igmarin/rails-agent-skills --skill apply-code-conventions

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

同梱ファイルassets/checklist.mdassets/snippets.md

詳細

コード規約を適用する

スタイルの信頼できる情報源: スタイルとフォーマットは、プロジェクトで設定されたリンターに従います。このスキルはスタイル以外の振る舞いとアーキテクチャのガイダンスのみを追加します。Hotwire + Tailwind の詳細については、apply-stack-conventions を参照してください。

クイックリファレンス

トピックルール
原則DRY、YAGNI、役立つ場面での PORO、CoC、KISS
コメント / タグなぜを説明する。タグ付きメモには実行可能なコンテキストが必要
ロギング検証済みの単一メッセージ引数(通常は JSON ハッシュ)。補間は行わない。エラー時にはマスク済みのバックトレースを含める
深いスタックapply-stack-conventions → ドメインスキル(services、jobs、RSpec)へチェーンする

HARD-GATE

TESTS GATE IMPLEMENTATION:
When this skill guides new behavior, the tests gate still applies:
PRD → TASKS → TEST (write, run, fail) → IMPLEMENTATION → …
No implementation code before a failing test. See write-tests.

コアプロセス

Rails コードをレビューまたはリファクタリングする際は、この順序に従ってください。各ステップは、出力における必須のチェックポイントに対応します。

  1. リンターを実行する — 設定(例: .rubocop.yml または .standard.yml)を検出し、適切なツールを実行し、見つからない場合はその旨を記録します。出力: リンターを検出(または不在)。スタイルはそれに従う。
  2. 領域固有のルールを適用する — パスパターンを確認し、「領域別の適用」表から的を絞ったガイダンスを適用します。出力: 該当する変更ファイルごとの、パス別の具体的な推奨事項。
  3. テストゲートを検証する — 新しい振る舞いの前に、失敗するテストが存在することを確認します。出力: 失敗するスペック、実行コマンド、期待される失敗、最小限の実装ステップ、再実行の成功。
  4. 構造化ロギングを徹底する — すべての Rails.logger 呼び出しが、インストールされたロガーの検証済み単一メッセージインターフェースを使用していることを確認します。エラーには event: フィールドとマスク済みバックトレースを含めます。出力: 以下のサブルールの構造化ロギングルールを適用する。
  5. コメント規律を徹底する — すべてのタグ(TODO:、FIXME:)に実行可能なコンテキスト(担当者、チケット)があることを確認します。出力: 以下のサブルールのコメント規律ルールを適用する。
  6. 専門スキルへチェーンする — 統合表を使用して、必要に応じてより深いガイダンス(セキュリティ、ジョブ、スペック)を取り込みます。

言語: 明示的に別途指定されない限り英語。

サブルール

コメントとタグ付きメモ

何をではなくなぜをコメントします。タグ — TODO: / FIXME: / HACK: / NOTE: / OPTIMIZE: — には実行可能なコンテキスト(担当者、チケット、次のステップ)が必要です。コンテキストのないタグはレビューで不合格となります。

# BAD — naked tag, no context
# TODO: fix this

# GOOD — TODO with next step + dependency
# TODO(jsmith, JIRA-1234): replace TIER_RATES with DB-backed lookup once billing API v2 is stable.
構造化ロギング

プロジェクトにインストールされたロガーインターフェースを使用します。標準の Ruby/Rails ロガーは1つのメッセージ引数を受け入れます。2引数の構造化呼び出しには、検証済みのカスタムアダプターが必要です。復旧境界で1回だけログを記録し、機密データをマスクし、予期しない例外を保持します。

rescue Timeout::Error => e
  Rails.logger.error({ event: "order.processing_failed", error_class: e.class.name, backtrace: e.backtrace&.first(5) }.to_json)
  raise
end
領域別の適用(パスパターン)
領域パスパターンガイダンス
ActiveRecord パフォーマンスapp/models/**/*.rbループ内では eager load する。pluck / exists? / find_each を優先する。
コントローラーapp/controllers/**/*_controller.rbストロングパラメータ。アクションは薄く → サービスへ。IDOR / PII → security-check。
RSpecspec/**/*_spec.rbFactoryBot。eager なセットアップが必要でない限り let! より let を優先する。
サービスオブジェクトapp/services/**/*.rb単一責任。.call / 依存性の注入。
バックグラウンドジョブapp/jobs/**/*.rb / app/workers/**/*.rb冪等性、リトライ、キューの選択、副作用の境界 → implement-background-job。
RSpec と let_it_be(test-prof)

test-prof がすでに Gemfile.lock にある場合にのみ let_it_be を推奨します。それ以外の場合はデフォルトで let を使用し、遅延評価が例を壊す場合にのみ let! に頼ります。依頼されない限り test-prof を導入しないでください。

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

これらのファイルは、その特定の内容が必要な場合にのみ読み込んでください:

  • assets/checklist.md — 詳細なコードレビューチェックリストに使用します。
  • assets/snippets.md — 一般的なパターンの簡単なコードスニペットに使用します。

読み込んだアセットとその理由を出力に記載し、プロセスを検証可能にしてください。

統合

スキルチェーンするタイミング
apply-stack-conventionsスタック固有: PostgreSQL、Hotwire、Tailwind
model-domainドメインの概念と不変条件に対して、より明確な Rails ファーストのモデリング選択が必要なとき
create-service-objectサービスオブジェクトの実装または改善
implement-background-jobワーカー、キュー、リトライ、冪等性
write-testsSpec スタイル、テストゲート(red/green/refactor)、request spec と controller spec の比較
security-checkコントローラー、パラメータ、IDOR、PII
code-reviewマージ前の完全な PR チェック

コメント