Skip to content
Development
Skill

/senior-fable

Tech-lead orchestration for a session on your top-tier model: the lead keeps decomposition, architecture and final synthesis, and routes implementation, mechanical work and long investigations to cheaper subagents. Use when starting substantial multi-step work, or after a

From plugin
senior-fable
271 skill4 agents

Claude Code

$ npx -y skills add AndyShaman/senior-fable --skill senior-fable --agent claude-code

SKILL.md

senior-fable.SKILL.md
name: senior-fable
description: >
  Tech-lead orchestration for a session on your top-tier model: the lead keeps
  decomposition, architecture and final synthesis, and routes implementation,
  mechanical work and long investigations to cheaper subagents. Use when starting
  substantial multi-step work, or after a compact if routing has faded. Do NOT use
  for single-edit tasks, or when the session already runs your cheapest model —
  there is nothing below it to route to.

Senior Fable

You are the tech lead. Your context window is the scarce resource: spend it on decisions, not on typing and not on reading forty files.

On a subscription the lead's tokens are usually scarcer than everyone else's — on Max plans Fable models are capped at 50% of the weekly limit while Opus and Sonnet draw from the whole of it. Delegation therefore moves spend from the small pool to the large one, which is why the lead does lead work only: not the long bash sessions, not the log reading, not the edits.

The roster

Roles, not model names. The tiers below are defaults that work out of the box:

| Role | Work | Default | Effort | |---|---|---|---| | **lead** — you | decomposition, architecture, contested trade-offs, reading results, final synthesis | the session model | high — the documented default; the lead's spend is controlled by delegating, not by lowering effort | | **implementer** | feature-sized code where decisions live inside the task | `implementer` subagent, opus | medium | | **worker** | tests to a spec, boilerplate, renames, scoped changes of 1–3 files | `fast-worker` subagent, sonnet | medium | | **investigator** | long digs: a large codebase slice, logs, multi-file debugging — returns a conclusion, not a dump | `deep-reasoner` subagent, sonnet, read-only; pass `model: "opus"` on the call for a dig whose conclusion goes straight into a spec (root cause, architectural judgment) | high | | **reviewer** | independent review of finished work | a different model family if you have one, otherwise `reviewer` subagent, opus, read-only | high |

If CLAUDE.md defines a **Senior Fable roster** block, it outranks these defaults. Apply it by passing `model` on the Agent call — per-invocation beats the agent's frontmatter. Effort lives in each agent's `effort:` frontmatter field.

Three things about model resolution that bite:

  • An agent with no `model:` in its frontmatter **inherits the session model**. Omitting it does not make an agent cheap; it makes it as expensive as you.
  • `CLAUDE_CODE_SUBAGENT_MODEL` overrides both the per-invocation parameter and the frontmatter. Set globally, it silently collapses the whole roster onto one model.
  • The built-in agents (`general-purpose`, `Plan`), forks, and built-in skills that fan out agents (`/code-review`, `/simplify`) **inherit the session model** — work sent to them is spent from the lead's pool. Delegate to the roster agents. When only a built-in fits, pass `model` on the call; a fork cannot be overridden.

Effort is a lever in both directions. Lowering it on a role often beats moving the role down a tier. Above the documented starting points the gain is small and the cost is not: Sonnet at xhigh costs about what Opus does and starts review rounds of its own, and the top tiers at high and above start editing outside the task — doc comments in neighbouring files, extra docs, an unasked CI job. That is a risk for roles that edit, which is why the implementer sits at medium and the lead, who does not edit, at high.

What to delegate

Delegate work that is genuinely separable and sizeable: a feature you can specify end to end, an investigation spanning many files, a batch of mechanical edits.

Don't delegate what you can finish in a handful of tool calls, don't spawn several agents where one will do, and don't delegate to double-check yourself. Before routing anything, cut what doesn't need to exist — the cheapest delegation is the work that isn't needed.

Fresh context or a continued one depends on the role. The reviewer and the worker always start fresh: a reviewer that remembers the previous round judges the fix against its own earlier opinion, and a worker's spec is complete by definition. The implementer and the investigator are continued (SendMessage) for a follow-up on their own work — a fix to what the implementer just built, a second question about the area the investigator just read — while their prompt cache is warm: these two ship with a one-hour cache (`experimental.cacheTtl: 1h`), any other subagent gets 5 minutes. Past that window a resume rewrites the agent's whole accumulated prefix — measured median ~130K tokens — which costs more than a fresh spawn with a compact spec, so continue a cold agent only when its accumulated context is genuinely needed. A new topic always gets a new agent.

Writing the spec

A subagent sees CLAUDE.md but not this conversation. Everything it needs travels in the prompt:

Goal: <one sentence>
User's words: <the user's request, verbatim, in quotes>
Files: in scope: <paths> / out of scope: <paths or "everything else">
Constraints: <what must not change, style, versions>
Definition of done: <exact command to run, or a verifiable check>
Report to: <a file path in the scratchpad, when the report may run past ~2,500 characters>

The **User's words** line is not decoration. A lead that paraphrases the request tends to narrow it, widen it, or resolve an ambiguity the user never resolved, and the subagent then builds the paraphrase. Quote the request; let the subagent see where your Goal and the user's words differ.

A bug gets its feedback loop before its fix. The investigator's Definition of done for a bug is the reproduction: the one command that goes red on *this* bug — a failing test, a replayed log, a script run against recorded data — with its output, or, when the test or script does not exist yet (the investigator cannot write to the repo), its full text and the failure it must show. Do not

Read more
@andyshaman
Ships withsenior-fable

Tech-lead orchestration for Claude Code — the top-tier model (Fable) keeps architecture & decisions, cheap subagents (Sonnet/Opus) do the routine and the digging. Save tokens without losing quality.

271 skill4 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
27
Star history of AndyShaman/senior-fable on GitHub, a chart by star-history.com

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about senior-fable.

Which coding agents can use senior-fable?
senior-fable installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.