mcpField
C
coderabbit-resolver

coderabbit-resolver

github.com/laststanceテスト・品質156 回インストール2 週間前に更新
リポジトリ

coderabbit-resolver について

GitHub の Pull Request で、CodeRabbit の指摘確認、コード修正、CI 検証、マージ、後処理までのレビューを自動化するスキルです。単一 PR と一括処理に対応し、GitHub Bot が現在の HEAD をレビューできない場合は CLI モードを利用できます。

主な機能

  1. 01インラインスレッドとレビュー本文の指摘を監査
  2. 02修正・検証・再レビューを反復
  3. 03CI 成功と現 HEAD のレビューをマージ条件に設定
  4. 04CodeRabbit CLI と Bot の各モードに対応
  5. 05単一または全オープン PR を処理

活用シーン

  1. 01Pull Request の CodeRabbit 指摘を解決
  2. 02Bot が HEAD をレビューできない場合に CLI を使用
  3. 03オープン Pull Request を一括処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laststance/skills --skill coderabbit-resolver

インストール後、Claude Code で/coderabbit-resolverを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
coderabbit-commands.md
github-graphql-api.md
scripts/
check-ci-status.sh
cli-review.sh
ensure-cli-ignore.sh
resolve-threads.sh
wait-for-ratelimit.sh
tests/
run_tests.py
tests/bin/
coderabbit-fake
gh
workflows/
bulk-loop.md
review-loop.md

詳細

Codex との互換性

Codex でこのスキルを実行する場合は、操作を開始する前に Claude Code 専用のプリミティブを置き換えてください:AskUserQuestion → chat/request_user_input、TodoWrite → update_plan、Task/TaskCreate/TeamCreate/SendMessage → 利用可能かつ許可されている場合は spawn_agent/send_input/wait_agent、EnterPlanMode/ExitPlanMode → 簡潔なチャット形式の計画と明示的な承認。 Read/Write/Edit/Bash/WebSearch/WebFetch を Codex のファイル/シェル/ウェブツールに対応付け、タスクで Claude Code が明示的に対象とされていない限り、~/.claude/... のパスを ~/.agents/... または ~/.codex/... に置き換えてください。

Cursor との互換性

Cursor Agent でこのスキルを実行する場合は、操作を開始する前に Claude Code 専用のプリミティブを置き換えてください:AskUserQuestion → AskQuestion、TodoWrite → Cursor の TodoWrite または同等のチェックリスト、Task/TaskCreate/TeamCreate/SendMessage/マルチエージェントのフロー → 許可されている場合は Cursor の Task(サブエージェント)、並列 Task、または run_in_background(TeamCreate/SendMessage に完全に一致するものはない場合があります)、EnterPlanMode/ExitPlanMode → 明示的なユーザー承認を伴う Plan mode(SwitchMode / CreatePlan)。 Read/Write/Edit/StrReplace/Bash/ウェブ/検索/MCP を Cursor Composer または Agent の同等機能に対応付けてください。mcp__server__tool 形式の MCP 名は通常、設定済みのサーバー識別子を使った call_mcp_tool に対応します。タスクで Claude Code が明示的に対象とされていない限り、~/.claude/... を ~/.cursor/skills/、.cursor/skills/、.cursor/rules/ に置き換えてください。

<essential_principles>

このスキルの仕組み

GitHub PR 上の CodeRabbit レビューを繰り返し処理し、すべてのレビューコメントを解決して CI がグリーンになったら、マージとクリーンアップを行います。

原則 1:GraphQL のみでスレッドを解決

GitHub にはレビュー スレッドを解決する REST API がありません。PRRT_ プレフィックス付きのスレッド ID を使い、GraphQL の resolveReviewThread ミューテーションを必ず使用してください。このミューテーションは冪等で、すでに解決済みのスレッドに対しても安全に実行できます。

差分外の指摘はレビュー本文に記載され、解決可能なスレッド ID はありません。監査表でその対応状況と根拠を記録してください。未解決のインラインスレッドがゼロでも、これらの指摘に対応済みであることの証明にはなりません。

原則 2:クリーンになるまで繰り返す

ワークフローは次の処理を繰り返します:

  1. 未解決の CodeRabbit インラインスレッドと、過去の差分外指摘を含むすべての CodeRabbit レビュー本文を抽出する
  2. 各指摘を現在のコードと照合し、問題を修正するか、すでに修正済み/スキップした理由を記録し、該当するインラインスレッドを解決する
  3. コミット → プッシュ → CI と CodeRabbit の再レビューを待つ(cli モードでは、CI と CodeRabbit CLI の再レビューを待つ)
  4. 再レビューのたびに、またマージ前にも、両方の情報源を再取得する。次の条件をすべて満たすまで繰り返す:未解決のスレッドがゼロ、未監査/未対応の差分外指摘がゼロ、すべての CI チェックが成功、かつ(CodeRabbit が現在の HEAD をレビュー済み、または CLI レビューが CR_CLI_LOG ゲートを通過している)
原則 3:プッシュ前に必ず検証

各コミットの前に pnpm validate(またはプロジェクト固有の検証)を実行してください。壊れたコードをプッシュしてはいけません。

原則 4:安全なマージとクリーンアップ

次の条件をすべて満たす場合に限りマージしてください:CI がグリーン(保留中、失敗、キャンセルされたチェックがない)、未解決のスレッドがない、すべての差分外指摘について現在のコードに基づく対応状況と根拠がある、CodeRabbit が現在の HEAD コミットをレビュー済み(そのコミット上でチェックが成功し、CodeRabbit のレビューが存在する)。HEAD を対象とする PR 側のレビューがない場合は、CR_CLI_LOG ゲート(原則 5)を通過した CodeRabbit CLI レビューを最後の条件の代わりにできます。CI とレビューのゲートには check-ci-status.sh を使用してください。リポジトリでチェックが不要な場合、GitHub は赤い PR もマージできてしまうためです。このスクリプトは差分外指摘を監査しません。終了コード 0 は、その監査の代わりにはなりません。検証済みの HEAD のみをマージしてください(--match-head-commit)。マージ後は、ブランチ上に積み重なっている PR のターゲットを変更してから、リモートブランチを削除し、ローカルをプルーニングしてください(review-loop.md Step 9)。gh pr merge --delete-branch は使用しないでください。GitHub が積み重なっている PR のターゲットを変更する代わりに、それらをクローズしてしまいます。

原則 5:HEAD がレビューされていなければマージしない — レート制限も対象

CodeRabbit は API のレート制限に達し、実際のレビューを実行する代わりにレート制限の警告コメントを投稿することがあります。重要なのは、その場合でも GitHub Checks API には completed/success と報告される点です。API だけでは、実際のレビューとレート制限への応答を区別するシグナルがありません。Checks API だけを信頼すると、レビューされていない PR をマージすることになります。

そのため、「CodeRabbit の成功」はすべて、最新の CodeRabbit の issue コメントと照合する必要があります。最新のコメントがレート制限のパターン(例:「Rate limit exceeded」、「wait X minutes before requesting another review」)に一致する場合、API のステータスにかかわらず、その実行はレート制限されています。「成功」は、CodeRabbit が一度も確認していないプッシュを指す場合もあります。レビューが行われなかった実行の後でも、SHA ごとのステータスが「Review completed」と表示されたり、「Reviews paused」/「Review skipped」と表示されたりすることがあり、後続の実行で上書きされる可能性もあります。HEAD がレビューされたことを示すのは、commit_id が HEAD と一致する CodeRabbit のレビューだけです。

check-ci-status.sh は、SHA ごとのステータス文、最新のコメント、HEAD に対するレビューを内部で確認します。これらの確認結果から、HEAD を対象とするレビューがないと判断した場合は exit 3 を返します。ワークフローの Step 6a では exit 3 を「Step 6b に進む」として扱い、Step 8(最終確認)では exit 3 を「マージしない」として扱います。これにより、レビューゲートを回避できないようにしています。

HEAD を対象とするレビューがない場合は、レート制限の解除を待たないでください。CodeRabbit CLI(scripts/cli-review.sh、review-loop.md Step 6b)で PR をローカルでレビューし、レビューコメントと同じように指摘事項を監査してから、CR_CLI_LOG(手動で処理方針を決めた指摘事項については CR_CLI_ACCEPT も併せて指定)を使って check-ci-status.sh を再実行し、マージゲートを通過させてください。スクリプトがログを受け付けるのは、HEAD 上で完了した CLI 実行のログで、指摘事項の数がログの数と完全に一致する場合のみです(指摘事項を承認した場合は、それを修正する新しいコミットが含まれる HEAD の祖先上での実行も受け付けます)。

CLI にも独自の制限があります。実行のたびにアカウントの CLI レビュー数(coderabbit usage)に加算され、プランでは 1 時間あたりの CLI レビュー数に上限があります。そのため、HEAD ごとに 1 回、PR ごとに最大 3 回まで CLI を実行してください。複数回実行しても指摘事項はゼロにならないためです。オーナーから依頼されない限り、--use-credits(使用量に応じた課金)は絶対に追加しないでください。

待機に切り替えるのは、CLI を実行できない場合に限ります。CLI がインストールされていない、サインインしていない、または CLI もレート制限されている(cli-review.sh の exit 5 または 6)場合です。その場合は wait-for-ratelimit.sh でレート制限の期間が終了するまで(さらに 30 秒のバッファを設けて)待機し、@coderabbitai full review を投稿します。無限ループを防ぐため、この再試行は PR ごとに最大 3 回までです。

CLI がレート制限されている間(exit 6)は、ボットも同様に制限に達するのを防ぐため、新しい PR の説明に @coderabbitai ignore を記載してください。CLI で再びレビューできるようになったら、その行を削除して CLI で該当する PR をレビューします(review-loop.md Step 6b の項目 6)。この一時的な ignore は cli モードではありません。

原則 6:長時間の待機には sleep ではなく ScheduleWakeup を使用する

最上位レベルの sleep は Claude Code の Bash ポリシーでブロックされ、5 分間のプロンプトキャッシュを消費します。scripts/*.sh 内部の sleep は問題ありません — Claude にはスクリプトが単一のコマンドとして認識されます。ただし、スクリプトでラップせずに、あなた(エージェント)がステップ間で待機する必要がある場合(例:チェック完了後に CodeRabbit のコメント投稿を待つ場合)は、ワークフローに戻る継続プロンプトを指定して ScheduleWakeup を使用してください。最上位レベルの Bash コマンドとして sleep 180; gh api ... を記述しないでください。

原則 7:cli モードでは GitHub ボットを無効にする

呼び出しに cli または --cli が含まれている場合、GitHub ボットはこの PR をレビューしてはいけません。@coderabbitai ignore を単独の行として PR の説明(scripts/ensure-cli-ignore.sh)に記載し、そのまま維持してください。同じテキストをコメントに記載しても効果はありません。cli-review.sh ですべての HEAD をレビューし、CR_CLI_MODE=1 と CR_CLI_LOG を指定してゲートを通過してください。@coderabbitai review/full review/resume を投稿してはいけません。また、full review を投稿する wait-for-ratelimit.sh も実行してはいけません。CLI を実行できない場合は、停止してユーザーに確認してください。 </essential_principles>

このスキルでは、PR 番号、`--bulk`、および任意の `cli` フラグを指定できます。`cli` と `--cli` は同じフラグです。使用方法:
/coderabbit-resolver <PR_NUMBER>       # Process single PR (GitHub bot)
/coderabbit-resolver 17                # Process PR #17
/coderabbit-resolver 17 cli            # PR #17 via CodeRabbit CLI; bot ignored
/coderabbit-resolver cli               # Current-branch PR via CodeRabbit CLI
/coderabbit-resolver --bulk            # Process ALL open PRs (oldest first)
/coderabbit-resolver --bulk cli        # All open PRs via CodeRabbit CLI

すべての引数を解析してください。cli/--cli は CLI モードを設定し、--bulk は一括ワークフローを選択します。最初の数字のみのトークンを PR 番号として扱います。PR 番号がなく(かつ --bulk もない場合は)、現在のブランチから検出してください:

gh pr view --json number -q .number

PR 番号を取得したら、workflows/review-loop.md を読み、指示に従ってください。 --bulk が指定されている場合は、workflows/bulk-loop.md を読み、指示に従ってください。 cli が設定されている場合は、そのワークフローの CLI モードのルール(原則 7)に従ってください。

| 入力 | アクション | |-------|--------| | PR 番号が指定されている | `workflows/review-loop.md` を読み、その PR で実行する | | PR 番号がない | 現在のブランチから自動検出し、`workflows/review-loop.md` を読んで実行する | | `--bulk` フラグ | `workflows/bulk-loop.md` を読み、オープン中のすべての PR を処理する | | `cli`/`--cli`(上記のいずれかと併用) | 同じワークフローを CLI モードで実行する:`@coderabbitai ignore` + CodeRabbit CLI |

ワークフローを読んだら、その指示に厳密に従ってください。

<reference_index>

参考資料

すべて references/ にあります:

ファイル内容
github-graphql-api.mdスレッドの解決、CI ステータスチェック用の GraphQL クエリ/ミューテーション
coderabbit-commands.mdCodeRabbit ボットのコマンドと動作に関する参考資料
</reference_index>

<workflows_index>

ワークフロー

すべて workflows/ にあります:

ワークフロー目的
review-loop.mdレビュー、修正、解決、マージを繰り返すメインのループ(単一 PR)
bulk-loop.mdオープン中のすべての PR を古い順に処理し、それぞれをマージする
</workflows_index>

<scripts_index>

スクリプト

スクリプト目的
resolve-threads.shPR 上の未解決の CodeRabbit スレッドをすべて解決します
check-ci-status.shマージのゲートです。PR のヘッドで CI と CodeRabbit の完了を待ちます。失敗、キャンセル、または保留中のチェックがあると、(gh pr checks の分類に基づいて)ブロックされます。また、CodeRabbit 以外の CI がない PR と、CodeRabbit のレビューがないヘッドもブロックされます。PR 側のレビューで HEAD がカバーされていない場合は、CR_CLI_LOG を使った CLI レビューを受け付けます。CR_CLI_MODE=1 を設定すると GitHub ボットのチェックを省略し、そのログを必須とします
cli-review.shPR 側のレビューで HEAD がカバーされていない場合(レート制限中、レビューが一時停止中、または cli モードの場合)に、CodeRabbit CLI で PR をローカルでレビューします。--verify は、保存済みの実行結果がマージのゲートを満たしているか確認します
ensure-cli-ignore.shGitHub ボットが自動レビューしないように、PR の説明文に @coderabbitai ignore を追加します(cli モード)。冪等です
wait-for-ratelimit.shCLI を実行できない場合のフォールバックです。レート制限を検出し、解除まで待ってから完全なレビューを開始します。cli モードでは使用しないでください

tests/run_tests.py は、偽の gh と偽の CLI に対して、cli-review.sh、check-ci-status.sh(CR_CLI_LOG/CR_CLI_MODE の分岐、レビュー層、CI の判定)、および ensure-cli-ignore.sh をテストします(python3 tests/run_tests.py。レビューは実行されません)。これらのスクリプトを変更した後に実行してください。 </scripts_index>

<success_criteria> coderabbit-resolver の実行が成功した場合(単一の PR):

  • CodeRabbit のレビュー スレッドがすべて解決されている(未解決がゼロ)
  • 差分外のレビュー本文で指摘された項目がすべて、現在の HEAD に照らして監査されている:証拠を添えて FIXED、または理由を添えて SKIPPED。未監査または NOT_FIXED の項目がない
  • 関係のない CI の失敗に対する修正も含め、すべての CI チェックに合格している(成功、保留中・失敗・キャンセルなし)
  • CodeRabbit が HEAD をレビューしている(そのコミットに対するレビューがある)、または PR 側のレビューで HEAD がカバーされていない場合は、CLI による HEAD のレビューが CR_CLI_LOG ゲートを通過している
  • PR が正常にマージされている
  • このブランチに積み重ねられた PR のターゲットが変更され、その後リモートブランチが削除されている
  • ローカルブランチがクリーンアップされている(main に切り替え、不要なブランチを刈り込んでいる)

--bulk の実行が成功した場合:

  • すべてのオープン PR が処理されている(古い順)
  • 各 PR が MERGED または SKIPPED(理由付き)になっている
  • 結果テーブルを含むサマリーレポートが生成されている

cli の実行(単一の PR または --bulk cli)が成功した場合は、さらに次の条件も満たします:

  • 実行中、PR の説明文に @coderabbitai ignore が含まれている
  • レビューの証拠が、CR_CLI_MODE=1 と CR_CLI_LOG のゲートを通過した CodeRabbit CLI のログである
  • @coderabbitai review/full review/resume のコメントが投稿されていない </success_criteria>

コメント