address-pr-comments
Skill0 starsChanged 21 days agoMITView on GitHub
Guide for addressing PR review comments iteratively. Use this when asked to address, fix, or resolve comments on a pull request (Azure DevOps or GitHub).
- 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
- microsoft/vscode-pull-request-githubtheir own version, first seen Oct 20, 2026
- ByronScottJones/Agentstheir own version, first seen Oct 17, 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
- SteveVitali/agent-skills★ 16same name
- ByronScottJones/Agents★ 7same name
- Pubx-ai/skills★ 6same 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 repository6 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- apply-change-to-repo-hierarchySkill
- create-new-taskSkill
- extract-learningsSkill
- run-coverageSkill
- watch-multiple-pr-statusSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. 0 are common, 22 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
22
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 10
Use the appropriate tool based on the PR platform:
- Distinctive: line 12
Azure DevOps PRs: Use ADO MCP tools
- Distinctive: line 15
GitHub PRs: Use GitHub MCP tools
- Very specific: line 23
Azure DevOps PRs: Use ado-repo_update_pull_request_thread with status "Pending"
- Distinctive: line 26
If anything is unclear, ambiguous, or you get stuck, reply to that specific comment asking for clarification from the reviewer before …
- Distinctive: line 28
Build and run unit tests: - Verify the change doesn't break anything
- Distinctive: line 30
Run the tests and ensure they pass
- Distinctive: line 31
Commit locally: - Create a focused commit for this specific change
- Distinctive: line 32
Use a descriptive commit message that references the comment
- Distinctive: line 36
After all comments have been addressed:
- Distinctive: line 40
If none of the comments were ambiguous, proceed automatically through the remaining steps (push, refresh description, reply, resolve) …
- Distinctive: line 46
If the description is still accurate, leave it alone — do not edit just to mark the iteration.
- Very specific: line 47
GitHub PRs: Write the new description to a file and use gh pr edit <pr> --body-file <file>.
- Very specific: line 48
Azure DevOps PRs: Write the description into a JSON body file and PATCH it via az rest (see the repo-level ADO description rule for the …
- Distinctive: line 53
GitHub PRs: Use GitHub CLI
- Very specific: line 55
On failure: If updating a thread fails (e.g., Error updating pull request thread), retry the operation.
- Distinctive: line 67
Before committing any new or modified comment, apply this check:
- Distinctive: line 71
If you are unsure, consult the rubber-duck agent and ask it to evaluate the comment under that test.
- Distinctive: line 86
Add or keep a comment only if you would have written the same comment when first authoring the code, with no PR involved.
- Distinctive: line 96
If a reviewer literally says "please add a comment explaining X", add a comment that explains X itself — not "added per review".
- Distinctive: line 105
Always build and test after each change to catch issues early
- Distinctive: line 106
Commit after each comment to maintain clear history
- Distinctive: line 107
Only pause for the user when a review comment was ambiguous.
- Distinctive: line 108
Treat the PR description like a code comment: it should describe the final state of the change, not narrate the iteration history.
- Distinctive: line 110
Use the correct platform tools (ADO MCP for Azure DevOps, GitHub MCP/CLI for GitHub)
- Distinctive: line 114
When posting replies to PR comments, prefix each reply with "🤖 MrBot:" to clearly indicate the response was generated by AI.
“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
To address PR review comments, follow this process:
Phase 1: Fetch PR Comments
Use the appropriate tool based on the PR platform:
- Azure DevOps PRs: Use ADO MCP tools
ado-repo_list_pull_request_threadsto get comment threadsado-repo_list_pull_request_thread_commentsfor thread details
- GitHub PRs: Use GitHub MCP tools
github-mcp-server-pull_request_readwith methodget_review_comments
Phase 2: Process Each Comment
For each active comment in the PR:
- Mark the comment as pending - Set the thread status to "Pending" to indicate it is being processed
- Azure DevOps PRs: Use
ado-repo_update_pull_request_threadwith status "Pending"
- Azure DevOps PRs: Use
- Read the comment - Understand what change is being requested
- Address the comment - Make the necessary code/documentation changes
- If anything is unclear, ambiguous, or you get stuck, reply to that specific comment asking for clarification from the reviewer before proceeding
- Do NOT leave PR-narration comments in the code - see Code Comment Policy below
- Build and run unit tests - Verify the change doesn't break anything
- Build the affected module's unit tests
- Run the tests and ensure they pass
- Commit locally - Create a focused commit for this specific change
- Use a descriptive commit message that references the comment
Phase 3: Finalize
After all comments have been addressed:
- Pause only for ambiguity:
- If any review comment was unclear or ambiguous (something a reasonable person could interpret in more than one way, or where you had to guess at the reviewer's intent), stop and ask the user how to proceed before pushing or replying. List each ambiguous comment and the interpretation you would otherwise apply.
- If none of the comments were ambiguous, proceed automatically through the remaining steps (push, refresh description, reply, resolve) without asking for approval.
- Push changes - Push all local commits to the remote branch using
git push - Refresh the PR description - PR descriptions drift across review iterations as the change evolves. After pushing, re-read the current description and make sure it still accurately describes the final state of the PR — what it does now, not what the first draft did and not the story of how it got here. Apply the same principle as the Code Comment Policy: the description should make sense to someone who has never seen the prior iterations or the review thread. Concrete checks:
- Does any wording refer to behavior, files, types, or APIs that no longer exist in the current diff? Update or remove.
- Does the description still narrate "v1 did X, then reviewer suggested Y, so v2 does Z"? Rewrite as a description of Z only.
- Have new files, scenarios, or behavior changes been added that the description never mentioned? Add them.
- If the description is still accurate, leave it alone — do not edit just to mark the iteration.
- GitHub PRs: Write the new description to a file and use
gh pr edit <pr> --body-file <file>. Never pass a multi-line description as an inline--bodyargument — PowerShell will mangle newlines, backticks, and$characters. - Azure DevOps PRs: Write the description into a JSON body file and PATCH it via
az rest(see the repo-level ADO description rule for the exact pattern). Never pass the description as an inline CLI argument toaz repos pr update.
- Reply to comments and mark as resolved/fixed:
- Azure DevOps PRs: Use ADO MCP tools
ado-repo_reply_to_commentto reply to each threadado-repo_update_pull_request_threadwith status "Fixed" or "Resolved" (NEVER use "Closed" - the human reviewer who made the comment is expected to mark comments "Closed" after reviewing the changes)
- GitHub PRs: Use GitHub CLI
gh pr revieworgh apito reply to review comments
- On failure: If updating a thread fails (e.g.,
Error updating pull request thread), retry the operation. If it continues to fail, track it for the summary.
- Azure DevOps PRs: Use ADO MCP tools
- Summarize results - Provide a summary to the user including:
- List of all comments that were addressed
- Any comments that failed to update (with thread IDs) so the user can manually resolve them
- Any comments that were skipped or need clarification
Code Comment Policy
When applying a fix in response to a review comment, do not add a comment to the source code that exists only to narrate the PR iteration. The reviewer's feedback, the prior state of the diff, and the reasoning for the change all live in git history and the PR thread — they should not bleed into the committed source.
The test
Before committing any new or modified comment, apply this check:
Read the final code without any knowledge of this PR. Does the comment still describe something that is non-obvious about the code itself (an invariant, an edge case, a subtle ordering requirement, a non-trivial "why")? If the comment only makes sense when you also know what the previous version of the diff looked like, or what a reviewer asked for, delete it.
If you are unsure, consult the rubber-duck agent and ask it to evaluate the comment under that test.
Common pitfalls — comments to AVOID adding
Each rule below is a smell distilled from real reviewer pushback. If a comment you are about to write fits any of them, delete it before committing.
- Narrating the PR's purpose inside a config / manifest / build file. E.g.
# Pinned to <X> for <feature Y> (see PBI 12345)on a dependency pin, or# Bumped to <ver> because <bug>. The pin / version is the constraint; the why belongs in the commit message and work item, not in the manifest. - Long "this is the production default because (ticket nnn)" justifications next to a literal value. E.g.
// Production default after ICM 12345 fix. Setting this explicitly so the test is self-documenting and decoupled from the helper's default. ... = 60000;. If a reader ever needs the ticket they cangit blamethe line; the comment as written is mostly chatter. - Comments that justify the absence of code. E.g.
# NOTE: <step X> is intentionally NOT used here to avoid <transient failure Y> (see AB#12345).. These age badly — once someone adds<step X>later for an unrelated reason, the comment quietly becomes a lie. - Historical narration about an authoring choice. E.g.
// Kept as a free function for testability,// Moved here to keep <other thing> smaller,// Extracted from <other_fn> so the lock scope is tighter. Whether something is a free function vs. a method, or where it lives, is visible in the code; why the author shaped it that way during a particular PR iteration is not interesting to the next reader. - Comments that restate the immediately adjacent line. E.g.
# Run the .NET unit testsabove a YAML task already named🧪 VsTest - Foo.UnitTests, or// increment counterabovecounter += 1;. If the next line makes the comment redundant, the comment is noise. - Comments whose subject is the PR itself. Any comment that talks about "this change", "this fix", "the previous code", "the old version", "the reviewer", "per review", "the suggestion", "we used to…", "originally we…" is a PR-thread artifact masquerading as a code comment. Delete it.
Comments that ARE appropriate
Add or keep a comment only if you would have written the same comment when first authoring the code, with no PR involved. Typical legitimate cases:
- A non-obvious invariant or precondition the caller must satisfy.
- An edge case that is easy to misread or regress (e.g. "len can be 0; mmap rejects zero-length maps, so short-circuit here").
- A non-trivial reason for choosing one approach over an obvious-looking alternative, where the alternative is a real footgun (not just "we used to do X").
- Required documentation (e.g. doc comments on public APIs, SRS/requirement tags, SAFETY blocks on
unsafeRust). - A comment the user (or the reviewer) explicitly asked you to add.
When the reviewer asks for a comment
If a reviewer literally says "please add a comment explaining X", add a comment that explains X itself — not "added per review". Write it as if you were documenting the code from scratch.
When in doubt
Prefer no comment over a narration comment, and prefer a short comment over a long one. A clean diff with no chatter is almost always better than one with explanatory clutter that will be confusing — or just plain stale — to the next reader. If you can imagine a reviewer reacting with "comment not needed", "too verbose", "self-explanatory", "doesn't belong here", or "don't do that", the comment should never have been written in the first place.
Key Principles
- Address comments one at a time to keep changes focused and reviewable
- Always build and test after each change to catch issues early
- Commit after each comment to maintain clear history
- Only pause for the user when a review comment was ambiguous; otherwise push, reply, and resolve automatically once all comments are addressed
- Treat the PR description like a code comment: it should describe the final state of the change, not narrate the iteration history. Refresh it after every push if the change has drifted from what the description says.
- Reply to comments automatically with specific details about how they were addressed (unless an ambiguity pause is in effect)
- Use the correct platform tools (ADO MCP for Azure DevOps, GitHub MCP/CLI for GitHub)
AI Reply Format
When posting replies to PR comments, prefix each reply with "🤖 MrBot:" to clearly indicate the response was generated by AI. This helps reviewers distinguish AI-generated replies from human responses.
Example reply format:
🤖 MrBot: Fixed by updating the null check before accessing the pointer. See commit abc1234.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.

