@mmerterden/multi-agent-pipeline 16.20.0 → 16.23.0
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 +231 -102
- package/README.md +6 -8
- package/README.tr.md +6 -8
- package/docs/architecture.md +3 -3
- package/docs/ecosystem.md +5 -5
- package/docs/features.md +1 -0
- package/install/templates/claude-hooks.json +12 -1
- package/install/templates/copilot-instructions.md +17 -2
- package/package.json +1 -1
- package/pipeline/agents/bulk-reader.md +57 -0
- package/pipeline/commands/multi-agent/SKILL.md +0 -5
- package/pipeline/commands/multi-agent/help/SKILL.md +0 -10
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/setup/SKILL.md +7 -5
- package/pipeline/commands/multi-agent/sync/SKILL.md +13 -13
- package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -12
- package/pipeline/multi-agent-refs/phases/modes.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +7 -2
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-7-report.md +8 -1
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/tracker-contract.md +46 -0
- package/pipeline/schemas/agent-state.schema.json +1 -1
- package/pipeline/schemas/bulk-read-output.schema.json +52 -0
- package/pipeline/schemas/prefs.schema.json +74 -19
- package/pipeline/schemas/token-budget.json +3 -3
- package/pipeline/scripts/bulk-read.sh +277 -0
- package/pipeline/scripts/check-read-size.py +335 -0
- package/pipeline/scripts/check-read-size.sh +86 -0
- package/pipeline/scripts/phase-tracker.sh +245 -3
- package/pipeline/scripts/pre-commit-check.sh +1 -0
- package/pipeline/scripts/uninstall.mjs +1 -0
- package/pipeline/skills/.skill-manifest.json +8 -24
- package/pipeline/skills/.skills-index.json +2 -46
- package/pipeline/skills/shared/README.md +4 -8
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +0 -8
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +12 -12
- package/pipeline/skills/shared/external/backlog/SKILL.md +10 -6
- package/pipeline/skills/skills-index.md +2 -6
- package/pipeline/commands/multi-agent/dev/SKILL.md +0 -17
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +0 -23
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +0 -17
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +0 -21
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +0 -19
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +0 -25
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +0 -19
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +0 -23
package/README.md
CHANGED
|
@@ -89,7 +89,7 @@ Depth, autopilot and `--local` are the only knobs on the run itself; everything
|
|
|
89
89
|
|
|
90
90
|
## Commands
|
|
91
91
|
|
|
92
|
-
`/multi-agent` plus
|
|
92
|
+
`/multi-agent` plus 51 sub-commands. `/multi-agent:help` renders the same catalog in your terminal, in your `outputLanguage`.
|
|
93
93
|
|
|
94
94
|
### Pipeline entries
|
|
95
95
|
|
|
@@ -187,8 +187,6 @@ Depth, autopilot and `--local` are the only knobs on the run itself; everything
|
|
|
187
187
|
| `/multi-agent:uninstall` | Remove the pipeline from every CLI. Keychain tokens always left intact |
|
|
188
188
|
| `/multi-agent:help` | This catalog, in the terminal, in your `outputLanguage` |
|
|
189
189
|
|
|
190
|
-
Four names are kept only as redirects: `:dev` and `:dev-local` point at `/multi-agent` and `:local` answered Short, and `:dev-autopilot` / `:dev-local-autopilot` have no equivalent - "fast plus unattended" was removed in v16.0.0.
|
|
191
|
-
|
|
192
190
|
### Subagents
|
|
193
191
|
|
|
194
192
|
Eight are installed alongside the commands and dispatched by the phases: `explorer` and `task-clarifier` (Phase 0-1), `ios-architect` / `android-architect` / `backend-architect` (Phase 2), `dev-critic` (Phase 3), `code-reviewer` and `security-auditor` (Phase 4).
|
|
@@ -209,17 +207,17 @@ This enables the matching plugin (+ the shared `ai-common` plugin) in the repo's
|
|
|
209
207
|
|
|
210
208
|
## Tool support
|
|
211
209
|
|
|
212
|
-
The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same
|
|
210
|
+
The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 51 commands.
|
|
213
211
|
|
|
214
212
|
| Tool | Flag | What it installs |
|
|
215
213
|
|---|---|---|
|
|
216
|
-
| Claude Code | `--claude` (default) | slash commands + skills + agents + `PreToolUse` secret
|
|
217
|
-
| Copilot CLI | `--copilot` | instructions +
|
|
218
|
-
| Codex CLI | `--codex` | one router skill +
|
|
214
|
+
| Claude Code | `--claude` (default) | slash commands + skills + agents + three `PreToolUse` hooks (secret scan, agent-guard, read-size gate) |
|
|
215
|
+
| Copilot CLI | `--copilot` | instructions + 51 sub-command skills + scripts |
|
|
216
|
+
| Codex CLI | `--codex` | one router skill + 51 specs as refs + 8 agent TOML + `AGENTS.md` block + `codex mcp add` |
|
|
219
217
|
|
|
220
218
|
Filter skills by stack with `--platform=ios\|android\|all`.
|
|
221
219
|
|
|
222
|
-
**Why Codex gets one skill and not
|
|
220
|
+
**Why Codex gets one skill and not 51.** Codex assembles every discovered skill's name
|
|
223
221
|
and description into a single prompt block and drops entries when it overflows, with no
|
|
224
222
|
error. Measured on 0.145: installing one plugin that declares 142 skills surfaced only
|
|
225
223
|
75 of them and evicted an unrelated user skill. So on Codex the pipeline ships a single
|
package/README.tr.md
CHANGED
|
@@ -89,7 +89,7 @@ Koşunun kendisinde ayarlanabilen tek şey derinlik, autopilot ve `--local`; ger
|
|
|
89
89
|
|
|
90
90
|
## Komutlar
|
|
91
91
|
|
|
92
|
-
`/multi-agent` ve
|
|
92
|
+
`/multi-agent` ve 51 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
|
|
93
93
|
|
|
94
94
|
### Pipeline girişleri
|
|
95
95
|
|
|
@@ -187,8 +187,6 @@ Koşunun kendisinde ayarlanabilen tek şey derinlik, autopilot ve `--local`; ger
|
|
|
187
187
|
| `/multi-agent:uninstall` | Pipeline'ı her CLI'dan kaldırır. Keychain token'larına hiç dokunmaz |
|
|
188
188
|
| `/multi-agent:help` | Bu katalog, terminalde, `outputLanguage`'ine göre |
|
|
189
189
|
|
|
190
|
-
Dört ad yalnızca yönlendirme olarak duruyor: `:dev` ve `:dev-local` sırasıyla `/multi-agent` ve `:local` çalıştırıp Short seçmeye yönlendirir, `:dev-autopilot` ile `:dev-local-autopilot` ise karşılıksız - "hızlı artı gözetimsiz" v16.0.0'da kaldırıldı.
|
|
191
|
-
|
|
192
190
|
### Alt agent'lar
|
|
193
191
|
|
|
194
192
|
Komutlarla birlikte sekiz agent kurulur ve fazlar bunları çağırır: `explorer` ve `task-clarifier` (Faz 0-1), `ios-architect` / `android-architect` / `backend-architect` (Faz 2), `dev-critic` (Faz 3), `code-reviewer` ve `security-auditor` (Faz 4).
|
|
@@ -209,17 +207,17 @@ Bu, ilgili plugin'i (+ ortak `ai-common` plugin'ini) repo'nun `.claude/settings.
|
|
|
209
207
|
|
|
210
208
|
## Araç desteği
|
|
211
209
|
|
|
212
|
-
Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı
|
|
210
|
+
Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 51 komutu alır.
|
|
213
211
|
|
|
214
212
|
| Araç | Bayrak | Ne kurar |
|
|
215
213
|
|---|---|---|
|
|
216
|
-
| Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + `PreToolUse`
|
|
217
|
-
| Copilot CLI | `--copilot` | talimatlar +
|
|
218
|
-
| Codex CLI | `--codex` | bir router skill + ref olarak
|
|
214
|
+
| Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + üç `PreToolUse` hook'u (secret scan, agent-guard, okuma-boyutu geçidi) |
|
|
215
|
+
| Copilot CLI | `--copilot` | talimatlar + 51 alt-komut skill'i + script'ler |
|
|
216
|
+
| Codex CLI | `--codex` | bir router skill + ref olarak 51 spec + 8 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
|
|
219
217
|
|
|
220
218
|
Skill'leri stack'e göre filtrele: `--platform=ios\|android\|all`.
|
|
221
219
|
|
|
222
|
-
**Codex neden
|
|
220
|
+
**Codex neden 51 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
|
|
223
221
|
ve açıklamasını tek bir prompt bloğuna toplar ve blok taştığında girdileri hatasızca
|
|
224
222
|
düşürür. 0.145 üzerinde ölçüldü: 142 skill deklare eden bir plugin kurulduğunda sadece
|
|
225
223
|
75'i yüzeye çıktı ve alakasız bir kullanıcı skill'i tahliye edildi. Bu yüzden Codex'te
|
package/docs/architecture.md
CHANGED
|
@@ -117,7 +117,7 @@ graph TB
|
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
subgraph "Pipeline Specs"
|
|
120
|
-
CMD[commands/<br/>
|
|
120
|
+
CMD[commands/<br/>51 command files]
|
|
121
121
|
AGT[agents/<br/>8 agent personas]
|
|
122
122
|
RUL[rules/<br/>12 domain rules]
|
|
123
123
|
PHS[multi-agent-refs/phases/<br/>phase specs + contracts]
|
|
@@ -169,8 +169,8 @@ revisions of this diagram - Codex CLI and the two independently-shipped repos
|
|
|
169
169
|
```mermaid
|
|
170
170
|
graph TD
|
|
171
171
|
CC["Claude Code<br/>(source of truth)"]
|
|
172
|
-
COP["Copilot CLI<br/>(instructions +
|
|
173
|
-
COD["Codex CLI<br/>(1 router skill +
|
|
172
|
+
COP["Copilot CLI<br/>(instructions + 51 skills)"]
|
|
173
|
+
COD["Codex CLI<br/>(1 router skill + 51 refs)"]
|
|
174
174
|
REPO["Pipeline Repo<br/>(npm package)"]
|
|
175
175
|
WEB["Website"]
|
|
176
176
|
PLUGREPO["multi-agent-plugins<br/>(5 stack plugins, own repo)"]
|
package/docs/ecosystem.md
CHANGED
|
@@ -5,7 +5,7 @@ separately, wired together at install time and at run time:
|
|
|
5
5
|
|
|
6
6
|
| Repo | What it owns | Ships as |
|
|
7
7
|
|---|---|---|
|
|
8
|
-
| **`multi-agent-pipeline`** (this repo) | Orchestration: the 8-phase flow, the
|
|
8
|
+
| **`multi-agent-pipeline`** (this repo) | Orchestration: the 8-phase flow, the 51 slash commands, quality gates, review/triage, cross-CLI parity | npm package (`@mmerterden/multi-agent-pipeline`), installs itself onto Claude Code / Copilot CLI / Codex CLI |
|
|
9
9
|
| **`multi-agent-plugins`** | Stack knowledge: per-platform component/lifecycle skills (iOS, Android, Frontend, Backend) + shared knowledge | Claude Code marketplace, 5 independently-versioned plugins |
|
|
10
10
|
| **`multi-agent-toolkit-mcp`** | The pipeline's hands on devices and browsers: 80 MCP tools across 6 categories (simulator/emulator control, accessibility audit, store compliance, web automation, Figma-vs-mock design audit, an agent-DSL batch runner) | npm package, registered as a standard stdio MCP server on every host |
|
|
11
11
|
|
|
@@ -18,7 +18,7 @@ Either can be swapped or removed without touching the other two's source.
|
|
|
18
18
|
graph LR
|
|
19
19
|
subgraph PIPE ["multi-agent-pipeline (orchestrator)"]
|
|
20
20
|
direction TB
|
|
21
|
-
PHASES["8 phases ·
|
|
21
|
+
PHASES["8 phases · 51 commands"]
|
|
22
22
|
GATES["deterministic gates + review triage"]
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -64,8 +64,8 @@ only those:
|
|
|
64
64
|
graph TD
|
|
65
65
|
CC["Claude Code<br/>~/.claude/commands/multi-agent/<br/>(source of truth)"]
|
|
66
66
|
|
|
67
|
-
CC -->|"Step 2: copy + reformat<br/>
|
|
68
|
-
CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill +
|
|
67
|
+
CC -->|"Step 2: copy + reformat<br/>51 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
|
|
68
|
+
CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 51 refs<br/>+ 8 agent TOML"]
|
|
69
69
|
CC -->|"Step 3: genericize<br/>(strip personal data)"| REPO["multi-agent-pipeline repo<br/>pipeline/"]
|
|
70
70
|
CC -->|"Step 4: version + feature sync"| WEB["Website<br/>projects.ts / i18n.tsx"]
|
|
71
71
|
|
|
@@ -153,7 +153,7 @@ measurements behind this table):
|
|
|
153
153
|
|
|
154
154
|
| | Claude Code | Copilot CLI | Codex CLI |
|
|
155
155
|
|---|---|---|---|
|
|
156
|
-
| **Pipeline commands** |
|
|
156
|
+
| **Pipeline commands** | 51 slash-command skills, native | 51 skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 51 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
|
|
157
157
|
| **Stack plugins** | Marketplace plugin, loaded natively, resolved by `.claude/settings.json` enabled-list | Enabled plugin's authored skills copied flat into `~/.copilot/skills/`; `knowledge/` **not** re-copied (already delivered via `shared/external`) | Copied as reference files under `~/.codex/multi-agent-refs/skills/`, plugin-prefixed on name clash (e.g. `architecture` → `ai-ios-toolkit-architecture`) |
|
|
158
158
|
| **Component dispatch (Phase 3)** | Marketplace plugin's `create-component`/`create-screen` skill via the Skill tool | No plugin loader - the enabled stack plugin's authored skills (incl. `create-component`) are copied flat into `~/.copilot/skills/` at install time (the old frozen `figma-*` copies are pruned, they were never a fallback) | Not part of the enforced parity axis; classification + state-shape must match, skill *inventory* does not |
|
|
159
159
|
| **multi-agent-toolkit-mcp** | `claude mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `copilot mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `codex mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` (skipped with a warning if `codex` isn't on `PATH`) |
|
package/docs/features.md
CHANGED
|
@@ -222,6 +222,7 @@ Phase 3 treats the issue-tracker status update as a required step with a post-mu
|
|
|
222
222
|
## Safety & Hygiene
|
|
223
223
|
|
|
224
224
|
- **Pre-Commit Secret Detection** (12 patterns): `PreToolUse` hook scans staged files for API keys/tokens, AWS access keys, private keys, `.env` files, service account JSON. Commit **blocked** if found.
|
|
225
|
+
- **Read-Size Gate** (opt-in, `prefs.global.bulkRead.mode`): a `PreToolUse` hook inspects `Read` and the shell commands that read a file whole. In `observe` it only logs what it would have caught - the baseline you measure before routing anything. In `enforce` a file over `minLines` (default 350) is blocked and delegated to a haiku-rung worker (`bulk-read.sh`), which returns a line-numbered summary so the follow-up is a bounded `Read(offset:limit:)` instead of the whole file; the full text is parked under `.multi-agent/refs/`. The development phase and any file the run has already touched are exempt, because Claude Code's `Edit` requires its own `Read` first.
|
|
225
226
|
- **Build Queue**: All `xcodebuild` calls acquire a lock. Each worktree uses own `-derivedDataPath`. Stale locks auto-clean after 15 min. Non-Xcode builds don't need the lock.
|
|
226
227
|
- **Context Management**: `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=65` - compaction at 65% usage (prevents degradation in 8-phase sessions).
|
|
227
228
|
- **3-Iteration Hard Kill**: Any retry loop stops after 3 attempts, then pauses for user. No infinite loops.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_readme": "Recommended Claude Code hooks for multi-agent-pipeline. Merge the `hooks` object into your ~/.claude/settings.json to make these deterministic, OS-enforced PreToolUse gates real (exit 2 blocks the tool call) rather than prompt-level hopes.
|
|
2
|
+
"_readme": "Recommended Claude Code hooks for multi-agent-pipeline. Merge the `hooks` object into your ~/.claude/settings.json to make these deterministic, OS-enforced PreToolUse gates real (exit 2 blocks the tool call) rather than prompt-level hopes. Three gates ship here: (1) a staged-diff secret scan on git commit (pre-commit-check.sh); (2) an agent-guard on git commit + git push (agent-guard.sh) that blocks AI/assistant attribution in commit messages and force-push to a protected branch (main/master/develop); (3) a read-size gate on Read and Bash (check-read-size.sh), which inspects Read plus the shell commands that read a file whole (cat/head/tail/sed) and returns immediately for everything else, which routes an oversized read to a cheap worker instead of the caller's own rung. The first two inspect what a run WRITES; the third inspects what it pays to READ, and it is inert until `prefs.global.bulkRead.mode` is set to observe or enforce - so merging this block changes nothing until you opt in. All three are self-contained, fail-open on internal error, never execute the inspected command, and need no run-specific arguments, which is why they are naturally PreToolUse hooks. The other deterministic gates (evidence, consensus, intent, learnings) take run-specific arguments and are phase-enforced by the pipeline instead. multi-agent:setup offers to merge this block.",
|
|
3
3
|
"hooks": {
|
|
4
4
|
"PreToolUse": [
|
|
5
5
|
{
|
|
@@ -29,6 +29,17 @@
|
|
|
29
29
|
"statusMessage": "Checking push safety..."
|
|
30
30
|
}
|
|
31
31
|
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"matcher": "Read|Bash",
|
|
35
|
+
"hooks": [
|
|
36
|
+
{
|
|
37
|
+
"type": "command",
|
|
38
|
+
"command": "bash $HOME/.claude/scripts/check-read-size.sh",
|
|
39
|
+
"timeout": 10,
|
|
40
|
+
"statusMessage": "Checking read size..."
|
|
41
|
+
}
|
|
42
|
+
]
|
|
32
43
|
}
|
|
33
44
|
]
|
|
34
45
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
Depth is the question, not a command: Full runs all 8 phases, Short is
|
|
34
34
|
Init -> Dev(Opus) -> Review -> Test -> Commit -> Report. Review is never
|
|
35
|
-
skipped either way.
|
|
35
|
+
skipped either way.
|
|
36
36
|
|
|
37
37
|
## Language axes (en/tr)
|
|
38
38
|
|
|
@@ -111,7 +111,11 @@ or, on machines with Claude Code also installed:
|
|
|
111
111
|
## Progress Tracking - required
|
|
112
112
|
|
|
113
113
|
Every phase boundary MUST call the cross-CLI tracker. The tracker is the single source of truth
|
|
114
|
-
for user-visible phase progress on Copilot CLI (no
|
|
114
|
+
for user-visible phase progress on Copilot CLI (no native task widget here). Banner is optional flair.
|
|
115
|
+
|
|
116
|
+
Copilot CLI has no TaskCreate equivalent, so the bordered card IS the widget - and Copilot
|
|
117
|
+
collapses tool output, so a card left in stdout never reaches the user. **Reprint the card
|
|
118
|
+
inside your reply at every phase boundary.** `phase-tracker.sh tiles` says so and prints it.
|
|
115
119
|
|
|
116
120
|
```bash
|
|
117
121
|
# Bootstrap once at Phase 0 start - initialize all 8 phase tiles:
|
|
@@ -119,6 +123,7 @@ bash ~/.copilot/scripts/phase-tracker.sh init "$TASK_ID"
|
|
|
119
123
|
for p in 0:Init 1:Analysis 2:Planning 3:Dev 4:Review 5:Test 6:Commit 7:Report; do
|
|
120
124
|
bash ~/.copilot/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
121
125
|
done
|
|
126
|
+
bash ~/.copilot/scripts/phase-tracker.sh tiles
|
|
122
127
|
|
|
123
128
|
# At each phase boundary - update status. Tracker stamps started_at on first
|
|
124
129
|
# transition to in_progress, completed_at on terminal status (completed/failed/skipped).
|
|
@@ -129,6 +134,16 @@ done
|
|
|
129
134
|
bash ~/.copilot/scripts/phase-tracker.sh update <N> in_progress
|
|
130
135
|
bash ~/.copilot/scripts/phase-tracker.sh update <N> completed # or failed / skipped
|
|
131
136
|
|
|
137
|
+
# `update <N> completed` EXITS 3 for phases 1-4 when no tokens were recorded for
|
|
138
|
+
# that phase: record model + tokens first, then re-run the same update. A phase
|
|
139
|
+
# that genuinely ran no LLM call completes with `--no-llm`. Each update prints a
|
|
140
|
+
# `-- NEXT (required) --` block naming what to reprint and the narration line.
|
|
141
|
+
|
|
142
|
+
# At the end of the run, print the closing report (per-phase elapsed, tokens,
|
|
143
|
+
# model, USD, totals) next to the work summary, and reprint both in your reply:
|
|
144
|
+
bash ~/.copilot/scripts/phase-tracker.sh report
|
|
145
|
+
bash ~/.copilot/scripts/render-work-summary.sh "$TASK_ID"
|
|
146
|
+
|
|
132
147
|
# After every LLM dispatch, record its token cost against the active phase (v5.5.0):
|
|
133
148
|
bash ~/.copilot/scripts/phase-tracker.sh tokens <N> <input_tokens> <output_tokens>
|
|
134
149
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.23.0",
|
|
4
4
|
"description": "8-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bulk-reader
|
|
3
|
+
description: "Reads ONE large file and returns a structured, line-numbered summary so the full text never enters the caller's context. Dispatched by bulk-read.sh when check-read-size.sh blocks a whole-file read. Haiku by default; a delegated read costs a fraction of a cent."
|
|
4
|
+
model: haiku
|
|
5
|
+
preferredModel: haiku
|
|
6
|
+
modelRationale: "Reading a file and reporting what is in it is extraction, not judgement - the task has a single source, a fixed output shape, and no reasoning chain. Haiku is the right rung and the whole point: the saving is the difference between this rung and the caller's. A worker that reasons is the wrong tool here, and the contract below forbids it explicitly, because a cheap rung's opinion about code is worth less than nothing."
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Bulk Reader
|
|
10
|
+
|
|
11
|
+
You are given ONE file and ONE question. You return ONE JSON object and nothing
|
|
12
|
+
else: no prose before it, no markdown fence around it, no commentary after it.
|
|
13
|
+
|
|
14
|
+
The file arrives with its lines numbered. Those numbers are the file's own, so a
|
|
15
|
+
number you report is a number the caller can open directly.
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
- **Every claim carries the line numbers it comes from.** A claim without them is
|
|
20
|
+
not usable - the caller cannot open it, cannot check it, and ends up reading
|
|
21
|
+
the file itself, having now paid for it twice. If you cannot cite it, do not
|
|
22
|
+
claim it.
|
|
23
|
+
- **You describe what IS in the file.** You do not review it, do not judge its
|
|
24
|
+
quality, do not propose changes, and do not name defects. Judgement about code
|
|
25
|
+
is the caller's; you are here so the caller has something to judge.
|
|
26
|
+
- **You never guess.** If the question cannot be answered from this file, say
|
|
27
|
+
exactly that in `answer` and return an empty `regions`. A confident wrong
|
|
28
|
+
summary is the one outcome worse than the caller paying full price for the
|
|
29
|
+
file, because nothing downstream can tell it is wrong.
|
|
30
|
+
- **`regions` are where a reader should look next**, most important first, at
|
|
31
|
+
most 8. Each one is a span worth opening on its own - not the whole file
|
|
32
|
+
restated as one region.
|
|
33
|
+
- If you did not see the whole file, set `truncated: true`. Do not summarize a
|
|
34
|
+
part as though it were the whole.
|
|
35
|
+
|
|
36
|
+
## Output Format
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"answer": "<direct answer to the question, or why this file cannot answer it>",
|
|
41
|
+
"summary": "<what this file is and does, 3-6 sentences>",
|
|
42
|
+
"symbols": [{"name": "<declaration>", "kind": "type|func|var|extension|other", "line": 42}],
|
|
43
|
+
"regions": [{"why": "<what a reader finds here>", "start": 120, "end": 180}],
|
|
44
|
+
"truncated": false
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Contract: `pipeline/schemas/bulk-read-output.schema.json`.
|
|
49
|
+
|
|
50
|
+
## What this agent does NOT do
|
|
51
|
+
|
|
52
|
+
- Does NOT review, rate, or critique the code it reads.
|
|
53
|
+
- Does NOT read a second file, follow an import, or look anything up.
|
|
54
|
+
- Does NOT answer from prior knowledge of a framework - only from this file.
|
|
55
|
+
- Does NOT edit anything. It has no write path by design: a summary has no
|
|
56
|
+
reliable basis for an edit, which is why the caller comes back with a bounded
|
|
57
|
+
read before changing a line.
|
|
@@ -91,7 +91,6 @@ Lib scripts (`~/.claude/lib/`):
|
|
|
91
91
|
| `language [en\|tr]` | Show or set the assistant `outputLanguage` (explanations and chat replies). `promptLanguage` is locked to `en` and is not toggleable. No arg = show current `outputLanguage`. With `en` or `tr` = set and persist `outputLanguage`. External payloads (commits, PR bodies, Jira) stay English. |
|
|
92
92
|
| `setup` | Keychain token + Git Identity onboarding |
|
|
93
93
|
| `--local` | No worktree - works directly on local branch |
|
|
94
|
-
| `--dev` and `dev-*` | **Removed in v16.0.0.** Depth is the Phase 0 Step 7.5 question, not a flag. Print the redirect and continue at `/multi-agent` (or `:local`) with Short selected; for the two autopilot names there is no equivalent, so print the stub's two options and stop. |
|
|
95
94
|
| `autopilot` | Skip user confirmations, auto commit/PR |
|
|
96
95
|
| No args / `help` | Show usage guide |
|
|
97
96
|
|
|
@@ -124,10 +123,6 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
|
|
|
124
123
|
| `build-optimize` | `$HOME/.claude/commands/multi-agent/build-optimize/SKILL.md` |
|
|
125
124
|
| `local` | `$HOME/.claude/commands/multi-agent/local/SKILL.md` |
|
|
126
125
|
| `local-autopilot` | `$HOME/.claude/commands/multi-agent/local-autopilot/SKILL.md` |
|
|
127
|
-
| `dev` | `$HOME/.claude/commands/multi-agent/dev/SKILL.md` |
|
|
128
|
-
| `dev-autopilot` | `$HOME/.claude/commands/multi-agent/dev-autopilot/SKILL.md` |
|
|
129
|
-
| `dev-local` | `$HOME/.claude/commands/multi-agent/dev-local/SKILL.md` |
|
|
130
|
-
| `dev-local-autopilot` | `$HOME/.claude/commands/multi-agent/dev-local-autopilot/SKILL.md` |
|
|
131
126
|
| `create-jira` | `$HOME/.claude/commands/multi-agent/create-jira/SKILL.md` (loads `$HOME/.claude/multi-agent-refs/generate-issue.md`) |
|
|
132
127
|
| `stack` | `$HOME/.claude/commands/multi-agent/stack/SKILL.md` |
|
|
133
128
|
| `language` | Handled inline - set/show prompt language in preferences |
|
|
@@ -95,11 +95,6 @@ Four pipeline entries:
|
|
|
95
95
|
|
|
96
96
|
/multi-agent:resume-local [jira-id] [autopilot] Continue already-done LOCAL work: Review → Build+Test → PR → Jira analysis + test scenarios (no dev)
|
|
97
97
|
|
|
98
|
-
Removed in v16.0.0:
|
|
99
|
-
:dev -> /multi-agent + Short · :dev-local -> :local + Short
|
|
100
|
-
:dev-autopilot and :dev-local-autopilot have no equivalent - fast plus
|
|
101
|
-
unattended is gone; pick unattended-and-Full or fast-and-attended.
|
|
102
|
-
|
|
103
98
|
------------------------------------------------------------
|
|
104
99
|
|
|
105
100
|
Status & Resume:
|
|
@@ -372,11 +367,6 @@ Dört pipeline girişi:
|
|
|
372
367
|
|
|
373
368
|
/multi-agent:resume-local [jira-id] [autopilot] Lokalde biten işi sürdür: Review → Build+Test → PR → Jira teknik analiz + test senaryoları (dev yok)
|
|
374
369
|
|
|
375
|
-
v16.0.0'da kaldırılanlar:
|
|
376
|
-
:dev -> /multi-agent + Kısa · :dev-local -> :local + Kısa
|
|
377
|
-
:dev-autopilot ve :dev-local-autopilot'un karşılığı yok - hızlı+gözetimsiz
|
|
378
|
-
bitti; ya gözetimsiz-ve-Tam ya hızlı-ve-insan-başında seçilir.
|
|
379
|
-
|
|
380
370
|
------------------------------------------------------------
|
|
381
371
|
|
|
382
372
|
Status & Resume:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Audit an iOS module against the shared coding-standard registry (99 stable-ID rules), produce a remediation plan, then hand off to
|
|
3
|
-
description-tr: "Bir iOS modulunu paylasilan kodlama-standardi registry'sine (99 sabit-ID kural) gore denetler, duzeltme plani cikarir, sonra
|
|
2
|
+
description: "Audit an iOS module against the shared coding-standard registry (99 stable-ID rules), produce a remediation plan, then hand off to /multi-agent or :local. Use for a standards pass on a module, or when a review needs rule IDs rather than opinions."
|
|
3
|
+
description-tr: "Bir iOS modulunu paylasilan kodlama-standardi registry'sine (99 sabit-ID kural) gore denetler, duzeltme plani cikarir, sonra /multi-agent veya :local'e devreder. Bir modulde standart gecisi icin, ya da bir review'un gorus yerine kural ID'si istedigi durumda kullan."
|
|
4
4
|
argument-hint: "[module name or path]"
|
|
5
5
|
allowed-tools: Skill, Bash, Read, Edit, Write, AskUserQuestion
|
|
6
6
|
---
|
|
@@ -67,7 +67,7 @@ Depth is a separate axis, asked at Phase 0 Step 7.5 rather than encoded in the c
|
|
|
67
67
|
|
|
68
68
|
## Delegation
|
|
69
69
|
|
|
70
|
-
Orchestrator routing: the routing table in `$HOME/.claude/commands/multi-agent/SKILL.md` resolves `local-autopilot` as the union of the `
|
|
70
|
+
Orchestrator routing: the routing table in `$HOME/.claude/commands/multi-agent/SKILL.md` resolves `local-autopilot` as the union of the `local` + `autopilot` mode mixins. Contract details: `$HOME/.claude/multi-agent-refs/phases/phase-0-init.md` Step 6 (local branch) + `$HOME/.claude/multi-agent-refs/phases/phase-2-planning.md` Step 5 (autopilot gate skip + safety classifier).
|
|
71
71
|
## Required: outward-facing payload contracts
|
|
72
72
|
|
|
73
73
|
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
@@ -12,7 +12,7 @@ You already did the work locally - wrote code on the current branch and maybe
|
|
|
12
12
|
|
|
13
13
|
## When to use it
|
|
14
14
|
|
|
15
|
-
- You ran
|
|
15
|
+
- You ran `:local` and answered Short (which skips Review + Test) and now want the full quality tail on the same branch.
|
|
16
16
|
- You hand-coded or hand-tested a change and want review + build/test + PR + Jira write-up without re-running dev.
|
|
17
17
|
- You want the "reviewed, built, tested, PR'd, documented on Jira" finish with a single command.
|
|
18
18
|
|
|
@@ -47,7 +47,7 @@ Phases 1-3 (Analysis / Planning / Dev) are skipped by design - `ship` treats t
|
|
|
47
47
|
1. **Project + branch:** detect project (cwd), current branch (`git branch --show-current`). No worktree; work stays on the current branch.
|
|
48
48
|
2. **Base + diff:** resolve base branch in order: `--base <arg>` → `figma-config.project.baseBranch` → `develop` → the branch's upstream/merge-base. The **work under review** is `git diff <base>...HEAD` PLUS uncommitted working-tree changes (`git status`). Abort with a clear message if the diff is empty (`ERR: no local work to finish on <branch> vs <base>`).
|
|
49
49
|
3. **Task binding:** Jira id from the `--`/positional arg, else parse the branch name (`bugfix/PROJ-XXXX` / `feature/PROJ-XXXX`); `taskType` inferred from the diff (bugfix/feature/refactor/chore) for the report wording. GitHub issue `#N` from branch/arg when present.
|
|
50
|
-
4. **Prior state (optional):** if an `agent-state.json` / tracker-state exists for this branch (left by a prior
|
|
50
|
+
4. **Prior state (optional):** if an `agent-state.json` / tracker-state exists for this branch (left by a prior `:local` run), load its analysis summary + Jira/issue binding to enrich the report; otherwise synthesize a minimal state over the diff. Never require a prior full-pipeline run.
|
|
51
51
|
5. Persist state under `.claude/logs/multi-agent/{project}/{taskId}/` (same as `--local`).
|
|
52
52
|
|
|
53
53
|
## Phase execution (reuse the existing phase contracts)
|
|
@@ -813,13 +813,15 @@ To set up multi-agent on a new machine:
|
|
|
813
813
|
|
|
814
814
|
All tokens are optional in the sense that every service can be answered with Skip - but the ASKING is not optional: the Step 3 sequential loop still walks every missing service one by one (token → author → host). Phase 0 re-asks at runtime only for tokens the user skipped here.
|
|
815
815
|
|
|
816
|
-
### Step 8 - Enforcement
|
|
816
|
+
### Step 8 - Enforcement hooks (optional, Claude Code)
|
|
817
817
|
|
|
818
|
-
Offer to make the
|
|
818
|
+
Offer to make the three hookable gates HARD (a non-zero exit blocks the tool call). The block ships at `install/templates/claude-hooks.json`: secret scan, agent-guard, read-size gate.
|
|
819
|
+
|
|
820
|
+
- Ask (picker): "Install the pipeline's PreToolUse gates into `~/.claude/settings.json`?" Default Yes.
|
|
821
|
+
- On Yes, deep-merge the template's `hooks.PreToolUse` (preserve existing hooks; never duplicate a matcher already calling the same script).
|
|
822
|
+
- Say what the merge does NOT cover: only these three need no run-specific arguments, so only these three are hookable; the rest are phase-enforced.
|
|
823
|
+
- Say what it does not turn on: the read-size gate is inert until `prefs.global.bulkRead.mode` is set. Recommend `observe` first. Why, and the Phase 3 exemption: `$HOME/.claude/multi-agent-refs/picker-contract.md`.
|
|
819
824
|
|
|
820
|
-
- Ask (picker): "Install the pre-commit secret-scan hook into `~/.claude/settings.json`?" Default Yes.
|
|
821
|
-
- On Yes, deep-merge the template's `hooks.PreToolUse` into the user's `settings.json` (preserve any existing hooks; do not duplicate a matcher that already calls `pre-commit-check.sh`).
|
|
822
|
-
- Honest note to show: this is the only deterministic gate that is OS-enforceable as a hook (it needs no run-specific arguments). The evidence / consensus / intent / learnings gates are invoked by the pipeline phases with per-run arguments, so they are enforced by the phase contract + the installed gate scripts, not by a hook.
|
|
823
825
|
### Step 9 - Default stack plugin enablement
|
|
824
826
|
|
|
825
827
|
Stack skills ship as versioned plugins in the `{owner}/multi-agent-plugins` marketplace. On first setup, wire the stack so the pipeline works out of the box.
|
|
@@ -59,8 +59,8 @@ Run every step automatically:
|
|
|
59
59
|
```
|
|
60
60
|
Step 1: PLATFORM Detect macOS / Linux / Windows (Git Bash / WSL); export PLATFORM env
|
|
61
61
|
Step 1.5: DETECT Compare timestamps, find stale targets
|
|
62
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
63
|
-
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill +
|
|
62
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 51 sub-command skills)
|
|
63
|
+
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 51 specs as refs + 8 agent TOML)
|
|
64
64
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub, bash -n on all sh)
|
|
65
65
|
Step 3c: PLUGINS pipeline shared/external -> multi-agent-plugins marketplace (rebuild knowledge/,
|
|
66
66
|
bump changed plugins' patch version, commit + push the plugins repo)
|
|
@@ -166,7 +166,7 @@ If nothing is stale → report "All targets up to date" and stop.
|
|
|
166
166
|
Unlike the Copilot step, this one does **not** hand-copy files. The Codex tree is a
|
|
167
167
|
*transform* of the Claude tree, not a mirror of it, and the transform is real work:
|
|
168
168
|
|
|
169
|
-
- the
|
|
169
|
+
- the 51 sub-command specs become reference files, because Codex silently truncates
|
|
170
170
|
its skills block (see `cross-cli-contract.md` 2.6 for the measurement)
|
|
171
171
|
- every `$HOME/.claude/...` reference to a CLI-owned tree is retargeted, with
|
|
172
172
|
`agents/<persona>.md` becoming `.toml` and the dispatcher becoming the router skill
|
|
@@ -480,25 +480,25 @@ When invoked with the `release` argument:
|
|
|
480
480
|
## Sub-Command Sync (Claude Code <-> Copilot CLI Skills)
|
|
481
481
|
|
|
482
482
|
This runs on the Claude <-> Copilot axis. Codex is NOT synced here: it receives the
|
|
483
|
-
same
|
|
483
|
+
same 51 specs as reference files rather than as peer skills, via Step 2b - see
|
|
484
484
|
`cross-cli-contract.md` 2.6 for why the parity axis differs per host.
|
|
485
485
|
|
|
486
486
|
| Claude Code | Copilot CLI |
|
|
487
487
|
|-------------|-------------|
|
|
488
488
|
| `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
489
489
|
|
|
490
|
-
**
|
|
490
|
+
**51 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
|
|
491
491
|
|
|
492
492
|
```
|
|
493
493
|
analysis, analysis-resolve, autopilot, build-optimize, channels,
|
|
494
|
-
complaint-analysis, create-jira, design-check,
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
494
|
+
complaint-analysis, create-jira, design-check, diff-explain, feedback,
|
|
495
|
+
forget, garbage-collect, graph, help, ios-coding-standard, issue, jira,
|
|
496
|
+
kill, language, local, local-autopilot, log, manual-test, prune-logs,
|
|
497
|
+
prune-prompts, purge, refactor, resume, resume-local, review,
|
|
498
|
+
review-analysis, review-issue, review-jira, routines, save, scan, search,
|
|
499
|
+
setup, stack, status, steer, store-ready, sync, test, test-accessibility,
|
|
500
|
+
test-dark-mode, test-dynamic-type, test-screenshots, testflight-validation,
|
|
501
|
+
uninstall, update
|
|
502
502
|
```
|
|
503
503
|
|
|
504
504
|
**NOT synced**: `$HOME/.claude/multi-agent-refs/*` - lazy-load references, Claude Code specific
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 1. Command Inventory (
|
|
9
|
+
## 1. Command Inventory (51 commands)
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
analysis, analysis-resolve, autopilot, build-optimize, channels,
|
|
13
|
-
complaint-analysis, create-jira, design-check,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
complaint-analysis, create-jira, design-check, diff-explain, feedback,
|
|
14
|
+
forget, garbage-collect, graph, help, ios-coding-standard, issue, jira,
|
|
15
|
+
kill, language, local, local-autopilot, log, manual-test, prune-logs,
|
|
16
|
+
prune-prompts, purge, refactor, resume, resume-local, review,
|
|
17
|
+
review-analysis, review-issue, review-jira, routines, save, scan, search,
|
|
18
|
+
setup, stack, status, steer, store-ready, sync, test, test-accessibility,
|
|
19
|
+
test-dark-mode, test-dynamic-type, test-screenshots, testflight-validation,
|
|
20
|
+
uninstall, update
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Categories:
|
|
@@ -25,15 +25,12 @@ Categories:
|
|
|
25
25
|
- **Interactive pickers** (single-purpose, not modes): `jira`, `issue`
|
|
26
26
|
- **Issue generator** (one-shot, no worktree, asks type Task/Bug/Story, hard approval gate before create): `create-jira`
|
|
27
27
|
- **Pipeline entries**: `autopilot`, `local`, `local-autopilot` (plus the bare `/multi-agent` in the dispatcher). Depth is not a command: `/multi-agent` and `local` ask Full or Short at Phase 0 Step 7.5; the two autopilot entries never ask and always run Full.
|
|
28
|
-
- **Retired stubs** (v16.0.0, deleted next minor - they print a redirect and run no phase): `dev`, `dev-local` redirect to the picker entries with Short; `dev-autopilot`, `dev-local-autopilot` have no equivalent, because fast-plus-unattended no longer exists
|
|
29
28
|
- **Tail modes** (run the pipeline tail over already-done local work): `resume-local`
|
|
30
29
|
- **Ops commands** (one-shot, no worktree): `status`, `log`, `kill`, `steer`, `purge`, `uninstall`, `resume`, `review`, `review-jira`, `review-issue`, `analysis`, `analysis-resolve`, `complaint-analysis`, `build-optimize`, `channels`, `scan`, `search`, `diff-explain`, `garbage-collect`, `graph`, `prune-logs`, `prune-prompts`
|
|
31
30
|
- **Local audits** (worktree only to build; no commit, push, PR or channels): `design-check`, `testflight-validation`, `ios-coding-standard`. `testflight-validation` additionally never invokes `altool --upload-app` - a validation run must not be able to ship a build by accident.
|
|
32
31
|
- **Meta-ops**: `setup`, `sync`, `update`, `help`, `refactor`, `test`, `stack`, `manual-test`, `language`
|
|
33
32
|
- **Routines** (user-defined routine registry; the routines they create are local-only and never synced): `save`, `routines`, `forget`
|
|
34
33
|
|
|
35
|
-
The count is 55 files and 51 live commands until the four stubs are deleted, at which point both numbers become 51. A stub is still installed and still invocable, so counting it as absent would be wrong; counting it as a command would be worse.
|
|
36
|
-
|
|
37
34
|
> **Inventory drift is a contract violation.** Adding a slash command under `pipeline/commands/multi-agent/` without updating this list + its counterpart Copilot dir (`pipeline/skills/shared/core/multi-agent-<cmd>/`) is a merge blocker. `smoke-commands-skills-parity.sh` enforces command ↔ skill directory parity; `smoke-cross-cli-behavior.sh` enforces behavior parity. This doc is the authoritative command list - bump the count + table together.
|
|
38
35
|
|
|
39
36
|
### 1.1 Figma / component work (plugin-based on Claude Code; NOT parity-enforced)
|
|
@@ -244,6 +241,7 @@ argument-hint: "<input hint>"
|
|
|
244
241
|
|
|
245
242
|
| Concept | Claude Code | Copilot CLI | Codex CLI |
|
|
246
243
|
|---|---|---|---|
|
|
244
|
+
| Print the registration calls | `phase-tracker.sh tiles` (emits the TaskCreate list) | `phase-tracker.sh tiles` (emits the reprint instruction) | `phase-tracker.sh tiles` (emits the update_plan payload) |
|
|
247
245
|
| Register a phase | `TaskCreate` tool call with subject/description | `phase-tracker.sh add <N> <name>` | `update_plan` step, `status: pending` |
|
|
248
246
|
| Mark a phase in-progress | `TaskUpdate` → `in_progress` | `phase-tracker.sh update <N> in_progress` | `update_plan` step → `in_progress` |
|
|
249
247
|
| Mark a phase complete | `TaskUpdate` → `completed` | `phase-tracker.sh update <N> completed` | `update_plan` step → `completed` |
|
|
@@ -73,7 +73,7 @@ Bu is icin hangi pipeline? / Which pipeline for this task?
|
|
|
73
73
|
|
|
74
74
|
**Who is asked.** `/multi-agent` and `/multi-agent:local`. Both autopilot entries always run Full without asking.
|
|
75
75
|
|
|
76
|
-
**Why there is no fast-and-unattended combination.** It existed until v16.0.0
|
|
76
|
+
**Why there is no fast-and-unattended combination.** It existed until v16.0.0, and removing it was a real behaviour change, not a rename. Autopilot may not ask, so something has to choose, and unattended is the worst place to drop analysis and planning: nobody is watching to notice what the shortcut lost. A cron job or script that wants both now has to pick - stay unattended and pay for the full pipeline, or stay fast and have a person present.
|
|
77
77
|
|
|
78
78
|
**Pipeline in a Short run:**
|
|
79
79
|
|
|
@@ -12,16 +12,21 @@ $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
|
|
|
12
12
|
for p in 0:Init 1:Analysis 2:Planning 3:Dev 4:Review 5:Test 6:Commit 7:Report; do
|
|
13
13
|
$HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
14
14
|
done
|
|
15
|
+
$HOME/.claude/scripts/phase-tracker.sh tiles
|
|
15
16
|
$HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
16
17
|
```
|
|
17
18
|
|
|
19
|
+
`tiles` prints this host's widget-registration calls: **make them before continuing.** The card alone lands in collapsed tool output, so a run that skips them runs in silence. Contract: `tracker-contract.md`, "The card is not the widget".
|
|
20
|
+
|
|
18
21
|
If `INPUT_TASK_ID` isn't known yet (free-text, project not selected), use a placeholder; rename later via `mv` once parsed in Step 1.
|
|
19
22
|
|
|
20
|
-
Every subsequent phase (1-7) MUST call `phase-tracker.sh update <N> in_progress` on entry and `phase-tracker.sh update <N> completed|failed|skipped` on exit. Sub-phase milestones use `phase-tracker.sh sub <N> <subN> "<name>" <status>`. See `$HOME/.claude/multi-agent-refs/phases.md` "Visual Phase Tracker" for the full contract.
|
|
23
|
+
Every subsequent phase (1-7) MUST call `phase-tracker.sh update <N> in_progress` on entry and `phase-tracker.sh update <N> completed|failed|skipped` on exit. Each `update` prints a `-- NEXT (required) --` block: act on it. Sub-phase milestones use `phase-tracker.sh sub <N> <subN> "<name>" <status>`. See `$HOME/.claude/multi-agent-refs/phases.md` "Visual Phase Tracker" for the full contract.
|
|
24
|
+
|
|
25
|
+
`update <N> completed` **exits 3** for phases 1-4 with no recorded spend: record `model` + `tokens`, or pass `--no-llm`, then re-run it. Contract: `tracker-contract.md`, "Accounting is a gate".
|
|
21
26
|
|
|
22
27
|
##### TaskCreate ordering on Claude Code (strict)
|
|
23
28
|
|
|
24
|
-
On Claude Code, fire all `TaskCreate` calls in strict phase-number order (0 → 7) BEFORE any `TaskUpdate
|
|
29
|
+
On Claude Code, fire all `TaskCreate` calls in strict phase-number order (0 → 7) BEFORE any `TaskUpdate` - which is the order `tiles` prints them in. Full contract: `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
|
|
25
30
|
|
|
26
31
|
---
|
|
27
32
|
|
|
@@ -298,7 +298,7 @@ Set by the Phase 0 Step 7.5 depth picker, or by autopilot never (autopilot alway
|
|
|
298
298
|
|
|
299
299
|
Because the agent determines its own scope here, Phase 4 is the only place that checks the result against anything external. Record every skill, plugin skill and guide consulted during this phase into `state.telemetry.skillCalls[]` with the files it was applied to - Phase 4 resolves the criteria set independently, and this record is what lets it tell "applied and honoured" from "never opened".
|
|
300
300
|
|
|
301
|
-
**Never combined with autopilot.** Autopilot skips the depth question and runs Full, so `onlyDevelop` is false in every unattended run. "Fast plus unattended" was
|
|
301
|
+
**Never combined with autopilot.** Autopilot skips the depth question and runs Full, so `onlyDevelop` is false in every unattended run. "Fast plus unattended" was removed in v16.0.0 and no longer exists: something has to choose when nobody is asked, and unattended is the worst place to drop analysis and planning.
|
|
302
302
|
|
|
303
303
|
**Tracker visibility during Opus dispatch**: on Claude Code the model switch to Opus happens via subagent dispatch, and the parent widget cannot move while an Agent call is in flight. Dispatch per task from the self-generated task list (never one monolithic call for the whole phase), set the pre-dispatch `activeForm` marker, and record tokens between chunks - full rules in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "Delegated phases".
|
|
304
304
|
|
|
@@ -251,7 +251,14 @@ fi
|
|
|
251
251
|
|
|
252
252
|
The ledger is JSONL at `~/.claude/memory/multi-agent/<repo-slug>/learnings-ledger.jsonl`, next to the triage corpus, per-repo isolated. Its brief is replayed into Phase 1 analysis and Phase 4 triage on future runs.
|
|
253
253
|
|
|
254
|
-
Print
|
|
254
|
+
Print the closing report to the terminal. Two blocks, in this order - what the pipeline spent, then what it changed:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
bash $HOME/.claude/scripts/phase-tracker.sh report
|
|
258
|
+
bash $HOME/.claude/scripts/render-work-summary.sh "$TASK_ID" --worktree "$WORKTREE_PATH"
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
`report` prices the run phase by phase; `render-work-summary.sh` says what changed on disk. Both land in tool output, which the host collapses, so **reprint them in your reply** followed by this line:
|
|
255
262
|
|
|
256
263
|
```
|
|
257
264
|
{jiraId} complete
|
|
@@ -81,6 +81,6 @@ In autopilot, `ask_choice` resolves to `default` (or the safe first option) with
|
|
|
81
81
|
|
|
82
82
|
## Deterministic gates note
|
|
83
83
|
|
|
84
|
-
Claude Code's `PreToolUse` exit-2 hooks are the HARD blocking gates.
|
|
84
|
+
Claude Code's `PreToolUse` exit-2 hooks are the HARD blocking gates. Three ship, none needing run-specific arguments so they are naturally hookable: (1) `pre-commit-check.sh` scans the staged diff on every `git commit` and blocks on a detected secret; (2) `agent-guard.sh` runs on `git commit` + `git push` and blocks AI/assistant attribution in a commit message and force-push to a protected branch (main/master/develop); (3) `check-read-size.sh` runs on `Read` and on the shell commands that read a file whole, and routes an oversized read to a cheap worker (`bulk-read.sh`) instead of the caller's own rung. The first two inspect what a run WRITES; the third inspects what it pays to READ, and it is inert until `bulkRead.mode` is set to `observe` or `enforce`, so merging the block changes nothing until the user opts in. Its `observe` mode blocks nothing and only logs, which is how the baseline is measured before anything is routed. All three are self-contained, fail-open on internal error, and never execute the inspected command. The recommended hook block ships at `install/templates/claude-hooks.json`; `multi-agent:setup` offers to merge it into `~/.claude/settings.json`. The other deterministic gates (evidence, consensus, intent, learnings) are invoked by the pipeline phases with per-run arguments (a build-log path, the triage JSON, the free-text input), so they are phase-enforced by contract, not OS-hookable.
|
|
85
85
|
|
|
86
86
|
Copilot CLI has no `PreToolUse` equivalent, so the secret scan there is workflow-enforced (run as a phase step, not OS-blocked) plus a CI smoke-gate step.
|