coderabbit-resolver

Installation
SKILL.md

<essential_principles>

How This Skill Works

Automates the iterative CodeRabbit review loop on a GitHub PR until all review comments are resolved and CI is green, then merges and cleans up.

Principle 1: GraphQL-Only Thread Resolution

GitHub has NO REST API for resolving review threads. You MUST use the GraphQL resolveReviewThread mutation with PRRT_-prefixed thread IDs. The mutation is idempotent — safe to call on already-resolved threads.

Principle 2: Iterative Loop Until Clean

The workflow runs in a loop:

  1. Extract unresolved CodeRabbit review comments
  2. Fix code issues OR resolve already-fixed threads
  3. Commit → Push → Wait for CI + CodeRabbit re-review
  4. Repeat until: zero unresolved threads AND all CI checks pass AND CodeRabbit check on current HEAD is completed + success

Principle 3: Validation Before Every Push

Run pnpm validate (or project-specific validation) before every commit. Never push broken code.

Principle 4: Safe Merge and Cleanup

Only merge when ALL conditions are met: CI green, no unresolved threads, and CodeRabbit check is completed + success on the current HEAD commit. After merge, delete remote branch and prune local.

Principle 5: Rate Limit Handling — Comment-First, API-Status Second

CodeRabbit may hit API rate limits and post a rate-limit warning comment instead of running a real review. Critically, the GitHub Checks API still reports completed/success for that case — there's no API-only signal to distinguish a real review from a rate-limit response. Trusting the Checks API alone leads to merging unreviewed PRs.

Therefore: every "CodeRabbit success" must be cross-validated against the latest CodeRabbit issue comment. If the latest comment matches a rate-limit pattern (e.g. "Rate limit exceeded", "wait X minutes before requesting another review"), the run is rate-limited regardless of API status.

check-ci-status.sh performs this comment-content check internally and returns exit 3 when a rate-limit notice is detected. The workflow's Step 6a treats exit 3 as "go to rate-limit handling," and Step 8 (Final Verification) treats exit 3 as "do not merge." This makes the rate-limit gate impossible to skip.

When detected, the workflow waits for the rate-limit window to expire (+ 30s buffer), then posts @coderabbitai full review to trigger a complete re-review. Max 3 rate-limit retries per PR to prevent infinite loops.

Principle 6: Long Waits Use ScheduleWakeup, Not sleep

Top-level sleep is blocked by Claude Code's Bash policy and burns the 5-minute prompt cache. Internal sleep inside scripts/*.sh is fine — Claude sees the script as a single command. But when YOU (the agent) need to wait between steps without a script wrapper (e.g., letting CodeRabbit post comments after a check completes), use ScheduleWakeup with a continuation prompt that re-enters the workflow. Never write sleep 180; gh api ... as a top-level Bash command. </essential_principles>

/coderabbit-resolver <PR_NUMBER>       # Process single PR
/coderabbit-resolver 17                # Process PR #17
/coderabbit-resolver --bulk            # Process ALL open PRs (oldest first)

If no PR number provided (and no --bulk), detect from current branch:

gh pr view --json number -q .number

After obtaining the PR number, read and follow workflows/review-loop.md. If --bulk is specified, read and follow workflows/bulk-loop.md.

After reading the workflow, follow it exactly.

<reference_index>

References

All in references/:

File Content
github-graphql-api.md GraphQL queries/mutations for thread resolution, CI status checks
coderabbit-commands.md CodeRabbit bot commands and behavior reference
</reference_index>

<workflows_index>

Workflows

All in workflows/:

Workflow Purpose
review-loop.md The main iterative review-fix-resolve-merge loop (single PR)
bulk-loop.md Process all open PRs sequentially (oldest first), merging each
</workflows_index>

<scripts_index>

Scripts

Script Purpose
resolve-threads.sh Resolve all unresolved CodeRabbit threads on a PR
check-ci-status.sh Check CI and CodeRabbit review status for a PR
wait-for-ratelimit.sh Detect CodeRabbit rate limit, wait for expiry, trigger full review
</scripts_index>

<success_criteria> A successful coderabbit-resolver invocation (single PR):

  • All CodeRabbit review threads resolved (zero unresolved)
  • All CI checks passing (green), including fixes for unrelated CI failures
  • CodeRabbit review status is complete
  • PR merged successfully
  • Remote branch deleted
  • Local branch cleaned up (switched to main, pruned)

A successful --bulk invocation:

  • All open PRs processed (oldest first)
  • Each PR either MERGED or SKIPPED (with reason)
  • Summary report generated with results table </success_criteria>
Related skills
Installs
31
GitHub Stars
1
First Seen
Feb 13, 2026