| name | code-review |
| description | コードレビューを実施するスキル(SDD仕様書整合性・コーディング規約・セキュリティ・テスト品質) |
Code Review Skill
目的
実装コードを4つの観点でレビューし、品質を保証する:
- SDD仕様書(design.md)との一貫性 - 仕様書と実装の整合性を検証
- コーディング規約遵守 - development-guidelines.mdに基づく設計・スタイルチェック
- セキュリティベストプラクティス - 認証・認可・パラメータ検証・機密情報管理
- テストカバレッジ・品質 - テストの存在・カバレッジ・品質確認
入力
- 対象コード: git diff、ファイルパス、またはディレクトリ
- 仕様書:
.steering/[date]-[feature]/design.md(存在する場合) - 規約:
docs/development-guidelines.md - 用語集:
docs/glossary.md
出力
マークダウン形式の詳細レビューレポート(重大度別・カテゴリ別)
実行手順
Step 1: コンテキスト収集
対象コードを特定
- git diffの場合: 変更されたファイルリストを取得
- ファイル指定の場合: そのファイルを対象とする
- ディレクトリ指定の場合: 配下の全Rubyファイル(*.rb)を対象とする
対応する仕様書を検索
- PR説明に
.steering/へのリンクがあれば使用 - なければファイル名から機能名を推測し、
.steering/*-[feature]*/design.mdを検索 - 複数マッチ時は最新(ディレクトリ名の日付で判定)
- マッチなし時はSDD整合性チェックをスキップ
- PR説明に
参照ドキュメントを読み込み
docs/development-guidelines.md- コーディング規約・セキュリティ要件docs/glossary.md- ドメイン用語(用語の正確性チェック用)
Step 2: SDD仕様書整合性チェック
チェックリスト: checklists/sdd-consistency.md
.steering/*/design.mdが存在する場合、以下を検証:
API仕様チェック
- design.mdのAPI定義とcontrollerを比較
- HTTPメソッド、パス、パラメータ、レスポンス構造の一致確認
- ステータスコードの一致確認
データモデルチェック
- design.mdのテーブル定義とmigration/modelを比較
- カラム名、型、制約、インデックスの一致確認
- リレーション(belongs_to, has_many等)の一致確認
ビジネスルールチェック
- design.mdのBR-XXX(ビジネスルール)とservice実装を照合
- バリデーションロジックの一致確認
テストケースチェック
- design.mdのTC-XXX(テストケース)とspec実装を照合
- テスト網羅性の確認
重要: 仕様書が存在しない場合、このステップはスキップし、コーディング規約・セキュリティ・テストのみレビューします。
Step 3: コーディング規約チェック
チェックリスト: checklists/coding-standards.md
レイヤーアーキテクチャ
- Controller: 薄い、ビジネスロジックなし
- Service: ビジネスロジック集約
- Query: 複雑なクエリ分離
- Model: Thin Model(validationsのみ)
- Serializer: JSON整形(Alba)
命名規則
- 変数・メソッド:
snake_case - クラス:
PascalCase - 定数:
UPPER_SNAKE_CASE - 真偽値メソッド:
?で終わる - 破壊的メソッド:
!で終わる
- 変数・メソッド:
禁止パターン検出
- Fat Controller(Controllerにビジネスロジック記述)
- Fat Model(Modelに複雑な処理)
- マジックナンバー(定数化されていない数値)
- ハードコーディング(設定値、URL等)
- グローバル変数使用
コードスタイル
- インデント(スペース2つ)
- 行の長さ(120文字以下)
- 文字列リテラル(ダブルクォート優先)
- ハッシュ記法(新記法
key: value)
Step 4: セキュリティレビュー
チェックリスト: checklists/security.md
認証・認可
authenticate_user!の使用確認require_admin_role!等の適切な配置- before_actionでの認証・認可制御
パラメータ検証
- Strong Parameters使用確認(ホワイトリスト方式)
permit!の使用禁止
機密情報管理
- ENV変数使用確認
- ハードコーディングされた機密情報(パスワード、API Key等)の検出
.envファイルのコミット確認
セキュリティリスク
- SQLインジェクションリスク(パラメータ化クエリ使用確認)
- XSSリスク(サニタイゼーション確認)
- パスワード・トークンのハッシュ化(bcrypt, JWT有効期限)
Step 5: テスト品質チェック
チェックリスト: checklists/testing.md
テストファイル存在確認
- 変更されたファイルに対応するspecファイルの存在確認
カバレッジ推定
- Modelテスト: validations, associations, scopesのテスト存在
- Serviceテスト: 正常系、異常系、エッジケースのテスト存在
- Requestテスト: 成功ケース、エラーケース、認証・認可のテスト存在
テスト品質
- RSpec形式(describe, context, it)の使用確認
- AAAパターン(Arrange, Act, Assert)の遵守確認
- FactoryBot使用確認
- 1テスト1アサーションの原則確認
エッジケースカバレッジ
- 境界値テスト
- nil/空文字列/空配列のテスト
- 並行処理のテスト(必要に応じて)
N+1問題回避のテスト
includes,preload,eager_loadの使用確認
Step 6: レポート生成
テンプレート: templates/review-report.md
結果を重大度別に分類
- Critical: マージ前に必ず修正(仕様違反、セキュリティ問題、必須テスト欠如)
- Warning: 対処すべき(N+1クエリ、マジックナンバー、エッジケーステスト欠如)
- Info: 推奨(ドキュメント改善、リファクタリング機会)
カテゴリ別にグループ化
- SDD仕様書整合性
- コーディング規約
- セキュリティ
- テスト品質
ファイル別に問題を整理
- 各問題に
templates/issue-format.mdのフォーマットを適用 - ファイルパス、行番号、問題説明、推奨対応を含める
- 各問題に
サマリーと次のアクション
- Executive Summary(重大度別の問題数集計)
- Must Fix Before Merge(Critical問題リスト)
- Should Address(Warning問題リスト)
- Recommended(Info問題リスト)
- 自動ツール(RuboCop, Brakeman, RSpec+Coverage)実行の推奨
参照ファイル
- guide.md - 詳細なレビューガイドライン・ベストプラクティス
- checklists/sdd-consistency.md - SDD仕様書検証ルール
- checklists/coding-standards.md - コーディング規約チェックリスト
- checklists/security.md - セキュリティレビューチェックリスト
- checklists/testing.md - テスト品質チェックリスト
- templates/review-report.md - レビューレポートテンプレート
- templates/issue-format.md - 個別問題フォーマット
使い方
このスキルは通常 /code-review エージェント経由で呼び出されます。
# PR全体をレビュー(git diff使用)
/code-review
# 特定ファイルをレビュー
/code-review app/controllers/api/v1/reports_controller.rb
# 複数ファイルをレビュー
/code-review app/controllers/api/v1/reports_controller.rb app/services/reports/generate_service.rb
# 特定機能をレビュー(.steering/配下)
/code-review .steering/20250131-student-report/
# ディレクトリ全体をレビュー
/code-review app/services/reports/
注意事項
- レビューは対象ファイル数により数分かかる場合があります
- Critical問題が見つかった場合、マージ前に必ず修正してください
- このスキルは自動ツール(RuboCop, Brakeman等)の補完として使用します
- 既存ツールも併用することで、より包括的な品質保証が可能です