-
Notifications
You must be signed in to change notification settings - Fork 0
Run A Coordinator Directed Worker Team
Note
Goal: Run the full coordinator loop as one operator — take a brief through research, plan-authoring, isolated execution, integration, and a queue read — using the role roster as personas over the phase commands you already have. This is the capstone that ties the four V5-10 worker-team siblings together.
Prereqs: the developer-workflows plugin installed (Install crickets plugins) at 0.8.0 or later (the version that ships the role roster); a clean main working tree; a brief — the thing you want built. Read Coordinator roles first for what each role wraps and which are read-only.
You are the coordinator. The roster gives you four personas — researcher, tech-lead, worker, and project-manager — that are thin skins over the shipped phase commands (Coordinator roles). This page walks the whole loop once, in order, cross-linking the per-step recipes. Each role wraps a command you can also run bare; the roster just names the persona doing it.
-
Research the brief (
researcher). Front the loop with the read-onlyresearcherrole to scope the work before any plan exists. It wrapsexplorerfor an in-repo fan-out ("where does X live / what tests cover Z") and runs its ownWebFetchfor a few targeted web lookups (a spec / API / changelog check). For deeper multi-source research it forward-references the operator's global research agent (e.g. a personally-installedmemory-idea-researcher), composing with it when present and never vendoring or porting it — degrading gracefully toexplorer+WebFetchwhen none is installed. Adopt theresearcherpersona (or paste its def fromsrc/developer-workflows/agents/researcher.md) and ask your scoping question; it returns a structured finding — a 1–3 sentence answer, thefile:line/ web sources backing it, and the open questions a planner needs. The output is a scoped brief, not a plan; because the role is read-only it makes no edits. -
Author the plan (
tech-lead). Hand the scoped brief to the activetech-leadrole — the brief-to-plan authoring persona (full tool access). Today its floor is/plan(/designis V5-10 sibling #5, a forward-reference — do not expect it yet). Author a named plan and stage it into the inactive tier, then promote it when you are ready to run it:/plan --name <slug>(or--stage <slug>to park it inqueued-plans/, invisible to/workand/queue-status-lite), then/plan --activate <slug>to promote the staged plan to the activePLAN-<slug>.md(no-clobber guarded). Staging then activating lets you queue several plans and turn them on one at a time without singleton collisions. See Run a named plan for the full staging / activation surface. -
Spawn the worker's worktree. Give the activated named plan its own checkout: run
/spawn-worker <name>. This creates agit worktreeon a freshworker/<name>branch and drops the worktree-local.harness/active-planmarker that binds it. Worktrees are operator-initiated — this command is the sanctioned way to create one. Full recipe: Spawn a worker in a worktree. -
Execute the plan (
worker).cdinto the worktree the spawn step printed, then run/workbare — the worktree-local.harness/active-planmarker binds it toPLAN-<name>.md, no--nameneeded. The activeworkerrole is the persona of this session: one per worktree, autonomous over its plan's full task list, single-threaded. Each task is gated by the per-task safety pre-check — it works straight through and only stops to ask on a hard-to-reverse, ambiguous, scope-drifting, or unverifiable task. It gates green before every[x], commits one task per commit, and updatesPLAN-<name>.md+progress-<name>.mdas it goes. It never fans out parallel implementers — single-threaded execution is the load-bearing safety constraint. Several workers can run concurrently, each in its own worktree bound to its own plan, without colliding. -
Integrate the finished worker. Back on
mainwith a clean tree (not inside the worktree), run/integrate-worker <name>. It mergesworker/<name>→main, runs the full deterministic battery on the integrated tree, and — only if green — promotes the worker's progress and prunes the worktree. A red gate hard-resetsmainback; it never pushes. Full recipe and the three outcomes: Integrate a worker. -
Read the queue (
project-manager). At any point, adopt the read-onlyproject-managerrole to see the whole queue at a glance: it wraps the/queue-status-literead-model and surfaces — across every active plan — the active-plan binding(s) (singleton and/or namedPLAN-<slug>.md), each plan's progress at a glance, and worker-worktree state (via the read-onlydoctor_worktrees.pyprobe). It shows that render verbatim: it marks nothing[x], writes no progress, activates no plan, merges nothing. It is a glance, not a gate — per LC-5, merge order is human-decided, so picking what to/workor integrate next stays your call. Two refinements are forward-referenced (neither built here): crickets #41 (github-projects board-sync — a synced board view) and V5-11 (the chief-of-staff intelligence layer —/standup, readiness signals, integration-order advisory, still advisory). Full recipe: See every active plan.
- Each step's verify is the verify of the command it drives — see the per-step how-tos linked above.
- After step 2,
/plan --activate <slug>leaves an activePLAN-<slug>.md; after step 3, theworker/<name>worktree exists with a.harness/active-planmarker holding the bare slug. - The whole loop is complete when
/integrate-workerreports GREEN for the plan you spawned (the full gate battery passing on the merged tree), and a freshproject-managerglance via/queue-status-liteshows the plan dropped from the active queue with its worktree pruned.
-
/workcan't find a plan inside the worktree. The.harness/active-planmarker binds it — confirm youcd'd into the worktree the spawn step printed, not back onmain. Run/workbare there; do not pass--name. -
/integrate-workerreports RED. The gate battery failed on the merged tree; integration hard-resetsmainto pre-merge HEAD and never pushes. Fix the failure in the worker's worktree, re-gate green there, then re-run/integrate-worker <name>. A merge conflict aborts instead of resetting — resolve in the worktree first. -
project-managershows a stale or orphaned plan. The PM only reads; it never prunes. Use thedoctor_worktrees.pyprobe / See every active plan to spot an orphaned worktree, then clean it up through the worker lifecycle — the PM will not do it for you. - Per-command failure modes (spawn refusals, red-gate rollback, conflict handling) live on each step's how-to; this page only sequences them.
- Coordinator roles — the roster: what each role wraps, read-only vs active, tool allowlists, and the forward-references.
- Run a named plan — the write-side recipe behind step 2: authoring + staging + activating a named plan.
- Spawn a worker in a worktree — step 3: hand an activated plan to a worker in its own checkout.
-
Integrate a worker — step 5: land a finished worker's branch on
main, gated on the integrated tree. - See every active plan — step 6: the read-only glance over the plan queue.
- Named plans — the command surface the whole loop rides.
🔧 How-to
- Install plugins
- Using code review
- Provision a repo's wiki
- Declare a project's Architecture
- Maintain a wiki — wiki-watcher
- Review a change — code review
- In-flight decision review — /doubt
- Author a design (pending)
- Run a named plan
- Spawn a worker in a worktree
- Run isolated tasks
- Configure main branch protection
- Integrate a worker
- See every active plan
- Run a coordinator-directed worker team (pending)
- Install the vault backend (pending)
- Sync a project board