Review pull request feedback with discerning judgment. The lynx scans comments, identifies legitimate concerns, addresses minor issues directly, and plans responses to significant feedback...
The lynx sits silent on a high branch at twilight, tufted ears swiveling. It hears everythingβthe rustle of a mouse three trees over, the snap of a twig beneath heavy boots, the wind shifting through the canopy. But the lynx doesn't chase every sound. It discerns. It waits. Only when the prey is worth the energy does it moveβswift, precise, economical.
So too with pull request feedback. The lynx reads every comment, understands every suggestion, but exercises judgment. Some feedback illuminates real dangers in the code. Some is well-meaning but unnecessary. The lynx knows the difference. It addresses what matters, plans for what requires care, and lets the wind carry away the rest.
/lynx-repair or mentions lynx/reviewIMPORTANT: This animal reviews PRs and addresses feedback. For creating PRs, use a different animal.
PERCH β LISTEN β DISCERN β RESPOND β RETREAT
β β β β² β
Fetch Parse Filter Address Report
PR Comments Feedback & Plan Results
The lynx settles onto a high branch, eyes adjusting to the fading light. The clearing below comes into focus...
Fetch the PR details and all review comments:
# Get PR overview
gh pr view {number} --repo {repo} --json number,title,body,author,state,mergeable
# Get all review comments
gh pr view {number} --repo {repo} --comments --json comments
# Get review threads (conversations)
gh api repos/{owner}/{repo}/pulls/{number}/reviews
Understand the landscape:
Output: PR summary with context β the lynx knows what territory it's surveying.
The tufted ears rotate, catching every sound in the twilight forest. Nothing escapes the lynx's hearing...
Parse every comment into categories:
Parse each comment for:
Triage each comment:
| Type | Lynx Response |
|---|---|
| Critical | Must address. May need plan if complex. |
| Important | Likely address. Plan if significant effort. |
| Polish | Address directly if quick (< 5 min). Skip if purely cosmetic. |
| Nitpick | Acknowledge and explain skip. Not worth the chase. |
| Question | Answer in PR thread. No code change needed. |
| Discussion | Summarize for user decision. Don't unilaterally decide. |
Output: Categorized comment list with initial triage decisions.
The lynx's eyes narrow. Not every sound is prey. Not every movement demands action. Discernment is survival...
Apply judgment to the triaged feedback:
Critical Issues β Address or Plan:
These always get attention:
parseFormData/safeJsonParse/isRedirect/isHttpError)as casts on external data (form submissions, KV reads, webhook payloads)JSON.parse() without schema validationDecision tree:
Important Issues β Evaluate:
Consider context and effort:
Decision tree:
Polish Issues β Quick Wins Only:
Address if genuinely quick:
Skip if:
Nitpicks β Skip with Explanation:
Be transparent about what the lynx ignores:
Skipping: "Add blank line here" β formatting, doesn't affect readability
Skipping: "Use const instead of let" β already addressed elsewhere
Skipping: "I'd write this differently" β subjective preference, current version is clear
Questions β Answer, Don't Fix:
Respond in the PR thread:
Discussions β Escalate to User:
When feedback requires product/design decisions:
Output: Filtered list of what to address directly, what to plan, and what to skip.
The lynx movesβnot for every rustle, but for the prey that matters. Swift. Decisive. No wasted motion...
Direct Fixes (Minor Issues):
For items that can be addressed quickly:
git add {files}
git commit -m "$(cat <<'EOF'
address(review): fix {brief description}
- {Specific change made}
- Responds to review comment by @{reviewer}
Refs: PR #{number}
EOF
)"
"Fixed in {commit-sha} β extracted the helper function as suggested."
Planning (Major Issues):
For items requiring significant work:
Create a response plan:
## PR #{number} Feedback Response Plan
### Critical Issues to Address
1. **{Issue summary}** (from @{reviewer})
- Location: `{file}:{line}`
- Concern: {What the reviewer identified}
- Proposed fix: {Brief description}
- Effort: {Small/Medium/Large}
- Files affected: {list}
2. **{Issue summary}**...
### Important but Optional
1. **{Issue summary}**
- Benefit: {Why it's worth doing}
- Cost: {Time/effort required}
- Recommendation: {Do it / Skip it / Discuss}
### Skipped (with reasons)
- "{comment summary}" β {reason for skipping}
- ...
### Open Questions
- {Any items needing user decision}
Explaining Skips:
Be transparent about judgment calls:
Skipping feedback from @{reviewer}: "Rename variable X to Y"
Reason: Current name is consistent with codebase conventions (see {other_file} lines 45-50).
Changing would introduce inconsistency.
Answering Questions:
Respond thoughtfully to clarification requests:
@{reviewer}: "Why did you choose approach A over B?"
Response: Chose A because {reasoning}. Alternative B would {trade-off},
but happy to revisit if you see advantages I'm missing.
The lynx pauses at the edge of the clearing. Before retreating, it looks back β ensuring its work left no trace of weakness...
MANDATORY after making any code changes β verify before pushing:
# Sync dependencies
pnpm install
# Verify ONLY the packages the lynx touched β lint, check, test, build
gw ci --affected --fail-fast --diagnose
If verification fails: The lynx does not leave broken code in its wake. Read the diagnostics, fix the issues, re-run verification. Only proceed to RETREAT when verification passes.
If no code changes were made (only PR comments/plans): Skip verification β the lynx left no tracks to check.
The lynx slips back into the shadows. The work is done. Some prey caught. Some left for other hunters. The forest continues its quiet rhythm...
Summarize the response:
β LYNX ASSESSMENT COMPLETE πββ¬
**PR #{number}** β {title}
## Actions Taken
| Comment | Reviewer | Action | Commit |
|---------|----------|--------|--------|
| Fix error handling | @alice | β
Fixed | a1b2c3d |
| Extract helper function | @alice | β
Fixed | d4e5f6g |
| Add validation | @bob | π Planned | β |
## Feedback Skipped (with reasons)
- "Add blank line" (@alice) β formatting nitpick, doesn't improve code
- "Use different variable name" (@charlie) β conflicts with existing patterns
## Plans Created
1. **Add input validation** β requires ~30 min, affects 2 files
[View plan β](docs/plans/pr-{number}-validation.md)
## Questions Answered
- @{reviewer}: "Why this approach?" β Explained trade-offs in thread
## Open Items (Need Your Input)
- @bob suggests refactoring the data flow β significant change, your call
---
Ready to implement the planned items, or shall the lynx hunt elsewhere?
The lynx doesn't chase every mouse. It knows:
Move only when necessary:
The lynx doesn't hide its tracks:
Reviewers are helping. Even when wrong, they spent time understanding the code:
The lynx does NOT:
User says:
Address the feedback on PR #284
Lynx flow:
PERCH β Fetched PR #284: "Add caching to user service". 8 comments from 3 reviewers.
LISTEN β Parsed comments:
DISCERN β
RESPOND β
RETREAT β
β LYNX ASSESSMENT COMPLETE πββ¬
**PR #284** β Add caching to user service
## Actions Taken (2)
| Comment | Reviewer | Action | Commit |
|---------|----------|--------|--------|
| Fix cache key | @maintainer-jane | β
Fixed | a1b2c3d |
| Add cache miss test | @reviewer-tom | β
Fixed | d4e5f6g |
## Feedback Skipped (2)
- "Indentation" (@driveby-user) β formatting, doesn't affect behavior
- "Use const" (@driveby-user) β let is correct (reassigned on line 52)
## Plans Created (2)
1. **Add cache invalidation on logout** β ~20 min, touches auth flow
2. **Add cache metrics** β ~15 min, requires metrics integration
## Escalated for Decision
- Redis suggestion β requires infrastructure, proposed as follow-up issue
## Ready
Minor fixes complete. Pending your go-ahead on plans and Redis decision.
Sometimes the lynx must retreat without resolving:
Missing Context:
The lynx can't fully assess this PR β missing access to review comments.
Please ensure I have permission to read PR #{number} in {repo}.
Conflicting Requirements:
Reviewers are giving contradictory guidance. @alice says "simplify this,"
@bob says "add abstraction layer here." Need your input on direction.
PR Not Ready:
This PR is still in draft state with active commits.
Wait for author to mark ready, then the lynx will assess.
Too Much Feedback:
50+ comments detected β this PR needs fundamental rework, not incremental fixes.
Consider closing and reopening with a new approach.
The lynx curls its tail. The branch creaks. Somewhere below, a mouse scurriesβunseen, unchased, unmissed. The lynx knows its prey. The lynx knows when to wait. And when twilight fades to night, the forest still stands, wiser for the lynx's judgment. πββ¬