Skip to content
xiv

pr-fix

The one-shot: gather every review finding already sitting on a PR, fix the valid ones, push once, and stop. No loop, no re-review, nothing posted back to the PR, and — as always — no merging.

  • Triggered by: xiv pr fix [prNumber] (alias prf); with no argument it uses the current branch's open PR — see /commands/pr
  • Source: pack/workflows/pr-fix.tsx

Shape

A single agent task, pr:fix. That is the whole graph — no <Loop>, no gates. The prompt (pack/prompts/pr-fix.mdx) drives three steps in one pass:

  1. Gather from every comment surface. Formal reviews, inline diff comments, and issue/conversation comments — the last being where reviewers most often post a whole review as one long comment, and the surface most easily missed.
  2. Classify each finding against the current head. Already-fixed (verify in the code, no action), actionable (fix properly, with a meaningful test when it concerns behavior), or non-actionable (no code change; record it in skipped with an honest, defensible reason). GitHub's resolved/unresolved thread state is ignored — the code is the judge.
  3. Push once. Run the project's tests/lint, commit, git push, capture the new head SHA.

When to use it vs. pr refine

pr-fix acts on feedback that is already there — one pass, no CI settling. Use pr-review-loop (xiv pr refine) when you also want the red-build → fix → confirm cycle. pr-fix never re-reads the PR after pushing.

Inputs and outputs

Input:

FieldMeaning
prNumberRequired integer — the PR whose findings to address.

Output (addressFindingsSchema):

FieldMeaning
addressed[]Each fixed finding with its commit.
skipped[]Each deliberately unfixed finding with the reason (a human will read it).
headShaThe new head after the single push.

Model and failure semantics

Runs on the autonomous agent pool — heavy Claude with git/gh permissions and a hard never-merge system prompt (codex under XIV_ENGINE=codex); see /concepts/model-tiers. One 30-minute timeout with a 10-minute heartbeat; no continueOnFail — if the pass fails, the run fails and nothing was half-pushed.