reviewer
reviewerエージェントにローカルの差分・ファイルをレビューさせる。バグ・セキュリティ・パフォーマンス・保守性・命名一貫性・リグレッション・データアクセス重複などの観点でレビューし VERDICT: PASS/FAIL を返す。「reviewerに見せて」「reviewer」「ローカルの差分を見て」といった要望に使う。PR番号・リモートブランチ・gh pr 経由のレビューは /review-pr を使うこと。ユーザーが /reviewer と入力したら必ずこのスキルを使う。
Install
mkdir -p .claude/skills/reviewer && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13588" && unzip -o skill.zip -d .claude/skills/reviewer && rm skill.zipInstalls to .claude/skills/reviewer
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
reviewerエージェントにローカルの差分・ファイルをレビューさせる。バグ・セキュリティ・パフォーマンス・保守性・命名一貫性・リグレッション・データアクセス重複などの観点でレビューし VERDICT: PASS/FAIL を返す。「reviewerに見せて」「reviewer」「ローカルの差分を見て」といった要望に使う。PR番号・リモートブランチ・gh pr 経由のレビューは /review-pr を使うこと。ユーザーが /reviewer と入力したら必ずこのスキルを使う。About this skill
Reviewer — コードレビュー
reviewer エージェントにコードレビューを実行させます。このスキル本体(= メイン Codex)がオーケストレーターとなり、reviewer を Agent ツールで ハイブリッド並列起動(correctness / consistency / quality / security / architecture の 5 観点から必要なものを選択して 1〜5 体)します。subagent内からの Agent 呼び出しは Codex の設計上不可能なため、起動責任はスキル本体に集約されます。
レビュー範囲: $ARGUMENTS
ステップ 0: メモリパスと RUN_DIR の確定
以下の Bash コマンドで PROJECT_ROOT / PROJECT_MEMORY_DIR / RUN_DIR を確定し、以降のすべてのステップで使用してください:
PROJECT_ROOT="$(pwd)"
# sanitized-cwd 計算は ~/.agents/skills/pir2/references/sanitized-cwd.md を SSOT とする
# (Codex harness の sanitize 仕様変更時はこの SSOT のみを更新し、9 ファイルに横展開)
sanitized_cwd="$(pwd | sed 's|[^a-zA-Z0-9]|-|g')"
PROJECT_MEMORY_DIR="${HOME}/.codex/projects/${sanitized_cwd}/memory"
run_ts="$(date +%Y%m%d-%H%M%S)"
run_feature="$(printf '%s' "$ARGUMENTS" | tr -c 'a-zA-Z0-9' '-' | sed -E 's/-+/-/g; s/^-//; s/-$//' | cut -c1-40)"
[ -z "$run_feature" ] && run_feature="task"
RUN_DIR="${HOME}/.ai-pir-runs/${sanitized_cwd}/${run_ts}-${run_feature}"
mkdir -p "$RUN_DIR"
echo "PROJECT_ROOT=$PROJECT_ROOT"
echo "PROJECT_MEMORY_DIR=$PROJECT_MEMORY_DIR"
echo "RUN_DIR=$RUN_DIR"
/reviewer は handoff 連携を行わないため、HANDOFF_PATH / RESUME_MODE は不要です。
ステップ 1: レビュー対象の特定
まず $ARGUMENTS から --reviewers=<roles> と --all-reviewers フラグを抽出して除去し、残りをレビュー範囲指定として扱う。次に残り部分に応じてレビュー対象を決定する:
- 指定なし:
git diff --name-only HEADで未コミットの差分を取得 - ファイルパス: 指定されたファイルをそのまま対象とする
- ブランチ名:
git diff --name-only <branch>...HEADでブランチとの差分を取得 - コミット範囲(例:
HEAD~3..HEAD):git diff --name-only <range>で差分を取得
対象ファイルが0件の場合はユーザーに報告して終了する。
ステップ 2: レビュー実行 (Sonnet ハイブリッド並列)
2-1: REVIEWER_SET 決定(非 planner 系:自動選定がデフォルト)
REVIEWER_SET を決定する:
- ユーザーフラグ: ステップ 1 で抽出した
--reviewers=<roles>があればカンマ区切りを観点集合として採用(未知 role は無視)。--all-reviewersがあれば全 5 観点。両方指定時は--reviewers=を優先 - フラグ未指定時の自動選定(以下を上から評価):
correctnessは常に含める- 対象ファイル一覧にコード拡張子が含まれる(ドキュメント・設定のみでない) →
consistencyを追加 - レビュー範囲指定テキストまたは差分テキスト(
git diff <range>の出力)にセキュリティ関連語句(認証 / 認可 / auth / token / secret / password / credential / SQL / XSS / CSRF / シリアライズ / 外部API / ユーザー入力 / validate / sanitize / 権限 / 暗号 / crypto / 脆弱性)が含まれる →securityを追加 - 差分に新規ファイル追加 (
git diff --diff-filter=A) または複数モジュール/レイヤー跨ぎ(対象ファイルが 2 つ以上の異なるトップレベルディレクトリにまたがる) →architectureを追加 - 差分に新規関数・メソッド・クラスの追加、または差分行数 > 20 行 →
qualityを追加 - 判断に迷う(差分が取得できない・範囲が曖昧・上記ルールで 1 体しか選ばれないが自信なし) → 全 5 観点にフォールバック
- 決定した
REVIEWER_SETをユーザー提示に含める
2-2A: 起動宣言(Fan-Out Gate — 並列発火の直前に必ず書く)
reviewer 並列起動メッセージを送信する 直前のターン本文中 に、以下のテンプレートを必ず生成すること。このテンプレートが本文に出現していないターンで Agent 起動を発火させた場合は、ステップ完了判定を取り消して 2-2A からやり直す。
Fan-Out Gate(reviewer)
- REVIEWER_SET = [<観点をカンマ区切りで全列挙>]
- 起動体数 = <N>(= len(REVIEWER_SET)、必ず一致)
- 同一 function_calls ブロックに <N> 個の Agent 起動を並べる
- 1 体ずつ起動・後追い起動・観点削減はいずれも違反
このブロックは「起動直前の自己コミットメント」であり、自分の手癖(1 体ずつ逐次起動する癖)を止めるためのフェンスとして機能する。
2-2B: 並列発火(同一メッセージ内)
直前ターンで宣言した REVIEWER_SET の各観点について、同一の <function_calls> ブロック内に Codex subagent呼び出しを N 個 並べて 1 メッセージで同時送信する。各体は REVIEWER_ROLE を変えて担当観点を分割する。
詳細仕様(観点マッピング / 違反パターンと検出 / 違反検出時のリカバリ / reviewer 起動パラメータ): ~/.agents/skills/pir2/references/fan-out-gate.md を参照。
違反パターン(次のいずれかが発生したら違反として検出し 2-2A からやり直す):
- function_calls ブロックが 2 ターン以上に分かれる
- 並んだ Agent 起動の数が宣言した N より少ない
- 観点を独自判断で減らした
- 直前ターンの宣言テンプレートが省略された
各体の起動パラメータ:
- model:
gpt-5.5 - プロンプト(共通。
REVIEWER_ROLEのみ変える):PROJECT_MEMORY_DIR=[ステップ0で取得したパス]RUN_DIR=[ステップ0で取得したパス]REVIEW_INDEX=01(起動する全体で同じ番号を共有する)REVIEWER_ROLE=[correctness|consistency|quality|security|architecture](体ごとに変える。REVIEWER_SET に含まれる観点のみ)- レビュー対象のファイル一覧
- 差分の取得コマンド(ステップ1で使用したものと同じ git diff コマンド。
--name-onlyを外したもの) - 「plan.md / implementation-*.md は存在しません。上記の差分コマンドで変更内容を確認し、変更されたファイルを Read してレビューしてください。レビューレポート本体は
{RUN_DIR}/review-{REVIEW_INDEX}-{REVIEWER_ROLE}.mdに書き出し、チャットには VERDICT + 要約のみ返してください」
ステップ 3: 結果の統合・提示
起動した reviewer の VERDICT と書き出したレポートをユーザーに提示する:
VERDICT 集約
- 全体 VERDICT = PASS: 起動した全員が
VERDICT: PASS - 全体 VERDICT = FAIL: 1体でも
VERDICT: FAIL
ユーザーへの提示フォーマット
## レビュー完了
### 全体 VERDICT
[PASS|FAIL]
### REVIEWER_SET
[起動した観点のカンマ区切り、例: correctness,consistency,security]
### 観点別 VERDICT
(REVIEWER_SET に含まれる観点のみ。例)
- correctness: [PASS|FAIL] — {RUN_DIR}/review-01-correctness.md
- consistency: [PASS|FAIL] — {RUN_DIR}/review-01-consistency.md
- security: [PASS|FAIL] — {RUN_DIR}/review-01-security.md
### 主な指摘事項(Critical / High のみ)
- [深刻度] `ファイル:行` — [問題の要約](出典: [ROLE])
各 reviewer が書き出した {RUN_DIR}/review-01-{ROLE}.md を Read して、Critical / High の問題一覧を統合してユーザーに提示する。Medium / Low は件数サマリーのみに留める(詳細はファイル参照)。