goal
CommandSet, check, or complete the persistent project goal stored in .goal.md. Trigger as /coco-goal or /coco:goal.
Use when the user wants an idea taken from concept to a shipped, reviewed product, or when the /team router picks ship. Runs six build stages, seven hard verification gates, then PR open, with one approval gate after the plan.
$ npx -y skills add coco-research/coco --agent claude-code
description: "Use when the user wants an idea taken from concept to a shipped, reviewed product, or when the /team router picks ship. Runs six build stages, seven hard verification gates, then PR open, with one approval gate after the plan."
> Called by team.md router when action is `ship`. > The ultimate automation: takes a natural language idea and delivers a built, reviewed, verified product. > Approval model: one human approval gate after the plan, then the build and verification stages run without further prompts.
All roles are selected dynamically per stage. The ship pipeline runs 6 build stages, then 7 hard verification gates (Stages 7-13), then PR-open (Stage 14), each using the appropriate /team action's role selection.
Every run begins with `python3 ~/.claude/skills/team-gate/scripts/gate_state.py start . ship` (or `... ship no-arch` when `--no-arch` was passed), whose run id is written to `.team-ship/RUN`. Every gate invocation below takes `--repo-root .`; `--resume` reads `gate_state.py status` (see Failure Handling).
1. Map the repository before reading any code, whatever else this stage does.
python3 ~/.claude/skills/team-gate/scripts/brownfield_map.py --for "<the idea>" --repo-root .
exit 0: continue; read `.team-ship/BROWNFIELD-MAP.md` before doing anything else. exit 1: not used; a map is not a pass or fail judgement. exit 2: UNVERIFIED; quote the gate file's summary (gates/handoff-1-map.json).
2. Record the architecture baseline for the conformance gate. **This step never spawns agents and never reconciles the index.**
python3 ~/.claude/skills/team-gate/scripts/arch_gate.py baseline --repo-root .
exit 0: CURRENT; continue and quote the gate file's summary (gates/1-arch-baseline.json). exit 2: STALE, NOT_APPLICABLE, or DISABLED; continue anyway and quote the status. This result is informational only here; Stage 13's `gates/13-arch.json` is where it is enforced. Stage 1 deliberately does not run `/team arch build` or `/team arch drift` to refresh a stale index; rebuilding it is a separate, explicit act the human runs themself.
3. Confirm Stage 1's own inputs (there are none) so the handoff into it is recorded.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-inputs 1 --repo-root .
exit 0: continue; gates/handoff-1.json now lets Stage 2 open. exit 1: not reachable for this stage, since Stage 1 declares no inputs to fail. exit 2: UNVERIFIED; quote the gate file's summary.
4. Research the idea (competitive landscape, technical feasibility, existing tools) and write `.team-ship/RESEARCH-BRIEF.md`, 200 lines max.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-output 1 .team-ship/RESEARCH-BRIEF.md --repo-root .
exit 0: continue; the artifact is recorded (no gate file of its own for this check). exit 1: BLOCK; quote the stderr reason and rewrite the brief. exit 2: UNVERIFIED; quote the stderr reason.
1. Confirm Stage 2 may open.
python3 ~/.claude/skills/team-gate/scripts/ship_gate.py stage 2 --repo-root .
exit 0: allowed; continue. exit 1: BLOCK; quote the `reason` field and fix the named gate before writing anything. exit 2: UNVERIFIED; quote the `reason` field.
2. Confirm Stage 2's inputs (the research brief and the brownfield map) are ready.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-inputs 2 --repo-root .
exit 0: continue; gates/handoff-2.json now lets Stage 3 open. exit 1: BLOCK; quote the stderr reason. exit 2: UNVERIFIED; quote the stderr reason.
3. Evaluate architecture options and write `.team-ship/ARCHITECTURE-OPTIONS.md`, with a `## chosen` heading naming the selected option and its rationale. Record the chosen option in the brain decisions store via `/brain:update`; no script checks that write.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-output 2 .team-ship/ARCHITECTURE-OPTIONS.md --repo-root .
exit 0: continue. exit 1: BLOCK; quote the stderr reason (commonly a missing `chosen` heading) and rewrite. exit 2: UNVERIFIED; quote the stderr reason.
1. Confirm Stage 3 may open.
python3 ~/.claude/skills/team-gate/scripts/ship_gate.py stage 3 --repo-root .
exit 0: allowed; continue. exit 1: BLOCK; quote the `reason` field. exit 2: UNVERIFIED; quote the `reason` field.
2. Confirm Stage 3's input (the architecture options) is ready.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-inputs 3 --repo-root .
exit 0: continue; gates/handoff-3.json now lets Stage 4 open. exit 1: BLOCK; quote the stderr reason. exit 2: UNVERIFIED; quote the stderr reason.
3. Write the detailed implementation plan to `.team-ship/PLAN.md` (phases, tasks, dependencies, and a `requirements` list, one item per requirement, since `claim_evidence.py matrix` reads that list at Stage 12). Name each requirement's tests in the form prove_red records: `tests/test_x.py::TestClass.test_method` for a unittest method (a dot between class and method) or `tests/test_x.py::test_fn` for a plain function; a mismatched name grades the requirement UNVERIFIED at Stage 12, and the plan cannot be edited afterwards without breaking its artifact receipt.
python3 ~/.claude/skills/team-gate/scripts/check_artifacts.py stage-output 3 .team-ship/PLAN.md --repo-root .
exit 0: continue. exit 1: BLOCK; quote the stderr reason and rewrite. exit 2: UNVERIFIED; quote the stderr reason.
4. Also declare the intended architecture to `.team-ship/ARCH-PLAN.json`, the forward counterpart to `.arch/index.json`: where the index records what exists, this plan records what this ship intends to build and where it intends to put it. Skip this s
495 personas across 13 departments, 229 skills[^installed] and 388 commands in the full catalog (coco 1.9.0, 2026-10-21). Agent skills, slash commands and subagents for Claude Code, Cursor, Codex and other AI coding agents.
Set, check, or complete the persistent project goal stored in .goal.md. Trigger as /coco-goal or /coco:goal.
Use when the user asks for a diagram or chart: flowchart, sequence, state, class, ER, or XY chart, as SVG, HTML, or terminal…
Show latest emails from a specific person. Usage: /email-read alice
Draft a reply to a specific email. Usage: /email-reply Project Phase 2 Contract Data
Save matching emails to a project folder for sync processing. Usage: /email-save alice to emails/
Search emails by subject keywords. Usage: /email-search github webhook
Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.