Ten agents. One typed schema. Exactly one on Fable 5.
This repo doesn't hand-write its Claude Code sub-agents. Each one is an AgentConfig value in Rust (crates/schema/src/agent.rs), listed in crates/agent-gen/src/agents.rs, and compiled to .claude/agents YAML by cargo run -p agent-gen -- the generated files open with "do not edit by hand," and nobody does. The schema's own module doc states the core idea: "The description field is the trigger -- Claude reads it to decide whether to delegate a task to this agent." This site turns those definitions into a durable, queryable primitive, the same move subagenttasks.com made with the real TaskCreate/TaskUpdate tool schema.
AgentModel and AgentTool are Rust enums -- a typo'd model ID or tool name fails the build, not the session. The serde rename strings are the real pinned API model IDs, stored here verbatim.
cargo run -p agent-gen regenerates every YAML file from one typed list. validate() runs at generation time: names must be [a-z0-9-], descriptions at least 20 chars, prompts non-empty.
Every agent carries an explicit tools allowlist ("prefer an explicit allowlist -- it prevents scope creep in the agent") and a max_turns cap to prevent runaway loops.
What changed on 2026-07-01
Claude Fable 5 (claude-fable-5) shipped GA on 2026-06-09, was suspended roughly 2026-06-12 to 06-30 during a U.S. government export-control review, and came back to everyone -- Claude Platform, Claude.ai, Claude Code, Claude Cowork -- on 2026-07-01 (anthropic.com/news/redeploying-fable-5). That same day, this repo made exactly one model change: engineering-coworker went from claude-haiku-4-5-20251001 to claude-fable-5.
Why that one? It's the highest-stakes agent of the ten -- the only one that doesn't just suggest code but actually executes builds, deploys, D1 writes, and git pushes on the developer's Mac, through the engineering-coworker MCP binary (crates/engineering-coworker: cargo_check, cargo_test, wrangler_deploy, d1_query, git_status, git_commit_push). Anthropic documents Fable 5 as "next-generation intelligence for long-running agents" -- which is a precise description of that job and an over-specification of the other nine.
The rest stayed off Fable 5, on purpose. The schema's own doc comment on the Fable5 variant is the policy:
"Reserve for agents doing genuinely high-stakes, long-horizon work -- not a drop-in replacement for Haiku on mechanical tasks." — crates/schema/src/agent.rs
So the split, live in this site's D1 database right now:
| Model | Agents | Why |
|---|---|---|
| claude-haiku-4-5-20251001 | 7 -- cargo-check, migrator, deployer, crawler, vendor-sync, indexer, crawl-manager | Well-scoped mechanical tasks: run a command, parse output, report. |
| claude-sonnet-5 | 2 -- design-coworker, a2a-bridge | Promoted into AgentModel 2026-07-09 by operator routing directive: the default for routine subagent work. Both moved here from claude-sonnet-4-6. |
| claude-sonnet-4-6 | 0 | Still in the enum; superseded as the routine default by claude-sonnet-5 on 2026-07-09 -- see for yourself. |
| claude-fable-5 | 1 -- engineering-coworker | Actually executes deploys, git pushes, and D1 writes on a real Mac. Upgraded 2026-07-01. |
| claude-opus-4-8 | 0 | In the enum, currently unused by any agent -- see for yourself. |
The full verified Fable 5 / Mythos 5 story -- including why this repo correctly uses one and not the other -- is on the Fable 5 page. The schema itself is documented field-by-field on the agent-schema page.
Live board
All 10 definitions are rows in this Worker's own D1 database (agent_definitions), seeded verbatim from crates/agent-gen/src/agents.rs -- full trigger text, real tools allowlists, real turn caps. Browse the board → or hit the JSON API.
Next step, noted not built
POST /api/agent-definitions exists and is write-gated, but cargo run -p agent-gen doesn't call it yet -- today this catalog is a manually-seeded mirror of agents.rs, not a sink the generator pushes to. The honest future version has the generator upsert every regenerated agent here automatically, so the site can never drift from the YAML. Documented in the README, not claimed as done.