Agents
Agents are specialized workers that run in a fresh context. The orchestrator dispatches them during /subagent-implementation, /quick-fix, and /subagent-diagnose, but you can also invoke them directly via the Agent tool. Two of Anthropic's agent patterns are built in: orchestrator-workers (a parent breaks the task down and delegates to workers) and evaluator-optimizer (the implementer writes, a separate reviewer critiques).
Who dispatches whom
Three orchestration trees drive the implementation lifecycle, and two ad-hoc exits route into the same reviewer outside them. The implement loop fans out per checkpoint, implementer then reviewer, with the investigator scoping surfaces, the auditor gating the whole delivery once at the end, and the strategist called in only when the loop is stuck; /quick-fix drives the same implementer, reviewer, and auditor from a brief instead of a spec. The wiki pipeline fans out per domain, one writer per domain with the same reviewer gating each page. The deslop pass fans out per shard, one read-only auditor per wiki domain, and its second phase hands accepted findings back to the same implementer.
/quick-fix and /subagent-diagnose reuse the implement loop's tree, /autopilot runs it end to end, and ship verbs dispatch the wiki-inferrer silently. /implement is the one implementation verb with no implementer dispatch: the main agent writes the code, so the reviewer runs per checkpoint and the auditor once at the end, as in the loop. /atomic-plan borrows the reviewer alone, in spec-mode. /deslop is the only tree whose two halves are separate invocations: the audit never reaches the implementer without a human accepting findings first. Code the main agent writes ad-hoc, outside any of these trees, reaches the reviewer two ways, each with an explicit model override to the session's model: atomic-verify dispatches it against the working diff before a completion claim, and the ship verbs' review gate dispatches it against the staged diff before the commit.
Code agents
These write, review, and gate code.
| Agent | What it does | Model |
|---|---|---|
atomic-implementer | Dual-mode implementation agent. The orchestrator declares the mode at dispatch time. feature mode: implements a feature checkpoint — one cohesive slice across however many files it touches (controller + service + DTO + tests, etc.); refuses cross-cutting or ambiguous scope. surgical mode: small targeted edits with a hard cap of 2 files, test files excluded; bounces anything larger back to the orchestrator. Both modes write a failing test first. | Sonnet, medium effort |
atomic-reviewer | Reviews a diff after each implementer pass. Re-runs the quality signals it verifies (tests, type checks). One line per finding, ends with PASS or CHANGES_REQUESTED. Flags suppression patterns — error-catching added to dodge a failure without investigating it. Flags over-engineering — reinvented stdlib, duplicate helpers, or one-implementation abstractions — and comment noise; both are 🟡 and drive the verdict, never nits. Runs atomic code comments on the diff and reports comments: N added (M over max) beside the other signals. Checks the implementer's proposed commit message against atomic-git-discipline. Also runs in spec-mode: reviews a draft spec against its design doc (coverage, voice, over-prescription) to gate the /atomic-plan spec loop. Also gates code the main agent wrote outside any loop, at both atomic-verify (diff: working, before a completion claim) and the ship verbs' review gate (diff: staged, before the commit); both dispatches pass an explicit model: override to the session's model, overriding the claude-sonnet-5 frontmatter pin. | Sonnet, xhigh effort |
atomic-auditor | Final gate on a finished implementation, dispatched once after the loop goes green. Audits four things per-checkpoint review cannot see: success criteria no single checkpoint owned, iterations that each passed and do not compose, commit types that misstate user-visible impact, and documentation that is current but says nothing. Never edits the repo; findings also land in $SCRATCH/AUDIT.md. Fresh context, ends with PASS or CHANGES_REQUESTED. | caller's choice, max effort |
Research agents
These read code but never write it.
| Agent | What it does | Model |
|---|---|---|
atomic-investigator | Locates code. "Where is X defined?", "What calls Y?", "List all uses of Z." When an index is present, leads with atomic code explore for broad scoping (one natural-language query returns the relevant symbols, files, and relationships), then uses atomic code search/callers/callees/impact for targeted follow-up; falls back to sg/grep otherwise. Returns a file:line table with no speculation. | Haiku, low effort |
atomic-strategist | Reasons through hard problems — plans, specs, architectural tradeoffs. Surfaces hidden assumptions and recommends approaches. Read-only; never implements. Dispatched for root-cause analysis when the implement→review loop gets stuck on the same failure. | caller's choice, xhigh effort |
atomic-deslopper | Audits one shard of a standing codebase — a wiki domain or a directory, never a diff. Sweeps eight slop categories, each bound to a rule atomic already carries, so a suspicion with no rule behind it is dropped rather than reported. Proves dead code through the symbol graph plus a literal sweep for dynamic references, and assigns every finding a safety tier that decides whether it may ever be auto-fixed. Its one write is a findings file inside the scratchpad bundle; it runs no mutating command, because siblings audit the same working tree in parallel. Dispatched one per shard by /deslop. | Sonnet, high effort |
Infrastructure agents
These handle system-level tasks.
| Agent | What it does | Model |
|---|---|---|
atomic-wiki-inferrer | Scope-sensitive wiki pipeline, and an orchestrator rather than an author. Repo scope: scans via atomic signals scan, infers domain structure (using real import/call edges from the code-intel index when present; filename heuristics otherwise), dispatches one atomic-wiki-writer per domain and atomic-reviewer per page, then assembles docs/wiki/index.md and wires the @docs/wiki/index.md ref (checking claude.local.md/CLAUDE.local.md before CLAUDE.md). Realm scope: executes the cross-repo pipeline against <root>/wiki/. Runs in its own context so the scan, which is thousands of lines, never enters the caller's. Dispatched by /refresh-wiki and silently by ship verbs. | Sonnet, medium effort |
atomic-wiki-writer | Authors one wiki page from source, dispatched once per domain by atomic-wiki-inferrer with the page contract and source paths in its prompt. Carries the atomic-writing skill in frontmatter, so the page's reading order, its diagrams, and its voice load as context rather than arriving as a request. Reads the files rather than inferring from filenames, draws every shape the domain has, and reports judgments separately from facts. Redraws every current-architecture diagram from the domain's design docs into the page, checked against source. Holds no Agent tool, so it cannot fan out. | Sonnet, high effort |
Model and effort overrides
Each agent's model and effort default to the bundled tier shown in the tables above. atomic config agents pins either or both per agent: it prompts interactively, one agent at a time, and writes the choices to config.toml. Set one field, both, or neither; a blank answer keeps the bundled default for that field.
- model — a tier alias (
haiku,sonnet,opus) or an exact Claude Code model id such asclaude-opus-4-8, with no provider prefix. Validation is lenient: any well-formed value passes through to the frontmatter, and Claude Code resolves it at runtime. - effort —
low,medium,high,xhigh, ormax. Claude Code downgrades per model at runtime when a model does not support the requested level.
Bundled defaults:
| Agent | Default tier |
|---|---|
atomic-investigator | claude-haiku-4-5-20251001, effort low |
atomic-implementer | claude-sonnet-5, effort medium |
atomic-reviewer | claude-sonnet-5, effort xhigh |
atomic-wiki-inferrer | claude-sonnet-5, effort medium |
atomic-wiki-writer | claude-sonnet-5, effort high |
atomic-auditor | unpinned, effort max |
atomic-strategist | unpinned, effort xhigh |
atomic-strategist and atomic-auditor ship with no model: field on purpose, so the parent session or your own config decides whether a given question is worth opus or fable. A pinned agent isn't locked to that pin either — the caller's Agent tool model: parameter overrides frontmatter at dispatch time, which is how atomic-verify and the ship verbs run the claude-sonnet-5-pinned atomic-reviewer on the session's own model. Effort is the knob that survives an unpinned model. (fable is forward-reserved and may not correspond to a live Claude Code model tier yet.)
How an override travels
Config.
atomic config agentswrites a nested table toconfig.toml, machine-owned and namespaced under the harness, so pi's own[pi.agents.<name>]overrides stay separate:toml[claude.agents.atomic-implementer] model = "claude-opus-4-8" effort = "high"Install. The installer patches
model:andeffort:into each agent file's frontmatter on everyatomic claude installoratomic claude update, andatomic config agentsre-patches the already-installed files the moment you save, no reinstall needed. Only the fields you set are applied. Both fields are re-derived from config on every install rather than baked into the file, so upgrades never clobber the choice.Drift check.
atomic doctorcompares each installed agent's frontmatter against what your config would produce, inside the same install-integrity check that covers every artifact. A missing override reports WARN;atomic doctor --fixre-applies the patch.
atomic config list shows what is active; no override stored means no claude.agents.* lines:
claude.agents.atomic-implementer.model = claude-opus-4-8
claude.agents.atomic-reviewer.effort = highEdge cases
| Case | Behavior |
|---|---|
scalar entry (atomic-implementer = "opus") | config parse error; nested tables are the only accepted shape |
| running Claude Code session | keeps the old frontmatter; restart to pick up the change |
custom --target install directory | not re-patched on save; re-run atomic claude install --target <dir> |
agents added manually to ~/.claude/agents/ | never patched; only bundled artifacts tracked by [install.artifacts] are |
