---
name: build-fix-minimal-diff
description: Use when a build, test, type check, or lint is failing — locally or in CI — and the fix must be the smallest safe diff with no opportunistic refactors or unrelated changes.
---

# Build Fix — Minimal Diff

Fix the failing build, test, or type check. Nothing else.

## When to Use

- A CI build is red and blocking other work
- Tests pass locally but fail in CI — or vice versa
- Type errors or lint errors block a commit or pipeline
- A previous change broke a test that was passing

## Core Rule

**Touch only what is broken. Fix the root cause. Rerun. Done.**

Any unrelated improvement — even a one-line cleanup — is out of scope for this skill.

## Inputs

- The exact failing command (e.g., `npm test`, `cargo build`, `tsc --noEmit`, `pytest`)
- The full error output — exact messages and line numbers, not a summary
- Current branch state (`git status --short`, `git diff --stat`)

## Workflow

### 1. Reproduce

Run the exact failing command and confirm it fails with the same error.

If it does not fail locally:
- Check environment differences: tool versions, env vars, installed packages, generated files
- Run a clean install (`npm ci`, `pip install -r requirements.txt`, etc.) and retry
- Document the environment discrepancy instead of guessing at a fix

### 2. Isolate

- Read the error output from the first line — the first error is usually the root cause; later errors are often cascades
- Identify the single failure point: file, line number, symbol, or command
- Do not start changing code until the root cause is clearly identified

### 3. Fix

- Apply the minimal change that addresses the identified root cause
- One change at a time
- Do not touch adjacent code, even if it looks wrong — log it as a follow-up
- Do not update test expectations to make tests pass unless the expectations were genuinely wrong (i.e., the code behavior is now correct and the test was testing the old — wrong — behavior)

### 4. Rerun

- Run the exact failing command: it must exit 0
- Run the full test suite to confirm no regressions introduced

### 5. Report

```
FIXED: <what was broken — command and error>
CAUSE: <root cause — specific, not vague>
CHANGE: <file:line — what was changed and why>
VERIFIED: <command run> → exit 0
REGRESSIONS: none / [list]
DEFERRED: <adjacent issues noticed but not touched>
```

## Verification

- Exact failing command exits 0 after the fix
- Full test suite still passes
- No files modified beyond the narrowest fix

## Failure Modes

- Fixing a cascade error instead of the root cause — go back to step 2
- Changing test assertions to match broken implementation — only valid when the test was wrong, never when the code is wrong
- Multiple changes at once — revert all but the smallest hypothesis and retry
- "While I'm here" scope creep — log it as a follow-up task, do not include it in this fix

## Sources / Inspiration

Inspired by `Yeachan-Heo/oh-my-codex` `prompts/build-fixer.md`. Rewritten in Agent Powerups style.
