review-full について
Full Review は Claude Code と Codex 向けのコードレビュー用スキルです。リポジトリのスナップショットを9つのレビューエージェントに渡し、スクリプトで指摘を集約して Critical と High の問題を検証します。
主な機能
- 019分野のサブエージェントレビュー
- 02Repomixスナップショットの入力
- 03指摘の集約と優先順位付け
- 04Critical と High の問題検証
- 05レビュー報告書の生成
活用シーン
- 01リポジトリ全体のレビュー
- 02指定したリポジトリパスの監査
- 03専門レビュー担当者の指摘の集約
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jimweller/ clanker-code-review-plugin --skill review-fullインストール後、Claude Code で/review-fullを入力して読み込まれたか確認します。
詳細
STARTER_CHARACTER = 🔎
全体レビュー
コードベース全体を9つの重点領域に分け、各領域をサブエージェントが1つずつ、repomixでパックしたスナップショットを読み込んでレビューします。9領域の調査結果はその後、review-deepで使われるのと同じスクリプトによる集約、統合、順位付け、および分離された判定者による検証のチェーンを通るため、全体レビューでも、統合レポートだけでなく、重複排除とCritical/Highの検証が行われます。
Claude Code(このプラグイン経由)とCodexで利用できます。OpenCodeとHermes Agentでは、名前で指定したレビュアーの種類にサブエージェントをディスパッチできないため、事前チェックで名前を示して失敗します。
引数
呼び出し時にユーザーがパスを指定した場合は、それをリポジトリルートからの相対パスとして対象ディレクトリにします。指定がなければ、リポジトリ全体をパックします。これは意図的なデフォルトであり、このスキルを呼び出した人がすでに承認しているため、再確認する判断事項ではありません。
このスキルは context: fork で実行され、プロンプトへの回答を求めるユーザーがいない状態でサブエージェントとしてディスパッチされます。スコープ、コスト、モデルの利用料を確認するために、ディスパッチ前に決して中断しないでください。コストを考慮する必要がある場合は、より狭いパスを渡すことで、呼び出し前に判断済みです。
Step 1: 事前チェック
実行環境を判定します。Claude Codeでは、HARNESS=claude であり、PLUGIN_ROOT はこのプラグインのルート(この SKILL.md から2階層上)です。Codexでは HARNESS=codex です。9つのCodexレビュアーエージェントはプラグイン内ではなく固定パスにあるため、PLUGIN_ROOT は適用されません。
S="${CLAUDE_SKILL_DIR}/../review-deep/scripts" # replace ${CLAUDE_SKILL_DIR} with this SKILL.md's own directory on a non-Claude harness
[ -f "$S/init_run.py" ] || { echo "scripts not found at $S"; exit 1; }
HARNESS=claude
PLUGIN_ROOT="$(cd "${CLAUDE_SKILL_DIR}/../.." && pwd)"
OUT=$(python3 "$S/preflight.py" --tier full --harness "$HARNESS" --plugin-root "$PLUGIN_ROOT")
STATUS=$?
echo "$OUT"
[ "$STATUS" -eq 0 ] || exit 1
LABEL=$(echo "$OUT" | sed -n 's/^LABEL=//p')
AGENT_PREFIX=$(echo "$OUT" | sed -n 's/^AGENT_PREFIX=//p')
preflight.py は、このスキルが必要とするすべてのツール、エージェントファイル、MCP サーバーをチェックし、チェックごとに PASS または FAIL の行を1つ出力します。FAIL がある場合は終了コード1で終了します。成功時には、LABEL($LABEL-<area>.md の元となるレビュアーソース名)と AGENT_PREFIX(9種類のサブエージェントタイプの名前空間プレフィックス。Claude Codeでは clanker-code-review:、Codexでは空)も出力します。$S ガードは、プラグインまたはスキルのインストールが不完全、あるいは破損している場合に検出します。
Step 2: 対象の解決と準備
PROJECT_ROOT=$(git rev-parse --show-toplevel)
PROJECT_ROOT=$(cd -P "$PROJECT_ROOT" && pwd -P)
TARGET_PATH="<user-provided path or empty>"
[ -z "$TARGET_PATH" ] && TARGET_PATH="$PROJECT_ROOT"
TARGET_PATH=$(cd -P "$TARGET_PATH" 2>/dev/null && pwd -P) || { echo "TARGET_PATH does not exist"; exit 1; }
case "$TARGET_PATH" in
"$PROJECT_ROOT"|"$PROJECT_ROOT"/*) ;;
*) echo "TARGET_PATH escapes PROJECT_ROOT"; exit 1 ;;
esac
TARGET_NAME=$(basename "$TARGET_PATH")
[ "$TARGET_PATH" = "$PROJECT_ROOT" ] && TARGET_NAME="repo"
STATE_DIR="$PROJECT_ROOT/.llmtmp/review-full"
mkdir -p "$STATE_DIR"
find "$STATE_DIR" -mindepth 1 -delete
rm -rf の代わりに mkdir -p の後で find -delete を使います。一部のdotfiles設定などで PATH 上にある safe-rm のシムは、パスが存在しない場合に(-f を指定していても)対象をゴミ箱に移動し、ゼロ以外の終了コードを返すため、初回実行時に消去処理が失敗します。
Step 3: 実行の開始
python3 "$S/init_run.py" --kind full "$PROJECT_ROOT" "$TARGET_PATH" "$STATE_DIR"
RUN_DIR と COMMIT を出力します。RUN_DIR はリポジトリ外の ${XDG_CACHE_HOME:-~/.cache}/review-full/<repo>-<commit12> です。作業ツリーがクリーンな場合、COMMIT は HEAD です。作業ツリーに変更がある場合、init_run.py は HEAD の上に参照されないコミットとして作業ツリーのスナップショットを作成します。これにより、Step 7の判定者は、Step 5で9人のレビュアーが確認するものと同じ未コミットの編集内容を読み取れます。run.json には kind: full と ticket_label: review-full が含まれます。
Step 4: パックと台帳の作成
REPOMIX_FILE="$STATE_DIR/repomix.xml"
INCLUDE=""
[ "$TARGET_PATH" != "$PROJECT_ROOT" ] && INCLUDE="--include ${TARGET_PATH#"$PROJECT_ROOT"/}/**"
npx repomix -o "$REPOMIX_FILE" --quiet --output-show-line-numbers $INCLUDE "$PROJECT_ROOT"
python3 "$S/ledger.py" "$STATE_DIR" --repomix "$REPOMIX_FILE"
python3 "$S/partition.py" "$STATE_DIR"
Repomixは、プロジェクトルートの .repomixignore を自動的に読み込みます。--include はサブパスを対象にした場合でもプロジェクトルートを基準にパックされるため、出力内のパスはルート相対のままです。--include によってこの動作が変わるかは未検証のため、サブパスを対象にした初回実行時に確認してください。
ledger.py --repomix は、パック内のすべての <file path> エントリを読み込むため、台帳はレビュアーが確認できる内容と正確に一致します。レビュアーは partition.py のコンポーネントではなく、repomixパックを直接参照します。実際にそれらを読み込むのは、report.py のカバレッジセクションです。
ステップ 5:添付とディスパッチ
filePath=REPOMIX_FILE を指定して attach_packed_output を呼び出します。返された outputId を記録します。
run_in_background: false を指定して、9 件すべての Agent 呼び出しを1 つのツールブロック内で実行します。サブエージェントはデフォルトでバックグラウンド実行されます。また、バックグラウンドでファンアウトすると結果は後続のターンで返されるため、ステップ 6 ではまだどのエージェントも書き込んでいないファイルを検証することになります。
| Agent の種類 | 領域 |
|---|---|
${AGENT_PREFIX}reviewer-architecture | アーキテクチャ |
${AGENT_PREFIX}reviewer-correctness | 正確性 |
${AGENT_PREFIX}reviewer-data | データ |
${AGENT_PREFIX}reviewer-ops | 運用 |
${AGENT_PREFIX}reviewer-performance | パフォーマンス |
${AGENT_PREFIX}reviewer-quality | 品質 |
${AGENT_PREFIX}reviewer-security | セキュリティ |
${AGENT_PREFIX}reviewer-solid | SOLID |
${AGENT_PREFIX}reviewer-testing | テスト |
各プロンプトには次の内容が含まれます。
- このステップで取得した
outputId。 - ナビゲーションには
read_repomix_outputとgrep_repomix_outputを使用する指示。 - 次の指示:「プロジェクトのコンテキストを把握するため、repomix 出力を通じて AGENTS.md(または CLAUDE.md)と .llmdocs/architecture.md(存在する場合)を読みます。」
- 次の指示:「調査結果を
$STATE_DIR/$LABEL-<area>.mdに書き込みます。H2 見出しの後に調査結果を記載するか、正確にNo findings.と記載します。」
ステップ 6:確認と再ディスパッチ
python3 "$S/check_reviews.py" "$RUN_DIR" "$LABEL"
領域ごとに PASS または FAIL の行を 1 つ出力します。ファイルが存在しない、H2 がない、調査結果がなく内容が正確に No findings. でもない、または normalize.FULL と normalize.BARE のどちらとしても解析できない箇条書きが含まれている場合、終了コード 1 で終了します。失敗した領域ごとに、ステップ 5 と同じプロンプトを使ってエージェントを 1 回再ディスパッチし、その後 check_reviews.py を再実行します。2 回目も失敗した場合は、ステップ 8 で未レビューとして報告し、それ以上再試行しません。
ステップ 7:スクリプト化されたチェーンを実行する
review-deep のステップ 5 と同じチェーンを、この実行の RUN_DIR に対して実行します。各モデルステージはバックグラウンドの Bash 呼び出しとして実行します。プールはすべての呼び出しが完了すると戻り、完了通知を受け取ったら次に進みます。実行中のステージを sleep でポーリングしてはいけません。ステージコマンド自体をバックグラウンド呼び出しとして実行します。nohup や末尾の & でデタッチしてはいけません。また、tail -f | grep -m1 でログ行を待ってはいけません。tail は次に書き込みが行われるまで終了しないため、ログの最終行が出力されると、タイムアウトまで呼び出しがハングします。
python3 "$S/checkout.py" "$RUN_DIR"
python3 "$S/normalize.py" "$RUN_DIR"
python3 "$S/collate.py" "$RUN_DIR" # one model call per component, background
uv run --with scikit-learn --with scipy --with numpy python "$S/windows.py" "$RUN_DIR"
python3 "$S/merge.py" "$RUN_DIR" # one model call per similarity window, background
python3 "$S/rank.py" "$RUN_DIR"
python3 "$S/verify.py" "$RUN_DIR" # one model call per Critical or High issue, background
python3 "$S/report.py" "$RUN_DIR"
各ステージの処理内容、および各モデル呼び出しの実行・確認方法については、review-deep のステップ 5 を参照してください。種類による違いは report.py のヘッダーとカバレッジセクションのみです。
ステップ 8:レポート
report.md の件数、確認済みの Critical および High の問題、ならびに RUN_DIR をオペレーターに報告します。実行ディレクトリは review-tickets スキルへの有効な入力であり、チケットラベルは review-full です。
テスト
review-deep の Tests セクションを参照してください。このプラグインのリポジトリのルートにある同じ evals/ が、このスキルの preflight ティア用の unit/preflight を含め、ここにあるすべてのスキルを対象としています。