coderabbit-threads

A Claude Code skill that walks every open CodeRabbit review thread on a PR and replies to each one conversationally. Your agent triages each thread, fixes what it can and commits, pushes back when CodeRabbit is wrong, asks you only on judgment calls, and resolves only once CodeRabbit agrees. So you stop being the copy-paster between CodeRabbit and your agent.
This is the multi-round conversational counterpart to the official coderabbit:autofix skill, which applies proposed diffs and posts one summary comment. Reach for coderabbit-threads when you want to acknowledge, push back, or explicitly defer suggestions thread by thread.
What a run looks like
Your agent goes through every open CodeRabbit thread, replies per-thread, and tracks CodeRabbit's reaction. It runs autonomously when the call is clear and pauses for you when it isn't.
PR #142 · ready · last CodeRabbit activity 9m ago
4 open CodeRabbit threads on PR #142 …
✅ likely-fixed 1 already addressed in a follow-up commit … auto-reply "Fixed in <sha>"
📌 out-of-scope 1 touches another package … auto-reply "Out-of-scope"
⚠️ still-applies 1 concern still valid in the cited code … fix-then-reply (auto) / asking you (together) …
💬 bot-pushback 1 CodeRabbit replied to your last reply … asking you …
| # | Triage | Severity | Location | One-liner |
|---|---------------|----------|--------------------------------|---------------------------------|
| 1 | bot-pushback | 🟠 HIGH | apps/api/src/auth.ts:11 | Async call missing await |
| 2 | still-applies | 🔴 CRIT | apps/api/src/scheduled.ts:80 | One failure stops the batch |
| 3 | likely-fixed | 🟡 LOW | apps/app/src/ui.tsx:88 | Use semantic button |
| 4 | out-of-scope | 🟡 LOW | packages/db/src/migrate.ts:14 | Drop legacy column |
How should I handle these?
🤝 Together — pause on every judgment call
🤖 Auto — handle on my own, only ping for the hard cases
❌ Cancel
> auto
May I auto-resolve threads when CodeRabbit agrees?
✅ Yes, auto-close 🙋 Ask me each time ❌ Never auto-close
> yes
— Thread 1/4 · bot-pushback · apps/api/src/auth.ts:11 ——————————
CodeRabbit replied after your last reply:
> The await is still missing on line 12. Was the fix landed?
(needs your call — bot-pushback always pings, even in auto)
Reply: [fixed-in <sha>] [won't-fix <reason>] [out-of-scope] [skip]
> fixed-in 4af1c9d
Posted: "Fixed in 4af1c9d by adding await on subscribeAll."
— Thread 2/4 · still-applies · apps/api/src/scheduled.ts:80 ———
CodeRabbit says: One failure in the batch aborts the rest — use Promise.allSettled.
Fix is in autonomous reach (one-file, mechanical, one plausible diff) — applying.
✏️ edited apps/api/src/scheduled.ts (Promise.all → Promise.allSettled)
📦 committed 8c2a17e — bugfix(api): use allSettled in scheduled batch (CodeRabbit thread)
Posted: "Fixed in 8c2a17e by switching the batch from Promise.all to Promise.allSettled."
— Thread 3/4 · likely-fixed · apps/app/src/ui.tsx:88 ——————————
Posted (auto): "Fixed in 4af1c9d by switching <Button> to semantic markup."
— Thread 4/4 · out-of-scope · packages/db/src/migrate.ts:14 ——
Posted (auto): "Out-of-scope of this PR — should be tracked separately."
Polling for CodeRabbit reactions (every 60s, up to 5 min):
✅ PRT_a — CodeRabbit reacted 🚀 (agree), auto-resolved
✅ PRT_b — CodeRabbit replied "Resolved" (agree), auto-resolved
⏳ PRT_c — CodeRabbit reacted 👀 (pending), still polling
🔁 PRT_d — CodeRabbit pushed back, will surface on next run
Handled 4 threads. Posted 4 replies (3 autonomous, 1 user-chosen).
1 commit pushed during the run (8c2a17e — still-applies fix).
2 closed on CodeRabbit agreement; 2 still open.
Installation
Claude Code:
/plugin marketplace add tkoehlerlg/coderabbit-threads
/plugin install coderabbit-threads@coderabbit-threads
/reload-plugins
Then trigger via /coderabbit-threads or natural language ("Go through the open CodeRabbit threads on this PR.").
Other hosts (Cursor, Copilot CLI / VS Code, Codex CLI, Gemini CLI, Windsurf, Cline, Kilo Code, Continue.dev, Zed Agent Panel, Aider): see INSTALLATION.md. Tier-2 hosts (Windsurf, Cline, Kilo, Continue, Zed) have a one-liner installer: