cohorte 3.0.0-dev.6 → 3.0.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -392
- package/assets/manifest.json +14 -4
- package/assets/prompts/agents/brainstormer.md +3 -0
- package/assets/prompts/agents/spec-author.md +3 -0
- package/assets/schemas/commands.schema.json +7 -0
- package/dist/bundle-manifest.json +72 -50
- package/dist/chunks/align-ds-r_X_1aQ_.mjs +93 -0
- package/dist/chunks/align-ds-r_X_1aQ_.mjs.map +1 -0
- package/dist/chunks/audit-B4ZWQ_DI.mjs +179 -0
- package/dist/chunks/audit-B4ZWQ_DI.mjs.map +1 -0
- package/dist/chunks/brainstorm-SJwOIEif.mjs +123 -0
- package/dist/chunks/brainstorm-SJwOIEif.mjs.map +1 -0
- package/dist/chunks/build-C_-mbZfD.mjs +19 -0
- package/dist/chunks/build-C_-mbZfD.mjs.map +1 -0
- package/dist/chunks/{catalogue-DzsslCSN.mjs → catalogue-IaCJdfB8.mjs} +4 -4
- package/dist/chunks/{catalogue-DzsslCSN.mjs.map → catalogue-IaCJdfB8.mjs.map} +1 -1
- package/dist/chunks/{compose-ckM7eAJ_.mjs → compose-DRKjQcn0.mjs} +42 -23
- package/dist/chunks/compose-DRKjQcn0.mjs.map +1 -0
- package/dist/chunks/{config-DcGPL3i7.mjs → config-Cqu5XQoP.mjs} +2 -2
- package/dist/chunks/{config-DcGPL3i7.mjs.map → config-Cqu5XQoP.mjs.map} +1 -1
- package/dist/chunks/{contract-DiWla5G9.mjs → contract-DjssDPpS.mjs} +45 -25
- package/dist/chunks/contract-DjssDPpS.mjs.map +1 -0
- package/dist/chunks/{diff-D_0hBwHl.mjs → diff-Qw0II0sj.mjs} +2 -2
- package/dist/chunks/{diff-D_0hBwHl.mjs.map → diff-Qw0II0sj.mjs.map} +1 -1
- package/dist/chunks/{discover-BBiluyl4.mjs → discover-BZPolSZG.mjs} +2 -2
- package/dist/chunks/{discover-BBiluyl4.mjs.map → discover-BZPolSZG.mjs.map} +1 -1
- package/dist/chunks/{doctor-BAcemCDr.mjs → doctor-DcDFPvQM.mjs} +6 -6
- package/dist/chunks/{doctor-BAcemCDr.mjs.map → doctor-DcDFPvQM.mjs.map} +1 -1
- package/dist/chunks/fix-C9roGiQz.mjs +82 -0
- package/dist/chunks/fix-C9roGiQz.mjs.map +1 -0
- package/dist/chunks/fleet-yWHQY2ya.mjs +297 -0
- package/dist/chunks/fleet-yWHQY2ya.mjs.map +1 -0
- package/dist/chunks/{init-DfOKw-rD.mjs → init--FxxkrcT.mjs} +2 -2
- package/dist/chunks/{init-DfOKw-rD.mjs.map → init--FxxkrcT.mjs.map} +1 -1
- package/dist/chunks/intake-C1pesxCJ.mjs +12 -0
- package/dist/chunks/intake-C1pesxCJ.mjs.map +1 -0
- package/dist/chunks/loop-BWsUpyus.mjs +212 -0
- package/dist/chunks/loop-BWsUpyus.mjs.map +1 -0
- package/dist/chunks/{migrate-D3-4beNR.mjs → migrate-DuYCAbE3.mjs} +2 -2
- package/dist/chunks/{migrate-D3-4beNR.mjs.map → migrate-DuYCAbE3.mjs.map} +1 -1
- package/dist/chunks/{obsidian-D1jf1sTR.mjs → obsidian-BHLkXx_H.mjs} +50 -6
- package/dist/chunks/obsidian-BHLkXx_H.mjs.map +1 -0
- package/dist/chunks/patch-sAgVqjpx.mjs +50 -0
- package/dist/chunks/patch-sAgVqjpx.mjs.map +1 -0
- package/dist/chunks/{policy-Y65MYKzn.mjs → policy-Du7WVBFX.mjs} +4 -4
- package/dist/chunks/{policy-Y65MYKzn.mjs.map → policy-Du7WVBFX.mjs.map} +1 -1
- package/dist/chunks/{reconcile-B6mGZWtp.mjs → reconcile-BHn66X3C.mjs} +3 -3
- package/dist/chunks/{reconcile-B6mGZWtp.mjs.map → reconcile-BHn66X3C.mjs.map} +1 -1
- package/dist/chunks/refactor-DV3RfGjk.mjs +153 -0
- package/dist/chunks/refactor-DV3RfGjk.mjs.map +1 -0
- package/dist/chunks/retro-Dr-2RTNN.mjs +78 -0
- package/dist/chunks/retro-Dr-2RTNN.mjs.map +1 -0
- package/dist/chunks/review-ZsBqp3vZ.mjs +35 -0
- package/dist/chunks/review-ZsBqp3vZ.mjs.map +1 -0
- package/dist/chunks/{run-BInPXOcm.mjs → run-BGabwbDL.mjs} +32 -5
- package/dist/chunks/run-BGabwbDL.mjs.map +1 -0
- package/dist/chunks/{schema-hSyIURjN.mjs → schema-Bq9qtgsd.mjs} +2 -2
- package/dist/chunks/{schema-hSyIURjN.mjs.map → schema-Bq9qtgsd.mjs.map} +1 -1
- package/dist/chunks/ship-BizfUe62.mjs +140 -0
- package/dist/chunks/ship-BizfUe62.mjs.map +1 -0
- package/dist/chunks/spec-C2h3U64g.mjs +65 -0
- package/dist/chunks/spec-C2h3U64g.mjs.map +1 -0
- package/dist/chunks/spec-path-tptqR7W8.mjs +10 -0
- package/dist/chunks/spec-path-tptqR7W8.mjs.map +1 -0
- package/dist/chunks/{src-C7hs8Bjw.mjs → src-Bfr1yzsn.mjs} +3 -3
- package/dist/chunks/{src-C7hs8Bjw.mjs.map → src-Bfr1yzsn.mjs.map} +1 -1
- package/dist/chunks/{src-Daa5lIcP.mjs → src-CPW2_Ons.mjs} +101 -17
- package/dist/chunks/src-CPW2_Ons.mjs.map +1 -0
- package/dist/chunks/{src-DMrQ5m6I.mjs → src-DNsLSxgm.mjs} +2 -2
- package/dist/chunks/{src-DMrQ5m6I.mjs.map → src-DNsLSxgm.mjs.map} +1 -1
- package/dist/chunks/{src-BnlNkd3S.mjs → src-DbS9gkJy.mjs} +2 -2
- package/dist/chunks/{src-BnlNkd3S.mjs.map → src-DbS9gkJy.mjs.map} +1 -1
- package/dist/chunks/{src-s7YRvk0t.mjs → src-yi5whv3n.mjs} +4 -2
- package/dist/chunks/src-yi5whv3n.mjs.map +1 -0
- package/dist/chunks/update-pipeline-Du-Gu1Pl.mjs +56 -0
- package/dist/chunks/update-pipeline-Du-Gu1Pl.mjs.map +1 -0
- package/dist/cli.mjs +29 -19
- package/dist/cli.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/brainstorm-kBUiZLce.mjs +0 -7
- package/dist/chunks/brainstorm-kBUiZLce.mjs.map +0 -1
- package/dist/chunks/compose-ckM7eAJ_.mjs.map +0 -1
- package/dist/chunks/contract-DiWla5G9.mjs.map +0 -1
- package/dist/chunks/fix-D4Tj8RVA.mjs +0 -18
- package/dist/chunks/fix-D4Tj8RVA.mjs.map +0 -1
- package/dist/chunks/obsidian-D1jf1sTR.mjs.map +0 -1
- package/dist/chunks/review-BDdjb6kB.mjs +0 -17
- package/dist/chunks/review-BDdjb6kB.mjs.map +0 -1
- package/dist/chunks/run-BInPXOcm.mjs.map +0 -1
- package/dist/chunks/ship-DTuLGoaJ.mjs +0 -19
- package/dist/chunks/ship-DTuLGoaJ.mjs.map +0 -1
- package/dist/chunks/spec-MVP9y8dN.mjs +0 -20
- package/dist/chunks/spec-MVP9y8dN.mjs.map +0 -1
- package/dist/chunks/src-Daa5lIcP.mjs.map +0 -1
- package/dist/chunks/src-s7YRvk0t.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,437 +1,104 @@
|
|
|
1
|
-
|
|
1
|
+
# Cohorte
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cohorte V3 est un orchestrateur durable de pipelines multi-agents, construit autour de Pi et d'un état SQLite. Il transforme une spécification validée en run observable, reprend les runs interrompus et protège chaque effet par des contrats typés, une politique de sécurité et un journal idempotent.
|
|
4
4
|
|
|
5
|
-
[
|
|
6
|
-
[](https://www.npmjs.com/package/cohorte)
|
|
7
|
-
[](https://github.com/TheBidouilleAgency/cohorte/actions/workflows/publish.yml)
|
|
8
|
-
[](https://nodejs.org)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
[](https://thebidouilleagency.github.io/cohorte/)
|
|
5
|
+
[Documentation complète](https://thebidouilleagency.github.io/cohorte/) · [Spécification V3](docs/v3/SPEC.md) · [Design](docs/v3/DESIGN.md) · [Référence CLI](docs/v3/CLI.md)
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
## Installation
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
> **V3 migration status:** the V3 runtime-independent pipeline is under active migration. V2 sources are retained
|
|
17
|
-
> under [`legacy/v2`](legacy/v2); V3 builds are immutable, snapshot-pinned and can be exercised offline with the
|
|
18
|
-
> fake runtime. See [`docs/v3`](docs/v3/PLAN.md) for the implementation plan and release gates.
|
|
19
|
-
|
|
20
|
-
For maintainers, see the [maintenance and release guide](docs/guide/maintainers.md) for the architecture, test
|
|
21
|
-
matrix, troubleshooting, PR workflow and npm/GitHub release procedure.
|
|
22
|
-
|
|
23
|
-
A **portable, stack-agnostic multi-agent pipeline** for your coding agent — Claude Code, Codex CLI,
|
|
24
|
-
Cursor, Gemini CLI or OpenCode. Install it once globally, then one command per project
|
|
25
|
-
(`/cohorte-init-pipeline`) adapts it to that project's stack.
|
|
26
|
-
|
|
27
|
-
- **The dev pipeline** — a human **lead** drives feature work through gated commands, dispatching
|
|
28
|
-
**stateless agents** that only communicate through a frozen contract:
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
/cohorte-brainstorm → /cohorte-spec → (design) → /cohorte-build <id> → /cohorte-review → (/cohorte-fix) → /cohorte-ship
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
<div align="center">
|
|
35
|
-
<img src="https://raw.githubusercontent.com/TheBidouilleAgency/cohorte/main/assets/demo-cli.gif" alt="cohorte doctor reporting a green pipeline, the spec board, and the gate denying a chained destructive command" width="760">
|
|
36
|
-
<br>
|
|
37
|
-
<sub><code>cohorte doctor</code> · the spec board · the gate refusing a hard-denied command chained behind a benign one.<br>
|
|
38
|
-
Recorded from the real CLI by <code>scripts/demo/record-cli.sh</code> — no output is hand-edited.</sub>
|
|
39
|
-
</div>
|
|
40
|
-
|
|
41
|
-
## Why a pipeline at all
|
|
42
|
-
|
|
43
|
-
Your coding agent is already good at the first prompt of a feature. It gets worse at every one
|
|
44
|
-
after — because what it knows lives in a conversation, and a conversation gets summarised,
|
|
45
|
-
truncated, and re-sent at input price on every turn. Cohorte is the set of constraints that stop
|
|
46
|
-
that degradation. Each one is a failure you have already had:
|
|
47
|
-
|
|
48
|
-
| The failure | The constraint |
|
|
49
|
-
| --- | --- |
|
|
50
|
-
| *"It forgot what we decided."* | The spec is **frozen to disk** and re-read by every stateless agent. Nothing is remembered, so nothing is forgotten — and `/clear` between stages is always safe. |
|
|
51
|
-
| *"The API and the UI don't fit."* | The **contract is authored before any implementer is dispatched**. Surfaces import it read-only and never talk to each other — which is what makes building them in parallel safe. |
|
|
52
|
-
| *"It edited a file I didn't want it to."* | **One owner per tree**, enforced in the rendered agent's frontmatter — not requested politely in a prompt. |
|
|
53
|
-
| *"It ran something it shouldn't have."* | `gate.py` is a **real blocking hook**, branch-aware, hard-denying destructive commands from every agent — subagents included. |
|
|
54
|
-
| *"The review said it was fine."* | Review is a **separate read-only agent** that sees the spec and the diff, never the conversation that produced them. A dead reviewer's zero findings can't read as ship. |
|
|
55
|
-
| *"Four agents just told me it doesn't compile."* | A **deterministic preflight** runs typecheck/lint/tests first. Red ⇒ **zero agents spawned**. |
|
|
56
|
-
| *"We fixed this same thing last week."* | `/cohorte-retro` turns repeated findings into ratified conventions **baked into the implementers**, so the next build never produces them. |
|
|
57
|
-
|
|
58
|
-
None of this is intelligence added to your agent — it's the opposite. It moves the decisions an
|
|
59
|
-
agent makes badly under context pressure into files, hooks and ownership boundaries, where they're
|
|
60
|
-
cheap and don't degrade with conversation length. Which is why it's markdown, shell and one Python
|
|
61
|
-
hook: **your app code never imports anything from Cohorte.**
|
|
62
|
-
|
|
63
|
-
[**The long version — including the four cases where you shouldn't use it →**](https://thebidouilleagency.github.io/cohorte/guide/why-cohorte)
|
|
64
|
-
|
|
65
|
-
## How it works — three layers
|
|
66
|
-
|
|
67
|
-
| Layer | What it holds | Lives in | Scope |
|
|
68
|
-
| --- | --- | --- | --- |
|
|
69
|
-
| **Generic core** | the workflow doctrine: commands, fixed agents, templates, hooks — zero project facts | `~/.claude` (global) — or vendored in a repo's `.claude/` (bundled) | identical everywhere, installed once |
|
|
70
|
-
| **Project profile** | stack, surfaces, commands, conventions, gates | `PIPELINE.md` + rendered surface agents + `gate-config.json`, **committed in each repo** | generated per project by `/cohorte-init-pipeline` |
|
|
71
|
-
| **User config** | kanban board links + shared Obsidian vault path | `~/.claude/cohorte.config.yaml` | personal, project-independent |
|
|
72
|
-
|
|
73
|
-
The core never hardcodes stack facts. Two mechanisms keep it generic:
|
|
74
|
-
|
|
75
|
-
1. **Runtime indirection** — commands/agents read project facts from `PIPELINE.md` (dev pipeline) or
|
|
76
|
-
`~/.claude/cohorte.config.yaml` (kanban board links + shared vault) at run time — an agent's
|
|
77
|
-
_first action_ is to read its config.
|
|
78
|
-
2. **Render-at-init** — things that must be in agent frontmatter (name, `tools:`, surface ownership)
|
|
79
|
-
are rendered per **surface** by `/cohorte-init-pipeline` from `implementer.template.md`.
|
|
80
|
-
|
|
81
|
-
## Which coding agent — [full matrix →](https://thebidouilleagency.github.io/cohorte/reference/runtimes)
|
|
82
|
-
|
|
83
|
-
The doctrine is one set of source prompts. The installer renders them into whatever your agent
|
|
84
|
-
actually reads, and branches the instructions on what it can actually do:
|
|
9
|
+
Prérequis : Node `24.16.0` minimum supporté et pnpm `12.4.2` pour contribuer au dépôt. Pour utiliser la CLI publiée :
|
|
85
10
|
|
|
86
11
|
```sh
|
|
87
|
-
|
|
88
|
-
cohorte
|
|
89
|
-
cohorte install # detects what you have and asks
|
|
12
|
+
npm install -g cohorte
|
|
13
|
+
cohorte --version
|
|
90
14
|
```
|
|
91
15
|
|
|
92
|
-
|
|
93
|
-
| --- | --- | --- | --- | --- |
|
|
94
|
-
| **Claude Code** | `.claude/commands/*.md` | ✅ `.claude/agents` | ✅ blocking hook, deny + **ask** | ✅ |
|
|
95
|
-
| **Codex CLI** | `.agents/skills/*/SKILL.md` | ✅ `.codex/agents` (TOML) | ✅ blocking hook, deny only | — |
|
|
96
|
-
| **Cursor** | `.cursor/commands/*.md` | ✅ `.cursor/agents` | ✅ blocking hook, deny + **ask** | — |
|
|
97
|
-
| **Gemini CLI** | `.gemini/commands/*.toml` | ✅ `.gemini/agents` | ✅ blocking hook, deny only | — |
|
|
98
|
-
| **OpenCode** | `.opencode/commands/*.md` | ✅ `.opencode/agents` | advisory `--check` | — |
|
|
99
|
-
|
|
100
|
-
The same `gate.py` is registered as a real blocking hook on four of the five — it speaks each
|
|
101
|
-
runtime's envelope (`PreToolUse`, `beforeShellExecution`, `BeforeTool`). Codex and Gemini have **no
|
|
102
|
-
confirmation tier**, so a pattern that would be queried elsewhere is **denied** there rather than
|
|
103
|
-
falling through; the rendered prompts say so. OpenCode extends via plugins rather than hooks, so
|
|
104
|
-
there the commands call `gate.py --check` themselves — same config and verdicts, but advisory.
|
|
105
|
-
|
|
106
|
-
**Real subagents are a requirement, not a capability to degrade around** — the pipeline's isolation
|
|
107
|
-
guarantee is that boundary, so a runtime without them is refused at install rather than rendered
|
|
108
|
-
into a pipeline whose central promise is absent. All five have them.
|
|
109
|
-
`/cohorte-doctor` reports what the runtime you are in can actually enforce.
|
|
110
|
-
|
|
111
|
-
On Codex the commands ship as **skills** (`$cohorte-build`) rather than custom prompts: prompts are
|
|
112
|
-
deprecated and user-scoped, so a teammate cloning the repo would get the profile but none of the
|
|
113
|
-
commands — `.agents/skills/` is committed with it instead.
|
|
114
|
-
|
|
115
|
-
One thing does not travel: model pins. The profile names Anthropic aliases, meaningless elsewhere,
|
|
116
|
-
so agents inherit the runtime's own model. Claude Code remains the reference implementation and its
|
|
117
|
-
install is unchanged.
|
|
118
|
-
|
|
119
|
-
## Prerequisites
|
|
120
|
-
|
|
121
|
-
Only one hard requirement — the rest is optional and independent:
|
|
122
|
-
|
|
123
|
-
- **Node ≥ 18 + npm** — _required_, for the `cohorte` CLI that lays down the core. Nothing else needs it.
|
|
124
|
-
- **[`uv`](https://docs.astral.sh/uv/) + the Serena CLI** — _optional_, the default code-retrieval
|
|
125
|
-
provider. Install it separately (`uv tool install -p 3.13 serena-agent && uv tool update-shell`); the
|
|
126
|
-
cohorte install neither needs nor touches it, so the order between the two is irrelevant. Without Serena
|
|
127
|
-
the pipeline still runs — agents just fall back to Grep/Read. Having it installed **before**
|
|
128
|
-
`/cohorte-init-pipeline` lets init wire it in one pass (otherwise `/cohorte-update-pipeline` wires it later).
|
|
129
|
-
- **On a new machine cloning a repo that's already pipeline-ised:** the Serena registration is committed
|
|
130
|
-
in the repo's `.mcp.json` (project scope, portable) — you don't re-wire. Just install the Serena CLI,
|
|
131
|
-
restart the session, and run `/cohorte-doctor` to confirm it connects.
|
|
132
|
-
|
|
133
|
-
## Install
|
|
134
|
-
|
|
135
|
-
The pipeline ships as an npm package (`cohorte`), so releases are semver-tagged — no clone
|
|
136
|
-
needed, works on macOS/Linux/Windows. **Install it once, globally**; every command below is
|
|
137
|
-
written as `cohorte …`, and that single form is what the rest of this README, the docs, and the
|
|
138
|
-
[Francois extension](https://github.com/TheBidouilleAgency/francois-plugin-cohorte) all assume:
|
|
16
|
+
Dans un projet :
|
|
139
17
|
|
|
140
18
|
```sh
|
|
141
|
-
|
|
19
|
+
cohorte init
|
|
20
|
+
cohorte doctor
|
|
21
|
+
cohorte discover --json
|
|
22
|
+
cohorte config validate
|
|
142
23
|
```
|
|
143
24
|
|
|
144
|
-
`
|
|
145
|
-
you don't own. It is the escape hatch, not the path — see
|
|
146
|
-
[why one form](https://thebidouilleagency.github.io/cohorte/reference/installers).
|
|
147
|
-
|
|
148
|
-
**Global (recommended)** — install the generic core ONCE into `~/.claude`; it serves every repo on
|
|
149
|
-
your machine. Nothing is copied per project; the gate hook is registered once and reads each repo's
|
|
150
|
-
own `gate-config.json`:
|
|
151
|
-
|
|
152
|
-
```sh
|
|
153
|
-
cohorte install --global
|
|
154
|
-
```
|
|
25
|
+
`cohorte init` crée `.cohorte/`. Les fichiers de configuration générés peuvent être réconciliés avec `cohorte reconcile --plan`, puis `cohorte reconcile --apply`. L'état d'exécution reste local et n'a pas vocation à être versionné.
|
|
155
26
|
|
|
156
|
-
|
|
157
|
-
commit: `PIPELINE.md`, the rendered surface agents, `gate-config.json`, `settings.json`, `specs/`.
|
|
158
|
-
**That's what makes team work possible in global mode**: everything project-specific travels with the
|
|
159
|
-
repo; each teammate just runs the same global one-liner once, guided by the committed
|
|
160
|
-
`.claude/pipeline.json` pointer (core version + install command) that `/cohorte-init-pipeline` writes.
|
|
27
|
+
## Workflow V3
|
|
161
28
|
|
|
162
|
-
|
|
163
|
-
<summary><strong>Alternative: per-project (bundled)</strong> — vendor the core into the repo itself.</summary>
|
|
29
|
+
Le workflow est piloté par la CLI ; il n'exige pas un runtime V2 ni des slash commands :
|
|
164
30
|
|
|
165
31
|
```sh
|
|
166
|
-
|
|
167
|
-
cohorte
|
|
32
|
+
cohorte brainstorm "Ajouter une fonctionnalité"
|
|
33
|
+
cohorte spec validate <feature-id>
|
|
34
|
+
cohorte spec freeze <feature-id>
|
|
35
|
+
cohorte run <feature-id> --detach --json
|
|
36
|
+
cohorte status <run-id> --json
|
|
37
|
+
cohorte tail <run-id>
|
|
38
|
+
cohorte review <run-id>
|
|
39
|
+
cohorte fix <run-id>
|
|
40
|
+
cohorte ship <run-id>
|
|
168
41
|
```
|
|
169
42
|
|
|
170
|
-
|
|
171
|
-
**zero-setup onboarding** (teammates get the core with `git clone`, no install step at all) and a
|
|
172
|
-
core version **pinned per repo** (no drift between projects or teammates). Cost: the core is
|
|
173
|
-
duplicated in every repo and each repo updates separately.
|
|
174
|
-
|
|
175
|
-
</details>
|
|
176
|
-
|
|
177
|
-
<details>
|
|
178
|
-
<summary><strong>No Node/npm?</strong> The original script installers still work.</summary>
|
|
43
|
+
Pour un workflow complet borné :
|
|
179
44
|
|
|
180
45
|
```sh
|
|
181
|
-
|
|
182
|
-
sh install.sh --global sh install.sh
|
|
183
|
-
# or piped:
|
|
184
|
-
curl -fsSL https://raw.githubusercontent.com/TheBidouilleAgency/cohorte/main/install.sh | sh -s -- --global
|
|
46
|
+
cohorte loop <feature-id>
|
|
185
47
|
```
|
|
186
48
|
|
|
187
|
-
|
|
188
|
-
# Windows (PowerShell 5.1+)
|
|
189
|
-
.\install.ps1 -Global # or without -Global for per-project
|
|
190
|
-
# or: & ([scriptblock]::Create((irm https://raw.githubusercontent.com/TheBidouilleAgency/cohorte/main/install.ps1))) -Global
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Script installs from a git checkout stamp the version as `<semver> (<sha>)`; the npm CLI stamps the
|
|
194
|
-
published semver. Both land in `.claude/pipeline/VERSION` and the `pipeline.json` pointer.
|
|
195
|
-
|
|
196
|
-
</details>
|
|
49
|
+
Les commandes `build`, `audit`, `refactor`, `fleet`, `retro`, `align-ds`, `intake` et `patch` couvrent les variantes de développement. Les commandes `pause`, `resume`, `cancel`, `retry`, `approve`, `deny`, `inspect`, `diff`, `logs`, `shutdown` et `gc` administrent les runs et leur état durable.
|
|
197
50
|
|
|
198
|
-
|
|
199
|
-
> agents are scanned at session start — in an already-open session the new `/cohorte-init-pipeline`,
|
|
200
|
-
> `/cohorte-build`, etc. won't appear until you reload. This is the #1 "the install didn't work" trap.
|
|
201
|
-
|
|
202
|
-
Then, in Claude Code (from any repo, once the core is installed either way):
|
|
203
|
-
|
|
204
|
-
```
|
|
205
|
-
/cohorte-init-pipeline
|
|
206
|
-
```
|
|
51
|
+
## Obsidian
|
|
207
52
|
|
|
208
|
-
|
|
209
|
-
design system), **interviews** you for the gaps, and **generates**:
|
|
210
|
-
|
|
211
|
-
- `PIPELINE.md` — the project profile (a machine-readable `pipeline-profile` YAML block + prose conventions)
|
|
212
|
-
- one implementer agent per **surface** (e.g. `backend.md`, `frontend.md`) with strict tree ownership
|
|
213
|
-
and a per-surface `model:` tier (Haiku for mechanical surfaces, bigger models where design decisions live)
|
|
214
|
-
- `.claude/gate-config.json` + `.claude/settings.json` — the destructive-command gate, plus an
|
|
215
|
-
`allow` list of the project's read-only commands so agents don't stall on permission prompts
|
|
216
|
-
- a **code-retrieval provider** wired as a committed project-scope MCP server —
|
|
217
|
-
[Serena](https://github.com/oraios/serena) by default (live LSP symbol navigation: agents query
|
|
218
|
-
symbols instead of grep-and-reading whole files; `graphify` or `none` also available via the
|
|
219
|
-
profile's `retrieval.provider`)
|
|
220
|
-
- `scripts/new-feature.sh` + `remove-feature.sh` — parallel worktree isolation (if you enable it)
|
|
221
|
-
- `specs/_template.md` (and, on first decision, `specs/_decisions.md` — the project's one-line-per-decision
|
|
222
|
-
journal, read by `/cohorte-brainstorm`, `/cohorte-spec` and `/cohorte-audit` so features stop re-litigating settled ground)
|
|
223
|
-
|
|
224
|
-
Sanity-check `PIPELINE.md`, commit it, and run `/cohorte-brainstorm`.
|
|
225
|
-
|
|
226
|
-
## Update
|
|
53
|
+
Le tableau Kanban Obsidian est optionnel et se connecte explicitement au projet :
|
|
227
54
|
|
|
228
55
|
```sh
|
|
229
|
-
|
|
230
|
-
cohorte
|
|
231
|
-
cohorte
|
|
56
|
+
cohorte obsidian create <vault-root> <board-path>
|
|
57
|
+
cohorte obsidian connect <vault-root> <board-path>
|
|
58
|
+
cohorte obsidian status
|
|
59
|
+
cohorte obsidian move <feature-id> <column>
|
|
232
60
|
```
|
|
233
61
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
The installer refreshes the generic core (commands, hook, templates) **without** touching your
|
|
237
|
-
`PIPELINE.md`, rendered agents, `gate-config.json`, `settings.json`, or your filled
|
|
238
|
-
`~/.claude/cohorte.config.yaml`.
|
|
239
|
-
|
|
240
|
-
From inside Claude Code, prefer **`/cohorte-update-pipeline`**: it runs the right update invocation for your
|
|
241
|
-
install scope, reports `old → new` — and then **reconciles the repo's generated files to the new
|
|
242
|
-
core**: new profile fields are added at their defaults (you're only asked for genuinely new
|
|
243
|
-
decisions), surface agents are re-rendered, settings are patched additively, new capabilities get
|
|
244
|
-
wired. **`/cohorte-init-pipeline` is one-time per project** — after init, `/cohorte-update-pipeline` is the only
|
|
245
|
-
maintenance command you ever run (`/cohorte-build` auto-grows surfaces as specs need them).
|
|
62
|
+
La connexion déplace les cartes lors des transitions prévues du workflow ; elle ne copie pas le vault dans le dépôt et ne lit que le fichier de tableau configuré.
|
|
246
63
|
|
|
247
|
-
##
|
|
248
|
-
|
|
249
|
-
The two read-only halves of the pipeline, in the shell:
|
|
64
|
+
## Providers, modèles et sécurité
|
|
250
65
|
|
|
251
66
|
```sh
|
|
252
|
-
cohorte
|
|
253
|
-
cohorte
|
|
254
|
-
cohorte
|
|
67
|
+
cohorte auth login
|
|
68
|
+
cohorte auth status
|
|
69
|
+
cohorte providers list
|
|
70
|
+
cohorte providers test
|
|
71
|
+
cohorte models list
|
|
72
|
+
cohorte policy explain -- <argv>
|
|
73
|
+
cohorte doctor --json
|
|
255
74
|
```
|
|
256
75
|
|
|
257
|
-
|
|
258
|
-
extension below renders.
|
|
76
|
+
Pi est le runtime de référence de V3. Le runtime fake reste disponible pour les tests hors ligne et les smoke tests. Aucun fallback automatique ne change de provider pendant un run : le snapshot épingle le bundle, les prompts, la configuration et le runtime utilisés.
|
|
259
77
|
|
|
260
|
-
|
|
261
|
-
`U+001F` between fields (a spec title with a space in it never misaligns a column), or `--json`
|
|
262
|
-
for the native document. Both read through `lib/`, so every consumer — the CLI, a Francois
|
|
263
|
-
panel — answers from one implementation and the repo never gets two verdicts.
|
|
78
|
+
Chaque erreur affiche un code stable, son impact et l'action corrective. Les codes de contrôle sont `0` (terminé), `2` (usage), `3` (rejeté), `4` (accepté mais encore en attente) et `16` (annulé) ; les erreurs de run utilisent les classes documentées dans [`docs/v3/reference/exit-codes.md`](docs/v3/reference/exit-codes.md).
|
|
264
79
|
|
|
265
|
-
|
|
266
|
-
[Francois](https://github.com/antoine-gmnz/francois) extension panel expects. It is the one
|
|
267
|
-
Francois-aware surface in the package, and it exists for
|
|
268
|
-
[**francois-plugin-cohorte**](https://github.com/TheBidouilleAgency/francois-plugin-cohorte): a
|
|
269
|
-
manifest-only extension that renders the spec board, the doctor report and the 30-day cost as
|
|
270
|
-
three panels beside your sessions.
|
|
80
|
+
## Migration depuis V2
|
|
271
81
|
|
|
272
|
-
|
|
273
|
-
never a shell, never an absolute path. So this one needs the global install, and nothing else
|
|
274
|
-
will do:
|
|
82
|
+
Le runtime et les fichiers V2 ne sont plus présents dans le dépôt. La compatibilité fonctionnelle est couverte par les tests V3 ; l'importeur reste disponible pour convertir un ancien projet :
|
|
275
83
|
|
|
276
84
|
```sh
|
|
277
|
-
|
|
278
|
-
|
|
85
|
+
cohorte init --export-v2 <bundle-dir>
|
|
86
|
+
cohorte init --from-v2 <bundle-dir> --yes
|
|
87
|
+
cohorte migrate --rollback <report-id>
|
|
279
88
|
```
|
|
280
89
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
Versions are tracked with npm semver — the published package is the release artifact.
|
|
284
|
-
Publishing is fully automated: [`publish.yml`](.github/workflows/publish.yml) runs on every push
|
|
285
|
-
to `main`; when `package.json`'s version isn't on the registry yet it publishes to npm (trusted
|
|
286
|
-
publishing / provenance), pushes the `vX.Y.Z` tag, and creates the GitHub release. Pushes without
|
|
287
|
-
a version bump just run the sanity checks.
|
|
288
|
-
|
|
289
|
-
**Releasing = editing one line.** Bump `"version"` in `package.json` (by hand, or
|
|
290
|
-
`npm version patch --no-git-tag-version`), commit, push — CI does the rest (publish + tag +
|
|
291
|
-
release). No local tagging needed.
|
|
292
|
-
|
|
293
|
-
`npm i -g cohorte@latest` then serves the new version everywhere; installed cores record
|
|
294
|
-
it in `.claude/pipeline/VERSION` and bundled repos in their committed `pipeline.json` pointer.
|
|
295
|
-
`install` and `update` compare themselves against the registry and say so when they are behind,
|
|
296
|
-
so a CLI pinned at an old version cannot quietly re-lay an old core.
|
|
297
|
-
|
|
298
|
-
## The commands
|
|
299
|
-
|
|
300
|
-
| Command | Role |
|
|
301
|
-
| -------------------- | ------------------------------------------------------------------------------------- |
|
|
302
|
-
| `/cohorte-init-pipeline` | Detect stack → interview → generate the profile + agents. Run once per project. |
|
|
303
|
-
| `/cohorte-intake [paste]` | Triage anything that arrives (ticket, email, trace, thread) into a `/cohorte-patch` handoff or a brainstorm seed — staged to disk, carded in Ideas. |
|
|
304
|
-
| `/cohorte-brainstorm` | Interactive persona panel that pressure-tests a feature idea. |
|
|
305
|
-
| `/cohorte-spec` | Freeze the feature spec + contract into `specs/<id>.md` (UI features also get a standalone design brief at `specs/design/<id>.md`). Also applies review returns. |
|
|
306
|
-
| `/cohorte-patch [bug]` | Bug-fix entry: triage a bug and freeze a ~60-line patch spec (`specs/patch-<slug>.md`) whose regression test replaces the contract. Then the normal `/cohorte-build → review → ship`. |
|
|
307
|
-
| `/cohorte-build <id>` | Readiness gate on the frozen spec, then the lead authors the contract and dispatches one implementer per surface in parallel. |
|
|
308
|
-
| `/cohorte-review <id>` | Read-only review agents (one per touched surface, parallel) audit the diff vs the spec; out-of-scope findings go to the refactor backlog. `--pr <num>` reviews an **incoming** GitHub PR in a throwaway worktree and offers to post the report as a comment. |
|
|
309
|
-
| `/cohorte-fix <id>` | Apply a review report: remediation into the spec, re-dispatch only the surfaces with findings. |
|
|
310
|
-
| `/cohorte-fleet plan\|status\|sync` | Fly several features in parallel: overlap matrix + merge order, one worktree per feature, live status, post-merge rebase sweep. Coordination only — never headless execution. |
|
|
311
|
-
| `/cohorte-ship <id>` | Release agent commits, pushes, opens the PR; watches CI; proposes worktree teardown. |
|
|
312
|
-
| `/cohorte-audit [path]` | Prioritized refactor backlog for existing code. |
|
|
313
|
-
| `/cohorte-refactor <domain>` | Apply the backlog for one surface, TDD-first. |
|
|
314
|
-
| `/cohorte-retro [last n]` | Mine the accumulated review findings for patterns; ratified ones become §Conventions rules and the surface agents are re-rendered — the next build never produces the finding. |
|
|
315
|
-
| `/cohorte-align-ds` | Align the code UI kit to the design system (no-op if none configured). |
|
|
316
|
-
| `/cohorte-update-pipeline` | Refresh the installed core (global or bundled) to the latest published version. |
|
|
317
|
-
| `/cohorte-doctor` | Diagnose the installation (core, agents↔surfaces, hooks, gate, retrieval, worktrees). |
|
|
318
|
-
|
|
319
|
-
### Run the loop cheaply — `/clear` between stages
|
|
320
|
-
|
|
321
|
-
Every command reloads all the state it needs **from disk** — the frozen spec, the contract, the diff, the
|
|
322
|
-
Remediation checkboxes, the freshness stamp, and the last `/cohorte-review` report (staged to a gitignored
|
|
323
|
-
`specs/reports/<id>.md`). Nothing essential lives in the conversation. So the loop is **`/clear`-safe at
|
|
324
|
-
every boundary**:
|
|
325
|
-
|
|
326
|
-
```
|
|
327
|
-
/cohorte-spec → /clear → /cohorte-build → /clear → /cohorte-review → /clear → /cohorte-fix → /clear → /cohorte-review → /cohorte-ship
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
`/clear`-ing between stages sheds the accumulated main-thread context, which is the single biggest token
|
|
331
|
-
lever: long sessions (>150k) are expensive even when cached. Each command tells you when its handoff is
|
|
332
|
-
safe to clear. If you'd rather stay in one session, `/compact` mid-task does the lighter version. (Claude
|
|
333
|
-
can't fire `/clear` itself — it's a client-side command; the pipeline just makes it always safe to type.)
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
### Run features in parallel — one session per feature
|
|
90
|
+
Voir [`docs/v3/MIGRATION.md`](docs/v3/MIGRATION.md) pour les garanties, les sauvegardes et le rollback. Cette procédure ne transforme jamais un ancien run en run V3 : un run V3 démarre avec son propre snapshot et son propre état SQLite.
|
|
337
91
|
|
|
338
|
-
|
|
339
|
-
(`scripts/new-feature.sh <id>` — slots tracked in `.worktrees/slots.tsv`). That isolation is exactly
|
|
340
|
-
what makes **parallel features** safe, and it's the real throughput multiplier when you're rate-limited:
|
|
341
|
-
while feature A's `/cohorte-build` runs its agents (minutes of wall-clock you'd otherwise spend waiting), a
|
|
342
|
-
second Claude Code session can `/cohorte-spec` or `/cohorte-review` feature B.
|
|
92
|
+
## Contribuer
|
|
343
93
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
session 2: /cohorte-review feat-b → …
|
|
94
|
+
```sh
|
|
95
|
+
pnpm install --frozen-lockfile
|
|
96
|
+
pnpm ci:typecheck
|
|
97
|
+
pnpm ci:unit
|
|
98
|
+
pnpm ci:integration
|
|
99
|
+
pnpm ci:acceptance
|
|
351
100
|
```
|
|
352
101
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
- **One feature per session.** All lead-side state is keyed by feature id on disk
|
|
356
|
-
(`specs/<id>.md`, `<contract.path>/<id>.*`, `specs/reports/<id>*`), so sessions never share state —
|
|
357
|
-
but a single session interleaving two features accumulates both in its context, paying for both.
|
|
358
|
-
- **Disjoint surfaces per feature are guaranteed** (each worktree is a full checkout), and each
|
|
359
|
-
feature's DB/ports come from its slot — two features' dev servers collide on neither.
|
|
360
|
-
- **The contract package is the one shared tree.** Two features editing
|
|
361
|
-
`<contract.path>/<their-own-id>.<ext>` never conflict (one file per feature); merge order only
|
|
362
|
-
matters if a later feature *imports* an earlier one's contract — ship the dependency first.
|
|
363
|
-
- `/cohorte-ship` one at a time: it commits from the feature's branch and the freshness gate keeps a stale
|
|
364
|
-
verdict from shipping; after each merge, rebase the other live worktrees (`git rebase main`) so
|
|
365
|
-
their eventual reviews diff against reality.
|
|
366
|
-
- `/cohorte-doctor` check 6 shows the live slot table (feature ↔ worktree ↔ ports) when you lose track.
|
|
367
|
-
|
|
368
|
-
### Workflows — deterministic multi-agent runs (opt-in)
|
|
369
|
-
|
|
370
|
-
Four **workflow scripts** ship for the Claude Code Workflow runtime — the same fan-out the
|
|
371
|
-
commands orchestrate, but driven by a deterministic script instead of the lead reasoning it out
|
|
372
|
-
turn by turn. Three are opt-in variants of their same-named commands; the fourth, `loop.js`,
|
|
373
|
-
exists **only** as a workflow:
|
|
374
|
-
|
|
375
|
-
| Script | What it runs |
|
|
376
|
-
| ----------------------- | ----------------------------------------------------------------------------------------- |
|
|
377
|
-
| `workflows/review.js` | Preflight gate (aborts while red — zero agents), one reviewer per touched surface, adversarial cross-check of CRITICAL/security findings, merged verdict only. |
|
|
378
|
-
| `workflows/audit.js` | One auditor per domain (every surface + shared) concurrently, prioritized `specs/refactor-backlog.md`. |
|
|
379
|
-
| `workflows/refactor.js` | Big domains only: `shared` first and alone, then parallel surface implementers, per-domain verify + one retry. |
|
|
380
|
-
| `workflows/loop.js` | `/cohorte-loop` — build → review → [fix → review]* for one feature, unattended and resumable; exits on zero blocking findings, treading water, maxRounds, or anything that needs a human (contract change, unreviewed surface). No conversational fallback, on purpose. |
|
|
381
|
-
|
|
382
|
-
The essentials:
|
|
383
|
-
|
|
384
|
-
- **The conversational commands stay the default path** — and the fallback when workflows are
|
|
385
|
-
disabled or the client is too old. A workflow runs only when you explicitly ask for it
|
|
386
|
-
("run the review workflow").
|
|
387
|
-
- **Prerequisite: Claude Code ≥ 2.1.154** with workflows enabled. `/cohorte-doctor` (check 8) tells you
|
|
388
|
-
which path your session will take and why.
|
|
389
|
-
- **No input mid-run — questions at the edges.** A workflow runs to completion without asking
|
|
390
|
-
anything: whatever would have been a mid-run question lands in the result at the end. The
|
|
391
|
-
destructive-command gate still fires inside workflow subagents; in unattended runs its confirms
|
|
392
|
-
become denies.
|
|
393
|
-
- Phase 0 of every script is the `profile-reader` agent (haiku) — it reads `PIPELINE.md` and hands
|
|
394
|
-
the script the profile as JSON, since workflow scripts have no filesystem access. Mechanical
|
|
395
|
-
phases run on haiku; judgment phases use the same pinned agents as the commands.
|
|
396
|
-
|
|
397
|
-
Details: `profile/SCHEMA.md` §Workflows.
|
|
102
|
+
La suite complète locale est `pnpm ci:local`. La CI vérifie lint, types, unités, intégration, schémas, migrations, packaging, sécurité, crash recovery, dogfood, acceptance et compatibilité Pi. Consultez [`docs/guide/maintainers.md`](docs/guide/maintainers.md) et [`docs/v3/workspace.md`](docs/v3/workspace.md) pour l'architecture et les procédures de release.
|
|
398
103
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
Cohorte sends nothing, anywhere. There is no telemetry, no usage pings, no collector — the
|
|
402
|
-
opt-in stats that shipped through 2.2.0 were removed in 2.3.0, sender included. Everything the
|
|
403
|
-
pipeline records (`pipeline-metrics.jsonl`, `specs/reports/`) stays in your repo, and the only
|
|
404
|
-
network calls are the ones you can see: `git`, `gh`, and whatever MCP providers you wired
|
|
405
|
-
yourself.
|
|
406
|
-
|
|
407
|
-
## License
|
|
408
|
-
|
|
409
|
-
[AGPL-3.0](LICENSE). Free to use, including commercially — but if you modify it and distribute it
|
|
410
|
-
or offer it as a network service, you must publish your modifications under the same license.
|
|
411
|
-
|
|
412
|
-
## Profile reference
|
|
413
|
-
|
|
414
|
-
See `profile/SCHEMA.md` for every field in `PIPELINE.md` and how the pipeline uses it.
|
|
415
|
-
|
|
416
|
-
## Layout of this repo
|
|
417
|
-
|
|
418
|
-
```
|
|
419
|
-
package.json # npm package (cohorte) — semver source of truth
|
|
420
|
-
bin/cli.js # the npm CLI: install / update / specs / doctor / metrics / version (cross-platform, no deps)
|
|
421
|
-
bin/report.js # the four renderings of `specs` / `doctor` (human, porcelain, json, panel)
|
|
422
|
-
lib/ # shared readers behind those verbs — doctor.js (the JS port of
|
|
423
|
-
# /cohorte-doctor) + runtime.js / versions.js / yaml.js. No deps.
|
|
424
|
-
install.sh # script installer (fresh + --update) for npm-less setups — still needs Node
|
|
425
|
-
install.ps1 # same installer for Windows PowerShell (fresh + -Update)
|
|
426
|
-
core/ # copied verbatim into ~/.claude (global) or <project>/.claude (bundled)
|
|
427
|
-
agents/ # implementer.template.md (rendered per surface) + review / release / profile-reader
|
|
428
|
-
commands/ # init-pipeline + the pipeline commands + /cohorte-update-pipeline
|
|
429
|
-
hooks/ # gate.py (destructive-command gate; branch-aware; preflight phase gate)
|
|
430
|
-
templates/ # handoff / brainstorm-return / design-brief / review-feedback / pr-body / spec
|
|
431
|
-
workflows/ # Workflow-runtime scripts: review.js / audit.js / refactor.js (opt-in variants) + loop.js (workflow-only)
|
|
432
|
-
profile/
|
|
433
|
-
PIPELINE.template.md # the profile skeleton /cohorte-init-pipeline fills
|
|
434
|
-
SCHEMA.md # field reference
|
|
435
|
-
cohorte.config.template.yaml # seeds ~/.claude/cohorte.config.yaml (kanban)
|
|
436
|
-
scripts/ # worktree-isolation templates + the shipped preflight/kanban scripts
|
|
437
|
-
```
|
|
104
|
+
Licence AGPL-3.0.
|
package/assets/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": 1,
|
|
3
|
-
"cohorteVersion": "3.0.0-dev.
|
|
3
|
+
"cohorteVersion": "3.0.0-dev.8",
|
|
4
4
|
"algorithm": "sha256",
|
|
5
|
-
"treeSha256": "
|
|
5
|
+
"treeSha256": "6c53a3c70941285ec350b879b77d54ebe2f7f50c869c6a9544d615efab4872b0",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"path": "migrations/config/README.md",
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
"size": 743,
|
|
20
20
|
"sha256": "f1cd0d36eb65f1a3fdfd86d4b4fbef94d01cb1c64c9b69777d3e3efe5fb0d8bf"
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
"path": "prompts/agents/brainstormer.md",
|
|
24
|
+
"size": 283,
|
|
25
|
+
"sha256": "ce64dd294bf9d4e7c7109d33e8038550d9a0d01838c0ec42faf405714e947d49"
|
|
26
|
+
},
|
|
22
27
|
{
|
|
23
28
|
"path": "prompts/agents/fixer.md",
|
|
24
29
|
"size": 437,
|
|
@@ -39,6 +44,11 @@
|
|
|
39
44
|
"size": 376,
|
|
40
45
|
"sha256": "081771595c2fcb4a7dfe61c484849efa30f39e33cb3ebe28120a0dc0d552562c"
|
|
41
46
|
},
|
|
47
|
+
{
|
|
48
|
+
"path": "prompts/agents/spec-author.md",
|
|
49
|
+
"size": 293,
|
|
50
|
+
"sha256": "2c6b6a7bfffa444c59effec128e0d811b3abeecf9a870cd78e56ed60d4dcc628"
|
|
51
|
+
},
|
|
42
52
|
{
|
|
43
53
|
"path": "prompts/phases/build.md",
|
|
44
54
|
"size": 286,
|
|
@@ -76,8 +86,8 @@
|
|
|
76
86
|
},
|
|
77
87
|
{
|
|
78
88
|
"path": "schemas/commands.schema.json",
|
|
79
|
-
"size":
|
|
80
|
-
"sha256": "
|
|
89
|
+
"size": 23504,
|
|
90
|
+
"sha256": "b03842d708295ebd1b29ea06da42c3813a1715fd6573b4b64db9dca2b4908f3a"
|
|
81
91
|
},
|
|
82
92
|
{
|
|
83
93
|
"path": "schemas/config.schema.json",
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Brainstormer
|
|
2
|
+
|
|
3
|
+
Challenge the idea before implementation. Return a structured brief with the problem, users, desired outcome, non-goals, risks, open questions, acceptance hypotheses, and affected surfaces. Do not edit the repository. Use only evidence available in the task context.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Spec author
|
|
2
|
+
|
|
3
|
+
Turn the reviewed brief into a precise, testable specification. State the observable behavior, contracts, data and security implications, affected surfaces, acceptance criteria, and explicit non-goals. Do not implement code. Do not silently resolve open questions; record them.
|