Skip to main content
ZO ships with 21 agent definitions in .claude/agents/. Each is a Markdown file with YAML frontmatter (name, model tier, role, team) plus a structured prompt body covering ownership, off-limits, contracts, coordination protocol, and a self-validation checklist.

The two teams

ZO uses two distinct team configurations:

Project Delivery Team

Executes the projects defined in plan.md. 12 launch + phase-in agents covering data, model, oracle, code review, testing, XAI, domain evaluation, ML engineering, infrastructure, and live training monitoring.

Platform Build Team

Used to build and maintain ZO itself. 6 specialised agents including software architect, backend engineer, frontend engineer, platform code reviewer, platform test engineer, and documentation agent.

Tiered model routing

Each agent declares a model tier in its frontmatter, balancing capability against cost:
TierModelWhen
Critical reasoningclaude-opus-4-7Lead Orchestrator, Software Architect, Plan Architect, Init Architect, decisions where one wrong call cascades
Standard executionclaude-sonnet-4-6Data Engineer, Model Builder, Oracle/QA, Code Reviewer, Test Engineer, the workhorses
Routine tasksclaude-haiku-4-5Documentation Agent, Infra Engineer, headline summaries, bounded scope, format-following work
Plan-level overrides are supported: if a project needs Opus for the Model Builder (say, a novel architecture problem), the plan’s **Agent overrides:** block bumps the tier for that run.

Project Delivery Team: launch agents

Active by default on every project:
Reads the plan, decomposes phases, generates contracts for each agent, gates work between phases, detects plan edits and re-plans. Owns all orchestration entries in DECISION_LOG.md. Routes model tiers based on task complexity. The single agent that holds the whole project in context.
Phase 1: data audit, schema validation, exclusion filters, train/val/test splits, drift baselines. Phase 2 support: feature engineering, input representation. Pipeline principles default to denylist-first for DL projects (PR-026), exclude leakage, include all signals, defer feature selection to the model layer.
Architecture design, loss function design, hyperparameter search, training orchestration, evaluation. In Phase 4 with the autonomous loop, also acts as the auto-proposer: drafts the next hypothesis.md from the parent experiment’s shortfalls without prompting the human.
Executes oracle criteria against deliverables. Reports pass/fail with evidence. Runs tiered evaluation, statistical significance tests, per-class breakdown, error analysis. Writes result.md after each Phase 4 iteration so the orchestrator can compute delta_vs_parent.
Reviews all code produced by other agents. Enforces conventions (PEP8, type hints, Google-style docstrings, files under 500 lines, functions under 50 lines). Catches hardcoded paths, security issues, missing docstrings. Cross-cutting, runs after any agent produces code.
Writes and runs tests for code artifacts. Unit, integration, regression, edge cases. Distinct from Oracle/QA: Oracle validates model performance; Test Engineer validates code correctness.
Cross-cutting agent activated on every phase. Surfaces relevant prior art, baselines, open-source implementations. Customer projects rarely have published benchmarks, Research Scout finds analogous problems, typical performance ranges, working implementations.

Project Delivery Team: phase-in agents

Activated for specific phases or by plan opt-in:
Phase 5 explainability, feature importance, SHAP, GradCAM, attention visualisation. Generic by default; per-project domain context lands via the plan’s **Agent adaptations:** block.
Reviews model outputs for business/domain coherence. Flags edge cases, distributional shift, real-world applicability. Owns domain-specific PRIORS updates. Generic shell, domain identity injected at build time via plan adaptations (PR-020).
Productionisation, containerisation, inference optimisation, serving setup. Phase 6 packaging.
Compute resource allocation, experiment tracking setup, artifact storage, logging. Format-following work, appropriate for the smaller model.
Phase 4 live training monitor — the Lead spawns one per model run as training-{modelname}-checker. Tails the active experiment’s metrics.jsonl / training_status.json, alerts on NaN/divergence/gradient-blowup/overfit/stall so a broken run dies early, and writes a mechanistic diagnosis.md plus next-round suggestions (pairs with Research Scout’s general-AI literature track).

Platform Build Team

Used to build ZO itself, invoked once during initial development and during major platform upgrades. You don’t interact with these unless you’re modifying ZO’s source.
AgentTierRole
Software ArchitectOpusReads ZO specs, decomposes the platform, defines inter-module contracts
Backend EngineerSonnet/OpusBuilds core ZO infrastructure (memory, orchestration, comms, parsers)
Frontend EngineerSonnetBuilds the v2 command dashboard (deferred per PRD)
Platform Code ReviewerSonnetEnforces ZO’s own coding conventions on platform code
Platform Test EngineerSonnetTests ZO modules, unit, integration, end-to-end
Documentation AgentHaikuMaintains docstrings, README, API docs, keeps docs in sync with code

Per-project agent customisation

Beyond the built-in roster, plans support three levers:
1

Active / phase-in / inactive lists

**Active agents:** runs every phase. **Phase-in agents:** activated for specific phases. **Inactive agents:** explicitly skipped.
2

Custom agents

**Custom agents:** declares project-specific specialists (e.g. signal-analyst: Sonnet for vibration-signal analysis). The orchestrator auto-creates .claude/agents/custom/{name}.md from the plan declaration at build start.
3

Agent adaptations

**Agent adaptations:** tunes generic agents per project. The Plan Architect drafts these during zo draft based on Research Scout + Data Scout findings. At build time, the Lead Orchestrator appends the adaptation to the agent’s spawn prompt, the agent’s .md file is unchanged, so it stays reusable.

Peer-to-peer communication

Agents don’t shout into a void. They communicate through Claude Code’s native team APIs: TeamCreate, Agent(team_name=...), SendMessage. The Lead Orchestrator creates the team inside its session; teammates send messages directly to each other. The Python LifecycleWrapper observes the team via ~/.claude/tasks/ and tmux pane output, captures lifecycle events, and pipes them to the JSONL comms log. Wrapper observes; agents communicate.

Validating the agent roster

zo preflight plans/your-project.md
# PASS  Agents: All N agent definitions found
Mismatches between the plan’s agent list and .claude/agents/ are caught at preflight, before any compute is spent.

Next

Phases & gates

When each agent runs and what gates their output.

Memory & continuity

How agents share context across sessions.