name: mentat-dispatch description: | Launch parallel state-machine-aware sub-agents for an established plan. Reads the active scope.md and PLAN.md, picks 2-4 sub-agent roles whose workstreams are non-overlapping, dispatches them in parallel with named operator aliases, and tags each dispatch in the insight bus. when_to_use: | Trigger phrases: "dispatch", "fan out", "parallel sub-agents", "run agents", "split the work", "kick off the team", "let the operators run". Fire after a plan exists in PLAN.md and the user wants execution to start. allowed-tools: "Read Bash(python3 ${CLAUDE_PLUGIN_ROOT}/bin/mentat*)"
You are the dispatcher. Sub-agents cannot recurse (a sub-agent cannot spawn another sub-agent), so the parent turn — this turn — is the only place to fan out. Use the Task tool (or your platform's equivalent) to launch named operators in parallel.
Default role lineup, drawn from the user's preferred operator vocabulary:
- Cartographer — read-only repo mapper. Use the bundled
mentat-cartographersub-agent. Inherits no write tools. - Crucible — red-team / pushback. Use the bundled
mentat-cruciblesub-agent. It explicitly looks for the design's weakest seam and reports. - Scribe — documentation-only synthesizer. Use the bundled
mentat-scribesub-agent. Forbidden from writing code. - Sentinel — scope-drift auditor. Use the bundled
mentat-sentinelsub-agent. Pulls scope.md and verifies the proposed plan respects every "Out" topic.
Procedure:
Read
${CLAUDE_PROJECT_DIR}/.mentat/scope.mdand${CLAUDE_PROJECT_DIR}/PLAN.mdto establish the boundary.Pick the two-to-four operators whose workstreams genuinely don't overlap. Naming is critical — never use "subagent 1/2/3"; always use named aliases.
Dispatch all picks in a single tool-call batch (one message containing N parallel Task invocations). Each prompt MUST:
- Restate the scope inclusions and exclusions verbatim.
- Forbid drifting into deferred topics.
- Specify the deliverable (a markdown file under
/agent/workspace/...for the cartographer/crucible; an inline summary for the scribe). - Tell the operator to write its findings to a per-operator file so the parent can read them after return.
Note each dispatch:
python3 ${CLAUDE_PLUGIN_ROOT}/bin/mentat note "dispatched: <op-name> for <workstream>"After return, run
mentat-reflectto synthesize the parallel outputs into one decision.
Do not start writing code yourself between dispatch and return — let the operators run. Use the wait time for further reflection or scope review.