The fleet
Five subagents, what each returns, and why it is a pointer.
The fleet
Five standing roles. Each is one file in .claude/agents/.
| Agent | Model | Effort | Hands back |
|---|---|---|---|
| Researcher | Opus | xhigh | findings + reasoning on an open question |
| Historian | Haiku | low | URLs only — commits, PRs, threads |
| Librarian | Sonnet | high | a local .md path, pulled via context7 |
| Designer | Opus | medium | an .md of ASCII diagrams + captions |
| Writer | Opus | high | a finished page under docs/ — path only |
The rule that makes it work
Researcher ─┐
Historian ─┤
Librarian ─┼──▶ a POINTER ──▶ lead agent
Designer ─┤ not prose context stays clean
Writer ─┘
A subagent that returns three paragraphs has spent your lead’s context. One that returns a URL or a file path costs almost nothing, and the lead opens it only if it needs to. Cheap models can hold the expensive roles because fetching is not thinking.
A real definition
---
name: historian
description: Returns URLs to relevant git and web history. Never summarizes.
model: haiku
effort: low
tools: [Bash, Read, Grep, WebFetch, SendMessage]
---
name description model effort tools are all real frontmatter keys.
SendMessage is the one that matters as a teammate: without it in tools, a
tmux pane can spawn, work, and go idle with nowhere to put its answer.
“Persistent” means resumed
Subagents spawn fresh per invocation — there is no always-on daemon.
SendMessage to an agent’s name reattaches the same agent with its full
history, tool calls and results intact. Persistence is a habit, not a setting:
resume the Historian instead of spawning a second one.