skills/address-review/SKILL.md
Read review comments on a GitHub PR, address them by fixing code, and reply to each comment. Use when a PR has received review feedback that needs to be acted on.
npx skillsauth add sofer/.agents address-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read review comments on a GitHub pull request, triage them, make code fixes, and respond to each comment. Closes the feedback loop between reviewer and author.
Accept any of:
https://github.com/owner/repo/pull/123123 (infers repo from current directory)address_review:
reference: "123" # PR number or URL
auto_push: false # optional: push fixes without confirmation
fetch comments → categorise → fix → flag → commit → reply → re-request review
Gather all review feedback from the PR.
Get PR metadata:
gh pr view 123 --json number,title,headRefName,baseRefName,body,reviewDecision
Get review summaries (top-level review verdicts):
gh api repos/{owner}/{repo}/pulls/123/reviews
Get inline comments (threaded discussion on specific lines):
gh api repos/{owner}/{repo}/pulls/123/comments
Get general PR comments (non-review discussion):
gh api repos/{owner}/{repo}/issues/123/comments
Sort each comment into one of three categories:
Fix — actionable feedback requiring a code change:
[Blocker] or [Major]Discuss — requires human judgement before acting:
Acknowledge — no code change needed:
[Minor] or [Suggestion] that doesn't warrant a changecategorised:
fix:
- id: 12345
file: "src/store/authSlice.ts"
line: 45
body: "[Blocker] Token not cleared from localStorage"
severity: "blocker"
planned_action: "Add localStorage.removeItem('token') in logout reducer"
- id: 12346
file: "src/components/UserMenu.tsx"
line: 23
body: "[Major] Missing loading state during logout"
severity: "major"
planned_action: "Add isLoggingOut state to disable button"
discuss:
- id: 12347
file: "src/hooks/useAuth.ts"
line: 8
body: "Have you considered using useReducer instead of useState here?"
reason: "Design choice — needs user input"
acknowledge:
- id: 12348
file: "src/hooks/useAuth.ts"
line: 12
body: "[Minor] Unused import: useCallback"
planned_action: "Remove unused import"
Present the categorisation to the user before proceeding:
Review feedback on PR #123:
Will fix (2):
src/store/authSlice.ts:45— Token not cleared from localStorage [Blocker]src/components/UserMenu.tsx:23— Missing loading state [Major]Needs your input (1):
src/hooks/useAuth.ts:8— Reviewer asks about useReducer vs useStateWill acknowledge (1):
src/hooks/useAuth.ts:12— Remove unused importProceed with fixes?
For each comment categorised as fix or acknowledge (where a minor change is warranted):
Checkout the PR branch:
gh pr checkout 123
Read the relevant file and understand the surrounding context
Make the code change. Address blockers first, then major, then minor.
After all fixes, run tests if a test command is available:
npm test
# or bun test, pytest, etc.
Rules:
For each comment categorised as discuss, present it to the user with context:
Reviewer comment on
src/hooks/useAuth.ts:8: "Have you considered using useReducer instead of useState here?"Current code: Uses useState for isLoggingOut flag Reviewer's suggestion: Switch to useReducer
How would you like to respond?
Wait for user direction before acting on discussion items. The user may:
Use the commit skill conventions:
fix(auth): clear token from localStorage on logout
Addresses review feedback on PR #123.
Guidelines:
Push the fixes:
git push
After fixes are committed and pushed, reply to each comment on GitHub.
For fixed items:
gh api repos/{owner}/{repo}/pulls/123/comments/{comment_id}/replies \
--method POST \
--field body="Fixed — added localStorage.removeItem('token') in the logout reducer. See $(git rev-parse --short HEAD)."
For acknowledged items (minor fixes):
gh api repos/{owner}/{repo}/pulls/123/comments/{comment_id}/replies \
--method POST \
--field body="Fixed — removed unused import."
For discussion items (after user provides direction):
gh api repos/{owner}/{repo}/pulls/123/comments/{comment_id}/replies \
--method POST \
--field body="User's response here."
For acknowledged items (no change needed):
gh api repos/{owner}/{repo}/pulls/123/comments/{comment_id}/replies \
--method POST \
--field body="Acknowledged — keeping as-is because [reason]."
Reply to top-level review comments (non-inline) using the issues API:
gh api repos/{owner}/{repo}/issues/123/comments \
--method POST \
--field body="Response here."
Rules:
After all comments are addressed and replies posted:
gh api repos/{owner}/{repo}/pulls/123/requested_reviewers \
--method POST \
--field 'reviewers=["reviewer-username"]'
Get the reviewer username from the reviews fetched in step 1.
address_review:
pr: 123
comments_total: 4
fixed: 3
discussed: 1
acknowledged: 0
commits:
- sha: "abc1234"
message: "fix(auth): clear token from localStorage on logout"
- sha: "def5678"
message: "fix(ui): add loading state to logout button"
replies_posted: 4
review_re_requested: true
reviewer: "reviewer-username"
tools
Check whether Claude and Codex have equivalent access to shared agent resources, skills, hooks, plugins, MCP servers, permissions, startup behaviour, and provider-specific adapter config. Use when comparing agent environments, debugging missing capabilities after restart, or deciding whether to symlink a resource or configure a runtime.
testing
Record substantive skill use in an append-only local log. Use after choosing or invoking a non-system skill for real work, when a skill is inspected but not used, or when a skill fails to apply. Do not use for routine system skills or incidental file reads.
testing
Turn a vague or underspecified request into a self-contained problem statement. Use when the user has a rough idea, when a request would fail if handed directly to an agent, or before non-trivial work that needs shared understanding.
data-ai
Append a one-line learning to ~/.agents/learning-log.md. Use when the user types /learning, or when something genuinely worth remembering surfaced during work and the user confirms it should be captured.