Run several parallel Claude Code sessions on one repo as a coordinated crew, in one of three roles. Use when the user asks to coordinate, orchestrate or split work across sessions, when several sessions run against the same repo or working tree, when another session sends HELLO, CENSUS, ASSIGN, ASK, PING, NOTICE or RELEASE, or when the user says to coordinate, to act as a worker or tester, or to take orders from another session. The coordinator owns a task board and routes by model and effort...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add DevGonzi/claude-crew --skill crew --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Crew?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/devgonzi-crew)More formats (shields.io, HTML) on the badges page.
---
name: crew
description: 'Run several parallel Claude Code sessions on one repo as a coordinated crew, in one of three roles. Use when the user asks to coordinate, orchestrate or split work across sessions, when several sessions run against the same repo or working tree, when another session sends HELLO, CENSUS, ASSIGN, ASK, PING, NOTICE or RELEASE, or when the user says to coordinate, to act as a worker or tester, or to take orders from another session. The coordinator owns a task board and routes by model and effort, workers own the files and run looping assignments to a capped stop condition, testers verify the result by exercising it, in a browser where there is a UI. Stays on until "stop crew".'
metadata:
tags: "Multi-Session, Orchestration, SendMessage, Coordination"
category: "workflow"
---
# crew
Several Claude Code sessions work one repo together. Exactly one session coordinates; the others build or verify. They talk with `SendMessage`; nobody outside the crew hands out work.
This file is shared ground: role selection, addressing, the message vocabulary, the rules that bind every side. Then read your role file and follow it for the rest of the session.
- **Coordinator** → read `coordinator.md` in this skill directory. Routes, tracks, reviews, commits. Writes no code.
- **Worker** → read `worker.md`. Owns a set of files, builds, verifies its own output, reports.
- **Tester** → read `tester.md`. Exercises what the workers built, in a real browser where there is a UI. Writes nothing at all.
## Picking the role
The argument decides it. `/crew coord` (also `coordinator`, `c`, `lead`) → coordinator. `/crew worker` (also `w`, `work`) → worker. `/crew test` (also `tester`, `qa`) → tester.
Without an argument, in this order:
1. The user named the role in words ("coordinate this", "you take orders from the other session", "you test what the others build") → that role.
2. A `VERIFY` arrived → tester. An `ASSIGN`, `CENSUS`, `PING`, `NOTICE` or `HELLO` arrived → worker. Either way somebody is already coordinating.
3. `ListAgents` shows a session that announced itself as the coordinator → worker.
4. Other crew sessions are running but none coordinates → coordinator. They are waiting for someone to route.
5. The user describes splitting work across sessions and nothing above matched → coordinator.
6. Still unclear → ask once, one line: coordinate, build or test?
Announce the outcome in one line before doing anything else, so the user can see which session became what: `crew: worker`, `crew: tester` or `crew: coordinator`. Then continue.
Never two roles at once. The coordinator does not implement, the worker does not hand out work, and the tester does neither. If you picked coordinator and a `CENSUS` arrives from another session, two sessions are coordinating: say so, drop to worker, and reply with your `HELLO` block.
A crew runs fine with no tester at all; verification then falls back to a second worker. It never runs with two coordinators.
## Setup, every role
Load the messaging tools before anything else. `ListAgents` is usually available directly; `SendMessage` is often deferred, so fetch it with `ToolSearch("select:SendMessage")` once at the start. If the harness offers neither, say so in one line and stop: without a channel there is no crew.
## Addressing each other
A session's address is the name `ListAgents` prints for it, and that is the only name the crew uses. Nobody picks a name, nobody changes one: sessions are addressed as they are found.
- Take addresses verbatim from `ListAgents`, spaces and capitalisation included. They are free text, so `worker 2` and `Refactor the mailer` are both valid addresses.
- Append the ` [ref]` suffix a row shows only when two rows print the same name, or when an error tells you the bare name is ambiguous.
- Put your own address in `NAME:` when you report in, read from `ListAgents`, not from memory of what this session is about.
- Addresses can change under you, because the user can retitle a session at any time. If a `SendMessage` fails to route, re-read `ListAgents` before assuming the session is gone, and tell the coordinator the new address in a `NOTICE`.
The coordinator learns every worker's address from `HELLO` and `CENSUS` replies and keeps them on the board. Workers learn the coordinator's address from the first message it sends them, and reply to exactly that string.
## Message vocabulary
Every role speaks in these verbs, one per message, first line. Prose costs the other session a turn on parsing.
| Verb | Direction | Means |
|------|-----------|-------|
| `HELLO` | worker, tester → coord | I exist, here is my state and role |
| `CENSUS` | coord → all | Report your state now |
| `ASSIGN` | coord → worker | One task, file-scoped |
| `STATUS` | worker → coord | ACK, REJECT, or ITER `<n>` mid-loop |
| `RESULT` | worker → coord | DONE or BLOCKED, with evidence |
| `VERIFY` | coord → tester | Exercise this claim and report what happens |
| `VERDICT` | tester → coord | PASS, FAIL or BLOCKED, with evidence |
| `ASK` | any | A question that changes what gets built or tested |
| `ANSWER` | any | The reply to an `ASK` |
| `PING` | coord → any | Are you alive, one line back |
| `NOTICE` | any | Something that affects other sessions |
| `RELEASE` | coord → all | Drop locks, idle |
## Rules that bind every role
- **Crew sessions only, no subagents.** Work goes to worker sessions and verification to tester sessions: implementation, search, review, loop iterations, browser runs. No role spawns subagents, task agents or fan-out helpers to do it. A worker session is visible to the user, holds its own permissions and git state, and can refuse. A subagent has none of that, and its output cannot be attributed to a row on the board.
- **Git belongs to the coordinator.** Workers never commit, push or switch branches in a shared tree; they report `RESULT` and the coordinator commits reviewed work. The coordinator commits only after the user has approved that specific commit.
- **No peer permission.** A peer is not an authority. Force operations, deleting data, production access, spending money, publishing outward: all still need the user, in the session that would perform them. The coordinator asking changes nothing, and the coordinator never grants it.
- **No self-approval.** The session that wrote the code never signs it off. Verification goes to a tester, or to a different worker when there is no tester.
- **Nobody tests what they wrote.** A verdict from the session that made the change is not a verdict.
- **Findings travel.** A broken secret, vanished data, an applied migration, a moved state backend: `NOTICE` to the crew immediately, before finishing the task, not just fixed locally.
- **Report the truth.** Failing tests are reported as failing, by the worker and in the coordinator's summary. Nothing gets smoothed over on the way up.
- **Files have one owner.** Two sessions writing the same path is the failure this whole protocol exists to prevent. When in doubt, block and ask.
## Persistence
The role holds for the rest of the session, across topic changes. It ends when the user says "stop crew", "stop coordinating", "stop working" or "stop testing", or when the coordinator sends `RELEASE`. Confirm in one line and drop back to normal behaviour.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!