coderabbit-triage
RocketChat/Rocket.Chat.Electron/.claude/skills/coderabbit-triage/SKILL.md
Triage unresolved CodeRabbit review threads on a PR. Classify each one as accept, reject or verify, apply accepted fixes, then reply and resolve
- Commits and pushes
What's in it
- CodeRabbit Triage
- Argument
- Steps
- 1. Fetch unresolved CodeRabbit threads
- 2. Classify each thread
- 3. Present the table and STOP
- 4. On go: apply ACCEPT items
- 5. Reply and resolve per thread
- 6. Hand off
---
name: coderabbit-triage
description: Triage unresolved CodeRabbit review threads on a PR. Classify each one as accept, reject or verify, apply accepted fixes, then reply and resolve
disable-model-invocation: true
---
# CodeRabbit Triage
Triage unresolved CodeRabbit review threads on a PR, classify each one,
apply the fixes worth applying, and close the loop with a reply and
resolution. Never commit or push — this skill hands off, it does not
ship.
## Argument
PR number. If not given, resolve it for the current branch:
```bash
gh pr view --json number --jq '.number'
```
## Steps
### 1. Fetch unresolved CodeRabbit threads
```bash
gh api graphql --paginate -f query='
query($owner:String!, $repo:String!, $pr:Int!, $endCursor:String) {
repository(owner:$owner, name:$repo) {
pullRequest(number:$pr) {
reviewThreads(first: 100, after: $endCursor) {
pageInfo { hasNextPage endCursor }
nodes {
id
isResolved
isOutdated
path
line
comments(first: 100) {
pageInfo { hasNextPage endCursor }
nodes {
author { login }
body
url
}
}
}
}
}
}
}' -f owner=RocketChat -f repo=Rocket.Chat.Electron -F pr=<PR_NUMBER> \
--jq '.data.repository.pullRequest.reviewThreads.nodes[]
| select(.comments.nodes[0].author.login == "coderabbitai")
| select(.isResolved == false)'
```
`--paginate` requests the next page of threads until `hasNextPage` is
false. It reads the first `pageInfo` in the response. Keep the
`reviewThreads` `pageInfo` above `nodes` so that it comes first.
A thread can have more comments than one page holds. If the
`comments.pageInfo.hasNextPage` of a thread is true, fetch the remaining
comments. Pass the `endCursor` of that thread as the start cursor:
```bash
gh api graphql --paginate -f query='
query($id:ID!, $endCursor:String) {
node(id:$id) {
... on PullRequestReviewThread {
comments(first: 100, after: $endCursor) {
pageInfo { hasNextPage endCursor }
nodes { author { login } body url }
}
}
}
}' -f id=<THREAD_ID> -f endCursor=<COMMENTS_END_CURSOR> \
--jq '.data.node.comments.nodes[]'
```
Note `isOutdated` per thread; an outdated thread
still needs a decision, just flag it as possibly stale (the line moved).
### 2. Classify each thread
For every unresolved CodeRabbit thread, assign one of:
- **ACCEPT** — clear correctness or convention win (real bug, matches an
existing repo pattern, cites a rule from AGENTS.md).
- **REJECT** — wrong, style-only against this repo's conventions, or
already handled elsewhere. State WHY with a concrete code reference
(file:line or existing pattern), not just "disagree".
- **VERIFY** — the call requires running a test or reproducing behavior
before deciding.
Treat review-bot feedback with caution. Bots are often confidently
wrong. Verify each claim against the actual code before you agree.
Do not accept a suggestion only because it sounds plausible.
### 3. Present the table and STOP
```
Thread | File:Line | Classification | Reason
```
Stop here for explicit user confirmation before touching any code or
calling any mutation.
### 4. On go: apply ACCEPT items
Apply straightforward ACCEPT fixes inline. Delegate a fix to a
subagent when it touches 2+ files or needs real logic changes. Run the
narrowest test scope that covers the change (see AGENTS.md Testing /
`pr-check` skill step 4 for the spec-mapping approach). Do not touch
REJECT or VERIFY items' code — VERIFY items get whatever check resolves
the question (run the test, reproduce the behavior), not a code change
unless the verification confirms the suggestion.
### 5. Reply and resolve per thread
Reply on every thread (ACCEPT, REJECT, and VERIFY once resolved) before
resolving it:
```bash
gh api graphql -f query='
mutation($threadId:ID!, $body:String!) {
addPullRequestReviewThreadReply(input:{pullRequestReviewThreadId:$threadId, body:$body}) {
comment { id url }
}
}' -f threadId=<THREAD_ID> -f body="<reply text>"
```
```bash
gh api graphql -f query='
mutation($threadId:ID!) {
resolveReviewThread(input:{threadId:$threadId}) {
thread { id isResolved }
}
}' -f threadId=<THREAD_ID>
```
Never resolve a REJECT thread without a reply explaining why first —
silent resolution loses the reasoning for the next person who reads the
PR.
### 6. Hand off
Report what was applied, what was rejected (with reasons), and what
still needs the user's own verification. Never `git commit` or
`git push` — that decision stays with the user.
More agent context in RocketChat/Rocket.Chat.Electron
19 other files this repository gives its agents.
AGENTS.md
Skill
- boot-wedge-debug.claude/skills/boot-wedge-debug/SKILL.md
- dev-app-verify.claude/skills/dev-app-verify/SKILL.md
- electron-build.claude/skills/electron-build/SKILL.md
- electron-bump.claude/skills/electron-bump/SKILL.md
- i18n-audit.claude/skills/i18n-audit/SKILL.md
- i18n-translate.claude/skills/i18n-translate/SKILL.md
- new-ipc-channel.claude/skills/new-ipc-channel/SKILL.md
- new-spec.claude/skills/new-spec/SKILL.md
- package-smoke.claude/skills/package-smoke/SKILL.md
- pr-check.claude/skills/pr-check/SKILL.md
- pr-watch.claude/skills/pr-watch/SKILL.md
- qa-pack.claude/skills/qa-pack/SKILL.md
- release-notes.claude/skills/release-notes/SKILL.md
- ship-release.claude/skills/ship-release/SKILL.md
- worktree-gc.claude/skills/worktree-gc/SKILL.md
- desktop-qa-flowsskills/desktop-qa-flows/SKILL.md
- dev-app-verifyskills/dev-app-verify/SKILL.md
Discussion
Talked about elsewhere, linking to RocketChat/Rocket.Chat.Electron
- [Bug]: Linux Electron 12 always unnecessary opens BrowserWindow menu on every keyboard layout switch via Alt+Shift & Alt+Ctrl hotkeys
GitHub · electron/electron · 19 reactions · 11 comments · Mar 10, 2021
- Error: net::ERR_CERT_INVALID on app start
GitHub · electron/electron · 5 reactions · 10 comments · Sep 7, 2020
- electron-updater broken on Windows since Windows 10 1809 version
GitHub · electron-userland/electron-builder · 4 reactions · 9 comments · Nov 11, 2020
- [FIX] high cpu usage ~ svg icon
GitHub · RocketChat/Rocket.Chat · 4 reactions · 1 comments · Nov 20, 2018
- Fixes problem when Alt-Shift opens menu on Linux
GitHub · keybase/client · 4 reactions · 3 comments · Feb 12, 2018
- Links in channel desciption, accouncements are not set target="_blank"
GitHub · RocketChat/Rocket.Chat · 3 reactions · 6 comments · Jan 11, 2023
- Changing language forces menu focus and makes it hard to write multi-language messages
GitHub · mattermost/desktop · 2 reactions · 4 comments · Oct 26, 2020
- Notification icon missing
GitHub · RocketChat/Rocket.Chat · 1 reactions · 2 comments · Jun 18, 2026
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

