Claude Code skill that makes Fable 5 up to 76% cheaper — routes token-heavy work to Sonnet/Haiku subagents, keeps Fable focused on judgment. By Jon Orozco.
SaferSkills independently audited jro-fable (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Mission: preserve expensive cognition for judgment; push everything else downward. Information flows up. Decisions flow down. The apex tier touches decisions, tradeoffs, synthesis, architecture, and final truth-checking — and nothing mechanical.
Four tiers. Each binds to the most capable model available for its job. lib/pricing.json → "tiers" is canonical; this table mirrors it.
| Tier | Owns | Model (as of 26-0702) | Alias / ID |
|---|---|---|---|
| JUDGMENT (apex) | decisions · architecture · tradeoffs · risk · synthesis · final review | Fable 5 (subscription / frontier) · Opus 4.8 (metered-API default) | fable · claude-fable-5 / opus · claude-opus-4-8 |
| EXECUTION | bounded edits · refactors · tests · validation · drafts | Sonnet 5 | sonnet · claude-sonnet-5 |
| MECHANICAL | search · grep · inventory · extraction · log-scan | Haiku 4.5 | haiku · claude-haiku-4-5-20251001 |
| LOCAL ($0 floor) | bulk extraction · first-pass editorial/code review · embed · classification · drafts · log triage · EN/ES parity | qwen3 / nomic-embed-text (M5 Max, 128 GB) | loc · lens · cr · lingua |
Resolution rule (auto-correct). The JUDGMENT seat binds to the first available of [claude-fable-5, claude-opus-4-8]. Fable 5 redeployed 2026-07-01 → the seat now holds Fable 5, with one cost-discipline split:
cost. Keep judgment in the main loop; delegate everything mechanical DOWN (Agent/Workflow workers).
claude -p with API key, Queue tasks on API): default judgmentto Opus 4.8 ($5/$25, bigger rate pool, no refusal machinery). Escalate to Fable 5 ($10/$50) only when frontier-hard: long-horizon agentic work, hardest synthesis, or when Opus disagrees with itself. Unattended Fable calls need a refusal fallback (server-side-fallback-2026-06-01 beta → Opus 4.8).
lib/pricing.json → tiers stays canonical; change current there and re-stamp when anything shifts.
Fable 5 API mechanics (differ from Opus — matter for scripts/bench): adaptive thinking is ALWAYS on (omit the thinking param; depth via output_config.effort); no prefill; no sampling params; raw CoT never returned; safety classifiers can return stop_reason:"refusal"; 1M context / 128K out; own smaller rate-limit pool; requires 30-day data retention.
For long Fable-5 sessions that would otherwise burn through the smaller Fable rate-limit pool, fable-max routes the session through pxpipe (~/.hermes/node/bin/pxpipe, daemon com.jromac.pxpipe, dashboard http://127.0.0.1:47821/). It renders bulk older-turn text as PNG pages and pushes them through Fable-5's vision channel — ~3× the char/token density → ~60-70% fewer input tokens on Fable traffic. On subscription this converts directly to more Fable work per rate-limit window.
multi-tool-result conversations); when hitting the Fable weekly pool early.
13/15 exact on dense text (~87%; safe for prose, risky for hex / hashes / secrets / IDs). Opus 4.8 is 0/15 exact — pxpipe automatically passes Opus/Sonnet/Haiku through unchanged (default PXPIPE_MODELS scope) so mixed sessions are safe.
claude. Sets ANTHROPIC_BASE_URL for thatprocess only; no global env pollution. Daemon is always running (launchd KeepAlive).
http://127.0.0.1:47821/, orlaunchctl unload ~/Library/LaunchAgents/com.jromac.pxpipe.plist.
This skill is named jro-fable because the judgment seat was originally Fable. The seat matters, not the label — it always holds the most capable model you can actually call. Companion: `/model-check` picks the best model for one call; `/jro-fable` orchestrates a job that spans tiers. Single call → model-check. Fan-out + synthesis → here.The JUDGMENT tier is for: judgment · strategy · architecture · tradeoffs · risk · synthesis · final review · executive decisions.
It is not for: grep · raw file scanning · directory inventory · log reduction · transcript extraction · bulk summarization · repetitive edits · test execution · browser checking · formatting.
If the work does not require a decision, do not spend the apex tier on it.
Before invoking, answer: (1) What decision is needed? (2) What evidence? (3) What can a cheaper model do? (4) What context must stay out of the apex context? (5) What does done look like?
isolation creates clear value.
Never escalate work to the apex tier until it contains an actual decision.
| Bad (no decision) | Good (decision) |
|---|---|
| "Analyze these logs." | "Determine the most likely root cause and recommend the safest fix." |
| "Read this repo." | "Identify the architectural constraint blocking multi-tenant isolation." |
| "Summarize this transcript." | "Extract the decisions, risks, owners, and next actions." |
LOCAL — qwen3 / nomic-embed-text ($0, on-machine via ~/bin/loc, lens, cr, lingua): bulk extraction · classification · dedup · first-pass editorial QC · first-pass code review · EN/ES parity · embedding text for semantic recall · draft prose · log triage · format conversion. Sub-3s on qwen3:8b, 5–30s on qwen3:32b. Try LOCAL first whenever the task is bounded + verifiable + a Claude correction would be cheap. See /loc.
MECHANICAL — Haiku 4.5 (cap 150 tok): file search, grep, listing, log scan, field extraction, inventory, counting, dedup, simple classification, transcript chunking. Use when LOCAL is saturated, the task needs tool calls, or LOCAL has shown >20% rework rate on this task type. (No adaptive thinking / effort param on Haiku — extended thinking via budget_tokens only.) EXECUTION — Sonnet 5 (cap 300 tok): bounded edits, refactors, test runs, browser checks, doc updates, candidate patches, error repro, log interpretation, validation reports. Near-Opus coding at 3-5x less cost (intro $2/$10 through 26-0831); adaptive thinking on by default; own rate pool. JUDGMENT — Fable 5 / Opus 4.8 (as useful): architecture, strategic tradeoffs, product/business decisions, risk calls, final synthesis, conflict resolution, exec recommendations, high-impact review. Fable 5 in subscription sessions and for frontier-hard work; Opus 4.8 as metered-API default.
effort (low | high | xhigh | max, default high) controls reasoning depth within a model. Two rules change how this stack routes:
low effort oftenexceeds prior models at max — a low-effort apex call can beat a high-effort Sonnet call at similar spend, without leaving the cached prefix.
low. Execution → default.The hardest verify/judge stages → xhigh (Claude Code's own default). max only when correctness outweighs cost outright. Higher effort up front often reduces total agentic cost (fewer correction turns). Workflow agent() takes effort: directly; Agent-tool workers inherit session effort unless the task says otherwise.
Cache rule that beats model-hopping: cached reads don't count toward rate limits. Keep the main loop on ONE model with a stable prefix and spawn cheaper-model subagents — never switch the main loop's model mid-session (invalidates the cache and re-bills the whole context).
| Work | Default | Reason |
|---|---|---|
| Bulk extraction · classification · dedup · log triage | `loc fast` | $0, on-machine, sub-3 s |
| First-pass editorial QC before Jon sees writing | `lens` | independent local copywriter |
| First-pass code review before /harden | `cr` | qwen3-coder, independent of Claude |
| EN/ES translation + parity check | `lingua` | bilingual local editor |
| Embedding text for semantic recall | `loc embed` | nomic-embed-text, 768-dim, free |
| Search · grep · inventory · log scan (needs tool calls) | Haiku | mechanical pattern work w/ tools |
| Repo map + dependency listing (cross-file reasoning) | Haiku | context isolation |
| Bounded edits (≤3 files) · multi-file implementation | Sonnet | strong execution, lower cost |
| Testing · browser checks · validation | Sonnet | execution + reporting |
| Security review, first pass | Sonnet | good signal; apex verifies |
| Architecture · strategy · exec synthesis | apex (Fable 5 / Opus 4.8) | judgment |
| Final diff review · risk acceptance | apex (Fable 5 / Opus 4.8) | truth-check + accountability |
| Frontier-hard: long-horizon agentic · hardest synthesis · Opus-vs-Opus conflict | Fable 5 | the seat above the seat |
| Interactive latency-bound Opus-grade work (live debugging under deadline) | Opus 4.8 fast (/fast) | 2.5x speed, 2x price, credits-only on Pro/Max — never autonomous/batch runs |
Haiku breaks even only if its error rate stays <20%. If Haiku output needs apex-level correction more than 1 in 5 times, the re-prompt cost negates the savings — promote that task type up a tier.
Delegate with the Agent tool and an explicit model:
Agent({ description: "Scan repo for auth patterns", model: "haiku",
prompt: "<handoff packet — see below>" })Independent calls in one message run in parallel (~16 cap). For structured multi-stage fan-out use the Workflow tool — pipeline() (no barrier, items flow stage-to-stage) or parallel() (barrier). Subagents cannot spawn subagents (enforced) — use Workflows for hierarchy.
Rule: don't carry raw material after extracting facts. Extract signal · discard bulk · keep receipts.
Don't reason while gathering. Collect → Reduce → Verify → Reason → Decide → Execute → Validate → Summarize. If evidence is incomplete, say so; if partial evidence still allows progress, take the best path and mark the uncertainty.
Delegate when: the worker reads 2K+ tokens · task is parallelizable · work is mechanical/bounded · output compresses tightly · main context would otherwise be polluted. Don't when: under 2 tool calls · files already in context · output shorter than the handoff · every step needs judgment · scope too ambiguous · the worker would need the whole conversation.
Spawn with the model shown + a strict output contract. Every return ends with STOP_REASON: · CONFIDENCE: · UNCERTAINTY:. (Full presets in DELEGATION.md.)
| Worker | Model | Tools | Returns |
|---|---|---|---|
| Repo Scout | Haiku | read-only | FILES · PATTERNS · LIKELY_ENTRYPOINTS · RISKS |
| Log Hunter | Haiku | read-only | ERROR_CLUSTERS · FIRST_FAILURE · LIKELY_CAUSE · FILES_OR_COMMANDS |
| Transcript Extractor | Haiku | read-only | DECISIONS · ACTION_ITEMS · RISKS · OPEN_QUESTIONS · OWNER_MAP |
| Research Scout | Haiku/Sonnet | search/read | SOURCES · CLAIMS · CONFLICTS · DATES · RELEVANCE |
| Patch Builder | Sonnet | edit/test | FILES_CHANGED · SUMMARY · TESTS_RUN · RESULTS · RISKS · ROLLBACK_NOTES |
| Test Runner | Sonnet | terminal/browser | COMMANDS · PASS · FAIL · FLAKY_OR_ENV · LIKELY_CAUSE · NEXT_VERIFICATION |
| Diff Reviewer | Sonnet | read-only | BLOCKERS · REGRESSIONS · SECURITY_RISKS · QUALITY_ISSUES · APPROVE_OR_REJECT |
| Risk Officer | Sonnet pass → Opus 4.8 final | read-only | TOP_RISKS · SEVERITY · LIKELIHOOD · MITIGATION · GO_NO_GO |
Handoff packet (every worker prompt, nothing extra): exact objective · paths in scope · files included · files excluded · output contract · token cap · tool-call budget · stop conditions · success criteria · confidence requirement · the Worker Discipline Block (DELEGATION.md). Pass file slices, not whole files; never re-read what's already known.
Stop conditions (stopping is not failure; improvising out of scope is): required files missing · scope expands · commands fail after retry · evidence contradicts the assignment · task needs judgment above the tier · output exceeds cap · confidence <70.
Confidence scale: 90-100 usable w/ spot-check · 70-89 usable w/ verification · 50-69 escalate · <50 discard/re-scope.
xhigh effort first — effort is cheaper than the tier jump.Treat worker output as leads, not facts. Before any final answer/commit: reopen cited files/evidence · confirm line refs, commands, failures · review the final diff · validate against the original request · state remaining uncertainty. High-impact → adversarial review (produce recommendation → a second drone tries to disprove it → compare → decide on the apex tier).
Extraction over summarization · bullets over prose · paths+lines over explanation · deltas over full restatements · contracts over open prompts · archives over context-stuffing · one final synthesis over repeated mid-level summaries. Never paste raw logs unless exact text matters; never carry full transcripts after extracting decisions; never let workers return narrative unless required.
lib/)Cost source of truth: lib/pricing.json (per-MTok prices + tiers bindings). Before quoting costs on a high-value decision, run lib/pricing-check.sh — scrapes pricing, reports MATCH/DRIFT/UNKNOWN per model, does not auto-update (verify → edit → re-stamp last_verified).
Worked example — 10 calls, 2K in + 500 out each: all-apex (Opus) ≈ $0.21 · apex + Sonnet workers ≈ $0.10 (≈55% off) · apex + Haiku workers ≈ $0.04 (≈80% off). Prompt caching (0.1× read after first call) compounds it. (Numbers move with pricing — `pricing.json` is authoritative.)
Receipts: after each delegated call, lib/log-receipt.sh <model> <task_type> <in> <out> <success> [notes] (success: 1 usable / 0 needed correction). Weekly lib/receipts-digest.sh --since 7d flags any task↔model pair with error-rate >20% on n≥5 → promote it a tier.
Benchmarking: lib/bench.sh runs the model mix on Jon's real task set (repo scan · log reduction · transcript extraction · business research · strategy synthesis · draft creation · multi-file patch · final review); tracks cost · latency · accuracy · rework · token load · usefulness. --judge scores runs with the apex model. (Set `ANTHROPIC_API_KEY` for clean timing; OAuth adds ~0.5–2s/call.)
(1) apex did only judgment · (2) cheaper models did mechanical work · (3) context compressed · (4) evidence verified (files reopened) · (5) uncertainty stated · (6) answer is useful · (7) token spend proportional to value · (8) work moved Jon closer to execution.
Don't optimize for cheap. Optimize for leverage. The best outcome is the smallest amount of apex cognition required to produce a correct, useful, executive-grade result.
~/.claude/skills/jro-fable/
├── SKILL.md # this file ├── lib/
├── DELEGATION.md # worker contracts │ ├── pricing.json # prices + tier bindings (SoT)
├── README.md # install + overview │ ├── pricing-check.sh # drift detector
├── install.sh │ ├── log-receipt.sh # one receipt
├── assets/ │ ├── receipts-digest.sh # weekly + break-even warns
│ └── fable-orchestrator.excalidraw │ └── bench.sh # benchmark harness
├── data/receipts.jsonl # delegation log └── benchmarks/tasks/*.txt # canonical promptsVisual: assets/fable-orchestrator.excalidraw.
tool-call budget, assume-and-continue, ≤30-word status, no future-work promises, no comment-scratchpad, injection hygiene for web-facing workers). Distilled from public system-prompt corpus (asgeirtj/system_prompts_leaks: ChatGPT agent mode, Gemini CLI, Cursor, Codex). Handoff packet now includes tool-call budget + discipline block.
binds it). Added the subscription-vs-metered-API split (Fable free-in-plan for Claude Code judgment; Opus 4.8 stays the metered default with Fable as frontier escalation). EXECUTION seat upgraded Sonnet 4.6 → Sonnet 5 (near-Opus coding, intro $2/$10 through 26-0831, adaptive thinking default-on, own rate pool). New Effort Routing section: effort (low|high|xhigh|max) is the intra-model knob; downshift effort before downshifting model on judgment work; per-stage worker effort. Added Fable 5 API mechanics (always-on thinking, no prefill, refusal + server-side fallback beta, own smaller rate pool, 30-day retention), Opus 4.8 fast-mode row (2.5x speed, 2x price, credits-only, interactive-only), cache-over-model-hopping rule, and Opus→Fable escalation criteria. pricing.json re-verified against platform.claude.com 2026-07-02 (Opus 4/Sonnet 4 retired 26-0615; Opus 4.1 retires 26-0805). All facts from official Anthropic docs.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.