About fix-pr
fix-pr is a skill for developers handling GitHub pull request feedback. It follows a staged process to collect review and CI findings, assess and verify fixes, and manage commits, pushes, replies, and the final status report.
Key features
- 01Sync the local branch with the PR head
- 02Collect and deduplicate reviews and CI failures
- 03Assess findings and verify fixes
- 04Commit, push, and reply according to options
- 05Report evidence, status, and unanswered targets
Use cases
- 01Address review comments on the current branch PR
- 02Find and fix CI issues blocking a merge
- 03Keep fixes local without pushing
- 04Summarize review outcomes and remaining work
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ prathamdby/ skills --skill fix-prAfter installing, type/fix-prin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
REFERENCE.mdreferences/hunt.mdreplies.mdunslop-reply-drafts.mdDetails
From the project READMEFix PR
Options and dependencies
Default: current branch PR, push/replies on. PR number/URL selects it;
"do not push"/"keep local" disables push; "do not reply" disables replies.
Missing named values block. Before any GitHub I/O, verify and read
../gh/SKILL.md; before committing, verify and read ../commit/SKILL.md.
Missing dependencies block with paths, not improvised replacements.
1. Synchronize
Resolve repo, PR URL/number/base/head/remote SHA. Closed/missing PR, auth
failure, dirty tree, or unsafe checkout blocks. Fetch, check out head, and
fast-forward to remote SHA; never reset/force.
Record PR/SHA | push/replies | hunt counts/pages | finding/verdict/evidence | commit/push | native targets | terminal.
Done when local HEAD equals remote PR head and identity is fixed.
2. Hunt once
Through gh, collect unresolved threads including outdated, every nested page,
REST review-comment chains, actionable review bodies, conversation comments,
and terminal non-success required/blocking head-SHA checks plus annotations.
Use pr-threads --json --open --complete and ci-failures with PR/SHA.
Apply every completeness/reconciliation rule in references/hunt.md;
script exit alone proves neither REST roots nor required checks.
No triage/edit before all six surfaces are complete. Normalize/deduplicate
claims without losing native reply targets. Done when every page completes
and each finding is recorded.
Run this hunt once, not after edits/commit/push/reply. Later feedback or CI
needs a new invocation; retrying one failed reply is not another hunt.
3. Triage and fix
Trace every claim in surrounding source; reproduce where possible. Assign fix/reject/clarify/already-fixed with evidence, including skip reasons. No edits before all verdicts. Apply only fixes in focused clusters and run their narrowest checks; required failures block. Done when every finding has a verdict and every fix a verified diff, or no fix was needed.
4. Commit and push
For a diff, discard earlier message drafts and invoke commit with unstaged
scope. Commit owns all clean-room rules, including the conversation-only
test and trailer hygiene in ../commit/REFERENCE.md; repeat no alternative
message policy here. Skip commit on clean tree.
Push when enabled, verify remote SHA, never force; movement/rejection blocks.
Push off leaves fixed findings AWAITING_PUSH. Recheck %B before push for
rejected framing/unrequested trailers. Done when no diff exists or the
verified commit is pushed; a local-only fix is not pushed success.
5. Reply and report
With replies on, apply references/replies.md then
references/unslop-reply-drafts.md. Consolidate shared parents, preserve bot
prefixes, and post only through gh's reply script. Skip satisfied targets.
An inline reply failure is not retried. Follow the pr-reply error and post
that body on the main conversation. A main-conversation post that fails is
refetched and retried once; another failure blocks.
Fixed replies require a pushed SHA. Do not resolve unless explicitly asked
and supported by a separately authorized operation.
Report finding/verdict/action/evidence, URL, commit/push, hunt counts, and
unreplied targets. Done when all authorized replies match their verdicts.
Terminals: SUCCESS, NO_CODE_CHANGE, AWAITING_PUSH, BLOCKED. Never SUCCESS with an unsatisfied finding. A finding answered in its inline thread, or on the main conversation via fallback, is satisfied. Resume restarts Synchronize; no merge-conflict fixes.