The Problem
Most agent instruction files tell a model what to value — "be careful, verify your work" — without specifying what to do, in what order, with thresholds. That ambiguity fails exactly when it matters most: when a model hits an authority conflict, a false completion claim, or a weak executor. This repo distills how one deprecated model (Claude Fable 5) actually approached problems into three literal, executable skills, and backs every rule with an adversarial eval log that includes its own failures.
What This Does
The repository is a Claude Code plugin, not a library. Three skills encode the workflow: skills/fable-method/SKILL.md (think — classify, define done, gather evidence), skills/fable-loop/SKILL.md (act — surgical edits, bounded verification), and skills/fable-judge/SKILL.md (prove — verify by diffing and executing, not by reading reports). Domain references live under skills/fable-method/references/domains/.
The eval/ directory is the honesty mechanism. Eight scenario folders (eval/scenarios/s1-assessment-trap through s8-fraudulent-copy) each contain a ground-truth spec, a deliberately flawed implementation, and tests. The results log (eval/RESULTS.md) reports 159 agent runs across 10 rounds, including the nulls — rounds where the method provided no lift on trivial tasks.
How It Is Wired
There is no application runtime. Execution starts in eval/workflow.js, which orchestrates agent runs against the scenario folders. The Python files are the test fixtures, not the product: eval/scenarios/s2-surprise-trap/pricing.py defines unit_price, s5-twin-bug/orders.py defines create_order/update_order, and s7-fraudulent-work/pristine/converter.py defines convert — each paired with a test_*.py file. The call graph shows convert is called from 4 places and create_order from 3, making them the highest-blast-radius functions, but only within the eval harness.
The only production-adjacent code is .github/checks.py, which the workflow invokes. It writes no external state; the single file-touching function is inside it.
How To Use It
Setup: install the plugin into Claude Code. The repo provides install.sh and install.ps1 at the root.
Configuration: no environment variables or config files are required. The plugin manifest is .claude-plugin/plugin.json.
Running it: there is no CLI entry point. Usage is via Claude Code's plugin mechanism — the skills become available to any model session. To run the eval yourself, the workflow script is eval/workflow.js, but the README does not document an invocation command; you would need to inspect that file to determine its interface.
Real-World Use
A team running Claude Code on a codebase with a known failure mode — an agent silently "fixing" correct code to match a wrong test. Install the plugin, and when a task hits the assessment trap (eval/scenarios/s1-assessment-trap), the method forces a spec-vs-test conflict check before any edit. The eval data claims this lifts Haiku from 0/4 to 4/4 on that scenario.
Code Health & Issues
Static analysis found 3 medium findings:
- Med - resource safety -
.github/checks.pyopens files without a context manager; a handle may leak on error. Fix: usewith open(...). - Med - clarity - duplicated 6-line blocks across
eval/scenarios/s7-fraudulent-work/pristine/test_converter.pyandworked/test_converter.py. Extract shared helpers. - Med - resilience -
.github/checks.pycatches broad exceptions, swallowing errors. Catch specific types.
The workflow audit adds three issues: the CI workflow (.github/workflows/checks.yml) never runs the 5 test files despite declaring a check badge; it declares no permissions block (token inherits repo default); and it sets no job timeout-minutes. The first is the most serious — the green badge asserts nothing.
The Bottom Line
The eval-first design is the strongest part: a results log that publishes its own nulls is rare and credible. The actual method is a set of Markdown instructions, so its value depends entirely on how well Claude Code executes them. The CI gap is a real weakness — the badge is currently decorative. Worth adopting for teams hitting agent reliability traps; unnecessary for trivial tasks.