address-pr-comments
Skill16 starsChanged 4 months agoMITView on GitHub
Work through unresolved review comments on your PR as the author: triage every thread, implement fixes where the reviewer is right, push back with rationale where they aren't, answer questions, commit + push, and reply to every thread with what happened. Use when asked to address, respond to, or resolve PR review feedback.
- Commits and pushes
17 other projects use a version of this.
Adopted by
Most recently taken up by
- artberri/skillstheir own version, first seen Nov 8, 2026
- Pubx-ai/skillstheir own version, first seen Nov 8, 2026
- F3-Nation/f3-nationtheir own version, first seen Nov 2, 2026
- Cecilapp/Ceciltheir own version, first seen Oct 25, 2026
- Azure/azure-messaging-ai-contexttheir own version, first seen Oct 22, 2026
- microsoft/vscode-pull-request-githubtheir own version, first seen Oct 20, 2026
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- fallow-rs/fallow★ 5.3ksame name
- microsoft/vscode-pull-request-github★ 2.6ksame name
- Automattic/pocket-casts-ios★ 1.8ksame name
- Cecilapp/Cecil★ 299same name
- F3-Nation/f3-nation★ 210same name
- nex-agi/NexRL★ 119same name
- TangleML/tangle-ui★ 104same name
- ByronScottJones/Agents★ 7same name
- Pubx-ai/skills★ 6same name
- gannonh/skills★ 2same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- agent-docsSkill
- build-memorySkill
- decompose-specSkill
- implement-specSkill
- orchestrate-buildSkill
- reconcile-buildSkill
- refresh-repo-docsSkill
- review-prSkill
- self-reviewSkill
- synthesize-specSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 2 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
A misunderstanding is information about the code: If a competent reviewer misread something, future readers will too.
- Distinctive: line 84
Read each thread completely, then read the file it anchors to (the current version — the comment may reference code that has since moved), …
- Very specific: line 106
If reply_only is set, fix items become replies stating what you *would* change and your agreement — no edits.
- Very specific: line 123
Verify before pushing: run the repo's build/test/lint for the changed files, resolved the same way as the self-review skill's Step 1.1 …
- Very specific: line 147
Commit links: <pr-url>/commits/<full-sha> (short SHA as the link text).
- Very specific: line 158
If resolve_threads is true, resolve only the fix and
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Address PR Comments
Take the author's seat on your own PR: every unresolved review thread gets exactly one of five outcomes — a fix, a link to the commit that already fixed it, a reasoned push-back, an answer, or a scoped follow-up. A review comment ends one of two ways: you applied it, or you explained why not. A thread left hanging tells the reviewer their time was wasted.
Two calibration rules frame everything below:
- Reviewer comments are input, not commands. Evaluate each on its merits with the same demonstrability bar you'd apply to your own findings. The failure mode of an agent in this seat is sycophancy — "fixing" things that aren't broken because someone asked. If the reviewer is wrong, a respectful, evidence-based reply is addressing the comment.
- A misunderstanding is information about the code. If a competent reviewer misread something, future readers will too. Prefer clarifying the code (rename, restructure, add a code comment) over explaining in the thread — the thread persuades one person once; the code persuades everyone forever.
Phase 0 — Gather the threads
From the PR's branch (check it out if needed), sync first — replies will reference commits, so the local branch must match the remote:
git pull --ff-onlyThen run the bundled fetcher from the repo root (read-only):
// turbo
bash scripts/fetch-unresolved-threads.sh <pr>It writes /tmp/pr-unresolved-threads.json — every unresolved thread
(path, line, full comment chain with authors and databaseIds) — plus
/tmp/pr-meta.json with the PR metadata, base branch, and your login.
Partition the unresolved threads:
- Awaiting you: last comment is not yours → these are the work queue.
- Awaiting them: last comment is yours → skip (re-running this skill must not double-reply; idempotency comes from this filter).
Include bot/agent threads (e.g. automated reviewers) — they're often the easiest wins and ignoring them leaves visible dangling threads.
Also fetch the commit log for the branch (you'll need it in triage):
git log origin/<base>..HEAD --pretty=format:"COMMIT %H %s" --name-onlyPhase 1 — Triage every thread
Read each thread completely, then read the file it anchors to (the current version — the comment may reference code that has since moved), plus the diff for that file. Classify into exactly one:
| Class | Test | Outcome |
| fix | The reviewer is right, or it's a small matter of taste (cost of applying < cost of arguing) | Implement in Phase 2 |
| already-addressed | A commit since the comment demonstrably fixed it — confirm by reading git show <sha> -- <path>, not by commit message | Reply with the commit link |
| push-back | You can demonstrate the comment is mistaken, or the "improvement" would make the code worse (over-engineering, breaking a repo convention, solving a problem that doesn't exist) | Reply with rationale |
| answer | A genuine question | Reply with the answer; if the question reveals unclear code, also clarify the code (that part becomes a fix) |
| out-of-scope | Real, but belongs in a different change (unrelated refactor, pre-existing issue, scope creep) | Reply acknowledging it + file or propose a follow-up issue; never silently ignore |
Triage discipline:
- For fix: restate to yourself what the reviewer actually wants before editing — misreading the ask and "fixing" the wrong thing is worse than asking. If a comment is genuinely ambiguous, classify it answer and ask for clarification instead of guessing.
- For push-back: the bar is the same demonstrability bar as reviewing — cite the input/behavior, the repo convention, or the concrete cost that makes your way right. Then invite discussion ("happy to change if you disagree") — the goal is consensus on technical facts, not winning.
- If
reply_onlyis set, fix items become replies stating what you would change and your agreement — no edits.
Phase 2 — Implement the fixes
Skip when reply_only. For the fix queue:
- Group related comments into logical units — one commit per concern, not
one mega-commit. Write meaningful messages describing the change itself
(
fix: guard null user in session refresh), never "address review comments" — reviewers re-review by reading commits since their last pass. - Extend or add tests when the fix changes behavior the tests should have caught — the reviewer finding it means the tests didn't.
- Never rebase, amend, or force-push mid-review. New commits only. History rewriting orphans every existing comment anchor and destroys the reviewer's ability to see what changed since their review. (Squash at merge time if that's the repo's convention.)
- Verify before pushing: run the repo's build/test/lint for the changed
files, resolved the same way as the
self-reviewskill's Step 1.1 (explicit command → repo entry point → toolchain inference → derivation from repo docs). A "fix" that breaks the build converts a helpful reviewer into a hostile one.
Push when push is true:
git pushPhase 3 — Reply to every thread
For each thread in the work queue, post exactly one reply. Formats by class
(apply comment_prefix if set):
- fix →
Fixed in <short-sha> (<link>) — <one line: what changed>. - already-addressed →
Addressed in <short-sha> (<link>) — <how>. - push-back → the rationale, evidence first, ending with openness:
...— happy to change it if you see a case this misses. - answer → the answer; reference specific code/lines.
- out-of-scope →
Agreed this is real; it's out of scope here — filed <issue link / proposed follow-up>.
Commit links: <pr-url>/commits/<full-sha> (short SHA as the link text).
Post each reply as a threaded response to the thread's first comment
(the REST replies endpoint keys on the root comment's databaseId):
gh api repos/<owner>/<repo>/pulls/<number>/comments/<root-databaseId>/replies -f body="<reply>"One API call per reply — no batching. When push is false, print the
planned replies instead of posting.
If resolve_threads is true, resolve only the fix and
already-addressed threads (GraphQL resolveReviewThread mutation with
the thread id from the fetcher output). Never resolve push-back,
answer, or out-of-scope threads — those await the reviewer's
response by definition.
Completion
Report a table: thread (path:line, one-line gist) → class → action (commit sha / reply posted / issue filed). Plus: verification status of the pushed fixes, and any thread deliberately left for human judgment. Clean up temp files.
What this skill does NOT do
- Blindly apply every suggestion — that's sycophancy, not collaboration.
- Rewrite branch history — comment anchors and review continuity outrank a tidy log.
- Resolve the reviewer's threads for them (unless
resolve_threadsand the repo's convention says authors resolve). - Argue taste — if it's arguable and cheap, apply it; disagreement is reserved for demonstrable technical points.
- Reply to threads already awaiting the reviewer — one reply per turn; re-runs must be idempotent.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

