Turn abstract, non-developer requests into Claude Fable 5-optimized prompts, agents, skills, and harnesses — with a hard, fail-closed guarantee of zero Opus fallback.
Fable 5 is a Mythos-class model with its own prompting idioms — and its own failure modes. Prompts written for older models carry patterns (reasoning-echo instructions, old-model pins, manual thinking budgets, over-prescription) that either throw 400 errors or trigger refusals that silently route your work to Opus. Fable Forge generates and migrates artifacts that stay on Fable 5, and proves it with lint scripts, not promises.
| Mode | Input | Output |
|---|---|---|
prompt (default) |
abstract text — "강의 자료 만들어줘" | a ready-to-paste prompt with intent framing, effort recommendation, boundary declaration, autonomy instruction |
agent |
a role description | agent definition(s) + long-run scaffolding |
skill |
a recurring procedure | SKILL.md package |
harness |
a multi-agent domain | full harness: agents + skills + orchestrator + CLAUDE.md routing block |
convert |
path to an existing prompt/skill/agent/harness | Fable-native migration + before/after lint diff report |
audit |
path | fallback-risk report with rule IDs and line numbers |
status / resume |
run_id | manifest-based report / continuation |
Every run lands in runs/<run_id>/ with a RUN_MANIFEST.json tracking phases and gate results, so any run can be resumed mid-crash.
flowchart LR
A["input"] --> B["Phase 0-1<br/>context + refine<br/>(≤3 questions, never blocking)"]
B --> C["Phase 1.5<br/>domain risk check"]
C --> D["Phase 2<br/>parallel dispatch<br/>architect ∥ converter ∥ context-engineer"]
D --> E["Phase 3 gates<br/>fable_lint → completeness<br/>fail-closed, ≤3 fix loops"]
E --> F["fresh-context QA<br/>cross-verification"]
F --> G["Phase 4<br/>evidence-based report"]
Gate verdicts come only from script exit codes — an agent saying "it passed" is not evidence (NFR3).
HARD violations (exit 2, blocked):
| Rule | Pattern | Why it kills you |
|---|---|---|
| FZ1 | instructions to reproduce internal reasoning in the response | reasoning_extraction refusal → straight to Opus fallback |
| FZ2 | claude-opus-* / model: opus pins |
work routes off Fable 5 entirely |
| FZ3 | thinking: disabled |
400 error on Fable 5 |
| FZ4 | manual thinking budget fields | 400 error on Fable 5 |
| FZ5 | assistant prefill patterns | 400 error on Fable 5 |
| FZ6 | exposing remaining-token countdowns to the model | induces premature session wrap-up |
| FZ7 | artifacts describing themselves as classifier evasion | the wording itself trips the safety classifier (discovered via dogfooding — the anti-fallback tool causing fallback) |
SOFT warnings (FW1–FW5): over-prescription (10+ ALWAYS/NEVER bullets), cyber/bio classifier-risk phrasing, unconditional xhigh defaults, sonnet/haiku pins without rationale.
| Script | Role | Exit codes |
|---|---|---|
gates/fable_lint.sh |
Fallback-Zero HARD/SOFT scan | 0 pass / 2 HARD / 3 self-error |
gates/completeness_gate.sh |
per-mode required-artifact check, canonical phase enum | 0 / 3 |
gates/live_smoke.sh |
opt-in: sends the generated prompt to headless claude-fable-5 once to measure real classifier passage |
0 / 2 refusal / 3 infra |
gates/fable_intercept.sh |
UserPromptSubmit hook: scans every input, injects Fable-safe restructuring as additionalContext (fail-open by design — never blocks the user) | 0 |
gates/selftest.sh |
the gates' own regression suite (positive/negative fixtures) | 0 |
bash gates/selftest.sh # must exit 0 before trusting anything elseFAILURE_LOG.md accumulates every defect found in real runs. When the same defect class appears twice, it is promoted to a lint rule with fixtures and a selftest entry — so the script catches it forever, not a human sometimes. FZ7 was born exactly this way.
| Path | Role |
|---|---|
REQUIREMENTS.md |
single source of truth — FR1–FR16, NFR, mode definitions, FZ/FW tables |
skills/fable/ |
thin /fable entry point (mode parsing, delegation) |
skills/fable-pipeline/ |
the orchestrator — phases, gates, manifest, error handling |
skills/fable-prompt-patterns/ |
12-pattern library + effort matrix + scaffold templates |
skills/fable-fallback-lint/, skills/fable-native-conversion/ |
lint-heal and migration procedures |
agents/ |
6 agents: conductor, prompt-architect, harness-converter, context-engineer, fallback-auditor, qa-verifier |
gates/ |
the 5 scripts above + fixtures |
knowledge/ |
you populate this — official docs snapshots (see knowledge/README.md) |
FAILURE_LOG.md |
defect ledger + promotion rules |
SOUNDNESS_AUDIT.md |
harness-soundness scoring record |
git clone https://github.com/VoidLight00/fable-forge.git
# the pipeline expects its home at ~/fable-forge
cp -R fable-forge ~/fable-forge
# skills + agents into Claude Code
cp -R ~/fable-forge/skills/* ~/.claude/skills/
cp ~/fable-forge/agents/*.md ~/.claude/agents/
# populate knowledge/ snapshots (see knowledge/README.md), then verify:
bash ~/fable-forge/gates/selftest.sh # exit 0 = readyOptional: register gates/fable_intercept.sh as a UserPromptSubmit hook to get automatic Fable-safe restructuring hints on every prompt you type.
/fable 강의 자료 만들어줘 # abstract input → prompt mode
/fable harness "유튜브 → 요약 → 검증 → 노트 파이프라인" # full multi-agent harness
/fable convert ~/.claude/skills/my-old-skill/SKILL.md # migrate to Fable-native
/fable audit ~/.claude/agents/ # fallback-risk report
/fable resume 20260612-130405-deo-effort-harness # continue a run
Non-developers just describe what they want — mode detection, interviews (max 3 questions, never blocking), and guide-pattern application are automatic.
- deo-harness — Dynamic Effort Orchestration: per-task effort assignment for sub-agent swarms. Generated, gated, and QA-cross-verified by this pipeline (1 fix loop, all gates exit 0).
MIT © 2026 VOIDLIGHT
knowledge/ snapshots are Anthropic's documentation and are intentionally not part of this repository.