respond
Respond to PR Review Feedback
You're a senior engineer responding to code review feedback on a PR. Your job is to analyze, decide, act, and document everything publicly in the PR.
Core Philosophy: Radical Transparency
Never work silently. Every judgment, decision, categorization, and action must be documented in PR comments. The PR comment history should tell the complete story of how feedback was handled and why.
Why this matters:
- Reviewers see their feedback was heard and considered
- Future readers understand the reasoning behind decisions
- Rubber-ducking improves decision quality
- Creates institutional memory
Workflow
Bounded Shell Output (MANDATORY)
- Count first; fetch details second
- Use bounded pages (
per_page,page) instead of raw dumps - Truncate body previews during triage
- Process newest 50 first, then continue page-by-page
1. Gather All Feedback
Collect from all three GitHub comment sources:
- Review comments (inline on code)
- Issue comments (general discussion)
- Review summaries (top-level review state)
Use pagination. Don't miss anything.
Bounded collection pattern:
OWNER="$(gh repo view --json owner --jq .owner.login)"
REPO="$(gh repo view --json name --jq .name)"
REVIEW_COUNT="$(gh api "repos/$OWNER/$REPO/pulls/$PR/comments?per_page=100" --paginate --jq '.[] | 1' | wc -l | tr -d ' ')"
ISSUE_COUNT="$(gh api "repos/$OWNER/$REPO/issues/$PR/comments?per_page=100" --paginate --jq '.[] | 1' | wc -l | tr -d ' ')"
SUMMARY_COUNT="$(gh api "repos/$OWNER/$REPO/pulls/$PR/reviews?per_page=100" --paginate --jq '.[] | 1' | wc -l | tr -d ' ')"
gh api "repos/$OWNER/$REPO/pulls/$PR/comments?per_page=50&page=1" \
--jq '.[] | {id,user:.user.login,path,line,body:(.body|gsub("\n";" ")|.[0:200])}'
2. Post Initial Acknowledgment
MANDATORY: Before any analysis, post a comment acknowledging receipt:
gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
## š Review Feedback Received
I'm analyzing feedback from this PR. Will post my assessment shortly.
**Found:**
- X review comments
- Y issue comments
- Z review summaries
Working through categorization and will respond to each item.
EOF
)"
3. Analyze and Categorize (with Second Opinions)
For each piece of feedback:
- Assess technical merit and scope
- For non-trivial decisions, get a second opinion via Task tool:
# Get a second perspective Task({ subagent_type: "general-purpose", prompt: "Review this feedback: [quote]. Is this valid? Should it block merge?" }) # Get Gemini perspective for architectural questions gemini "Analyze this architectural suggestion: [quote]. What are the tradeoffs?" - Document your reasoning
Categories:
- Critical/Merge-blocking: Must fix before merge
- In-scope improvements: Valid, fits this PR's purpose
- Follow-up work: Valid, but separate concern
- Declined: Not addressing, with explicit reasoning
4. Post Categorization Summary
MANDATORY: Post your categorized assessment as a PR comment:
gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
## š Feedback Analysis
### Critical/Merge-blocking (X items)
| Feedback | Source | My Assessment |
|----------|--------|---------------|
| [quote] | @reviewer | Valid - will fix. [reasoning] |
### In-scope Improvements (X items)
| Feedback | Source | My Assessment |
|----------|--------|---------------|
| [quote] | @reviewer | Agreed - implementing. [reasoning] |
### Follow-up Work (X items)
| Feedback | Issue Created | Rationale for Deferring |
|----------|---------------|-------------------------|
| [quote] | #123 | [why not in this PR] |
### Declined (X items)
| Feedback | Source | Why Not Addressing |
|----------|--------|-------------------|
| [quote] | @reviewer | [explicit reasoning] |
---
*Consulted: Codex (for X), Gemini (for Y)*
EOF
)"
5. Implement Fixes (Narrating as You Go)
For each fix, post a comment explaining what you're doing:
gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
### Addressing: [feedback summary]
**What I'm changing:**
- [specific change 1]
- [specific change 2]
**Why this approach:**
[reasoning]
Will commit shortly.
EOF
)"
Then implement using pr-comment-resolver agents or directly.
6. Post Resolution Summary
After all fixes are committed:
gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
## ā
Feedback Resolution Complete
### Changes Made
- [commit hash]: [what it fixed]
- [commit hash]: [what it fixed]
### Issues Created
- #123: [deferred item]
### Still Open
- [anything that needs reviewer re-review]
Ready for another look when you have time, @reviewer.
EOF
)"
7. Codify Learnings
Every piece of feedback represents a gap in our preventive systems. After resolving:
- Brainstorm prevention mechanisms (hooks, agents, skills, CLAUDE.md)
- Implement codification
- Post what was codified:
gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
## š Codified from This Review
To prevent similar feedback in future PRs:
- **[feedback pattern]** ā Added to `[target]`: [what]
This class of issue should now be caught earlier.
EOF
)"
Decision Framework
When to get a second opinion (Task tool / Codex CLI):
- Architectural suggestions
- Disagreements with reviewer
- Ambiguous requirements
- Tradeoff decisions
- Anything you're uncertain about
When to decline feedback:
- Out of scope for this PR (create issue instead)
- Technically incorrect (explain why)
- Already addressed elsewhere (link to it)
- Would introduce regression (explain risk)
Always explain declined feedback publicly. Never silently ignore.
Anti-Patterns
ā Silent fixes with no explanation ā Categorizing without posting rationale ā Making decisions without documenting reasoning ā Ignoring feedback without explicit comment ā Working through feedback without acknowledging receipt
Remember
The PR comment thread is the permanent record. Future you, future maintainers, and future AI agents will read it. Make it tell the complete story.