claude-code-review について
claude-code-review は、Claude Code CLI を独立したレビュアーとして使う読み取り専用のコードレビュー スキルです。選択した指摘を議論し、依頼に応じた深さで確認します。ファイルの変更や修正適用は行わず、指摘のみを報告します。
主な機能
- 01Claude Code CLI によるレビュー
- 02選択した指摘の議論
- 03クイック・詳細・自動モード
- 04ファイル、ブランチ、コミット、PR の確認
- 05ファイルを編集せず指摘を報告
活用シーン
- 01リポジトリの未コミット変更のレビュー
- 02ブランチ、コミット、PR の確認
- 03対象を絞ったコードレビューや詳細レビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ schneidenbach/ skills --skill claude-code-reviewインストール後、Claude Code で/claude-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/debate-protocol.mdprompt-template.md詳細
Claude による敵対的コードレビュー
主担当のコードレビュアーとして対応します。外部レビュアーとして Claude Code CLI と指摘事項を議論し、確信度の高いレビューを作成します。このスキルを呼び出したエージェントやプロバイダーを決めつけないでください。
あなたは読み取り専用です。リポジトリ内のファイルを変更または作成してはいけません。修正を提案または適用してはいけません。指摘事項のみを報告してください。
参照ファイル
該当する手順に進んだら、以下を読みます。
references/debate-protocol.md- 議論ループの仕組み、収束ルール、エラー処理、役割を逆転させた議論について説明しています。手順 6 の前に読んでください。references/prompt-template.md- Claude 呼び出し用のプロンプトテンプレートと、出力の解析に関するガイダンスです。手順 4 の前に読んでください。
詳細度モード
ユーザーのリクエストに基づいて、詳細度モードを決定します。
Quick:Claude による 1 回限りのレビューです。議論は行いません。ユーザーが「quick」「fast」「single pass」などと指定した場合に使用します。
Deep:重大および警告レベルの指摘事項をすべて、敵対的な議論ループにかけます。情報レベルの指摘事項はそのまま通します。ユーザーが「deep」「thorough」「argue everything」などと指定した場合に使用します。
Auto(デフォルト):以下に基づいて、議論する対象を決定します。
- 差分が 200 行未満で、重大または警告レベルの指摘事項がある場合:それらすべてを議論します
- 差分が 200 行を超える場合:重大な指摘事項のみを議論し、警告・情報レベルの指摘事項はそのまま通します
- 認証、暗号、支払い、権限、またはセキュリティ上重要なパスに関わるファイルの場合:差分の規模にかかわらず、重大および警告レベルの指摘事項をすべて議論します
- 情報レベルの指摘事項のみの場合:議論を省略します
- 指摘事項が 10 件以上の場合:重要度の高い上位 5 件のみを議論します
選択したモードとその理由を、レポートの冒頭に記載してください。
手順 1:リクエストを把握する
ユーザーが指定した引数を読みます。以下が含まれる場合があります。
- 直接レビューするファイルパス
- 未コミットの変更をレビューするディレクトリ
- 差分比較対象のブランチ名
- レビューするコミット SHA
- PR 番号または GitHub PR URL
- 詳細度の希望(「quick」「deep」「thorough」など)
- 注目する領域(例:「SQL インジェクションに注目」)
指定内容を自然に解釈します。ファイルパスに見えるトークンは、存在するか確認します。ブランチに見える場合は、git で確認します。ディレクトリに見える場合は、そのディレクトリに移動します。PR 番号または GitHub PR URL に見える場合は、gh pr view <number> --json number で確認します(差分は取得しないでください。Claude が gh pr diff を自ら実行します)。トークンが何にも該当しない場合(ファイル、ディレクトリ、ブランチ、コミット SHA、PR のいずれでもない場合)、ユーザーに次のように伝えます。「'' を解決できませんでした。ファイル、ディレクトリ、ブランチ、コミット SHA、PR 番号のいずれでもありません。」
対象が指定されていない場合は、現在の作業ディレクトリにある未コミットの変更をレビューします。
手順 2:前提条件を確認する
which claude を実行します。見つからない場合は処理を停止し、次のように報告します。「Claude Code CLI がインストールされていないか、PATH にありません。https://claude.com/claude-code からインストールしてください」
ファイル単位以外のレビュー方式では、git rev-parse --git-dir で git リポジトリ内にいることを確認します。
ステップ 3:レビュー対象を特定する
ユーザーのリクエストに基づいて、Claude がレビューする対象を特定します。差分を生成したり、ファイルの内容を自分で読んだりしないでください。Claude Code はファイルシステムとシェルに完全にアクセスでき、自分で確認できます。あなたの役割は、Claude が確認すべき場所を把握できるよう、対象を明確に説明することです。
- 未コミットの変更:
git statusで変更が実際にあることを簡単に確認します。変更がない場合は、「未コミットの変更は見つかりませんでした。」と報告します。Claude に伝える対象の説明は、「<absolute repo path>内の未コミットの追跡対象変更(ステージ済みおよび未ステージ)と、追跡対象外のファイル」です。 - ブランチの差分:
git rev-parseでブランチが存在することを確認します。対象の説明は、「<absolute repo path>内の現在のブランチにおける、<branch>と比較した変更」です。 - コミット:SHA が存在することを確認します。対象の説明は、「
<absolute repo path>内のコミット<SHA>によって導入された変更」です。 - PR:
gh pr viewで PR が存在することを確認します。対象の説明は、「<absolute repo path>でチェックアウトされている PR#<N>の変更。Claude は差分を確認するためにgh pr diff <N>を実行します」です。 - ファイルパス:ファイルが存在することを確認します。対象の説明は、「ファイル
<absolute paths>」です。
すべてのパスを絶対パスに解決します。次のステップで、この対象の説明を Claude に渡します。ユーザーが指定した値を含むシェルコマンドを埋め込まないでください。ブランチ名には &、|、> など、git では受け付けられてもシェルが解釈するメタ文字が含まれる場合があります。対象は平文で説明してください。プロンプトテンプレートに、対象ごとに適切な git コマンドが指定されています。
ステップ 4:Claude に初回レビューを依頼する
references/prompt-template.md を読み、正確なプロンプト形式と出力の解析方法を確認します。プロンプトでは、説明によってレビュー対象を Claude に伝えます。差分、ファイルの内容、コードをプロンプトに貼り付けないでください。Claude がファイルを読み、git コマンドを自分で実行します。
レビュー用プロンプトを使って、claude -p(プリントモード、非対話型)を呼び出します。ヒアドキュメント構文を使い、標準入力経由で渡します。
claude -p <<'CLAUDE_PROMPT'
<prompt content here>
CLAUDE_PROMPT
位置引数が指定されていない場合、claude -p は標準入力からプロンプトを読み込みます。- は渡さないでください。Claude は標準入力を示す記号として - を使用しません。
ユーザー提供の値は、シェルコマンド内で必ず引用符で囲みます。コード内容がシェルに解釈されるのを防ぐため、echo "$PROMPT" | claude -p よりもヒアドキュメントを優先してください。
タイムアウトは 180 秒に設定し、フォアグラウンドで実行してかまいません
レビュー規模のプロンプトの場合、claude -p は通常 10~60 秒で応答します。シェル呼び出しのタイムアウトは、余裕を見て 180 秒に設定すれば十分です。バックグラウンドで実行する必要はありません。呼び出しは短時間で済むため、待機に大きな時間を取られることはありません。
待機中に変更されたファイルを自分で読み直し、ステップ 6 の役割を入れ替えた議論に備えて、自分なりの指摘事項をまとめてもかまいません。ただし、呼び出しは短時間で済むため、これは任意であり必須ではありません。
Claude をスキップするのは失敗であり、フォールバックではありません
このスキルの価値は、Claude による独立したレビューにあります。一次レビュアーだけの結果では、その目的が気づかれないまま損なわれます。「Claude の応答が予想より少し遅い」は「待つ」という意味であり、外部レビューを打ち切る理由ではありません。
Claude なしで進めてもよい理由は、次の場合に限られます。
claudeがインストールされていない(Step 2 で対応済み)- 具体的なエラーによる終了コードが 0 以外(認証、ネットワーク、API の障害)— エラーをそのまま提示する
- 正常終了後、本当に出力が空
次の理由は認められません。
- 「数秒経った」
- 「ユーザーはおそらく待っている」
- 「差分が大きいので、自分でレビューするだけにしよう」
上記の基準に照らして Claude が本当に失敗した場合は、作業を止め、ユーザーに次のように伝えてください。Claude failed: <reason>. Retry, or proceed with a primary-reviewer-only review? ユーザーの判断を待ってください。何も伝えずにレビューの基準を下げてはいけません。
出力の検証: 出力に NO_ISSUES_FOUND または 1 つ以上の FINDING: マーカー(大文字と小文字は区別しません)が含まれていることを確認してください。出力が完全には一致しない場合の解析方法については、プロンプトテンプレートのリファレンスを参照してください。
Claude が NO_ISSUES_FOUND を返した場合: Deep モードまたは Auto モードでは、そこで終了せず、逆役割のディベートを行うため Step 6 に進んでください。Quick モードでは問題なしとして報告し、終了してください(Quick は定義上、1 回限りのレビューです)。
Step 5:深度モードに応じて指摘をトリアージする
- Quick:ディベートを省略します。すべての指摘をそのまま報告します。
- Deep:critical と warning のすべてをディベートします。info はそのまま通します。
- Auto:前述のヒューリスティックを適用します。判断の理由を記録してください。
Step 6:敵対的ディベートのループ
ディベートの仕組み、収束ルール、逆役割のディベート手順の詳細については、references/debate-protocol.md を読んでください。
ディベート候補ごとに、次の手順を実行します。
- 参照された行の実際のソースファイルを読む(前後 20~30 行のコンテキストを確認)
- EVIDENCE の引用とソースを照合して、行番号が正しいことを確認します。行番号が誤っている場合は正しい行を特定し、そちらを使用してください。
- ディベートプロトコルに従います。具体的なコードの証拠を挙げて異議を唱え、Claude に回答させ、収束するか 5 ラウンドに達するまで繰り返します。
Claude のターン: 異議を添えて claude -p を呼び出します。Claude が確認するファイルと行の範囲を説明してください。コードをプロンプトに貼り付けてはいけません。Claude は自分でソースファイルを読めます。DEFEND、RETRACT、REVISE のいずれかで回答するよう求めてください。
Claude が NO_ISSUES_FOUND を返した場合: 逆役割のディベートを実施します。見落とされた問題がないか、変更箇所を独自に調べます。独自の指摘を 2~3 件作成し、Claude に反論させてください。
実行環境がサポートしている場合(例:複数の claude -p シェルを同時に起動する場合)、異なる指摘を扱う独立したディベートラウンドは並行して実行し、経過時間を短縮できます。
Step 7:指摘を報告する
構造化されたレポートを出力してください。却下された指摘は含めないでください。
## Code Review Results
Mode: <quick | deep | auto (with reasoning)>
Reviewed: <what was reviewed>
Debated: <N findings challenged> | Passed through: <M findings>
Findings: <X confirmed, Y unresolved, Z dismissed>
### Confirmed Issues
#### [SEVERITY] <title>
**File:** `<path>:<line>`
**Evidence:**
\`\`\`
<the relevant code>
\`\`\`
**Problem:** <description>
**Agreed by both reviewers after N rounds**
### Unresolved (Disagreement)
#### [SEVERITY] <title>
**File:** `<path>:<line>`
**Claude's position:** <summary>
**Primary reviewer's position:** <summary>
**Recommendation:** <your best judgment>
### Info
#### <title>
**File:** `<path>:<line>`
**Note:** <description>
空のセクションは省略してください。指摘が 1 件もない場合は、「両レビュアーの見解が一致しました。重大な問題は見つかりませんでした。」としてください。
注意点
claude -pは stdout に出力します。そのまま呼び出して出力を読み取ってください。- Claude のプロンプトに差分、ファイルの内容、コードブロックを渡してはいけません。Claude はファイルシステムとシェルにアクセスできます。コードの内容ではなく、確認先(git コマンド、絶対パス)を伝えてください。
- 別のディレクトリにあるファイルをレビューする場合は、Claude を呼び出す前にすべてのパスを絶対パスに解決してください。
- インジェクションを防ぐため、シェルコマンドではユーザーが指定した値を必ず引用符で囲んでください。
呼び出し例
/claude-code-review
/claude-code-review /path/to/other/repo
/claude-code-review src/auth.ts src/api/handler.ts
/claude-code-review main
/claude-code-review abc1234
/claude-code-review #42
/claude-code-review quick review
/claude-code-review deep review of branch main
/claude-code-review focus on SQL injection vulnerabilities