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:
record_crew_meta— name + descriptionrecord_agent— roster (always includesdirector; usuallysynthesizer)record_custom_tool— stubs for capabilities not in the Lab Z catalogrecord_answer_modes— which modes the Zero UI showsrecord_output_composition— citations, charts, tables, synthesizer toolsfinalize_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.