| name | cross-review |
| description | サブエージェント1体+Codex1体の軽量クロスレビュー。普段使い向け。修正は行わない。 |
| user_invocable | true |
クロスレビュー
Claude subagent (Logic+Security) と Codex (Architecture+Testability) の2体による軽量レビュー。修正は行わない。
重量級の /multi-review(4-5体)や /codex-multi-review(4体)と異なり、普段使い向けの軽量構成。
レビュアー構成
| # | エンジン | 専門領域 |
|---|
| A | Claude subagent (reviewer-logic, Opus) | ロジック・バグ + セキュリティ |
| B | Codex (codex exec 直叩き) | 設計・アーキテクチャ + テスタビリティ |
手順
Step 1: レビュー対象の確認
git diff --name-only HEAD で変更ファイル一覧を取得(0件なら git diff --name-only HEAD~1)
- ユーザーが対象を指定している場合はそちらを優先
- ファイル一覧をユーザーに確認
Step 2: 2レビュー並列起動
以下の2つを 1つのメッセージで並列に 起動する。
A: Claude subagent (Logic + Security)
Agentツールで起動:
subagent_type: reviewer-logic
model: 指定しない(エージェント定義側の opus を使う)
mode: auto
プロンプト:
以下のファイルをレビューしてください。ロジック・バグ検出に加え、セキュリティ観点も併せてチェックしてください。
追加のセキュリティ観点:
- 入力バリデーション: query params/body/path paramsのバリデーション、SQLインジェクション
- 認証・認可: ミドルウェア適用漏れ、ユーザーIDの検証(他ユーザーリソースへのアクセス制御)
- データ漏洩: エラーレスポンスに内部情報、ログに機密情報
対象:
<ファイル一覧>
B: Codex (Architecture + Testability)
prompts/codex-review.md の プロンプトテンプレート セクション内テキストを Read
{{TARGET_FILES}} を実際のファイル一覧で置換
- タイムスタンプを含むユニークなファイル名で書き出す(
/tmp/prompt-cross-review-${Date.now()}.txt 等)。同じ Round / 同じセッションで使い回さない
- Bash で起動(
run_in_background: true, timeout: 600000):
PROMPT_FILE=/tmp/prompt-cross-review-$(date +%s).txt
cat "$PROMPT_FILE" | codex exec --sandbox read-only --skip-git-repo-check -c model_reasoning_effort="xhigh" -
注意:
- プロンプトは stdin (
cat <file> | codex exec ... -) で渡す(引数長制限回避)。stdin 供給なので < /dev/null は付けない
- プロンプトファイル名は毎回ユニークに(
...-$(date +%s).txt)。固定名だと前 Round の prompt が残って混入する(5/16 教訓)
run_in_background: true / timeout: 600000
Step 3: スコアベース集約
集約ルール
| 条件 | 判定 |
|---|
| confidence 80+ | 修正対象 |
| confidence 75-79 かつ A・B両者が同一問題を指摘 | 修正対象(クロス検出) |
| confidence 75-79 で単独指摘 | 報告のみ |
| confidence 75未満 | フィルタアウト |
集約手順
- A・B 両方の結果が揃うまで集約しない
- 同一箇所・同一問題の指摘をグループ化(ファイル:行番号 + 指摘内容で判定)
- 上記ルールで修正対象を決定
- Critical → Warning → Info の優先順でソート
出力形式
## Cross Review Report
### 修正対象(confidence 80+ または クロス検出)
#### Critical
- [confidence: XX, reporters: A,B] ファイル:行番号 - 指摘内容
#### Warning
- [confidence: XX, reporter: A] ファイル:行番号 - 指摘内容
### 報告のみ(confidence 75-79 単独)
- [confidence: 77, reporter: B] ファイル:行番号 - 指摘内容
### 各レビュアー判定
- A (Logic+Security / Claude): LGTM / NOT LGTM
- B (Architecture+Testability / Codex): LGTM / NOT LGTM
レビュー結果の判断
- Critical指摘は実コードと突き合わせて裏取り必須
- 偽陽性と判断したら根拠を示してスキップする
- Warningでもプロジェクト規約違反(
asキャスト等)は修正すべきと提案する
- Codexの行番号は実コードと一致しているか確認する