From fable5-methodology
Detects when the current approach is failing and guides a disciplined stop-revert-replan workflow to prevent accumulating patches.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fable5-methodology:course-correctionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The discipline of stopping. Failed approaches are cheap if abandoned early and ruinous if
The discipline of stopping. Failed approaches are cheap if abandoned early and ruinous if defended. Code is cheap to rewrite from correct understanding; understanding is what the failed attempt bought you — keep it, discard the code.
Treat ANY of these as an alarm, not background noise:
Rule: the second workaround stacked on a first is an automatic alarm — the real cause is upstream of both.
No further edits toward the current approach. Not one more "quick try". The next keystrokes are documentation, not code.
Write down, in a note or message:
This snapshot is the asset the failed work purchased. Without it, the revert wastes everything.
git stash, git checkout -- ., or delete the scratch files. Keep the snapshot; discard the
patches. Exception: individual pieces that are independently correct and verified (a test you
wrote, a helper that works) may be kept — but only pieces you can justify in isolation.
The new plan MUST explain why the old approach failed. If it doesn't, you are about to repeat the same approach with different syntax. Check the new plan against every constraint listed in the snapshot before writing code.
If the new plan changes scope, cost, or the deliverable itself, tell the user BEFORE executing — one short paragraph: what didn't work, why (the discovered constraint), what you propose instead. A clear "here's what I ruled out and why the approach must change" is a legitimate deliverable; a fourth blind patch is not.
If you discover a defect in work you already reported as done: say so immediately and plainly ("the earlier fix misses case X — correcting now"), fix it, re-verify, re-report. Never quietly fold the correction into the next unrelated diff.
Task: add per-user rate limiting to an API.
Attempt 1: decorator storing counters in a module-level dict. Test fails — counters reset every deploy and are per-worker. Patch: move dict behind a lock. Still per-worker. Patch 2: pickle counters to disk on shutdown. Now tests are flaky under parallel workers.
Alarm fired: patch 2 exists to fix patch 1's symptom (patch stacking) — and honestly, the disk-pickle line only exists because "the test went away".
INCR + EXPIRE, atomic,
shared across workers). The old approach failed on a structural constraint, not a bug.The dead-end code is reverted; the knowledge snapshot exists in writing; the new plan names the discovered constraint that killed the old approach; the user has been informed if scope or deliverable changed; and work has resumed under the new plan — or the written ruled-out summary has been delivered to the user as the honest current state.
npx claudepluginhub unpaidattention/fable5-methodologyResets failed coding approaches: re-analyzes core problem, identifies missing context, proposes 2-3 alternatives with trade-offs, recommends production-ready path forward. Activates on 'wrong' or dead ends.
Use when repeated fix attempts fail, the agent appears stuck in a loop, or complexity is increasing without progress
One-shot perspective reset that scans your current work, generates an abstract reframing question, and runs 3 quick checks (scope drift, side effects, better approach) in under 10 lines.