Triage Review Comments
Consume the review comments already on a PR — Copilot and human reviewers — and sort them into what's worth fixing and what isn't. This is judgment, not a fresh review: each comment is verified against the current code before a verdict.
Read-only. Never reply to threads, resolve conversations, or post anything. The output is a decision aid for the user.
Distinct from siblings: /code-review and /review generate new findings; this skill evaluates existing reviewer comments.
Workflow
Fetch with
gh— pull the PR's review comments (default to the current branch's PR). Cover both inline thread comments and top-level review summaries, from Copilot and human reviewers. Keep only unresolved threads — resolution state lives in the GraphQLreviewThreadsfield (isResolved), not RESTpulls/comments, so reach forgh api graphqlwhen you need to filter out resolved/outdated noise. Capture author,path,line, and body for each. No unresolved comments → report that and stop.Verify each against current code — read the file at
path:lineand confirm the comment still applies. Reviewers (especially bots) comment on stale diffs and miss surrounding context. Anoutdated: truethread defaults toward Skip unless the concern still holds in the current code. Completion: every comment has been checked against the actual code, not judged from its text alone.Classify each comment using the rubric below. Every verdict carries a one-line rationale grounded in what you saw in step 2.
Output the triage table — grouped Address-first (see Output). Completion: every fetched comment appears in the table with a verdict and rationale.
Offer to fix — ask whether to implement the Address items. On yes, hand them to
/tdd(test-first). Don't auto-implement; don't touch Skip/Optional/Discuss items.
Rubric
| Verdict | When |
|---|---|
| Address | Verified against current code as a real bug, risk, correctness gap, or clearly valid improvement. |
| Skip | Wrong, false positive, outdated (code already changed), contradicts an established codebase convention, or outside this PR's scope. Rationale must cite the evidence, not just assert it. |
| Optional | Subjective/style/preference with no correctness impact — the user's call. |
| Discuss | Valid concern needing a decision you can't make alone (product tradeoff, breaking change, architectural direction). |
- Verify before judging. A comment's confidence is not evidence — Copilot produces confident false positives. Ground every verdict in the current code.
- Prefer a specific rationale over a category label: "Skip —
useris already null-checked at line 40" beats "Skip — not applicable".
Output
## Triage: PR #<n> — <title> (<count> unresolved)
### Address (<n>)
- **`path:line`** · @author — <comment gist>
→ <rationale>
### Optional (<n>)
- ...
### Discuss (<n>)
- ...
### Skip (<n>)
- **`path:line`** · @author — <comment gist>
→ <why it doesn't apply, citing the code>
Error handling
gh pr viewfails → rungh auth status; if not on a PR branch, ask for the PR number.- A commented file was deleted or renamed in the PR → note it and lean toward Skip (the concern likely moved).
- Copilot comment references a line outside the diff → treat as low-signal; verify the surrounding code before trusting it.