address-pr-comments
Skill104 starsChanged 3 days agoApache-2.0View on GitHub
Find the PR for the current branch, read review comments, and address them — either by fixing the code or pushing back with a reply. Use when the user wants to handle PR feedback.
We split this skill into the rules it gives an agent
14 rules. 0 are common, 13 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
13
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Check the current branch for an open PR, read all unresolved review comments, and let the user pick which ones to address.
- Distinctive: line 18
If no PR exists for the current branch, tell the user and stop.
- Distinctive: line 50
Before presenting comments to the user, read the relevant code and think critically about each comment.
- Distinctive: line 52
Use the AskUserQuestion tool to show a multi-select list of all remaining unresolved, unaddressed comments.
- Distinctive: line 72
If there are no actionable comments, tell the user everything has been addressed and stop.
- Distinctive: line 80
Every reply must be prefixed with the AI disclaimer:
- Distinctive: line 139
If any code changes were made:
- Very specific: line 142
Create a commit with a message like: address pr feedback
- Distinctive: line 143
Do NOT push — tell the user the changes are committed and ready to push
- Distinctive: line 147
After all comments are addressed, show a summary table with columns:
- Distinctive: line 156
Always read the full file context before deciding how to address a comment
- Distinctive: line 158
Never dismiss feedback rudely — be respectful even when pushing back
- Distinctive: line 159
If a comment requires a large refactor or is out of scope, say so and suggest a follow-up issue
- Distinctive: line 161
If unsure about a comment's intent, ask the user before responding
“Common” is measured: kept by at least 6 in 10 of the 15 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
Check the current branch for an open PR, read all unresolved review comments, and let the user pick which ones to address.
Step 1: Find the PR
gh pr view --json number,title,url,state --jq '{number, title, url, state}'If no PR exists for the current branch, tell the user and stop.
Also determine the current GitHub user:
gh api user --jq '.login'Step 2: Fetch review comments
Get all review comments (not general PR comments):
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments --paginate --jq '.[] | {id, path, line, body, user: .user.login, created_at, in_reply_to_id, diff_hunk}'Step 3: Filter to actionable comments
Build a thread map by grouping comments using in_reply_to_id. For each top-level comment thread:
Skip the thread if ANY of these are true:
- The thread is already resolved
- The top-level comment was made by the current user
- The top-level comment was made by a bot (dependabot, github-actions, etc.)
- The comment is a pure approval with no actionable feedback
- The current user (or PR author) has already replied in the thread — this means it was already addressed in a previous run or manually. Check if any reply in the thread was authored by the current GitHub user.
This ensures running the command again won't double-reply to already-addressed comments.
Step 4: Analyze comments and present for selection
Before presenting comments to the user, read the relevant code and think critically about each comment. Determine whether the suggestion is correct, already addressed, or a bad idea. Form a proposed action for each.
Use the AskUserQuestion tool to show a multi-select list of all remaining unresolved, unaddressed comments.
Always make "All comments" the first option of the first question, with the total count (e.g. All comments (8)). Selecting it addresses every comment with its proposed action, whatever else is selected. AskUserQuestion allows at most 4 options per question and 4 questions, so when the comments don't fit in the remaining slots, group related ones into a single option (by file or shared concern) rather than leaving any out.
Each comment option should show:
- The reviewer's username
- The file path and line number
- A truncated preview of the comment (first ~80 characters)
- Your proposed action — what you plan to do (e.g., "Will fix: change X to Y", "Will push back: current approach is better because...", "Will answer: explain how X works")
Example options:
All comments (8)→ address every comment above with its proposed action[reviewer] file.ts:42 — "Fix this typo..." → Will fix: rename varName to variableName[reviewer] other.ts:10 — "This should use..." → Will push back: current pattern is more performant here[reviewer] types.ts:5 — "Why not use...?" → Will answer: explain the tradeoff
The user picks which comments they want to address. If "All comments" is selected, address every comment; otherwise proceed only with the selected ones.
If there are no actionable comments, tell the user everything has been addressed and stop.
Step 5: Address each selected comment
Do not blindly agree with every comment. Critically evaluate each suggestion against the codebase, existing patterns, and correctness. If a suggestion would make the code worse, introduce inconsistency, or is factually wrong — push back respectfully. The reviewer is a collaborator, not an authority to obey unconditionally.
For each selected comment, read the relevant file and surrounding context, then decide:
Every reply must be prefixed with the AI disclaimer:
> 🤖 This is an AI-generated response.
<rest of the reply body>If the suggestion is correct and actionable:
- Make the code change
- Reply to the comment confirming the fix:
> 🤖 This is an AI-generated response.
Fixed — <brief description of what was changed>.If the suggestion is already addressed:
Reply explaining that it's already handled:
> 🤖 This is an AI-generated response.
This is already handled — <explanation with file path/line reference>.If the suggestion is incorrect or not applicable:
Reply respectfully pushing back:
> 🤖 This is an AI-generated response.
I think the current approach is better here because <reasoning>. <Optional: offer an alternative compromise>.If the comment is a question (not a change request):
Reply with the answer:
> 🤖 This is an AI-generated response.
<Answer the question with relevant context/file references>.Step 6: Post replies
For each comment, post the reply:
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments/{comment_id}/replies -f body="<reply>"Step 7: Stage and commit fixes
If any code changes were made:
- Stage only the files that were modified to address comments
- Create a commit with a message like:
address pr feedback - Do NOT push — tell the user the changes are committed and ready to push
Step 8: Show summary
After all comments are addressed, show a summary table with columns:
| # | File | Comment | Action |
Where Action clearly states what was done: "Fixed — ...", "Pushed back — ...", "Answered — ...", or "Already handled — ...".
Important
- Always read the full file context before deciding how to address a comment
- Think critically — do not default to agreeing. Push back when the suggestion is wrong, harmful, or inconsistent with the codebase
- Never dismiss feedback rudely — be respectful even when pushing back
- If a comment requires a large refactor or is out of scope, say so and suggest a follow-up issue
- Group related comments that touch the same code — address them together
- If unsure about a comment's intent, ask the user before responding
- Show the user what you plan to reply before posting, so they can adjust
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- fallow-rs/fallow★ 5.3ksame name
- microsoft/vscode-pull-request-github★ 2.6ksame name
- Automattic/pocket-casts-ios★ 1.8ksame name
- microsoft/nvx★ 803same name
- Cecilapp/Cecil★ 299same name
- F3-Nation/f3-nation★ 210same name
- nex-agi/NexRL★ 119same name
- SteveVitali/agent-skills★ 16same name
- ByronScottJones/Agents★ 3same name
- gannonh/skills★ 2same name
6 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 repository20 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- accessibilitySkill
- analytics-trackingSkill
- audit-ticketsSkill
- docs-updateSkill
- e2e-testingSkill
- gardeningSkill
- list-skillsSkill
- open-sourceSkill
- project-conventionsSkill
- react-patternsSkill
- reviewSkill
- tangle-domainSkill
- tanstack-querySkill
- tanstack-routerSkill
- typescript-standardsSkill
- ui-primitivesSkill
- validateSkill
- vitest-testingSkill
- playwright-testingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

