cobb
A single skill for ongoing product development. Route a request to the right phase, then execute that phase under the shared guardrails below.
The full flow is: prd → design (optional, UI/UX-heavy work) → implement → commit (commit mode, followed by automatic review) → selected fixes/suggestions and re-review when needed → commit (finalise mode) → compact (periodic). context is captured inline throughout, not as a separate step.
Default delivery order: implement -> commit -> review -> finalise. Review the stable atomic branch diff, not a moving pre-commit worktree.
Progressive Disclosure Contract
This file is navigation, not the full operating manual. On activation:
- If
AGENTS.md exists in the repo root and has not already been read in this context, read it first — it carries repo-wide instructions and points to SOUL.md (voice) and MEMORY.md (lessons). Read it once per session, not per phase.
- Load only the selected phase reference from Dispatch.
- For nested routers, load the router first, then only the selected child reference.
- Load templates, examples, and secondary references only when the selected reference explicitly requires them for the current task.
- For multi-phase requests, complete one phase at a time and load the next phase reference only when that phase begins.
Dispatch
Parse the first token of the args and route to the matching phase. Load only that phase's reference file, then execute it.
| First token |
Phase |
Load reference |
| (none) |
orchestrate |
(no file — see "Bare /cobb") |
prd |
PRD create/update/list |
references/prd.md |
design |
design sub-router (ui/ux/motion/imagery) |
references/design.md |
implement |
implement a PRD |
references/implement.md |
review |
branch review |
references/review.md |
commit |
atomic commit |
references/commit.md |
commit finalise / finalise |
finalise branch |
references/finalise.md |
commit hotfix / hotfix |
hotfix commit |
references/commit.md (hotfix mode) |
list / prd list |
list PRDs |
references/prd.md (list mode) |
context |
maintain context.md |
references/context-log.md |
compact |
compact context.md |
references/compact.md |
Routing rules
- If the first token matches a phase, load that reference and execute it; pass the rest of the args through as the phase's input.
- If no token matches but intent is clear from the request (e.g. "write a prd for X" →
prd, "review my branch" → review), infer the phase, state which phase you picked in one line, then proceed.
- If intent is ambiguous, fall back to the bare
/cobb behaviour below.
design is itself a router: /cobb design ui selects the ui mode inside references/design.md.
Bare /cobb (no subcommand)
Do not execute any phase. Instead:
- Read
tasks/ — list active PRDs (f-##, name, Status, Priority) and check git branch/commit state.
- Print the subcommand menu (the dispatch table above) so the user sees the options.
- Render the phase recommended from repository state as option
0 Recommended and the remaining phases as 1..N (do not repeat the recommended phase in 1..N). Do not require the user to type a command name.
- Recommend the single next phase based on state, for example:
- no
tasks/context.md or no PRDs → "start with /cobb prd"
- a
Status: ready PRD with no feature branch → "/cobb implement <prd>"
- feature branch ahead of base with uncommitted changes → "
/cobb commit (review runs after the final clean commit group)"
- all commits reviewed and clean on a feature branch → "
/cobb commit finalise (it trusts the completed review and merges)"
- all commits done but not yet reviewed → "
/cobb review, then /cobb commit finalise"
tasks/context.md long/noisy → "/cobb compact"
- Wait for the user's option number or explicit subcommand before acting.
Shared Guardrails (apply to every phase)
- Number every closed choice. Whenever a response ends by asking the user to choose, confirm, approve, continue, stop, or select a next step, provide numbered reply options. Accept the number alone. Use open-ended input only when honest answers cannot be bounded without losing essential information.
- Option
0 is the recommendation. In every numbered menu, render exactly one recommended choice as 0 Recommended: with a brief evidence-based reason (repository evidence, safety, best practice, critical reasoning), and render each alternative once as 1..N. Never repeat the 0 option inside 1..N. Accept default as an alias for 0. The recommendation may be to stop, investigate, split, or defer; do not mechanically recommend proceeding. Wherever a phase reference says "mark one Recommended", it means render that choice as option 0. Sole exception: commit finalise uses per-field codes such as 1A 2B, where 0/default selects the recommended complete bundle.
- Show questionnaire progress. Before a one-question-at-a-time interview, explore enough context to build the question queue and state the total. Label every prompt
Question X of Y. If a new answer creates or removes dependent questions, announce the revised total and why before continuing.
- Context capture is built-in. Update
tasks/context.md inline whenever durable decisions, risks, or gotchas emerge, except in read-only review, which reports proposed entries for the next implement/finalise commit. Context updates include a README freshness check for affected areas. See references/context-log.md for what/where to record.
- Base branches. The base-branch list is
main, master, dev, develop, trunk, plus names declared under Repo conventions in tasks/context.md. Every phase that resolves a comparison base or merge target uses this list.
- Handoff-friendly. Assume a junior dev (or another AI) picks this up later. Plain language, explicit edge cases, no hidden assumptions.
- Never claim untested success. Do not say tests/checks/builds passed unless you actually ran them; if you didn't run it, say so.
- Status block. End every standalone phase reply with:
- Files changed: created/updated files
- Key decisions: assumptions or choices made (if any)
- Next step: recommended next phase or action
- If the next step requires a user decision, follow it immediately with numbered options and one Recommended option.
Files cobb manages
tasks/f-##-<slug>.md — one PRD per feature, with Status (draft | ready), Priority (P0–P3), Type (feat | fix | chore), and a progress checklist.
tasks/context.md — durable project state, key decisions, milestones, gotchas (handoff record).
tasks/archive/ — completed PRDs moved here during commit finalise (same filename, no rename).
References
The Dispatch table above is the single routing source for phase files. Two shared references are loaded by phases rather than dispatch:
references/tdd.md — behavioural testing contract; loaded by prd/implement when applicable.
references/commit-review.md — post-review action tree; loaded only after a review result.
Design child references (references/design/*.md) are selected inside references/design.md, and templates (references/templates/*.md) load only when the active phase explicitly asks for them — each phase file names its own.
1---2name: cobb3description: Product-development workflow toolkit routing subcommands: prd (write/update/list implementation-ready specs), design (UI/UX/motion/imagery direction), implement (build a ready PRD in code), review (branch correctness/security/tests/scope), commit (atomic commits, incl. finalise and hotfix modes), context (maintain tasks/context.md), compact (summarise it). Triggers: cobb, write prd, plan feature, list prds, design ui, improve ux, add transitions, implement prd, review branch, commit changes, finalise branch, hotfix, update context, compact context.4---56# cobb78A single skill for ongoing product development. Route a request to the right phase, then execute that phase under the shared guardrails below.910The full flow is: `prd` → `design` (optional, UI/UX-heavy work) → `implement` → `commit` (`commit` mode, followed by automatic `review`) → selected fixes/suggestions and re-review when needed → `commit` (`finalise` mode) → `compact` (periodic). `context` is captured inline throughout, not as a separate step.1112Default delivery order: `implement -> commit -> review -> finalise`. Review the stable atomic branch diff, not a moving pre-commit worktree.1314---1516## Progressive Disclosure Contract1718This file is navigation, not the full operating manual. On activation:19201. If `AGENTS.md` exists in the repo root and has not already been read in this context, read it first — it carries repo-wide instructions and points to `SOUL.md` (voice) and `MEMORY.md` (lessons). Read it once per session, not per phase.212. Load only the selected phase reference from Dispatch.223. For nested routers, load the router first, then only the selected child reference.234. Load templates, examples, and secondary references only when the selected reference explicitly requires them for the current task.245. For multi-phase requests, complete one phase at a time and load the next phase reference only when that phase begins.2526---2728## Dispatch2930Parse the first token of the args and route to the matching phase. Load **only** that phase's reference file, then execute it.3132| First token | Phase | Load reference |33|--------------------------|------------------|---------------------------------|34| _(none)_ | orchestrate | (no file — see "Bare `/cobb`") |35| `prd` | PRD create/update/list | `references/prd.md` |36| `design` | design sub-router (ui/ux/motion/imagery) | `references/design.md` |37| `implement` | implement a PRD | `references/implement.md` |38| `review` | branch review | `references/review.md` |39| `commit` | atomic commit | `references/commit.md` |40| `commit finalise` / `finalise` | finalise branch | `references/finalise.md` |41| `commit hotfix` / `hotfix` | hotfix commit | `references/commit.md` (hotfix mode) |42| `list` / `prd list` | list PRDs | `references/prd.md` (list mode) |43| `context` | maintain context.md | `references/context-log.md` |44| `compact` | compact context.md | `references/compact.md` |4546### Routing rules47481. If the first token matches a phase, load that reference and execute it; pass the rest of the args through as the phase's input.492. If no token matches but intent is clear from the request (e.g. "write a prd for X" → `prd`, "review my branch" → `review`), infer the phase, state which phase you picked in one line, then proceed.503. If intent is ambiguous, fall back to the bare `/cobb` behaviour below.514. `design` is itself a router: `/cobb design ui` selects the `ui` mode inside `references/design.md`.5253### Bare `/cobb` (no subcommand)5455Do not execute any phase. Instead:56571. Read `tasks/` — list active PRDs (`f-##`, name, `Status`, `Priority`) and check git branch/commit state.582. Print the subcommand menu (the dispatch table above) so the user sees the options.593. Render the phase recommended from repository state as option `0` **Recommended** and the remaining phases as `1..N` (do not repeat the recommended phase in `1..N`). Do not require the user to type a command name.604. Recommend the single next phase based on state, for example:61 - no `tasks/context.md` or no PRDs → "start with `/cobb prd`"62 - a `Status: ready` PRD with no feature branch → "`/cobb implement <prd>`"63 - feature branch ahead of base with uncommitted changes → "`/cobb commit` (review runs after the final clean commit group)"64 - all commits reviewed and clean on a feature branch → "`/cobb commit finalise` (it trusts the completed review and merges)"65 - all commits done but not yet reviewed → "`/cobb review`, then `/cobb commit finalise`"66 - `tasks/context.md` long/noisy → "`/cobb compact`"675. Wait for the user's option number or explicit subcommand before acting.6869---7071## Shared Guardrails (apply to every phase)7273- **Number every closed choice.** Whenever a response ends by asking the user to choose, confirm, approve, continue, stop, or select a next step, provide numbered reply options. Accept the number alone. Use open-ended input only when honest answers cannot be bounded without losing essential information.74- **Option `0` is the recommendation.** In every numbered menu, render exactly one recommended choice as `0` **Recommended:** with a brief evidence-based reason (repository evidence, safety, best practice, critical reasoning), and render each alternative once as `1..N`. Never repeat the `0` option inside `1..N`. Accept `default` as an alias for `0`. The recommendation may be to stop, investigate, split, or defer; do not mechanically recommend proceeding. Wherever a phase reference says "mark one **Recommended**", it means render that choice as option `0`. Sole exception: commit finalise uses per-field codes such as `1A 2B`, where `0`/`default` selects the recommended complete bundle.75- **Show questionnaire progress.** Before a one-question-at-a-time interview, explore enough context to build the question queue and state the total. Label every prompt `Question X of Y`. If a new answer creates or removes dependent questions, announce the revised total and why before continuing.76- **Context capture is built-in.** Update `tasks/context.md` inline whenever durable decisions, risks, or gotchas emerge, except in read-only `review`, which reports proposed entries for the next implement/finalise commit. Context updates include a README freshness check for affected areas. See `references/context-log.md` for what/where to record.77- **Base branches.** The base-branch list is `main`, `master`, `dev`, `develop`, `trunk`, plus names declared under Repo conventions in `tasks/context.md`. Every phase that resolves a comparison base or merge target uses this list.78- **Handoff-friendly.** Assume a junior dev (or another AI) picks this up later. Plain language, explicit edge cases, no hidden assumptions.79- **Never claim untested success.** Do not say tests/checks/builds passed unless you actually ran them; if you didn't run it, say so.80- **Status block.** End every standalone phase reply with:81 - **Files changed**: created/updated files82 - **Key decisions**: assumptions or choices made (if any)83 - **Next step**: recommended next phase or action84 - If the next step requires a user decision, follow it immediately with numbered options and one **Recommended** option.8586---8788## Files cobb manages8990- `tasks/f-##-<slug>.md` — one PRD per feature, with `Status` (draft | ready), `Priority` (P0–P3), `Type` (feat | fix | chore), and a progress checklist.91- `tasks/context.md` — durable project state, key decisions, milestones, gotchas (handoff record).92- `tasks/archive/` — completed PRDs moved here during `commit` finalise (same filename, no rename).9394---9596## References9798The Dispatch table above is the single routing source for phase files. Two shared references are loaded by phases rather than dispatch:99100- `references/tdd.md` — behavioural testing contract; loaded by `prd`/`implement` when applicable.101- `references/commit-review.md` — post-review action tree; loaded only after a review result.102103Design child references (`references/design/*.md`) are selected inside `references/design.md`, and templates (`references/templates/*.md`) load only when the active phase explicitly asks for them — each phase file names its own.