Guide

CrewDefine deep dive

How to interview, validate, and emit a crew that Zero can load without hand-edits.

For Builders authoring crews

What CrewDefine is for

CrewDefine turns a conversation into a crew package: agents, tools, answer modes, and output composition. It is not the chat runtime — Zero is.

The interview

CrewDefine’s interviewer only acts through tools:

  1. record_crew_meta — name + description
  2. record_agent — roster (always includes director; usually synthesizer)
  3. record_custom_tool — stubs for capabilities not in the Lab Z catalog
  4. record_answer_modes — which modes the Zero UI shows
  5. record_output_composition — citations, charts, tables, synthesizer tools
  6. finalize_crew — confirm roster, then draft personas

Lead with defaults. For strategy crews, propose all five modes; for lightweight assistants, summary + light.

What gets written

my-crew/
  crew.yaml
  README.md
  agents/
    director.yaml
    synthesizer.yaml

  tools/          # optional plugin stubs

crew.yaml carries display_name, default_answer_mode, answer_modes, and output_composition. When composition is explicit, synthesizer tools are aligned to synthesizer_tools.

Validate before you load

crewdefine validate ./crews/my-crew
# optional parity with Zero’s validator:
ZERO_BACKEND=/path/to/Zero crewdefine validate ./crews/my-crew

Zero requires director and synthesizer ids. Unknown tools must exist as plugins or built-ins.

Drafting quality

Persona drafts inject Lab Z conventions (responsibilities, tool guidance, delegation rules). Synthesizer drafts include composition guidance so answers emit [DATA_START] blocks, citations, or charts when you asked for them.

Next

Load into Zero with the getting started guide.

← All guides · crewdefine , zero