Band-Aid Finder
A band-aid stops the bleeding without treating the wound: the symptom disappears, the defect stays,
and it resurfaces later or somewhere else. This skill finds those fixes, traces the symptom back to
its cause, and pushes to the fix that actually resolves it — while still allowing a deliberate,
documented mitigation when a root-cause fix genuinely isn't the right move right now.
This is the counterweight to kiss. KISS argues against a fix more complex than the problem needs;
this skill argues against a fix so simple it only hides the symptom. The target is the simplest fix
that still reaches the cause — neither the smallest diff nor the largest refactor.
Process
- Identify the symptom and the fix. What visible problem is being addressed, and what does the
change actually do?
- Trace to the root cause. Follow the symptom back to why it occurs. Confirm the cause by
reproducing it or reading the code path — don't assert it from a guess. (This is squarely
evidence-check territory: "the root cause is X" is an Unverified claim until you've read the
path or run the repro this session. Naming a plausible cause is not confirming it.)
- Classify the fix against the band-aid signals below.
- Judge: band-aid or real fix? A fix that resolves the traced cause is real, even if small. A
fix that leaves the cause in place and only hides its effect is a band-aid.
- Check for a legitimate mitigation. Sometimes suppressing the symptom is the right call for
now (see below). If so, it must be documented as deliberate with a follow-up — not left silent.
- Propose the fix — only once the cause is confirmed. If step 2 confirmed the root cause,
propose the fix concretely: where the real defect is and the change that resolves it, landing in
the right layer rather than patched at the call site. If the cause is not confirmed, do not
prescribe a fix — report the evidence gap and the next verification step (the repro to run, the
file/path to read) instead. Prescribing a fix for an unconfirmed cause is the exact failure this
skill exists to catch.
Band-aid signals
- Swallowed errors —
catch/except that logs-and-continues or silently ignores, hiding a
failure instead of handling or fixing its cause.
- Defensive guard patches — a null/undefined check added at the crash site when the real
question is why the value is missing upstream.
- Special-case hardcoding —
if (id === 42) for the one input that breaks, instead of fixing
the logic that mishandles that class of input.
- Retry / timeout bumps — retrying or raising a timeout to paper over a race, deadlock, or slow
query that has a real cause.
- Suppression pragmas —
!important, // eslint-disable, @ts-ignore, @phpstan-ignore,
except: pass to silence a warning rather than resolve what it flags.
- UI-layer masking — hiding or restyling an element to cover a rendering/data bug instead of
fixing the data or logic behind it.
- "Temporary" workarounds — a
// TODO: fix properly that suppresses the symptom and ships with
no tracked follow-up.
Legitimate mitigations (not every quick fix is a band-aid)
A symptom-level fix is defensible when it's a deliberate, documented choice:
- Incident hotfix — stop the bleeding now, root-cause fix tracked as a follow-up. Legitimate if
the follow-up actually exists.
- Third-party defect — the cause is in a dependency you can't change; a local workaround with a
link to the upstream issue is the correct fix available to you.
- Cost outweighs benefit — the true fix is a large, risky change disproportionate to a low-impact
symptom; a contained mitigation is a reasonable trade-off.
In all three the mitigation must be labeled as deliberate — a comment stating why, plus a tracked
follow-up where warranted. The failure mode isn't the mitigation; it's the silent mitigation that
reads like a real fix and buries the defect.
Output Format
Symptom & Fix
One line each: the visible symptom, and what the change actually does.
Root Cause
The traced cause with its evidence (repro, the code path, the failing condition). If you can't
confirm the cause, say so plainly rather than guessing.
Verdict
One of: Root-cause fix (resolves the cause) / Band-aid (suppresses the symptom, cause
remains) / Deliberate mitigation (symptom-level but a defensible, documented trade-off).
For a band-aid
- What it hides: the defect left in place and where it will resurface.
- Root-cause fix: the concrete change that resolves the cause, and the layer it belongs in.
- If shipping a mitigation instead: what to document and what follow-up to track.
Rules
- Trace before you prescribe — a fix for a cause you haven't confirmed is itself a guess.
- Small is not the same as shallow: a one-line change that resolves the cause is a real fix.
- Never let a mitigation ship silently; deliberate is fine, disguised is not.
- The proposal is a recommendation for a human to weigh, not a change to make unprompted.
When Not to Use
- A diff has simply crept beyond its scope with unrelated extras — that's a
kiss pass.
- A test is failing and you need to fix it — use
test-fix (which has its own attempt limit); come
here only if the "fix" is suppressing the test rather than the defect.
Related Skills
- Counterweight to
kiss — KISS argues against a fix more complex than the problem needs;
band-aid-finder argues against a fix so simple it only hides the symptom.
- Pairs with
evidence-check — "the root cause is X" is a claim; confirm it by reproducing or
reading the code path, don't assert it from a guess.
- Guards
test-fix and pr-review-fix-pipeline — a fix that silences a symptom (or a test)
rather than the defect is exactly what those pipelines should not ship; run this lens on their
proposed fixes.
- Complements
code-health-audit — the audit sweeps for accumulated cruft; this skill judges
whether a specific fix reaches its cause.
1---2name: band-aid-finder3description: Scans a change or codebase area for band-aid fixes that suppress a symptom instead of resolving the underlying cause, traces each to its actual root cause, and proposes the fix that addresses it. Distinguishes a band-aid from a deliberate, documented mitigation (incident hotfix, third-party defect, cost-outweighs-benefit) so it doesn't dogmatically demand a root-cause fix. The counterweight to KISS: it argues against a fix so simple it only hides the symptom. Trigger on: "is this a real fix or a band-aid", "am I treating the symptom", "why does this keep happening", "this feels hacky", "find the root cause", "search and destroy quick fixes", "is this a workaround".4---56# Band-Aid Finder78A band-aid stops the bleeding without treating the wound: the symptom disappears, the defect stays,9and it resurfaces later or somewhere else. This skill finds those fixes, traces the symptom back to10its cause, and pushes to the fix that actually resolves it — while still allowing a *deliberate,11documented* mitigation when a root-cause fix genuinely isn't the right move right now.1213This is the counterweight to `kiss`. KISS argues against a fix more complex than the problem needs;14this skill argues against a fix so simple it only hides the symptom. The target is the simplest fix15that still reaches the cause — neither the smallest diff nor the largest refactor.1617## Process18191. **Identify the symptom and the fix.** What visible problem is being addressed, and what does the20 change actually do?212. **Trace to the root cause.** Follow the symptom back to *why* it occurs. Confirm the cause by22 reproducing it or reading the code path — don't assert it from a guess. (This is squarely23 `evidence-check` territory: "the root cause is X" is an Unverified claim until you've read the24 path or run the repro this session. Naming a plausible cause is not confirming it.)253. **Classify the fix** against the band-aid signals below.264. **Judge: band-aid or real fix?** A fix that resolves the traced cause is real, even if small. A27 fix that leaves the cause in place and only hides its effect is a band-aid.285. **Check for a legitimate mitigation.** Sometimes suppressing the symptom *is* the right call for29 now (see below). If so, it must be documented as deliberate with a follow-up — not left silent.306. **Propose the fix — only once the cause is confirmed.** If step 2 confirmed the root cause,31 propose the fix concretely: where the real defect is and the change that resolves it, landing in32 the right layer rather than patched at the call site. If the cause is *not* confirmed, do not33 prescribe a fix — report the evidence gap and the next verification step (the repro to run, the34 file/path to read) instead. Prescribing a fix for an unconfirmed cause is the exact failure this35 skill exists to catch.3637## Band-aid signals3839- **Swallowed errors** — `catch`/`except` that logs-and-continues or silently ignores, hiding a40 failure instead of handling or fixing its cause.41- **Defensive guard patches** — a null/undefined check added at the crash site when the real42 question is *why the value is missing* upstream.43- **Special-case hardcoding** — `if (id === 42)` for the one input that breaks, instead of fixing44 the logic that mishandles that class of input.45- **Retry / timeout bumps** — retrying or raising a timeout to paper over a race, deadlock, or slow46 query that has a real cause.47- **Suppression pragmas** — `!important`, `// eslint-disable`, `@ts-ignore`, `@phpstan-ignore`,48 `except: pass` to silence a warning rather than resolve what it flags.49- **UI-layer masking** — hiding or restyling an element to cover a rendering/data bug instead of50 fixing the data or logic behind it.51- **"Temporary" workarounds** — a `// TODO: fix properly` that suppresses the symptom and ships with52 no tracked follow-up.5354## Legitimate mitigations (not every quick fix is a band-aid)5556A symptom-level fix is defensible when it's a *deliberate, documented* choice:5758- **Incident hotfix** — stop the bleeding now, root-cause fix tracked as a follow-up. Legitimate if59 the follow-up actually exists.60- **Third-party defect** — the cause is in a dependency you can't change; a local workaround with a61 link to the upstream issue is the correct fix available to you.62- **Cost outweighs benefit** — the true fix is a large, risky change disproportionate to a low-impact63 symptom; a contained mitigation is a reasonable trade-off.6465In all three the mitigation must be **labeled as deliberate** — a comment stating why, plus a tracked66follow-up where warranted. The failure mode isn't the mitigation; it's the *silent* mitigation that67reads like a real fix and buries the defect.6869## Output Format7071### Symptom & Fix72One line each: the visible symptom, and what the change actually does.7374### Root Cause75The traced cause with its evidence (repro, the code path, the failing condition). If you can't76confirm the cause, say so plainly rather than guessing.7778### Verdict79One of: **Root-cause fix** (resolves the cause) / **Band-aid** (suppresses the symptom, cause80remains) / **Deliberate mitigation** (symptom-level but a defensible, documented trade-off).8182### For a band-aid83- **What it hides:** the defect left in place and where it will resurface.84- **Root-cause fix:** the concrete change that resolves the cause, and the layer it belongs in.85- **If shipping a mitigation instead:** what to document and what follow-up to track.8687## Rules8889- Trace before you prescribe — a fix for a cause you haven't confirmed is itself a guess.90- Small is not the same as shallow: a one-line change that resolves the cause is a real fix.91- Never let a mitigation ship silently; deliberate is fine, disguised is not.92- The proposal is a recommendation for a human to weigh, not a change to make unprompted.9394## When Not to Use9596- A diff has simply crept beyond its scope with unrelated extras — that's a `kiss` pass.97- A test is failing and you need to fix it — use `test-fix` (which has its own attempt limit); come98 here only if the "fix" is suppressing the test rather than the defect.99100## Related Skills101102- **Counterweight to** `kiss` — KISS argues against a fix more complex than the problem needs;103 band-aid-finder argues against a fix so simple it only hides the symptom.104- **Pairs with** `evidence-check` — "the root cause is X" is a claim; confirm it by reproducing or105 reading the code path, don't assert it from a guess.106- **Guards** `test-fix` and `pr-review-fix-pipeline` — a fix that silences a symptom (or a test)107 rather than the defect is exactly what those pipelines should not ship; run this lens on their108 proposed fixes.109- **Complements** `code-health-audit` — the audit sweeps for accumulated cruft; this skill judges110 whether a specific fix reaches its cause.