cohorte 1.3.0 → 1.3.1
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/CHANGELOG.md +10 -0
- package/README.md +1 -0
- package/core/commands/cycle.md +54 -0
- package/core/commands/doctor.md +1 -1
- package/package.json +1 -1
- package/profile/SCHEMA.md +3 -1
- package/scripts/validate-core.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
Entries are shown by `/update-pipeline` ("What's new") after a core refresh. Keep them short,
|
|
4
4
|
user-facing, most recent first. One `## <version> — <YYYY-MM-DD>` section per release.
|
|
5
5
|
|
|
6
|
+
## 1.3.1 — 2026-07-30
|
|
7
|
+
|
|
8
|
+
- **`/cycle <feature_id> [max_rounds]`** — a launcher command for the full dev-cycle workflow,
|
|
9
|
+
so you don't have to phrase the request in prose. It resolves `workflows/cycle.js`
|
|
10
|
+
(bundled or global), checks the runtime is available (missing ⇒ it hands you the
|
|
11
|
+
conversational `/build` → `/smoke` → `/review` path instead), sanity-checks the spec is
|
|
12
|
+
frozen, launches the workflow in the background, then relays the verdict: outcome,
|
|
13
|
+
contract re-authorings to eyeball, the `questions` array verbatim, and the next step
|
|
14
|
+
(`/ship` on SHIP-READY, rerun `/cycle` or `/fix` otherwise). Kanban card moves included.
|
|
15
|
+
|
|
6
16
|
## 1.3.0 — 2026-07-30
|
|
7
17
|
|
|
8
18
|
**Token economy — immediate wins, no workflow needed:**
|
package/README.md
CHANGED
|
@@ -214,6 +214,7 @@ it in `.claude/pipeline/VERSION` and bundled repos in their committed `pipeline.
|
|
|
214
214
|
| `/brainstorm` | Interactive persona panel that pressure-tests a feature idea. |
|
|
215
215
|
| `/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. |
|
|
216
216
|
| `/build <id>` | Lead authors the contract, then dispatches one implementer per surface in parallel. |
|
|
217
|
+
| `/cycle <id>` | Launch the full dev-cycle **workflow** on a frozen spec: build → smoke ∥ review → fix until zero findings; deferred questions in the output. Needs workflows enabled (falls back to the conversational path). |
|
|
217
218
|
| `/smoke <id>` | Run the feature for real: infra up, contract endpoints, UI flows, design conformance. |
|
|
218
219
|
| `/review <id>` | Read-only review agents (one per touched surface, parallel) audit the diff vs the spec. |
|
|
219
220
|
| `/fix <id>` | Apply a review/smoke report: remediation into the spec, re-dispatch only the surfaces with findings. |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
model: sonnet
|
|
3
|
+
description: Launch the full dev-cycle workflow (contract → build → smoke ∥ review → fix, until zero findings) for a frozen spec; relay its verdict + deferred questions.
|
|
4
|
+
argument-hint: <feature_id> [max_rounds]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the **lead**. Launch the full dev-cycle **workflow** for feature **$ARGUMENTS** — the
|
|
8
|
+
deterministic script does the orchestration (SCHEMA.md §Workflows, `cycle.js`); your job is only to
|
|
9
|
+
start it and relay its result. Do NOT run the phases yourself here — that's the conversational path
|
|
10
|
+
(`/build` → `/smoke` → `/review` → `/fix`), which remains the fallback below.
|
|
11
|
+
|
|
12
|
+
> **Kanban** (SCHEMA.md §Kanban): move card `#<feature_id>` → **Building** at launch. No-op silently
|
|
13
|
+
> if no board.
|
|
14
|
+
|
|
15
|
+
## 1. Resolve & check (fail fast, before spending anything)
|
|
16
|
+
|
|
17
|
+
- Parse `$ARGUMENTS`: the first token is `<feature_id>`, an optional second numeric token is
|
|
18
|
+
`<max_rounds>` (the workflow defaults to 5).
|
|
19
|
+
- Resolve the script: `.claude/workflows/cycle.js` if it exists, else `~/.claude/workflows/cycle.js`
|
|
20
|
+
(`test -f`). **Missing both** ⇒ the core predates 1.3.0 or is half-copied: tell the human to run
|
|
21
|
+
`/update-pipeline`, and stop.
|
|
22
|
+
- **Workflow runtime available?** If the `Workflow` tool is not in your toolset (Claude Code
|
|
23
|
+
< 2.1.154 or workflows disabled), say so and hand over the conversational path instead:
|
|
24
|
+
`/build <feature_id>` → `/smoke` → `/review` → `/fix` — same phases, interactive. Stop.
|
|
25
|
+
- Quick spec sanity (the workflow re-checks properly — this just saves a doomed launch):
|
|
26
|
+
`grep '^status:' specs/<feature_id>.md` must say `frozen` or `in-review`; otherwise tell the human
|
|
27
|
+
to run `/spec` first, and stop.
|
|
28
|
+
|
|
29
|
+
## 2. Launch
|
|
30
|
+
|
|
31
|
+
Call the `Workflow` tool: `scriptPath: <resolved cycle.js path>`,
|
|
32
|
+
`args: {"feature": "<feature_id>", "maxRounds": <max_rounds, omit if not given>}`.
|
|
33
|
+
It runs in the background — tell the human it's off and what it will do (build, then smoke ∥ review
|
|
34
|
+
→ fix rounds until zero findings + PASS; no questions mid-run), and that `/workflows` shows live
|
|
35
|
+
progress. Then END YOUR TURN — never poll, never sleep; the completion notification re-wakes you.
|
|
36
|
+
|
|
37
|
+
## 3. Relay the result (when the task notification arrives)
|
|
38
|
+
|
|
39
|
+
The workflow returns only a verdict object — the bulk is already on disk
|
|
40
|
+
(`specs/reports/<feature_id>.md`, spec `## Remediation`). Print, without re-reading any of it into
|
|
41
|
+
context:
|
|
42
|
+
|
|
43
|
+
- `outcome` · rounds used · review verdict · smoke result.
|
|
44
|
+
- `contractChanges` if any — flag them explicitly: the loop re-authored the frozen contract
|
|
45
|
+
lead-style; the human should eyeball those hunks in the diff.
|
|
46
|
+
- **The `questions` array, verbatim** — this is the human's inbox from the run (empty when the spec
|
|
47
|
+
pre-answered everything). Each one is a decision to make, usually by sharpening the spec.
|
|
48
|
+
- The `next` line: **SHIP-READY** ⇒ `/ship <feature_id>` (DoD ticked + freshness stamped — ship is a
|
|
49
|
+
straight shot, its human confirmation stays). **STOPPED** ⇒ answer the questions, then rerun
|
|
50
|
+
`/cycle <feature_id>` (it picks up from the spec's Remediation) or finish conversationally with
|
|
51
|
+
`/fix <feature_id>` + `/review <feature_id>`.
|
|
52
|
+
- **Kanban:** outcome SHIP-READY ⇒ move card → **Review** (the cycle's last verdict is a review);
|
|
53
|
+
otherwise → **Fix**. No-op silently if no board.
|
|
54
|
+
- **Recommend a `/clear`** — everything the next command needs is on disk.
|
package/core/commands/doctor.md
CHANGED
|
@@ -37,7 +37,7 @@ fix only with the human's go-ahead (or hand them the command).
|
|
|
37
37
|
(`review.md`, `release.md`, `smoke.md`, `profile-reader.md` — repo or `~/.claude/agents/`) must
|
|
38
38
|
each carry their `model:` line too (sonnet/haiku/sonnet/haiku). **Command pins:** every mechanical command file
|
|
39
39
|
(`build`, `review`, `fix`, `smoke`, `ship`, `audit`, `refactor`, `doctor`, `align-ds`,
|
|
40
|
-
`update-pipeline` — in `.claude/commands/` or `~/.claude/commands/`) carries `model: sonnet` in
|
|
40
|
+
`update-pipeline`, `cycle` — in `.claude/commands/` or `~/.claude/commands/`) carries `model: sonnet` in
|
|
41
41
|
its frontmatter — ⚠️ if missing (the lead's orchestration turn then bills at the session model,
|
|
42
42
|
e.g. Opus/Fable). `brainstorm`, `spec`, and `init-pipeline` are intentionally unpinned
|
|
43
43
|
(interactive — they inherit the session model).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cohorte",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Portable, stack-agnostic multi-agent development pipeline for Claude Code — install the core, run /init-pipeline, and it adapts to your project's stack.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"cohorte": "bin/cli.js"
|
package/profile/SCHEMA.md
CHANGED
|
@@ -318,7 +318,9 @@ Workflow runtime executes instead of the lead reasoning out the fan-out turn by
|
|
|
318
318
|
`<core>/workflows/review.js`, `audit.js`, `refactor.js` (installed to `.claude/workflows/` bundled or
|
|
319
319
|
`~/.claude/workflows/` global). The conversational commands (`/review`, `/audit`, `/refactor`)
|
|
320
320
|
**remain the default path and the fallback** — a workflow runs only when the human explicitly asks
|
|
321
|
-
for it ("run the review workflow"
|
|
321
|
+
for it ("run the review workflow", or via the `/cycle <id>` launcher command, which resolves
|
|
322
|
+
`cycle.js` and invokes the runtime for them), and requires Claude Code ≥ **2.1.154** with workflows
|
|
323
|
+
enabled.
|
|
322
324
|
`/doctor` reports which path a session will take. The interactive commands (`/init-pipeline`,
|
|
323
325
|
`/brainstorm`, `/spec`) and the dispatch-only ones (`/build`, `/ship`) have **no** workflow variant on
|
|
324
326
|
purpose: they're interviews or already a single parallel dispatch — a script adds nothing.
|
|
@@ -23,7 +23,7 @@ const frontmatter = (text) => {
|
|
|
23
23
|
// orchestration turn silently bills at the session model — Opus/Fable).
|
|
24
24
|
// Interactive commands must stay unpinned (they inherit on purpose).
|
|
25
25
|
const PINNED = ["build", "review", "fix", "smoke", "ship", "audit",
|
|
26
|
-
"refactor", "doctor", "align-ds", "update-pipeline"];
|
|
26
|
+
"refactor", "doctor", "align-ds", "update-pipeline", "cycle"];
|
|
27
27
|
const UNPINNED = ["brainstorm", "spec", "init-pipeline"];
|
|
28
28
|
|
|
29
29
|
for (const f of readdirSync(join(root, "core/commands"))) {
|