← ClaudeAtlas

no-workaroundslisted

Fix problems at their root cause instead of patching symptoms. Use when debugging, fixing bugs, resolving test failures, planning a solution, or reviewing a change — especially where a fix would silence a signal (type assertion, lint suppression, swallowed error, timing hack, monkey patch) rather than repair its source. Not for formatting- or docs-only edits.
marcioaltoe/roundfix · ★ 2 · Code & Development · score 78
Install: claude install-skill marcioaltoe/roundfix
# No Workarounds A workaround is any change that makes a problem stop manifesting without addressing why it exists. It makes the symptom disappear while the disease spreads — a deferred failure that compounds. **Fix the source, not the signal.** ## The gate — run before any fix ``` 1. State the problem, then trace it to its root cause (use the systematic-debugging skill). 2. Does the fix repair that root cause, or only stop the symptom from showing? 3. Am I silencing a signal, or fixing a source? Silencing a signal → redesign the fix against the root cause. Root cause is external or genuinely unfixable → take the escape valve. ``` The fix is done when it would have been unnecessary had the code been correct in the first place — and it needs no cast, suppression, delay, or empty catch to pass. ## The seven signals Each row is the compiler, linter, runtime, or reviewer telling you something true. Fix what it points at. | Category | The signal it silences | Fix the source by… | |---|---|---| | **TYPE** — `as`, `any`, `!`, `as unknown as` | The type system found the code wrong | Making types truthful: correct the definition, or validate genuinely-unknown data at the boundary (Zod / Schema / type guard) | | **LINT** — `eslint-disable`, `@ts-ignore`, `@ts-expect-error` | Static analysis found a real problem | Fixing what the rule flagged; if the rule is truly wrong for this repo, disable it in config, not inline | | **SWALLOW** — empty catch, `.catch(() => null)`, catch-and