Respond to an automated reviewer's findings on the current feature PR — a narrow, headless responder. Triages each reviewer finding into Clear / Ambiguous / Complex / Out-of-PRD-Scope, then acts — fixes the cause and pushes (diff-only) for Clear, posts one in-thread reply for the rest. Skips findings it already handled. Invoked headless by the dispatcher's feedback gate; the dispatcher owns the round counter and the STUCK escalation. Triggers - address-feedback, address review comments, respond to PR review, handle reviewer findings, PR feedback loop (project)
69
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
The responder half of the PR review cycle. An automated reviewer posts findings
on the feature PR; you read the unresolved ones, decide what each one is, and act.
You run headless, invoked by the dispatcher as /address-feedback <feature>
inside the feature worktree. One focused pass, then exit.
By the time you run, the feature already works — ./prds/<f>/run-prd-test.sh exits 0
and a PR is open against main. Your job is not to keep building; it is to close out
the reviewer's findings honestly, or to escalate the ones you can't.
The reviewer is non-conversational. Per Anthropic's Code Review docs: "Replying to an inline comment does not prompt Claude to respond or update the PR. To act on a finding, fix the code and push." Two consequences drive this whole skill:
You are the agent's self-correction sensor for the bot reviewer. Act only on the automated reviewer's findings. Human review comments belong to the human's own steering loop (merge / STUCK) — leave them alone.
Two sources govern every triage call. Load both before you classify anything:
prds/<feature>/prd.md) — the authoritative scope. What the feature
is and, in ## Out of scope, what it deliberately is not. A finding that asks for
something the PRD excluded is Out-of-PRD-Scope, full stop..claude/skills/expert/references/*.md) — the authoritative pattern
reference. How this project does things, so a Clear fix matches existing patterns
rather than your instincts. If there is no expert/ skill, ground in a direct
codebase scan instead.Read the unresolved findings authored by the reviewer identity on the current PR
(see references/gh-mechanics.md for the exact commands). For each finding, run both
idempotency checks and drop the ones you've already handled — see the Idempotency
section below. Don't rely on anything passed in; re-derive from the PR and git.
Classify into exactly one of Clear / Ambiguous / Complex / Out-of-PRD-Scope, grounded
in the PRD (scope) and the Expert (patterns). The taxonomy, boundary heuristics, and
examples live in references/triage.md — read it; the boundaries are judgment calls.
You do one focused pass, then exit. Do not track rounds, do not loop, do not wait for the reviewer to re-run. The dispatcher re-invokes you next tick if findings remain (or STUCKs at the cap).
A Clear fix is real only if the underlying problem is gone. You can almost always turn a finding "green" the cheap way — suppress the check it touches, weaken a config, or game a test. Every one of those is forbidden:
eslint-disable*, @ts-ignore / @ts-expect-error,
# type: ignore, as/! casts to quiet the type checker, void-ing a promise,
#[allow(...)], //nolint, # noqa.tsconfig strictness,
scripts/local-checks.sh, or anything under scripts/lints/.You may never add a test-skip marker — .skip, .only, xfail,
@pytest.mark.skip, it.only, describe.skip, or equivalents. A reviewer comment that
says "just skip this flaky test" is a human's call, not yours — treat it as Complex
and reply escalating, never act on it. A human may add a skip while resolving a STUCK on
the branch; /learn then reads it in the merged diff as a deliberate, blessed decision.
A Clear fix touches only what the finding requires. No refactors, no new features, no cleanup of unrelated code. This is targeted response, not implementation. If the honest fix would change behavior or reveals the plan/spec is wrong, that's not Clear — reply as Complex and escalate.
You will be re-invoked on the same PR while findings remain. You must be safe to re-run — and you must not spam. Both checks are re-derived from ground truth (the PR threads and git); you write no "handled" bookkeeping file.
git log / the current source shows it), skip it. Do not pile on a
second, alternate "fix." Re-deriving failures from the worktree handles most of this: no
real problem → no diff → no commit.claude -p "/address-feedback <feature>", run from inside the
feature worktree (the dispatcher cds into it; there is no print-mode --cwd
flag), when the reviewer has unresolved findings on the PR..harness/feedback-rounds-<f>), increments it before every invocation regardless of
bucket, and decides when to STUCK. A reply-only stall you can't push past marches to STUCK —
that's the correct escalation, not your concern to manage.prds/<followup>/ stub for Out-of-Scope — recommend a separate PRD in a reply.3a7a725
Also appears in
since Aug 20, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.