Skip to content
Development
Command

/ship

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.

From plugin
coco
63142 skills53 agents42 commands3 hooks
$ npx -y skills add coco-research/coco --agent claude-code

Command definition

ship.md
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."

/team ship, Idea to Shipped Product Pipeline

> 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.

Role Selection Bias

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.

Pipeline: 6 Stages + 7 Hard Gates + PR Open

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).

Stage 1: Research

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.

  • Autonomy: Full, no approval needed

Stage 2: Think

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.

  • Autonomy: Full, no approval needed

Stage 3: Plan

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

Read more
@coco-research
Ships withcoco

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.

631200 skills53 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
631
Star history of coco-research/coco on GitHub, a chart by star-history.com

Other commands on coco.

goal

goal

Command

Set, check, or complete the persistent project goal stored in .goal.md. Trigger as /coco-goal or /coco:goal.

@coco-research@coco-researchInstall Command
mermaid

mermaid

Command

Use when the user asks for a diagram or chart: flowchart, sequence, state, class, ER, or XY chart, as SVG, HTML, or terminal…

@coco-research@coco-researchInstall Command
read

read

Command

Show latest emails from a specific person. Usage: /email-read alice

@coco-research@coco-researchInstall Command
reply

reply

Command

Draft a reply to a specific email. Usage: /email-reply Project Phase 2 Contract Data

@coco-research@coco-researchInstall Command
save

save

Command

Save matching emails to a project folder for sync processing. Usage: /email-save alice to emails/

@coco-research@coco-researchInstall Command
search

search

Command

Search emails by subject keywords. Usage: /email-search github webhook

@coco-research@coco-researchInstall Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command