From skillz
Respond to PR review feedback. Process every unresolved comment, suggestion, review summary, and CI annotation on a PR — react, reply, resolve threads, and dismiss CHANGES_REQUESTED reviews only when fully addressed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skillz:respond-to-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Process every unresolved comment, suggestion, review summary, top-level
Process every unresolved comment, suggestion, review summary, top-level
comment, and CI annotation on the current PR. Every item gets a reaction
(when reactable) and a written reply. Threads get resolved when the work is
done. CHANGES_REQUESTED reviews get dismissed only when fully addressed.
Repo is always teamclara/clara_v1 for all MCP and gh calls.
If the user passed a PR number as an argument, use it. Otherwise:
gh pr view --json number,headRefName,baseRefName,url 2>/dev/null
Stop with a clear message if no PR is open for this branch.
There are four distinct sources. Fetch in parallel:
| Source | Fetch with | Resolvable? | How to reply |
|---|---|---|---|
review_thread | mcp__github_extensions__get_review_comments (carries thread_node_id) | yes, via resolve_review_thread | gh api repos/teamclara/Clara_V1/pulls/{PR}/comments/{id}/replies --method POST -f body=... |
review_body | gh api repos/teamclara/Clara_V1/pulls/{PR}/reviews (state: APPROVED, CHANGES_REQUESTED, COMMENTED, DISMISSED) | dismissable for CHANGES_REQUESTED | gh pr comment {PR} --body ... |
issue_comment | gh pr view {PR} --json comments --repo teamclara/Clara_V1 | no | gh pr comment {PR} --body ... |
check_annotation | gh api repos/teamclara/Clara_V1/commits/{HEAD_SHA}/check-runs | no (re-run check) | Fix the underlying code |
Deduplicate by (source, id). Skip anything already RESOLVED, already replied
to by the current user, or authored by the current user.
Print the categorized summary table:
PR #N — Annotations
──────────────────────────────
Review bodies: N (APPROVED: N, CHANGES_REQUESTED: N, COMMENTED: N, DISMISSED: N)
Inline threads: N (SUGGESTION: N, CHANGE_REQUEST: N, QUESTION: N, NITPICK: N, PRAISE: N)
Top-level comments: N
CI check failures: N
Already resolved: N (skipped)
──────────────────────────────
To process: N
Inline-thread categories:
```suggestion block? or asks for clarificationnit: or nit - (optional)Process items one at a time. Never batch these steps across items - finish one completely before starting the next. The six steps apply uniformly to all four sources; only step 3.6 (resolve) varies by source.
hipaa, backend, frontend,
html-security, database, logging, testing, toolchain, CLAUDE.md).
Invoke the relevant skill before deciding.Decide ACCEPT or REJECT based on current code + project conventions. Stale suggestions against already-fixed code count as ACCEPT with "already addressed".
Post a reaction on the originating comment via mcp__github_extensions__add_reaction:
+1-1eyesReactions attach to individual comments. For a review_body, react on the
review summary comment. For issue_comment and review_thread, react on the
comment itself. check_annotation items have nothing to react to - skip the
reaction and proceed.
The reaction is the first signal so the reviewer sees your stance immediately, before any code changes land.
mcp__github_extensions__apply_suggestion
(or apply_suggestions_batch for adjacent suggestions from the same
reviewer).Honor project rules while editing:
HIPAALogger.advance(), never navigate().hk check on changed files. Do not run the full
test suite unless the comment explicitly asks.review_thread: reply on the thread via
gh api repos/teamclara/Clara_V1/pulls/{PR}/comments/{comment_id}/replies --method POST -f body="..."
so the reply is threaded.review_body: post a new PR-level comment via gh pr comment {PR} --body "..." referencing the review author (e.g. `Re: @reviewer's review ({state})
issue_comment: same as review_body - new PR-level comment. A single PR
comment addressing each concern is enough for bot summaries.check_annotation: no reply needed - the fix itself + a reference in the
follow-up commit message is sufficient. If the failure was a flake, note
that in the final report.Keep the body to one or two sentences:
review_thread + ACCEPT (applied, edited, or already-addressed): call
mcp__github_extensions__resolve_review_thread with the thread_node_id
(PRRT_...).review_thread + REJECT: leave unresolved so the reviewer can close it
after reading your reasoning.review_body with state = CHANGES_REQUESTED: if every concern raised is
addressed, dismiss via
gh api repos/teamclara/Clara_V1/pulls/{PR}/reviews/{review_id}/dismissals --method PUT -f message="Addressed in {sha}; see reply above." -f event=DISMISS.
If any concern is rejected or pending, leave the review as-is.review_body with state = APPROVED / COMMENTED: nothing to resolve -
the reply + reaction is the full response.issue_comment and check_annotation: no thread state - the reply (or the
fix itself) is the full response.Log one line per item as you go:
[thread] [ACCEPT + APPLIED + RESOLVED] path/to/file.py:42 - short summary
[thread] [ACCEPT + EDITED + RESOLVED] path/to/file.py:42 - short summary
[thread] [REJECT + REPLIED] path/to/file.py:42 - reason
[thread] [STALE + REPLIED + RESOLVED] path/to/file.py:42 - addressed in <sha>
[review] [ACCEPT + EDITED + DISMISSED] CHANGES_REQUESTED by @alice - short summary
[review] [REJECT + REPLIED] COMMENTED by @bob - reason
[issue] [REJECT + REPLIED] @bot's CI summary - out of scope
[check] [ACCEPT + EDITED] Test Frontend run #123 - fixed selector
After all items are processed, if any files changed:
commit-commands:commit-push-pr (or commit-commands:commit if a PR
already exists for the branch) to create a single focused commit like
chore(review): address PR #N feedback.mcp__github_extensions__edit_review_comment.Re-fetch all four sources. Any unresolved thread, un-dismissed
CHANGES_REQUESTED review, unanswered comment, or still-failing check that
isn't intentionally left open gets processed now.
Address PR Comments - PR #N
────────────────────────────
Items processed: N
- review threads: N
- review bodies: N
- issue comments: N
- check annotations: N
Accepted + applied: N
Accepted + edited: N
Rejected: N
Already addressed: N
Resolved on GitHub: N (threads)
Reviews dismissed: N
Left open: N
────────────────────────────
Left open intentionally:
- [thread] path/to/file.py:42 - reason
- [review] CHANGES_REQUESTED by @alice - waiting on clarification
CHANGES_REQUESTED reviews only when every concern in the review
body is addressed - partial fixes get a reply but not a dismissal.hipaa, backend, frontend, etc.) when the item
touches their area.npx claudepluginhub northisup/skillz --plugin skillzGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Resolves in-progress git merge or rebase conflicts by analyzing history, understanding intent, and preserving both changes where possible. Runs automated checks after resolution.