コードレビュー
概要
目的: ローカルブランチまたは GitHub PR の変更内容をレビューし、品質・一貫性・潜在的な問題を検出する。
AskUserQuestion ツールを使ってレビュー条件をインタビューし、適切なサブエージェントでレビューを実行する。
フェーズ 1: レビュー対象の確認
AskUserQuestion ツールを使って質問する。
質問内容:
- •question: "レビュー対象は?"
- •header: "対象"
- •options:
- •label: "ローカルブランチ", description: "現在のブランチと main の差分をレビュー"
- •label: "GitHub PR", description: "PRの差分をレビュー"
- •label: "ローカル差分", description: "ローカルにある差分をレビュー"
- •label: "ステージ済みのローカル差分", description: "ローカルにあるステージ済みの差分をレビュー"
フェーズ 2: 破壊的変更チェックの確認
AskUserQuestion ツールを使って質問する。
質問内容:
- •question: "破壊的変更チェックは?"
- •header: "破壊的変更"
- •options:
- •label: "行う", description: "API/スキーマ変更確認"
- •label: "行わない", description: "通常レビューのみ"
フェーズ 3: 変更内容の取得
フェーズ 1 の回答に基づいて変更内容を取得する。
ローカルブランチの場合:
bash
git diff main...HEAD git diff --name-only main...HEAD
GitHub PR の場合:
AskUserQuestion ツールを使って PR 番号を確認する。
<rules> - **AskUserQuestion ツールを必ず使用** - 会話形式の質問は不可 </rules>その後:
bash
gh pr view <PR番号> --json title,body,files,additions,deletions gh pr diff <PR番号>
フェーズ 4: レビューの実行
全てのサブエージェントを並列で実行する。
サブエージェント
| サブエージェント | 専門領域 |
|---|---|
review-quality | コード品質(命名、SRP、複雑度、エラー処理) |
review-performance | パフォーマンス(計算効率、メモリ、レンダリング) |
review-security | セキュリティ(XSS、SQLi、入力検証) |
フェーズ 6: 破壊的変更のチェック
「行う」を選択した場合のみ実行する。
| カテゴリ | 例 |
|---|---|
| API 変更 | 関数の引数追加/削除、戻り値の型変更 |
| スキーマ変更 | DB カラムの削除、型変更、NOT NULL 追加 |
| 設定変更 | 環境変数の追加/削除、デフォルト値の変更 |
| 依存関係 | メジャーバージョンアップ、パッケージの削除 |
フェーズ 7: 結果の出力
レビュー観点(サブエージェント別)
| サブエージェント | チェック内容 |
|---|---|
| review-quality | 命名規則、単一責任原則、関数複雑度、エラーハンドリング |
| review-performance | 計算効率、メモリ管理、レンダリング最適化、N+1問題 |
| review-security | XSS、SQLi、入力検証、認証・認可、OWASP Top 10 |
出力形式
markdown
## コードレビュー結果 ### サマリー - レビュー対象: ローカルブランチ / PR #XXX - 変更ファイル数: X - 追加行数: +XXX - 削除行数: -XXX ### スコア一覧 | 観点 | スコア | | -------------- | --------------------------- | | 品質 | A/B/C/D | | パフォーマンス | A/B/C/D | | テスト | A/B/C/D | | ドキュメント | A/B/C/D | | セキュリティ | A/B/C/D | | ガイドライン | A/B/C/D | | Design Doc | A/B/C/D(設計書ありの場合) | ### 破壊的変更 🔴 あり / 🟢 なし ### 発見事項 #### 🔴 Critical(修正必須) - [ファイル名:行番号] 問題の説明 #### 🟡 Warning(推奨) - [ファイル名:行番号] 改善提案 #### 🟢 Good(良い点) - 良かった実装のポイント ### 総評 全体的な評価とコメント
重要な注意事項
- •AskUserQuestion ツールを必ず使用 - 会話形式の質問は不可
- •各フェーズで必ず AskUserQuestion を呼び出してからユーザーの回答を待つ