| name | common-review |
| description | ローカル変更(未コミット/ステージ済み)をコード品質 + セキュリティの 2 観点で並列レビューし統合結果を表示。「ローカルレビュー」「変更をレビュー」「コミット前レビュー」「手元の変更をチェック」「review」などで起動。GitHub の PR ではなく作業中の変更が対象。 |
Review
ローカル変更をコード品質 + セキュリティの 2 観点で並列レビューし、統合結果を表示します。
Help
ユーザー入力に --help が含まれる場合、以下を表示して終了:
/common-review - 統合レビュー
概要:
ローカル変更を 2 つの観点(コード品質・セキュリティ)で
並列レビューし、統合結果を表示します。
使用方法:
/common-review [オプション]
オプション:
--help このヘルプを表示
例:
/common-review # ローカル変更をレビュー
ワークフロー
1. 変更差分の取得
Bash ツールで以下を並列実行して変更差分を取得:
git diff — ステージされていない変更
git diff --cached — ステージ済み変更
両方とも空の場合は以下を表示して終了:
レビュー対象の変更がありません。
変更をステージするか、ファイルを編集してから再実行してください。
2. 2 エージェント並列レビュー
Codex の multi_agent 機能を使用して以下の 2 エージェントを並列起動する。
各エージェントには取得した diff の全文をプロンプトに含める。
2-1. コード品質レビュー
プロンプト:
以下の diff をコードレビューしてください。
観点:
- コード品質(命名規則の一貫性、コード構造、重複コード(DRY違反)、不要なコード)
- 設計(責務分離(SRP)、凝集度、結合度、抽象化レベル、依存関係の方向)
- テスト(テスト漏れ、エッジケースの未考慮、テストの信頼性(flaky)、カバレッジ不足)
- 可読性(コメントの適切さ、フォーマット、循環的複雑度、ネストの深さ、関数の長さ)
- パフォーマンス(N+1クエリ、メモリリーク、アルゴリズム計算量(O(n²)等)、不要な再描画・再計算、リソースの未解放)
- エラーハンドリング(例外処理の漏れ、エラー伝播の不備、リカバリー戦略、入力バリデーション不足、静かな失敗(silent failure))
- ベストプラクティス(言語固有のイディオム違反、アンチパターン、非推奨APIの使用、モダンな代替手段の提案)
- 保守性(循環的複雑度、モジュール間の依存関係、将来の変更容易性、ドキュメントの十分性、技術的負債)
diff:
{diff全文}
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。
2-2. セキュリティレビュー
プロンプト:
以下の diff をセキュリティ観点でレビューしてください。
チェック項目(OWASP Top 10 基準):
- インジェクション(SQL / コマンド / XSS)
- 認証・認可の不備
- 機密データの露出(ハードコードされた秘密情報、ログ出力)
- セキュリティ設定ミス
- 既知の脆弱性を持つコンポーネントの使用
- 入力バリデーション不足
diff:
{diff全文}
結果はマークダウンで、脆弱性ごとに「リスクレベル(高/中/低)」と「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。
3. 統合レポート出力
2 エージェントの結果を以下の詳細フォーマットで統合して出力:
# 統合レビューレポート
**実施日**: {DATE}
**対象**: {REPO_NAME}
**ブランチ**: {BRANCH}
**調査カテゴリ**: コード品質 / セキュリティ
---
## 概要
{REPO_NAME} に対し、2つの観点から並列レビューを実施した。
各観点で専門的な分析を行い、検出された問題点を統合して優先度付きのタスクリストとしてまとめた。
| カテゴリ | 評価 | 検出数 |
| --------------- | -------- | ------ |
| 📝 コード品質 | 🟢/🟡/🔴 | N |
| 🔒 セキュリティ | 🟢/🟡/🔴 | N |
---
## 結論
**総合評価**: 🟢/🟡/🔴 [1行で総評]
[2-3行で具体的な結論。最も重要な発見と推奨アクションを凝縮]
> [!IMPORTANT]
> {最重要の横断的課題(なければ省略)}
---
## 問題点
{全問題を優先度順(P1→P2→P3)にフラットに一覧。該当なしの場合は「指摘なし」。以下のチェックボックスリスト形式で記述}
各問題点は以下のチェックボックスリスト形式で記述(P1 → P2 → P3 の順序で並べる):
- [ ] `{ID}` | {優先度} | {カテゴリアイコン}{カテゴリ名} | {概要}
<details>
<summary>詳細</summary>
**該当箇所**: `{ファイル:行}`
**詳細**: {問題の詳細説明}
**修正案**: {具体的な修正案}
</details>
ID 体系: QUAL-NNN(コード品質)/ SEC-NNN(セキュリティ)
優先度基準:
- 🔴P1 = Critical/High のセキュリティ、データ損失リスク
- 🟠P2 = 中程度のセキュリティ、重要な品質問題
- 🟡P3 = コード品質改善、軽微な指摘
評価の判定基準:
- 🟢 検出数 0 件
- 🟡 軽微な指摘のみ(P3 のみ)
- 🔴 重要指摘あり(P1 または P2 が存在)
3.5. レビュー結果をファイルに保存
統合レポートをコンソール表示した後、.codex/tmp/ にマークダウンファイルとして保存する。
手順
- Bash ツールでタイムスタンプとリポジトリ情報を取得:
TS="$(date +%Y%m%d-%H%M%S)"
DATE="$(date +%Y-%m-%d)"
REPO_NAME="$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")"
BRANCH="$(git branch --show-current 2>/dev/null || echo 'unknown')"
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "${REPO_ROOT}/.codex/tmp"
echo "${TS}|${DATE}|${REPO_NAME}|${BRANCH}|${REPO_ROOT}"
-
{REPO_ROOT}/.codex/tmp/{TS}-review.md を作成し、上記テンプレートに沿って内容を保存する。
-
ファイル保存後にパスをユーザーに表示:
📄 レビュー結果を保存しました: {REPO_ROOT}/.codex/tmp/{TS}-review.md
4. ユーザー確認
ユーザーに次の選択肢を提示:
- 修正する — すべての指摘を修正
- 一部修正 — 修正する指摘を選択
- そのまま — 修正せず終了
5. 修正適用
ユーザーが「修正する」または「一部修正」を選択した場合:
- 対象ファイルを読み込み
- 指摘箇所を修正
- 修正結果をユーザーに報告
重要な注意事項
- 2 エージェントは必ず並列起動する
- diff が空の場合は早期終了する
- 統合レポートは
.codex/tmp/{TS}-review.md にも保存する
- diff なしでレビューを実行しない
- ユーザー確認なしに修正を適用しない