skills/coderabbit-resolver/SKILL.md
CodeRabbit PR loop
npx skillsauth add laststance/skills coderabbit-resolverInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When running this skill in Codex, translate Claude Code-only primitives before acting: AskUserQuestion -> chat/request_user_input, TodoWrite -> update_plan, Task/TaskCreate/TeamCreate/SendMessage -> spawn_agent/send_input/wait_agent when available and allowed, and EnterPlanMode/ExitPlanMode -> a concise chat plan plus explicit approval.
Resolve Read/Write/Edit/Bash/WebSearch/WebFetch to Codex file/shell/web tools, and map ~/.claude/... paths to ~/.agents/... or ~/.codex/... unless the task explicitly targets Claude Code.
When running this skill in Cursor Agent, translate Claude Code-only primitives before acting: AskUserQuestion -> AskQuestion; TodoWrite -> Cursor TodoWrite or an equivalent checklist; Task/TaskCreate/TeamCreate/SendMessage/multi-agent flows -> Cursor Task (subagents), parallel Tasks, or run_in_background when allowed (TeamCreate/SendMessage may have no exact match); EnterPlanMode/ExitPlanMode -> Plan mode (SwitchMode / CreatePlan) plus explicit user approval.
Resolve Read/Write/Edit/StrReplace/Bash/web/search/MCP via Cursor Composer or Agent equivalents. MCP names written as mcp__server__tool typically map to call_mcp_tool with configured server identifiers. Map ~/.claude/... to ~/.cursor/skills/, .cursor/skills/, and .cursor/rules/ unless the task explicitly targets Claude Code.
<essential_principles>
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.
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.
The workflow runs in a loop:
completed + successRun pnpm validate (or project-specific validation) before every commit. Never push broken code.
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.
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.
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.
</intake>
After reading the workflow, follow it exactly. </routing>
<reference_index>
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>
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>
| 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):
A successful --bulk invocation:
testing
Cited research briefs
development
Daily coding habit prompts JP
development
React core deep-dive JP
data-ai
Copy last agent reply