Show Me Your Work Decision Log
cursor/plugins
Keeps a TSV decision log for long or unattended agent runs, one row per decision with what, why, evidence and result, so a reviewer can check the work later.
A work-discipline protocol that makes Opus 4.8 (or any non-frontier model) operate at Fable-5-grade quality.
$ npx skills add cozytab/fable5-mode --skill fable-mode -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cozytab/fable5-mode fable-mode --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .claude/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cozytab/fable5-mode --skill fable-mode -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cozytab/fable5-mode fable-mode --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .agents/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cozytab/fable5-mode --skill fable-mode -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cozytab/fable5-mode fable-mode --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .cursor/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cozytab/fable5-mode --skill fable-mode -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cozytab/fable5-mode fable-mode --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .gemini/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install cozytab/fable5-mode fable-modeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add cozytab/fable5-mode --skill fable-mode -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .github/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cozytab/fable5-mode --skill fable-mode -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cozytab/fable5-mode fable-mode --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fable-mode" agent skill from https://github.com/cozytab/fable5-mode/tree/main into .opencode/skills/fable-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fable-mode", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fable-modeA work-discipline protocol that makes Opus 4.8 (or any non-frontier model) operate at Fable-5-grade quality.
Fable Mode is an agent skill from cozytab/fable5-mode. A work-discipline protocol that makes Opus 4.8 (or any non-frontier model) operate at Fable-5-grade quality. Core idea — output quality = model capability x work discipline: spend extra orchestration to buy single-pass quality via six levers (plan gate, small-card execution, adversarial self-check, real-product verification, context hygiene, checkpoint autonomy). Activate ONLY on an explicit request — the user names the mode ("use fable mode", "enable fable-mode", "work like Fable 5", "rigorous mode", or the…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 22 other files (for example `README.md`, `README.zh-CN.md` and `hooks/README.md`).
It sits in Agent Workflows, covering Verification before completion. The repository describes itself as: Make Opus 4.8 (or any Claude model) work like Claude Fable 5 — a Claude Code skill + guard hooks (plan gate, model ceiling, per-task enforcement) for Fable-5-grade discipline… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 893b772. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python and Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
curlpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fable Mode loads about 4.8k tokens when it runs. Until then it costs about 230 tokens; SKILL.md has 2,478 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from cozytab/fable5-mode at commit 893b772, republished under its MIT licence (© cozytab). 2,478 words, ~4,840 tokens.
.claude/skills/fable-mode/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.You are now in fable-mode. Premise: frontier-model feats come half from the model and half from longer autonomy, harsher self-verification, less corner-cutting. That second half is model-independent — this protocol supplies it. The trade: spend extra orchestration steps to buy single-pass quality; the disciplined steps cost more tokens, but the net over a whole task often breaks even by avoiding rework loops and bloated-context waste.
.fable/ directory. A task being big or important is a reason to offer fable-mode ("want me to run this under fable-mode?"), never to silently enter it.curl --max-time, never WebFetch; long Workflows get a watchdog.Never stall, hand off, or end the turn waiting for a model you can't run:
(Set FABLE_ESCALATION=on only if a stronger tier genuinely exists to defer to.)
Before code, write docs/SPEC.md: requirements, approach, task cards (skeletons in templates/). Each card: ≤ one fresh context (~≤5 files / ≤300 lines); a machine-checkable acceptance test ("looks right" isn't acceptance); dependencies and parallelism marked. Executor choice is your judgment — subagent, Workflow, external executor, or yourself; quality first, don't split when in doubt.
Evidence closure before design: list the load-bearing unknowns — the ones that change the architecture if you guessed wrong — and buy targeted evidence for each (a 5-second probe: two extra frames, one API call, one grep) before committing the design. Every SPEC decision carries a source tag: [measured] / [inferred] / [not-shown → design-gap]. Guessed foundations are how one-pass code dies; tagged assumptions are how reviewers know where to poke.
Each card runs in a fresh context, fed only the relevant SPEC excerpt — no reasoning garbage from prior cards. Run acceptance the moment it's done; don't advance until it passes. Concurrency, model choice, and the failure-escalation ladder: see Delegation policy.
Important output is never "generate and ship". Critical modules: 2-3 independent refute passes (correctness / edges / integration) — one solid hit means rework. Wide solution spaces: N approaches + judge + synthesize. Fresh-context verifiers beat self-critique (templates/VERIFIER_PROMPT.md); verifier prompts say "assume broken, falsify hard", never "take a look".
Desk-check before first run: after drafting a large unit, re-derive the critical constants from the source evidence (layout proportions, units, coordinate mappings, state-machine edges) instead of trusting the draft, and probe interaction corners (modal click-through, mid-animation input, concurrent state). The two cheapest bugs to fix are the ones caught before the code ever runs.
All-green static checks ≠ it works. Every milestone: run the real product end-to-end, exercise the core path, keep evidence (screenshots, logs, test output). Report evidence, not adjectives.
window.__test API), then simulate the full loop through it. Testability is a product feature; ship it.docs/SPEC.md + docs/PROGRESS.md updated in real time, not batched. Segment long tasks: each segment restores from SPEC + PROGRESS only. Record every gotcha/lesson the moment you hit it (one lesson per entry, with why; update rather than duplicate, delete wrong ones). Grinding in a context stuffed with failed attempts makes models dumber — restart fresh. The converse also holds: never wrap up, trim scope, or suggest a new session just because the conversation is long — external memory is what makes length safe; keep working. Memory stays project-scoped by design: lessons live in this project's PROGRESS, never in a global store that leaks between projects.
Background long tasks get a watchdog (output-file mtime). Organize resumable: any step dying loses at most one card. On long runs, verify at intervals, not only at the end: every few cards, a fresh-context pass re-checks accumulated work against the SPEC (drift compounds silently between milestone checks). Forbidden is brainless fan-out (spray with no verification/watchdog/checkpoints) — parallelism itself is fine.
When acceptance fails — or a fix "doesn't work" — attribute before you edit, cheapest layer first:
fetch(url, {cache:'reload'}), restart, rebuild). "Fix had no effect" is, embarrassingly often, "fix never ran".Misattributed fixes are worse than no fix: they add churn and leave the real layer broken.
Multitasking rule — applies in BOTH tiers: batch independent tool calls into one message; dispatch independent, self-contained side-tasks (searches, verification runs, bulk mechanical work) as background subagents while you keep working — never sit idle waiting for a result you don't need yet. This is pure speed with zero quality risk; what the tiers change is only the cap and the posture for quality-critical work.
Concurrency tiers:
Shepherd, don't babysit: after dispatching, keep working instead of blocking on each return — but read results as they land and intervene the moment a subagent drifts off spec or lacks context it needs.
One-word controls — the user steers both dials with a phrase; you write the matching directive line into .fable/LEDGER.md (per-round, auditable, never silent):
| User says | Effect | You write |
|---|---|---|
| "质量优先 / quality mode / no downgrades" | routing: nothing runs below the session model | ROUTING: quality |
| "节省模式 / 省着点用 / frugal" | routing: implementation cards default one tier down | ROUTING: frugal |
| "火力全开 / 全速跑 / full speed / max parallel" | concurrency: throughput tier | TIER: throughput |
| "收着点跑 / slow down / back to normal" | concurrency: conservative tier | TIER: conservative (or delete the line) |
| (nothing) | balanced routing + conservative ≤5 | — |
Model routing — three profiles, two iron rules. Solving the problem outranks saving tokens, always; the profiles only tune how much safe downgrading you accept. Two rules hold in every profile:
| Profile | Trigger words (user says) | Implementation cards | Mechanical gather/format |
|---|---|---|---|
| quality | "质量优先 / 全用主模型 / quality mode / no downgrades" | session model, always | session model, low effort |
| balanced (default) | — | inherit by default; drop one tier only when tightly specified + machine-checkable acceptance | cheap tier, low effort |
| frugal | "节省模式 / 省着点用 / frugal / save quota" | default one tier down (acceptance still required); tricky cards stay inherited | cheapest tier, low effort |
Selecting a profile: the user's words above, env FABLE_ROUTING=quality|balanced|frugal, or a ROUTING: <profile> line in .fable/LEDGER.md (per-round, auditable — when the user asks for a mode, write this line rather than silently changing behavior). Default is balanced; never switch profiles silently.
Safety net — identical in all profiles (this is why even frugal still solves the problem):
FABLE_ESCALATION=on for genuine upward deferral).hooks/README.md)Four hooks turn the most-shirked rules into hard blocks. Armed per project by a .fable/ directory (searched upward, bounded at the git root); without it they pass through silently. Pressure applies per round via .fable/LEDGER.md:
- [ ] 1. card (machine-checkable acceptance) <- open: guards enforce
- [x] 2. done -- evidence: pytest 21/21 <- [x] REQUIRES a substantive evidence note
- [~] 3. not this round -- deferred: reason
PAUSED: reason <- a line anywhere: enforcement off(PAUSED must carry a reason — a bare PAUSED is ignored, pausing has to
be attributable. Evidence notes must be substantive: evidence: ok counts as
missing.)
model param and model: literals in Workflow scripts; stays active even when paused, it protects quota, not workflow).- [ ] items remain, and while any - [x] lacks an -- evidence: note (evidence-on-close: adjectives don't close cards).Wrap-up lint: python3 <skill-dir>/hooks/fable_lint.py <project_dir> — machine-checks the discipline itself (SPEC source tags present, open cards name acceptance, closed cards carry evidence). Run it at step 7 of the execution template; findings are open work.
Per-task granularity: active (open cards) = full enforcement; idle (no/all-closed cards) = close guard quiet and small tasks flow freely, but a detailed fan-out still needs a live card first; paused (a PAUSED: reason line) = guards off except the ceiling. Write PAUSED only when the user steers to work unrelated to the round; remove it to resume. Small spawns (<1500 chars) and forks skip the design gate; everything fails open (a guard bug never bricks the session); loop-safe.
For substantial work: after writing the SPEC, mkdir .fable + create .fable/LEDGER.md to get the mechanical backstop. In the user's repo, suggest gitignoring .fable/ (round state) while committing docs/SPEC.md/PROGRESS.md (durable docs).
1. Restate goal + scope (if unclear ask once; then no requirement rework)
2. docs/SPEC.md + .fable/LEDGER.md cards — the gate
3. Execute cards (fresh contexts; Delegation policy)
4. Per-card acceptance -> update PROGRESS.md
5. Milestone adversarial self-check (refute or N-approach review)
6. End-to-end real verification, leave evidence
7. Wrap: fable_lint clean, PROGRESS complete, lessons recorded, push if asked© cozytab, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 19 other files in the repository root of cozytab/fable5-mode.
Open the folder on GitHubat commit 893b772
Fable Mode next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fable Mode this skillcozytab/fable5-mode | 106 | — | ~4.8k | Automated safety check: Pass | MIT | |
| Show Me Your Work Decision Logcursor/plugins | 10k | 9 repos | ~1.6k | Automated safety check: Pass | None | |
| PUA Looptanweai/pua | 20k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Scope Creep Guardlennney/stop-that-shit | 2.5k | 1 repos | ~2k | Automated safety check: Pass | MIT | |
| Verification Before Completionfarm-fe/farm | 5.6k | 46 repos | ~1k | Automated safety check: Pass | MIT | |
| Incremental Implementationaddyosmani/agent-skills | 103k | 1 repos | ~2.3k | Automated safety check: Pass | MIT |
cursor/plugins
Keeps a TSV decision log for long or unattended agent runs, one row per decision with what, why, evidence and result, so a reviewer can check the work later.
tanweai/pua
Runs an unattended iterate-until-verified loop in which a user-set verify command, not the agent's own claim, decides when the task is finished.
lennney/stop-that-shit
Keeps an agent focused on the requested work by applying a five-step ladder that checks for direct solutions, real gaps and speculative defenses before adding anything.
farm-fe/farm
A skill your agent uses when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any…
addyosmani/agent-skills
Delivers a change in thin vertical slices, each implemented, tested, verified and committed before the next, using vertical, contract-first or risk-first slicing.
tanweai/pua
Pushes an agent to keep verifying and changing approach after repeated failures, using a diagnosis line, evidence-based completion and confirmation before risky edits.
Categories
A work-discipline protocol that makes Opus 4.8 (or any non-frontier model) operate at Fable-5-grade quality. Fable Mode is an agent skill from cozytab/fable5-mode.8 (or any non-frontier model) operate at Fable-5-grade quality.
Fable Mode fits situations like: A task merely being large; quality-sensitive; not on generic phrases like do it well / 最高质量 / 别偷懒; A task looks like it would benefit.
Run `npx skills add cozytab/fable5-mode --skill fable-mode -a claude-code`. Or copy the skill folder (the cozytab/fable5-mode repository) into .claude/skills/fable-mode in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cozytab/fable5-mode --skill fable-mode -a codex`. Or copy the skill folder (the cozytab/fable5-mode repository) into .agents/skills/fable-mode in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cozytab/fable5-mode --skill fable-mode -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fable-mode, .gemini/skills/fable-mode, .github/skills/fable-mode and .opencode/skills/fable-mode in your project.
Going by SKILL.md and its folder, Fable Mode needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (curl and python3). Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Fable Mode is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fable Mode: Show Me Your Work Decision Log (cursor/plugins, 10k stars), PUA Loop (tanweai/pua, 20k stars), Scope Creep Guard (lennney/stop-that-shit, 2.5k stars) and Verification Before Completion (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cozytab (a GitHub organization) maintains it in cozytab/fable5-mode, which has 106 GitHub stars. The repository was last updated on July 15, 2026.
Source: cozytab/fable5-mode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.