# Fix All

> Fix all issues — no exceptions, no excuses. Fix every finding uncovered during the work, here and now. "Out of scope," "pre-existing," and "follow-up ticket" are not acceptable framings. Fixes go upstream, everything changed gets a real test, and no reward hacking.

- Skill: `jwiegley/fix-all` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add jwiegley/fix-all`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jwiegley/fix-all/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jwiegley (https://skillmd.com/u/jwiegley)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jwiegley/fix-all

---

# Mission

Fix every issue uncovered during this work ("finding"). No exceptions, no excuses, no deferrals. "Out of scope," "pre-existing," and "follow-up ticket" are not acceptable framings — if it surfaced, it gets fixed here.

# Execution

## Parallelization

- Decompose the work and run subagents in parallel wherever tasks are independent.
- Use git worktrees for parallel work. Worktree directories **must** be prefixed with a stable group id (e.g. `wg-<short-id>/<task>/`) so they are trivial to identify, audit, and clean up afterward.
- Subagents inherit every rule in this document. State the rules explicitly when delegating — do not assume a subagent has seen this prompt. In particular, repeat the upstream-fix rules verbatim.

The TODO list must have an item for each finding. If there are X findings, we should have X todos. After you have made your plan go back and re-read the findings we have so far, and ensure nothing was missed in the plan. The double check again.

## Commits
- One logical change per commit. Messages explain the *why*, not just the *what*.

# Testing standards

- Everything you change or add has tests. Period.
- Tests exist to catch bugs. That is their only purpose. A test that cannot fail when the code is wrong has no value and should not be written.
- **No reward hacking.** Specifically forbidden:
  - Weakening assertions to get green.
  - Deleting, skipping, or `xfail`-ing tests to get green.
  - Mocking the system under test.
  - Tautological tests, blind snapshot tests, or tests that only verify the code matches itself.
- When a bug is found, the response is **fix the bug** — never relax the test, never adjust assertions to match buggy output. The standard does not move when it becomes inconvenient.
- For each bug fixed, add the test that would have caught it. If you genuinely cannot, say so explicitly and explain why.

# Upstream fixes are non-negotiable

If a problem is caused upstream, **fix it upstream**. Always. There is no version of this rule that ends with a workaround downstream.

This applies to every layer above us, without exception:
- Vendored or third-party dependencies → patch upstream, land the fix there, then consume it. If upstream is slow, maintain a fork with the fix and consume the fork — but the fix lives upstream-shaped, not as a local monkey-patch.
- Tooling, build systems, frameworks → same rule. Fix at the source.
- Shared libraries owned by other teams → file the fix in their repo. Coordinate, don't route around.

**Forbidden downstream workarounds:** shims that paper over upstream bugs, conditional branches that exist only because upstream is wrong, "temporary" patches in our tree, comments like `// workaround for X` instead of a fix in X.

If upstream is genuinely blocked (frozen repo, dead project, hostile maintainer), say so explicitly, fork it, and treat the fork as the new upstream — then fix it there. The rule is not "fix it upstream when convenient." The rule is **fix it upstream**.

# Definition of done

A task is done only when **all** of the following hold:
- Every issue uncovered has been fixed — not deferred, not ticketed.
- Every upstream-caused problem has been fixed upstream, with our tree consuming the upstream fix. No local workarounds remain.
- All new and modified code has high-value tests of the kind that catch the relevant bug class.
- The full test suite passes locally.
- All commits are atomically scoped.
- Worktrees used for the work are merged or cleanly removed. Nothing orphaned, nothing prefixed `wg-*` left lying around.

# When rules conflict

- Do the harder, more correct thing.
- If following these rules would require shipping something broken, surface the conflict explicitly. Do not silently lower the bar.

---

Credit: Isaac Shapira

