One profile drives everything
/cohorte-init-pipeline detects your stack, interviews the gaps, and writes PIPELINE.md โ the single machine-readable profile every command, agent, and hook reads. The core stays generic; your facts live in one place.
Install the core, run /cohorte-init-pipeline, and a portable, stack-agnostic team of agents adapts to your project โ spec-driven, TDD-first, token-frugal.

cohorte doctor ยท the spec board ยท the gate refusing a hard-denied command chained behind a benign one.
Recorded from the real CLI by scripts/demo/record-cli.sh โ no output is hand-edited.
Your agent is already good at the first prompt of a feature. It gets worse at every one after โ because what it knows lives in a conversation, and a conversation degrades. Cohorte is the set of constraints that stop that: decisions frozen to disk (not remembered), a contract agreed before either surface is written, one owner per tree, a blocking hook on destructive commands, and a reviewer that never saw the conversation that produced the code.
โ Why not just ask your agent? โ the seven failures it removes, and the four cases where you shouldn't use it.
/cohorte-brainstorm โ a persona panel pressure-tests the idea
/cohorte-spec โ the frozen spec + contract โ the single source of truth
/cohorte-build <id> โ one implementer per surface, in parallel
/cohorte-review <id> โ one reviewer per touched surface, adversarially cross-checked
/cohorte-fix <id> โ the findings applied, surface by surface
/cohorte-ship <id> โ commit, push, PR, CI watch โ the one human-confirmed gateThree moments of human attention per feature: the brainstorm, the spec freeze, and the ship confirmation. Everything in between runs itself โ and every stage hands off through files on disk, so /clear between commands is always safe.
npm i -g cohorte # once, per machine
cohorte install --global # one shared core for every repo on this machine
# then, inside your project, in Claude Code:
/cohorte-init-pipelineSee Getting started for per-project installs, Windows, and what gets generated.