Use when you have PR review comments to address and want to evaluate each comment's validity before deciding to fix, reply, or skip
Interactive workflow: analyze PR review comment validity, recommend action, let user decide (fix/reply/skip).
digraph pr_review_flow {
"Fetch PR comments" [shape=box];
"More comments?" [shape=diamond];
"Show comment + file context" [shape=box];
"Analyze validity" [shape=box];
"Recommend action" [shape=box];
"Ask user: Fix/Reply/Skip/Quit?" [shape=diamond];
"Make code changes" [shape=box];
"Draft reply" [shape=box];
"Track as skipped" [shape=box];
"Show summary" [shape=box];
"Fetch PR comments" -> "More comments?";
"More comments?" -> "Show comment + file context" [label="yes"];
"More comments?" -> "Show summary" [label="no"];
"Show comment + file context" -> "Analyze validity";
"Analyze validity" -> "Recommend action";
"Recommend action" -> "Ask user: Fix/Reply/Skip/Quit?";
"Ask user: Fix/Reply/Skip/Quit?" -> "Make code changes" [label="Fix"];
"Ask user: Fix/Reply/Skip/Quit?" -> "Draft reply" [label="Reply"];
"Ask user: Fix/Reply/Skip/Quit?" -> "Track as skipped" [label="Skip"];
"Ask user: Fix/Reply/Skip/Quit?" -> "Show summary" [label="Quit"];
"Make code changes" -> "More comments?";
"Draft reply" -> "More comments?";
"Track as skipped" -> "More comments?";
}
CRITICAL: Do NOT use gh api --jq directly - it truncates comment bodies.
Use the included script:
# summary with counts and titles
python .claude/skills/address-pr-review/scripts/fetch_comments.py <PR> --summary
# show unresolved comments (default)
python .claude/skills/address-pr-review/scripts/fetch_comments.py <PR>
# single comment by ID
python .claude/skills/address-pr-review/scripts/fetch_comments.py <PR> --id <ID>
# all comments including resolved
python .claude/skills/address-pr-review/scripts/fetch_comments.py <PR> --all
Critical principle: Reviewer may be wrong - analyze validity before recommending action.
| Phase | Actions |
|-------|---------|
| Fetch | Run --summary first to see counts<br>Only process unresolved comments — resolved ones are already closed, skip them<br>Then --id <ID> for each unresolved comment to analyze<br>Exit if no unresolved comments |
| Per Comment | Show: file:line, author, comment, ±10 lines context<br>Analyze: Valid/Nitpick/Disagree/Question<br>Recommend: Fix/Reply/Skip with reasoning |
| Fix | Minimal changes per llm/rules-*.md<br>Do NOT reply — just fix the code |
| Reply | Draft based on type: Question/Suggestion/Disagreement<br>Wait 2 minutes between each reply<br>Post with: gh api --method POST repos/{owner}/{repo}/pulls/{PR}/comments -f body="..." -F in_reply_to=<ID><br>(never auto-post without user confirmation) |
| Summary | Processed X/N: Fixed Y, Replied Z, Skipped W<br>List: files modified, reply drafts, next steps |
| Principle | Violation Pattern | |-----------|-------------------| | Unresolved only | Processing already-resolved comments — the script default filters to unresolved; never re-open resolved threads | | Analyze first | Accepting all feedback as valid without critical analysis | | Never auto-post | Posting replies automatically without user confirmation or skipping 2-minute wait between replies | | No reply on fix | Replying to comments that were addressed with a code fix — fixes speak for themselves | | One at a time | Batch processing all comments without individual analysis | | Show context | Making changes without displaying ±10 lines around code | | Minimal changes | Large refactors in response to small comments | | Follow standards | Ignoring llm/rules-*.md when fixing | | Respectful honesty | Being defensive/dismissive when reviewer is wrong | | User control | Posting drafts without letting user edit first |
Fixed: [what]. [why]Updated: [what][explanation]Good catch, [action/reason][respectful reasoning]Requires: gh CLI authenticated, GitHub remote configured
# Start session
"use address-pr-review for PR <number>"
# Or list PRs first
"use address-pr-review"
npx skills add nicofretti/address-pr-review下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer