@mmerterden/multi-agent-pipeline 20.23.1 → 20.24.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.
Files changed (74) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README.md +7 -6
  3. package/README.tr.md +6 -5
  4. package/docs/architecture.md +3 -3
  5. package/docs/ecosystem.md +5 -5
  6. package/docs/facts.json +3 -3
  7. package/install/catalog-history.json +1 -1
  8. package/install/templates/claude-hooks.json +14 -1
  9. package/manifest.json +77 -56
  10. package/package.json +1 -1
  11. package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +11 -2
  12. package/pipeline/commands/multi-agent/postmortem/SKILL.md +78 -0
  13. package/pipeline/commands/multi-agent/setup/SKILL.md +1 -1
  14. package/pipeline/commands/multi-agent/sync/SKILL.md +3 -3
  15. package/pipeline/lib/analysis-jira-write.sh +105 -22
  16. package/pipeline/lib/decisions.mjs +130 -0
  17. package/pipeline/lib/plan-todos.sh +156 -33
  18. package/pipeline/lib/task-graph.mjs +446 -0
  19. package/pipeline/lib/tdd-evidence.mjs +579 -0
  20. package/pipeline/multi-agent-refs/analysis-template-corporate.md +2 -0
  21. package/pipeline/multi-agent-refs/analysis-template.md +4 -2
  22. package/pipeline/multi-agent-refs/cross-cli-contract.md +4 -4
  23. package/pipeline/multi-agent-refs/features/analysis-jira.md +51 -3
  24. package/pipeline/multi-agent-refs/features/autopilot-decisions.md +34 -0
  25. package/pipeline/multi-agent-refs/features/model-fallback.md +4 -2
  26. package/pipeline/multi-agent-refs/features/mutation-probe.md +58 -0
  27. package/pipeline/multi-agent-refs/features/plan-checks.md +67 -0
  28. package/pipeline/multi-agent-refs/features/plan-todos.md +40 -1
  29. package/pipeline/multi-agent-refs/features/rework-escalation.md +49 -0
  30. package/pipeline/multi-agent-refs/features/scope-check.md +1 -0
  31. package/pipeline/multi-agent-refs/generate-issue.md +1 -1
  32. package/pipeline/multi-agent-refs/help/en.md +1 -0
  33. package/pipeline/multi-agent-refs/help/tr.md +1 -0
  34. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +2 -3
  35. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +5 -7
  36. package/pipeline/multi-agent-refs/phases/phase-3-review.md +13 -11
  37. package/pipeline/multi-agent-refs/phases/phase-5-report.md +3 -3
  38. package/pipeline/multi-agent-refs/picker-contract.md +3 -2
  39. package/pipeline/multi-agent-refs/response-shape.md +65 -0
  40. package/pipeline/rules/response-shape.md +18 -0
  41. package/pipeline/schemas/agent-state.schema.json +31 -1
  42. package/pipeline/schemas/plan-todos.schema.json +101 -0
  43. package/pipeline/schemas/planning-output.schema.json +46 -0
  44. package/pipeline/schemas/prefs.schema.json +117 -1
  45. package/pipeline/scripts/_jsonl.mjs +151 -0
  46. package/pipeline/scripts/_plan-overlap.mjs +231 -0
  47. package/pipeline/scripts/_redact.mjs +124 -10
  48. package/pipeline/scripts/analysis-story-body.mjs +26 -10
  49. package/pipeline/scripts/analysis-story-tree.mjs +210 -9
  50. package/pipeline/scripts/autopilot-publish.mjs +12 -1
  51. package/pipeline/scripts/cost-analyze.mjs +6 -24
  52. package/pipeline/scripts/decisions-log.mjs +118 -0
  53. package/pipeline/scripts/edit-syntax-gate.mjs +240 -0
  54. package/pipeline/scripts/edit-syntax-gate.sh +29 -0
  55. package/pipeline/scripts/find-polluter.mjs +281 -0
  56. package/pipeline/scripts/gate-ledger.mjs +46 -13
  57. package/pipeline/scripts/mutation-probe.mjs +484 -0
  58. package/pipeline/scripts/plan-complexity.mjs +259 -0
  59. package/pipeline/scripts/review-decision-gate.mjs +33 -1
  60. package/pipeline/scripts/rework-escalation.mjs +264 -0
  61. package/pipeline/scripts/test-strength.mjs +5 -3
  62. package/pipeline/scripts/transcript-index.mjs +950 -0
  63. package/pipeline/scripts/validate-planning.mjs +48 -6
  64. package/pipeline/skills/.skill-manifest.json +11 -7
  65. package/pipeline/skills/.skills-index.json +12 -1
  66. package/pipeline/skills/shared/README.md +4 -3
  67. package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -2
  68. package/pipeline/skills/shared/core/multi-agent-postmortem/SKILL.md +66 -0
  69. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  70. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +3 -3
  71. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +15 -0
  72. package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +13 -0
  73. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +8 -0
  74. package/pipeline/skills/skills-index.md +2 -1
package/CHANGELOG.md CHANGED
@@ -16,11 +16,40 @@ Internal file-layout changes that don't affect the slash-command surface are sti
16
16
 
17
17
  ## [Unreleased]
18
18
 
19
+ ## [20.24.0] - 2026-10-14
20
+
21
+ ### Added
22
+
23
+ - **Plan checks before approval.** `validate-planning.mjs` pairs every two tasks that touch the same file or name the same symbol in the optional `creates` / `removes` / `produces` / `consumes` lists and returns one anchored row per pair: two creators of one file fail the plan; removing what another task uses, a consumer not ordered after its producer and an unordered shared edit are warnings shown at the approval gate. `plan-complexity.mjs` scores each task 1-10 from the repository (files listed, code-graph fan-in of their declarations, modules spanned, dependents outside them, test surface); a task above `planComplexity.splitAbove` (default 7) is split before approval with its requirement ids carried onto the parts. Contract: `multi-agent-refs/features/plan-checks.md`.
24
+ - **Drift holds what was built on it.** `plan-todos.sh drift` compares the files a step changed with its planned `files[]`, `creates[]` and their test files (paths normalised) and takes its not-done count; every pending step that depends on it, directly or transitively, gets `needsReplan`, `next` reports it as waiting, `start` and `complete` refuse it, and `confirm-replan` releases it once its plan has been re-read. Applies where Phase 2 iterates plan todos (`planTodos.enabled`).
25
+ - **TDD evidence per todo.** `plan-todos.sh tdd-red` / `tdd-green` read the runner's own results (JUnit XML, an `.xcresult` bundle or its exported summary, xcodebuild / `swift test` logs) through `lib/tdd-evidence.mjs` and record `plan.todos[].tdd`; `complete` checks it per `tddEvidence.mode` (`off`, `warn` by default, `enforce`). Docs and chore todos, component tasks, test policy `none` and `complete --no-tests <reason>` are exempt with the reason recorded, and Phase 3 gives the reviewers one note per todo completed `unverified` or exempted by `--no-tests`. It applies where Phase 2 iterates plan todos (`planTodos.enabled`).
26
+ - **Rework escalation.** On the last rework round the cap allows, or when `review-delta` reports findings still present after a fix, `rework-escalation.mjs` dispatches a fresh dev agent one rung up the model-fallback ladder with the triage round and the prior attempt's diff as files. It never escalates against the cost budget, on a run that fell back, onto fable while that rung is off, or past `reworkEscalation.maxTier` (default `opus`), and every refusal is recorded with its reason.
27
+ - **Decisions made on your behalf.** Autopilot and unattended runs record every choice a person would otherwise have made in `state.decisions[]` as `{what, why, costIfWrong, at, phase}`: parks, blockers lowered to important, rework escalations, pickers resolved without asking, split consensus, date-gate fallbacks. The Phase 5 report and the autopilot PR body list them in one redacted section, and the PR body still passes the outbound gate.
28
+ - **Mutation probe on changed lines** (opt-in, `mutationProbe.enabled`). `mutation-probe.mjs` makes up to `mutationProbe.maxMutants` (5) simple mutants on the lines the diff added or changed, runs the test command in a disposable detached worktree, and reports each surviving mutant as an `important` finding that the tests are weak. The user's checkout is never written. Phase 3 Step 1.763; recipe in `features/mutation-probe.md`.
29
+ - **Syntax check after an edit** (opt-in, Claude Code). Set `editSyntaxGate.enabled` and merge the hooks block again through `/multi-agent:setup` (Step 8), which now carries the `PostToolUse` registration. The hook parses the edited file within 2 s (`swiftc -parse`, `node --check`, `py_compile` into a temp dir, JSON, `bash -n`) and tells the model about a syntax error; it never blocks, and stays silent when the parser is missing or slow.
30
+ - **`find-polluter.mjs`** bisects a test list from a clean state to the test that leaves a stray file (`--absent`) or breaks another test only when run before it (`--target`), and stops with exit 2 when state survives a trial and no `--reset` was given; `debugging-strategies` points at it.
31
+ - **`/multi-agent:postmortem [#id|transcript.jsonl] [--audit]`**: a read-only post-mortem of a run from its session transcripts. `transcript-index.mjs` indexes turns, loops of identical tool calls, stalls, compactions, subagents, errors and denials, token use and invocations, each cited as `file:line`, and redacts every excerpt (credentials, emails, hosts, paths, home directories) with a count. The report goes to the run's log directory; nothing is sent. Claude Code transcripts only.
32
+ - **Story dependencies in `/multi-agent:analysis-jira`.** A requirement row's `Depends on: <ids>` clause links the stories in Jira (`issueTree.dependencyLinkType`, default `Blocks`, prerequisite to dependent); a dependency cycle or a prerequisite no story covers makes the plan `incomplete`. Documents without the clause plan exactly as before.
33
+ - **Reply shape.** `rules/response-shape.md` (with its detail in `multi-agent-refs/response-shape.md`) shapes conversational replies: the answer or next action first, numbered single-action steps, at most five items shown without ever dropping a finding, errors as cause then fix, and a last line that says what happens next.
34
+ - **Maintainer evals** (not shipped; their live calls never run in `npm test`, which tests them against a fake CLI): `eval-skill-compliance-live.mjs` pressure-tests discipline rules against a no-rule baseline with deterministic graders, and `eval-ab-judge.mjs` judges prompt and style variants blind, with hash-stable labels, a judge-only rubric region and a blocker-first verdict. Both are dry-run by default and need `--live`, `MULTI_AGENT_LIVE_EVAL=1` and an explicit budget; documented in `pipeline/eval/README.md`.
35
+ - The App Store optimization skill orders the brief for a marketing frame around a real capture: device and size, the capture as the asset, verbatim captions per locale, brand tokens, explicit exclusions.
36
+
37
+ ### Changed
38
+
39
+ - `plan-todos.sh next` (with `planTodos.enabled`) answers from a task graph: the ready todo that unblocks the most pending work comes first, then the longest chain behind it, then plan order, and a todo a failed or missing dependency or a cycle blocks is named on stderr instead of leaving `next` silently empty.
40
+
41
+ ## [20.23.2] - 2026-10-13
42
+
43
+ ### Added
44
+
45
+ - `issueTree.storyPanels` sets the colours of a Story's wiki panels (`story`, `criteria`, `other`, each `#rrggbb`) or turns them off with `false`; `/multi-agent:create-jira` and `/multi-agent:analysis-jira` both read it. Unset keeps `#d4d39e`, `#d4a19e` and `#9eb6d4`, and a value that is not a colour keeps its default.
46
+ - `/multi-agent:analysis-jira` asks once, in an attended run with no `issueTree.subtaskRoles`, which sub-tasks every story gets, offering the site's own sub-task types (`analysis-jira-write.sh --subtask-types`), and saves the answer (`analysis-story-tree.mjs --save-subtasks`); "no sub-tasks" is remembered as `issueTree.subtaskRolesDeclined`.
47
+
19
48
  ## [20.23.1] - 2026-10-13
20
49
 
21
50
  ### Fixed
22
51
 
23
- - `/multi-agent:analysis-jira` finds a site's sub-task types on Jira Data Center 9, which answers only the per-project `createmeta/{project}/issuetypes`; sub-tasks were created under the generic `Sub-task` name there. `issueTree.subtaskIssueType` may now map each role to the site's type (`{"develop": "Development Task", "test": "Test Task"}`, `"*"` for any other role), a site with several sub-task types and no setting is named in the run's output, and the preview shows the type each role gets.
52
+ - `/multi-agent:analysis-jira` finds a site's sub-task types on Jira Data Center 9, which answers only the per-project `createmeta/{project}/issuetypes`; sub-tasks were created under the generic `Sub-task` name there. `issueTree.subtaskIssueType` may now map each role to the site's type (`{"develop": "Build Sub-task", "test": "QA Sub-task"}`, `"*"` for any other role), a site with several sub-task types and no setting is named in the run's output, and the preview shows the type each role gets.
24
53
  - The code graph reads Swift imports behind an attribute (`@testable import`, `@_exported import`, `@preconcurrency import`, `@_spi(...) import`).
25
54
  - Python type parameters (`class Box[T](Base):`) keep their bases, and a TypeScript base built by a call (`extends mixin(Base)`) adds no edge to the function.
26
55
  - A diff hunk that only inserts or only deletes lines is given to the declaration spanning both lines around it, at any context size; at `-U0` it was given to the line before it.
package/README.md CHANGED
@@ -17,7 +17,7 @@ Runs natively on Claude Code, Copilot CLI and Codex CLI. macOS only. Zero runtim
17
17
  ### Prerequisites
18
18
 
19
19
  - **Node.js >= 20.11** - required; the pipeline's own tooling runs on it.
20
- - **`jq`** - required for nine paths, optional for the rest. 92 shell files call it. The nine that publish or decide - the autopilot queue, Jira comments, PR reviews, issue updates, the plan file, both Figma fetchers, log search and Jira auth - refuse with exit 3 rather than run, because a missing `jq` renders as empty DATA and the work carries on with it. Everywhere else it still degrades. The install prints a note when it is missing.
20
+ - **`jq`** - required for nine paths, optional for the rest. 93 shell files call it. The nine that publish or decide - the autopilot queue, Jira comments, PR reviews, issue updates, the plan file, both Figma fetchers, log search and Jira auth - refuse with exit 3 rather than run, because a missing `jq` renders as empty DATA and the work carries on with it. Everywhere else it still degrades. The install prints a note when it is missing.
21
21
  - **`gh`** - for GitHub issue and PR work. Its built-in `--jq` is independent of the `jq` binary.
22
22
 
23
23
  ## Quick Start
@@ -158,7 +158,7 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
158
158
 
159
159
  ## Commands
160
160
 
161
- `/multi-agent` plus 64 sub-commands. `/multi-agent:help` renders the same catalog in your terminal, in your `outputLanguage`.
161
+ `/multi-agent` plus 65 sub-commands. `/multi-agent:help` renders the same catalog in your terminal, in your `outputLanguage`.
162
162
 
163
163
  ### Pipeline entries
164
164
 
@@ -192,6 +192,7 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
192
192
  | `/multi-agent:review-analysis` | Review a written analysis document; findings cite the Locked rule they break |
193
193
  | `/multi-agent:diff-explain` | Map a Phase 3 triage finding back to the diff lines that caused it |
194
194
  | `/multi-agent:estimate` | Effort range from similar closed work: P25-P75 per role, with the tickets behind it |
195
+ | `/multi-agent:postmortem` | Post-mortem of a run from its transcripts: loops, stalls, root-cause hypotheses on file:line |
195
196
  | `/multi-agent:scenario-audit` | Check test scenarios against the code; each PRESENT on a resolving file:line |
196
197
  | `/multi-agent:refactor` | Best-practice extraction + bug hunt + derived-skill drift + toolkit MCP research → one plan |
197
198
  | `/multi-agent:scan` | Skill security scan of local skill directories against a tiered pattern catalog |
@@ -406,17 +407,17 @@ This enables the matching plugin (+ the shared `ai-common` plugin) in the repo's
406
407
 
407
408
  ## Tool support
408
409
 
409
- The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 64 commands.
410
+ The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 65 commands.
410
411
 
411
412
  | Tool | Flag | What it installs |
412
413
  | ----------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
413
414
  | Claude Code | `--claude` (default) | slash commands + skills + agents + three `PreToolUse` hooks (secret scan, agent-guard, read-size gate) |
414
- | Copilot CLI | `--copilot` | instructions + 64 sub-command skills + scripts |
415
- | Codex CLI | `--codex` | one router skill + 64 specs as refs + 10 agent TOML + `AGENTS.md` block + `codex mcp add` |
415
+ | Copilot CLI | `--copilot` | instructions + 65 sub-command skills + scripts |
416
+ | Codex CLI | `--codex` | one router skill + 65 specs as refs + 10 agent TOML + `AGENTS.md` block + `codex mcp add` |
416
417
 
417
418
  Filter skills by stack with `--platform=ios\|android\|all`.
418
419
 
419
- **Why Codex gets one skill and not 64.** Codex assembles every discovered skill's name
420
+ **Why Codex gets one skill and not 65.** Codex assembles every discovered skill's name
420
421
  and description into a single prompt block and drops entries when it overflows, with no
421
422
  error. Measured on 0.145: installing one plugin that declares 142 skills surfaced only
422
423
  75 of them and evicted an unrelated user skill. So on Codex the pipeline ships a single
package/README.tr.md CHANGED
@@ -157,7 +157,7 @@ Koşunun kendisinde ayarlanabilen tek şey autopilot; geri kalan her şey kendi
157
157
 
158
158
  ## Komutlar
159
159
 
160
- `/multi-agent` ve 64 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
160
+ `/multi-agent` ve 65 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
161
161
 
162
162
  ### Pipeline girişleri
163
163
 
@@ -191,6 +191,7 @@ Koşunun kendisinde ayarlanabilen tek şey autopilot; geri kalan her şey kendi
191
191
  | `/multi-agent:review-analysis` | Yazılmış analiz dokümanını review eder; bulgular ihlal edilen Locked kuralını gösterir |
192
192
  | `/multi-agent:diff-explain` | Faz 4 triyaj bulgusunu onu doğuran diff satırlarına eşler |
193
193
  | `/multi-agent:estimate` | Benzer kapanmış işlerden efor aralığı: rol başına P25-P75, dayandığı ticket'larla |
194
+ | `/multi-agent:postmortem` | Koşunun transkriptlerinden post-mortem: döngüler, takılmalar, dosya:satır dayanaklı kök-neden hipotezleri |
194
195
  | `/multi-agent:scenario-audit` | Test senaryolarını koda karşı denetler; her VAR çözülen bir dosya:satıra dayanır |
195
196
  | `/multi-agent:refactor` | Best-practice çıkarımı + bug avı + türetilmiş skill drift'i + toolkit MCP araştırması → tek plan |
196
197
  | `/multi-agent:scan` | Yerel skill dizinlerini kademeli desen kataloğuna göre güvenlik taraması |
@@ -405,17 +406,17 @@ Bu, ilgili plugin'i (+ ortak `ai-common` plugin'ini) repo'nun `.claude/settings.
405
406
 
406
407
  ## Araç desteği
407
408
 
408
- Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 64 komutu alır.
409
+ Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 65 komutu alır.
409
410
 
410
411
  | Araç | Bayrak | Ne kurar |
411
412
  | ----------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
412
413
  | Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + üç `PreToolUse` hook'u (secret scan, agent-guard, okuma-boyutu geçidi) |
413
- | Copilot CLI | `--copilot` | talimatlar + 64 alt-komut skill'i + script'ler |
414
- | Codex CLI | `--codex` | bir router skill + ref olarak 64 spec + 10 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
414
+ | Copilot CLI | `--copilot` | talimatlar + 65 alt-komut skill'i + script'ler |
415
+ | Codex CLI | `--codex` | bir router skill + ref olarak 65 spec + 10 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
415
416
 
416
417
  Skill'leri stack'e göre filtrele: `--platform=ios\|android\|all`.
417
418
 
418
- **Codex neden 64 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
419
+ **Codex neden 65 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
419
420
  ve açıklamasını tek bir prompt bloğuna toplar ve blok taştığında girdileri hatasızca
420
421
  düşürür. 0.145 üzerinde ölçüldü: 142 skill deklare eden bir plugin kurulduğunda sadece
421
422
  75'i yüzeye çıktı ve alakasız bir kullanıcı skill'i tahliye edildi. Bu yüzden Codex'te
@@ -113,7 +113,7 @@ graph TB
113
113
  end
114
114
 
115
115
  subgraph "Pipeline Specs"
116
- CMD[commands/<br/>64 command files]
116
+ CMD[commands/<br/>65 command files]
117
117
  AGT[agents/<br/>10 agent personas]
118
118
  RUL[rules/<br/>13 domain rules]
119
119
  PHS[multi-agent-refs/phases/<br/>phase specs + contracts]
@@ -204,8 +204,8 @@ repo and the website, plus the two independently shipped repos
204
204
  ```mermaid
205
205
  graph TD
206
206
  CC["Claude Code<br/>(source of truth)"]
207
- COP["Copilot CLI<br/>(instructions + 64 sub-command skills)"]
208
- COD["Codex CLI<br/>(1 router skill + 64 refs)"]
207
+ COP["Copilot CLI<br/>(instructions + 65 sub-command skills)"]
208
+ COD["Codex CLI<br/>(1 router skill + 65 refs)"]
209
209
  REPO["Pipeline Repo<br/>(npm package)"]
210
210
  WEB["Website"]
211
211
  PLUGREPO["multi-agent-plugins<br/>(6 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 6-phase flow, the 64 slash commands, quality gates, review/triage, cross-CLI parity | npm package (`@mmerterden/multi-agent-pipeline`), installs itself onto Claude Code / Copilot CLI / Codex CLI |
8
+ | **`multi-agent-pipeline`** (this repo) | Orchestration: the 6-phase flow, the 65 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, 6 independently-versioned plugins |
10
10
  | **`multi-agent-toolkit-mcp`** | The pipeline's hands on devices and browsers: 197 MCP tools across 21 categories (simulator/emulator control, end-to-end locators and assertions, memory, crash diagnostics, accessibility audit, store compliance, web automation and scraping, Figma-vs-mock design audit, code intelligence, wallet passes, an agent-DSL batch runner, a full-text context index with text-to-image rendering, provider-backed research, verified hand-off of simple text tasks to free models, video key frames, offline security scoring, read-only access to related repositories at their latest branch, travel document fixtures, a voice channel, App Store Connect and Play Console APIs, virtual iPhones) | 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["6 phases · 64 commands"]
21
+ PHASES["6 phases · 65 commands"]
22
22
  GATES["deterministic gates + review triage"]
23
23
  end
24
24
 
@@ -68,8 +68,8 @@ only those:
68
68
  graph TD
69
69
  CC["Claude Code<br/>~/.claude/commands/multi-agent/<br/>(source of truth)"]
70
70
 
71
- CC -->|"Step 2: copy + reformat<br/>64 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
72
- CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 64 refs<br/>+ 10 agent TOML"]
71
+ CC -->|"Step 2: copy + reformat<br/>65 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
72
+ CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 65 refs<br/>+ 10 agent TOML"]
73
73
  CC -->|"Step 3: genericize<br/>(strip personal data)"| REPO["multi-agent-pipeline repo<br/>pipeline/"]
74
74
  CC -->|"Step 4: version + feature sync"| WEB["Website<br/>projects.ts / i18n.tsx"]
75
75
 
@@ -161,7 +161,7 @@ measurements behind this table):
161
161
 
162
162
  | | Claude Code | Copilot CLI | Codex CLI |
163
163
  |---|---|---|---|
164
- | **Pipeline commands** | 64 slash-command skills, native | 64 sub-command skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 64 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
164
+ | **Pipeline commands** | 65 slash-command skills, native | 65 sub-command skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 65 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
165
165
  | **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`) |
166
166
  | **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 |
167
167
  | **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/facts.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$comment": "Generated by pipeline/scripts/gen-facts.mjs. Do not hand-edit: the site reads this, and a number edited here instead of at its source is the drift this file removes.",
3
3
  "generatedAt": "2026-10-13",
4
- "version": "20.23.1",
4
+ "version": "20.24.0",
5
5
  "phaseSchema": 2,
6
6
  "phases": [
7
7
  {
@@ -35,9 +35,9 @@
35
35
  "autopilot": [0, 1, 2, 3, 4, 5],
36
36
  "analysis": [0, 1, 3, 4, 5]
37
37
  },
38
- "commandCount": 64,
38
+ "commandCount": 65,
39
39
  "skillCount": 161,
40
- "skillCountAll": 228,
40
+ "skillCountAll": 229,
41
41
  "agentCount": 10,
42
42
  "hosts": ["Claude Code", "Codex CLI", "Copilot CLI"],
43
43
  "toolCount": 197,