A Claude Code + Fable 5 harness that decomposes a goal into tasks and dynamically assigns each sub-agent the effort level its complexity deserves.
DEO spends compute where it matters. Routine tasks run at low effort, ordinary work at medium, architecture and planning at high, and the single final verification gate at xhigh — never the other way around. Every agent stays on Fable 5; cost control comes from effort differentiation, not model downgrading.
Effort is the primary lever for intelligence, latency, and cost on Fable 5. Splitting work across cheaper models routes tasks away from the model this harness exists to use — and Fable 5 at lower effort frequently beats older models at their highest settings. So DEO keeps one model and varies one knob.
| Task class | Examples | Effort |
|---|---|---|
| Simple / Routine | code conversion, data cleanup, simple analysis | low |
| Medium | general reasoning, mid-size code changes | medium |
| High | architecture design, complex planning, hard debugging | high |
| Ultra-critical | final verification, security review, creative problem-solving | xhigh |
The single source of truth for this matrix — including the dispatch-phrase mapping that implements it — lives in skills/deo-pipeline/SKILL.md. No other file duplicates it.
flowchart LR
A[Goal] --> B["deo-planner<br/>(high)<br/>PLAN.json"]
B --> C["deo-executor ×N<br/>(per-task effort)<br/>parallel dispatch"]
C --> D["deo-verifier<br/>(high, fresh context)<br/>per-task gate"]
D -->|PASS| C
D -->|3 tasks done| E["send_to_user<br/>progress report"]
C --> F["deo-verifier<br/>(xhigh, once)<br/>final gate"]
F --> G["✅ DEO workflow complete"]
- Plan —
deo-plannerturns your goal intoPLAN.json: task breakdown, dependencies, per-task effort, optional swarm grouping. - Execute — independent tasks dispatch to
deo-executoragents in parallel, each with an effort-steering phrase injected into its prompt. - Verify — every finished task is judged by
deo-verifierin a fresh context (no shared blind spots), then the workflow advances automatically. - Report — every 3 tasks, a
send_to_userprogress report: completed tasks with evidence, artifact sizes, effort distribution. Post-hoc facts, never countdown pressure. - Finish — one
xhighfinal gate over everything, then the✅ DEO workflow completemarker, a plain-language summary, and optional human-review pointers.
Claude Code's agent dispatch has no effort parameter. DEO does not pretend it does. Effort is implemented two real ways:
- Dispatch-phrase injection — each level maps to a phrase that steers deliberation depth (e.g.
low→ "routine task, no over-deliberation, skip self-review"). - Verification-depth differentiation —
lowskips self-checks entirely;xhighrequires fresh-context cross-verification with evidence attached to every claim.
While a workflow runs:
effort 변경: T3 xhigh # one task
effort 변경: collect-swarm low # a whole swarm
effort 변경: 전체 medium # the default for everything not yet started
Changes apply from the next dispatch; in-flight tasks finish at their current level. Priority: task > swarm > default (high).
| Path | Role |
|---|---|
skills/deo-pipeline/SKILL.md |
Orchestrator skill — 6-step workflow, Effort Matrix (SSoT), runtime change rules |
skills/deo-pipeline/references/ |
Memory-system design, send_to_user tool schema, autonomy reminders, fresh-context verifier pattern |
agents/deo-planner.md |
Goal → PLAN.json (task breakdown + effort assignment) |
agents/deo-executor.md |
Generic executor — works at the effort level its dispatch prescribes |
agents/deo-verifier.md |
Fresh-context verifier — judges artifacts only, PASS/FAIL with evidence |
state/STATE-template.md |
Handoff/resume state snapshot template |
docs/CLAUDE-block.md |
Routing block to paste into your ~/.claude/CLAUDE.md |
git clone https://github.com/VoidLight00/deo-harness.git
cd deo-harness
# 1. Skill (including references/)
cp -R skills/deo-pipeline ~/.claude/skills/deo-pipeline
# 2. State template (under the skill directory)
cp -R state ~/.claude/skills/deo-pipeline/state
# 3. Agents
cp agents/deo-planner.md agents/deo-executor.md agents/deo-verifier.md ~/.claude/agents/Then paste the two blocks from docs/CLAUDE-block.md into your ~/.claude/CLAUDE.md routing table and safety-rules section.
Verify the install: open a new Claude Code session and type /deo status — the deo-pipeline skill should respond.
/deo Organize the 30 meeting notes in this folder into a weekly report
That's it. Task decomposition and effort assignment are automatic. If a session drops, /deo resume <run_id> picks up from the STATE.md snapshot — no prior conversation needed.
Safe to customize: the example column of the Effort Matrix.
Do not change: the level names (low/medium/high/xhigh), the "xhigh only at the final gate, once" rule, the model: fable line in agent definitions, and the no-duplication SSoT rule — these are what keep cost control and consistency intact.
This harness was generated and gated by Fable Forge from a third-party design document. Four corrections were applied:
| Original design | This harness | Why |
|---|---|---|
| Spawn "Opus 4.8 sub-agents" for cheap work | All agents pin model: fable; cost control via effort |
Old-model pins route work away from Fable 5 (Fallback-Zero HARD rule FZ2). Effort differentiation achieves the original intent — cost/performance balance — within one model |
| Configure via a "Custom Instructions sidebar" | skill + agents + CLAUDE.md routing block |
No such UI exists in Claude Code; this is the real extension mechanism |
| Per-agent effort as an API parameter | Dispatch-phrase injection + verification-depth differentiation | The agent dispatch has no effort parameter; DEO implements the effect honestly instead of prescribing a parameter that does not exist |
| Real-time token-remaining display | Post-hoc reports every 3 tasks (tasks, evidence, artifact sizes, effort distribution) | Exposing countdown numbers to the model induces premature session wrap-up (FZ6). Users need progress evidence, not pressure metrics |
All artifacts pass the Fable Forge fallback-zero HARD gate:
bash ~/fable-forge/gates/fable_lint.sh .
echo "exit: $?" # must be 0If you edit the skill or agent definitions, re-run the gate on your copy — pass/fail is decided by the script's exit code only, never by self-report.
MIT © 2026 VOIDLIGHT