@mmerterden/multi-agent-pipeline 14.2.2 → 15.0.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 (122) hide show
  1. package/CHANGELOG.md +76 -6
  2. package/README.md +15 -8
  3. package/README.tr.md +15 -8
  4. package/docs/FIGMA_PIPELINE.md +3 -3
  5. package/docs/adr/0006-skills-core-external-split.md +1 -1
  6. package/docs/adr/0009-claude-stack-skills-plugin-only.md +31 -0
  7. package/docs/adr/README.md +1 -0
  8. package/docs/architecture.md +7 -7
  9. package/docs/ecosystem.md +28 -28
  10. package/docs/features.md +5 -5
  11. package/index.js +2 -0
  12. package/install/_codex-agents.mjs +11 -2
  13. package/install/_common.mjs +65 -1
  14. package/install/_dev-only-files.mjs +0 -1
  15. package/install/_platform-filter.mjs +73 -7
  16. package/install/_plugin-skills.mjs +19 -8
  17. package/install/claude.mjs +144 -59
  18. package/install/codex.mjs +28 -3
  19. package/install/copilot.mjs +36 -11
  20. package/install/index.mjs +6 -2
  21. package/install/templates/codex-instructions.md +1 -1
  22. package/install/templates/copilot-instructions.md +3 -3
  23. package/package.json +1 -2
  24. package/pipeline/commands/multi-agent/SKILL.md +2 -0
  25. package/pipeline/commands/multi-agent/analysis/SKILL.md +3 -3
  26. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
  27. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +9 -9
  28. package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
  29. package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +186 -0
  30. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
  31. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
  32. package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/help/SKILL.md +19 -4
  36. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +2 -2
  37. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
  38. package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +81 -0
  39. package/pipeline/commands/multi-agent/resume/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/{ship → resume-local}/SKILL.md +8 -8
  41. package/pipeline/commands/multi-agent/setup/SKILL.md +5 -5
  42. package/pipeline/commands/multi-agent/stack/SKILL.md +55 -43
  43. package/pipeline/commands/multi-agent/store-ready/SKILL.md +3 -3
  44. package/pipeline/commands/multi-agent/sync/SKILL.md +18 -11
  45. package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +1 -1
  46. package/pipeline/commands/multi-agent/uninstall/SKILL.md +2 -0
  47. package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
  48. package/pipeline/lib/issue-fetcher.sh +1 -1
  49. package/pipeline/lib/parse-complaints.sh +306 -0
  50. package/pipeline/multi-agent-refs/channels/wiki.md +3 -3
  51. package/pipeline/multi-agent-refs/complaint-analysis-template.md +99 -0
  52. package/pipeline/multi-agent-refs/component-dispatch.md +6 -6
  53. package/pipeline/multi-agent-refs/cross-cli-contract.md +16 -16
  54. package/pipeline/multi-agent-refs/features/external-context-injection.md +1 -1
  55. package/pipeline/multi-agent-refs/features/stack-skill-routing.md +5 -5
  56. package/pipeline/multi-agent-refs/generate-issue.md +1 -1
  57. package/pipeline/multi-agent-refs/phases/modes.md +1 -1
  58. package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -1
  59. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +7 -7
  60. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +5 -5
  61. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +3 -3
  62. package/pipeline/multi-agent-refs/phases/phase-4-review.md +12 -12
  63. package/pipeline/multi-agent-refs/phases/phase-5-test.md +1 -1
  64. package/pipeline/multi-agent-refs/tracker-contract.md +1 -1
  65. package/pipeline/multi-agent-refs/wiki-capture.md +2 -2
  66. package/pipeline/preferences-template.json +13 -5
  67. package/pipeline/rules/figma-pipeline.md +2 -2
  68. package/pipeline/schemas/agent-state.schema.json +1 -1
  69. package/pipeline/schemas/complaint-analysis-spec.schema.json +216 -0
  70. package/pipeline/schemas/migrations/prefs-2.5.0-to-2.6.0.mjs +46 -0
  71. package/pipeline/schemas/prefs.schema.json +276 -66
  72. package/pipeline/schemas/token-budget.json +2 -2
  73. package/pipeline/scripts/_stack-routing.mjs +79 -0
  74. package/pipeline/scripts/audit-log-rotate.sh +4 -1
  75. package/pipeline/scripts/build-skills-index.mjs +11 -0
  76. package/pipeline/scripts/build-stack-plugins.mjs +28 -60
  77. package/pipeline/scripts/check-derived-drift.mjs +52 -28
  78. package/pipeline/scripts/gc-worktrees.sh +4 -1
  79. package/pipeline/scripts/gen-skills-index.mjs +1 -1
  80. package/pipeline/scripts/match-skills.mjs +8 -2
  81. package/pipeline/scripts/migrate-prefs.mjs +28 -20
  82. package/pipeline/scripts/phase-tracker.sh +13 -5
  83. package/pipeline/scripts/phase0-exit-gate.mjs +3 -2
  84. package/pipeline/scripts/run-aggregator.mjs +7 -2
  85. package/pipeline/scripts/scan-agent-config.sh +1 -1
  86. package/pipeline/scripts/skill-conformance.mjs +165 -30
  87. package/pipeline/scripts/smoke-cross-cli-behavior.sh +1 -1
  88. package/pipeline/scripts/test-gap-rules/android.json +25 -0
  89. package/pipeline/scripts/test-gap-rules/ios.json +34 -0
  90. package/pipeline/scripts/test-gap-rules/node.json +29 -0
  91. package/pipeline/scripts/test-gap-rules/python.json +25 -0
  92. package/pipeline/scripts/uninstall.mjs +158 -11
  93. package/pipeline/scripts/validate-complaint-doc.mjs +229 -0
  94. package/pipeline/scripts/validate-reviewer.mjs +9 -3
  95. package/pipeline/skills/.skill-manifest.json +156 -108
  96. package/pipeline/skills/.skills-index.json +449 -12
  97. package/pipeline/skills/shared/README.md +14 -10
  98. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  99. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  100. package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +49 -0
  101. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
  102. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
  103. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
  104. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
  105. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -2
  106. package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +83 -0
  107. package/pipeline/skills/shared/core/{multi-agent-ship → multi-agent-resume-local}/SKILL.md +6 -6
  108. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +79 -22
  109. package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +1 -1
  110. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -8
  111. package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +1 -1
  112. package/pipeline/skills/shared/external/ios-coding-standard/modules/_TEMPLATE.yml +2 -2
  113. package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +368 -33
  114. package/pipeline/skills/shared/external/ios-coding-standard/references/swiftlint.draft.yml +1 -2
  115. package/pipeline/skills/shared/external/ios-coding-standard/scripts/check_structure.py +765 -0
  116. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +75 -0
  117. package/pipeline/skills/shared/external/ios-module-structure/modules/_TEMPLATE.yml +131 -0
  118. package/pipeline/skills/shared/external/ios-module-structure/references/rules.yml +559 -0
  119. package/pipeline/skills/shared/external/ios-module-structure/scripts/check_structure.py +765 -0
  120. package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +53 -10
  121. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +4 -3
  122. package/pipeline/skills/skills-index.md +7 -4
package/CHANGELOG.md CHANGED
@@ -16,6 +16,76 @@ Internal file-layout changes that don't affect the slash-command surface are sti
16
16
 
17
17
  ## [Unreleased]
18
18
 
19
+ ## [15.0.0] - 2026-08-13
20
+
21
+ ### Changed (BREAKING)
22
+
23
+ - **Claude Code stack skills are plugin-only** (ADR-0009). The installer no longer
24
+ copies `shared/core` + `shared/external` into `~/.claude/skills`; the
25
+ `multi-agent-plugins` marketplace is Claude Code's only stack-skill source,
26
+ namespaced (`ai-ios-toolkit:<skill>`). Exactly two pipeline-owned compliance
27
+ catalogs stay local (`PIPELINE_LOCAL_SKILLS`). Old installs are migrated
28
+ manifest-scoped (`.external-skills-manifest.json`); user-authored dirs survive.
29
+ - **Marketplace plugin names lose the `engineering` infix**:
30
+ `ai-<stack>-engineering-toolkit` -> `ai-<stack>-toolkit`. `enabledPlugins`
31
+ keys must migrate; `/multi-agent:stack` deletes the retired keys.
32
+ - **`/multi-agent:ship` -> `/multi-agent:resume-local`** (the tail command opens a
33
+ PR but merges nothing, so "ship" oversold it). Prefs `global.ship` ->
34
+ `global.resumeLocal` via schema 2.6.0 (step migration + monolith, autoFix value
35
+ carried across the finish -> ship -> resume-local chain).
36
+
37
+ ### Added
38
+
39
+ - `/multi-agent:stack` **multi-select**: several stacks per call (`ios backend`),
40
+ a native multi-select picker with no args, `web` alias, always-on
41
+ `ai-common-toolkit`, legacy-key cleanup, and a Copilot/Codex refresh offer.
42
+ - Every marketplace plugin ships **`ai-<stack>-toolkit:help`**: a language-aware
43
+ catalog rendered live from `plugin.json` (drift-proof by construction).
44
+ - `pipeline/scripts/_stack-routing.mjs`: the single routing table shared by
45
+ `build-stack-plugins.mjs`, the installers and the skills index.
46
+ - Skills index entries carry `plugin` + `invokeAs`; `match-skills.mjs` returns
47
+ plugin-namespaced names. `skill-conformance.mjs` probes the marketplace
48
+ checkout and version-named plugin cache as skills roots.
49
+
50
+ ### Changed
51
+
52
+ - Copilot CLI and Codex CLI local copies are **filtered to the enabled stacks**
53
+ (`pluginsToDeliver` + `partitionExternalSkillsByPlugins`); Codex previously
54
+ received the full catalog unconditionally and now also writes a delivery
55
+ manifest. One `/multi-agent:stack` selection governs all three hosts.
56
+ - Prompt-context skill tables (phase 1/2/4), `humanizer` invocations,
57
+ `build-optimize` dispatches and the store-review references are
58
+ plugin-namespaced.
59
+ - `DESC_CEILING` 82000 -> 82600 and phase-doc total 52750 -> 53100: the
60
+ namespaced tables and the new command descriptions did not fit ceilings that
61
+ were already at (or 193 bytes past) their limit; the always-on surface itself
62
+ shrank with the local copy gone.
63
+
64
+
65
+ ### Added
66
+
67
+ - **`/multi-agent:complaint-analysis`** — customer-complaint / customer-reported-error
68
+ triage as a new one-shot ops command (51st command). Ingests complaints from
69
+ free-text paste, csv/xlsx/txt/json exports (`pipeline/lib/parse-complaints.sh`,
70
+ with built-in PII redaction: email / phone / card / national-id / PNR shapes),
71
+ Jira issues, or Confluence URLs; fetches Graylog evidence per
72
+ trxId/conversationId via the existing `fetch-graylog.sh`; correlates read-only
73
+ against the selected client + BFF repos (user-confirmed layer tagging:
74
+ ios / android / web / mobile-bff / web-bff); and classifies each complaint as
75
+ `client:<layer>` / `bff:<layer>` (root cause + citations + a fix plan grounded
76
+ in the existing architecture + a ready-to-run dev prompt), `core` (routing
77
+ recommendation to the backend core team, never a fix analysis), or
78
+ `insufficient-evidence`. Report dispatches to Local (default) / Confluence /
79
+ Jira behind a deterministic gate (`scripts/validate-complaint-doc.mjs`:
80
+ sections, verdict tokens, per-core routing entries, humanizer punctuation,
81
+ redaction-leak scan; smoke: `smoke-validate-complaint-doc.sh`). State contract:
82
+ `schemas/complaint-analysis-spec.schema.json`. Graylog-as-primary-evidence is a
83
+ documented, command-scoped exception to the advisory-only rule in
84
+ `features/external-context-injection.md`. `DESC_CEILING` raised 81000 -> 82000
85
+ (gate + pinned test together): the two new ~430-byte descriptions did not fit
86
+ in the ~25 bytes of headroom the surface had left; the average stays at 319
87
+ against the 420 ceiling.
88
+
19
89
  ## [14.2.2] - 2026-08-04
20
90
 
21
91
  ### Added
@@ -1911,7 +1981,7 @@ Single-source skill management, an upgraded `refactor` command, and two new Phas
1911
1981
  - **Component/Figma work is plugin-only.** The pipeline no longer bundles the
1912
1982
  `figma-ios` / `figma-android` / `figma-common` skill trees. Phase 3 dispatches
1913
1983
  component and Figma-to-code work to the per-stack marketplace plugins
1914
- (`ai-ios-engineering-toolkit` / `ai-android-engineering-toolkit`) via the Skill
1984
+ (`ai-ios-toolkit` / `ai-android-toolkit`) via the Skill
1915
1985
  tool, so component skills live in one place. The 3-tier Figma design-access
1916
1986
  fallback still governs the analysis phase.
1917
1987
  - **Command layout migrated to `<name>/SKILL.md`.** Each subcommand is now its own
@@ -1952,7 +2022,7 @@ Skill mining + an install-safety fix.
1952
2022
  write-if-missing: new baseline rules are added, existing local rules are
1953
2023
  preserved untouched. New `copyDir({ skipExisting })` option backs this.
1954
2024
  - **Two skills mined from the corporate iOS toolkit and genericized into
1955
- `ai-common-engineering-toolkit` (v0.1.2):**
2025
+ `ai-common-toolkit` (v0.1.2):**
1956
2026
  - `skill-creator` — the house rules for authoring skills (description-first
1957
2027
  discovery, lean SKILL.md as an index, progressive disclosure, reference vs
1958
2028
  workflow vs tool layers, no-prefix naming, grow-from-failure), with a
@@ -1987,7 +2057,7 @@ operating systems, all additive and opt-in.
1987
2057
  no-progress stall, an identical repeated failure, a rework storm, cost drift
1988
2058
  past the `costBudget` ceiling, or a merge/rebase conflict. Continuing
1989
2059
  unattended off the happy path is the less safe choice.
1990
- - **Three technique skills** added to `ai-common-engineering-toolkit`
2060
+ - **Three technique skills** added to `ai-common-toolkit`
1991
2061
  (v0.1.1): `council` (multi-voice adversarial decision), `search-first`
1992
2062
  (research-before-coding with an adopt/extend/compose/build matrix), and
1993
2063
  `agent-introspection-debugging` (capture -> diagnose -> contained-recovery ->
@@ -2343,7 +2413,7 @@ Fable 5 restored as the top model tier; `stack-swap` fully removed; setup gains
2343
2413
  setup detects the project stack from markers (`.xcodeproj`/`Package.swift` → iOS,
2344
2414
  `build.gradle` → Android, `package.json`+react → Frontend, `requirements.txt`/
2345
2415
  `pyproject.toml` → Backend) and enables the matching marketplace plugin plus the
2346
- always-on `ai-common-engineering-toolkit`. **No clear marker → default iOS.** So a
2416
+ always-on `ai-common-toolkit`. **No clear marker → default iOS.** So a
2347
2417
  fresh install works out of the box and a repo at any org gets its correct stack.
2348
2418
 
2349
2419
  ### Changed
@@ -2377,7 +2447,7 @@ Stack skills move from the local `stack-swap` mechanic to versioned marketplace
2377
2447
  `plugin.json` `skills[]`, and **bumps the patch version of any plugin whose
2378
2448
  skill set changed**. Idempotent (`--dry-run` supported); a no-op run bumps
2379
2449
  nothing. Cross-stack skills (accessibility audit, humanizer, Firebase) route
2380
- to `ai-common-engineering-toolkit`; Apple/Xcode-only skills stay in the iOS
2450
+ to `ai-common-toolkit`; Apple/Xcode-only skills stay in the iOS
2381
2451
  plugin. This is the version-based-management backbone: the pipeline is the
2382
2452
  single authoring source, the marketplace is a derived, versioned artifact.
2383
2453
  - **`multi-agent:sync` Step 3c (PLUGINS)** — runs the generator, then commits +
@@ -2387,7 +2457,7 @@ Stack skills move from the local `stack-swap` mechanic to versioned marketplace
2387
2457
 
2388
2458
  - **`/multi-agent:stack`** — selecting a stack no longer moves skill directories
2389
2459
  via `stack-swap.sh`. It now enables the matching marketplace plugin(s) (stack
2390
- toolkit + `ai-common-engineering-toolkit`) in the current repo's
2460
+ toolkit + `ai-common-toolkit`) in the current repo's
2391
2461
  `.claude/settings.json` `enabledPlugins`, disabling the stack toolkits that
2392
2462
  don't apply. Declarative, per-repo, versioned. No SessionStart hook.
2393
2463
  - **`/multi-agent:update`** — added a step that refreshes the plugin marketplace
package/README.md CHANGED
@@ -17,13 +17,18 @@ Runs natively on Claude Code, Copilot CLI and Codex CLI. macOS / Linux / Windows
17
17
  ## Quick Start
18
18
 
19
19
  ```bash
20
- # from the public registry (no auth)
21
- npx @mmerterden/multi-agent-pipeline install --all # Claude Code + Copilot CLI + Codex CLI
20
+ # from the public registry (no auth) - pick the CLIs you actually use
21
+ npx @mmerterden/multi-agent-pipeline install --claude # Claude Code only (default)
22
+ npx @mmerterden/multi-agent-pipeline install --copilot # Copilot CLI only
23
+ npx @mmerterden/multi-agent-pipeline install --codex # Codex CLI only
24
+ npx @mmerterden/multi-agent-pipeline install --all # all three
22
25
 
23
26
  # then, once:
24
27
  /multi-agent:setup # keychain token scan + git identity + default stack
25
28
  ```
26
29
 
30
+ Tool flags combine (`--claude --codex`). With no tool flag at all, the installer targets Claude Code only. Other flags: `--dry-run` (show what would be written, write nothing), `--platform=ios|android|all` (skip the stack skills you do not need), `--link` (symlink instead of copy, for local development).
31
+
27
32
  Run a task - the input type is auto-detected:
28
33
 
29
34
  ```bash
@@ -41,6 +46,8 @@ Add `autopilot` to skip confirmations, `--dev` for the fast dev-only path, or `-
41
46
 
42
47
  Update later with `/multi-agent:update`. Uninstall (tokens preserved) with `npx @mmerterden/multi-agent-pipeline uninstall`.
43
48
 
49
+ **Stack skills are marketplace plugins.** On Claude Code the `ai-<stack>-toolkit` plugins (`multi-agent-plugins` marketplace) are the only stack-skill source - nothing is copied into `~/.claude/skills`. Pick the active stack(s) per repo with `/multi-agent:stack` (multi-select: `ios backend`, or a native picker with no args); each plugin ships a language-aware catalog at `ai-<stack>-toolkit:help`. Copilot CLI and Codex CLI have no plugin loader, so they receive a local copy filtered to the same enabled stacks.
50
+
44
51
  ## How it works
45
52
 
46
53
  One command runs 8 phases, with a gate between the risky ones:
@@ -66,11 +73,11 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
66
73
  | Autopilot | `/multi-agent:autopilot "task"` | All 8 phases, no confirmations |
67
74
  | Dev | `/multi-agent:dev "task"` | Init → Dev → Review → Test → Commit → Report |
68
75
  | Local | `/multi-agent:local "task"` | Full pipeline, current branch (no worktree) |
69
- | Ship | `/multi-agent:ship` | Run the review→test→commit→report tail over local work |
76
+ | Ship | `/multi-agent:resume-local` | Run the review→test→commit→report tail over local work |
70
77
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma conformance, local-only |
71
78
  | Audit | `/multi-agent:testflight-validation` | Pre-submission gates for a TestFlight build: static archive audit → Apple's `altool --validate-app` → Review-Guidelines check. Validates only, never uploads |
72
79
 
73
- Helpers: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. 49 commands in all - full list: `/multi-agent:help`.
80
+ Helpers: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. 50 commands in all - full list: `/multi-agent:help`.
74
81
 
75
82
  ## Stacks
76
83
 
@@ -84,17 +91,17 @@ This enables the matching plugin (+ the shared `ai-common` plugin) in the repo's
84
91
 
85
92
  ## Tool support
86
93
 
87
- The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 49 commands.
94
+ The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 50 commands.
88
95
 
89
96
  | Tool | Flag | What it installs |
90
97
  |---|---|---|
91
98
  | Claude Code | `--claude` (default) | slash commands + skills + agents + `PreToolUse` secret-scan hook |
92
- | Copilot CLI | `--copilot` | instructions + 49 sub-command skills + scripts |
93
- | Codex CLI | `--codex` | one router skill + 49 specs as refs + 8 agent TOML + `AGENTS.md` block + `codex mcp add` |
99
+ | Copilot CLI | `--copilot` | instructions + 50 sub-command skills + scripts |
100
+ | Codex CLI | `--codex` | one router skill + 50 specs as refs + 8 agent TOML + `AGENTS.md` block + `codex mcp add` |
94
101
 
95
102
  Filter skills by stack with `--platform=ios\|android\|all`.
96
103
 
97
- **Why Codex gets one skill and not 49.** Codex assembles every discovered skill's name
104
+ **Why Codex gets one skill and not 50.** Codex assembles every discovered skill's name
98
105
  and description into a single prompt block and drops entries when it overflows, with no
99
106
  error. Measured on 0.145: installing one plugin that declares 142 skills surfaced only
100
107
  75 of them and evicted an unrelated user skill. So on Codex the pipeline ships a single
package/README.tr.md CHANGED
@@ -17,13 +17,18 @@ Claude Code, Copilot CLI ve Codex CLI üzerinde native çalışır. macOS / Linu
17
17
  ## Hızlı Başlangıç
18
18
 
19
19
  ```bash
20
- # public registry'den (auth gerekmez)
21
- npx @mmerterden/multi-agent-pipeline install --all # Claude Code + Copilot CLI + Codex CLI
20
+ # public registry'den (auth gerekmez) - sadece kullandığın CLI'ları seç
21
+ npx @mmerterden/multi-agent-pipeline install --claude # sadece Claude Code (varsayılan)
22
+ npx @mmerterden/multi-agent-pipeline install --copilot # sadece Copilot CLI
23
+ npx @mmerterden/multi-agent-pipeline install --codex # sadece Codex CLI
24
+ npx @mmerterden/multi-agent-pipeline install --all # üçü birden
22
25
 
23
26
  # sonra, bir kere:
24
27
  /multi-agent:setup # keychain token taraması + git kimliği + varsayılan stack
25
28
  ```
26
29
 
30
+ Tool flag'leri birleştirilebilir (`--claude --codex`). Hiç tool flag'i verilmezse installer sadece Claude Code'u hedefler. Diğer flag'ler: `--dry-run` (ne yazılacağını gösterir, hiçbir şey yazmaz), `--platform=ios|android|all` (ihtiyacın olmayan stack skill'lerini atlar), `--link` (kopyalamak yerine symlink, lokal geliştirme için).
31
+
27
32
  Bir görev çalıştır - girdi tipi otomatik algılanır:
28
33
 
29
34
  ```bash
@@ -41,6 +46,8 @@ Onayları atlamak için `autopilot`, hızlı dev-only yol için `--dev`, ya da w
41
46
 
42
47
  Sonra `/multi-agent:update` ile güncelle. Kaldırmak için (tokenlar korunur) `npx @mmerterden/multi-agent-pipeline uninstall`.
43
48
 
49
+ **Stack skill'leri marketplace plugin'leridir.** Claude Code'da `ai-<stack>-toolkit` plugin'leri (`multi-agent-plugins` marketplace) tek stack-skill kaynağıdır - `~/.claude/skills` altına kopya konmaz. Repo başına aktif stack'leri `/multi-agent:stack` ile seç (çoklu seçim: `ios backend`, ya da argümansız native picker); her plugin `ai-<stack>-toolkit:help` ile dilinde katalog sunar. Copilot CLI ve Codex CLI'da plugin loader olmadığından onlara aynı enabled stack'lere filtreli lokal kopya iner.
50
+
44
51
  ## Nasıl çalışır
45
52
 
46
53
  Tek komut 8 fazı çalıştırır, riskli olanlar arasında bir kapı ile:
@@ -66,11 +73,11 @@ Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-büt
66
73
  | Autopilot | `/multi-agent:autopilot "task"` | Tüm 8 faz, onaysız |
67
74
  | Dev | `/multi-agent:dev "task"` | Init → Dev → Review → Test → Commit → Report |
68
75
  | Local | `/multi-agent:local "task"` | Tam pipeline, mevcut branch (worktree yok) |
69
- | Ship | `/multi-agent:ship` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
76
+ | Ship | `/multi-agent:resume-local` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
70
77
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma uygunluğu, yalnızca lokal |
71
78
  | Audit | `/multi-agent:testflight-validation` | TestFlight build için pre-submission kapıları: statik archive denetimi → Apple'ın `altool --validate-app`'i → Review-Guidelines kontrolü. Yalnızca doğrular, asla yüklemez |
72
79
 
73
- Yardımcılar: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. Toplam 49 komut - tam liste: `/multi-agent:help`.
80
+ Yardımcılar: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. Toplam 50 komut - tam liste: `/multi-agent:help`.
74
81
 
75
82
  ## Stack'ler
76
83
 
@@ -84,17 +91,17 @@ Bu, ilgili plugin'i (+ ortak `ai-common` plugin'ini) repo'nun `.claude/settings.
84
91
 
85
92
  ## Araç desteği
86
93
 
87
- Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 49 komutu alır.
94
+ Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 50 komutu alır.
88
95
 
89
96
  | Araç | Bayrak | Ne kurar |
90
97
  |---|---|---|
91
98
  | Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + `PreToolUse` secret-scan hook'u |
92
- | Copilot CLI | `--copilot` | talimatlar + 49 alt-komut skill'i + script'ler |
93
- | Codex CLI | `--codex` | bir router skill + ref olarak 49 spec + 8 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
99
+ | Copilot CLI | `--copilot` | talimatlar + 50 alt-komut skill'i + script'ler |
100
+ | Codex CLI | `--codex` | bir router skill + ref olarak 50 spec + 8 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
94
101
 
95
102
  Skill'leri stack'e göre filtrele: `--platform=ios\|android\|all`.
96
103
 
97
- **Codex neden 49 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
104
+ **Codex neden 50 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
98
105
  ve açıklamasını tek bir prompt bloğuna toplar ve blok taştığında girdileri hatasızca
99
106
  düşürür. 0.145 üzerinde ölçüldü: 142 skill deklare eden bir plugin kurulduğunda sadece
100
107
  75'i yüzeye çıktı ve alakasız bir kullanıcı skill'i tahliye edildi. Bu yüzden Codex'te
@@ -2,7 +2,7 @@
2
2
 
3
3
  End-to-end guide for generating production-ready UI components from Figma designs through the multi-agent pipeline. Covers iOS (SwiftUI) and Android (Jetpack Compose) with the same workflow shape.
4
4
 
5
- > Note: Component and Figma-to-code skills are no longer bundled in this repo. Phase 3 dispatches component work to the per-stack marketplace plugins (`ai-ios-engineering-toolkit` / `ai-android-engineering-toolkit` in the `multi-agent-plugins` marketplace) via the Skill tool. The workflow, subphases, and skill names described below are what those plugin skills run internally, not pipeline-bundled code. The 3-tier Figma design-access fallback still governs the analysis phase in this repo.
5
+ > Note: Component and Figma-to-code skills are no longer bundled in this repo. Phase 3 dispatches component work to the per-stack marketplace plugins (`ai-ios-toolkit` / `ai-android-toolkit` in the `multi-agent-plugins` marketplace) via the Skill tool. The workflow, subphases, and skill names described below are what those plugin skills run internally, not pipeline-bundled code. The 3-tier Figma design-access fallback still governs the analysis phase in this repo.
6
6
 
7
7
  ## What you get
8
8
 
@@ -15,7 +15,7 @@ End-to-end guide for generating production-ready UI components from Figma design
15
15
 
16
16
  ## How it runs
17
17
 
18
- When multi-agent Phase 0 classifies a task as `component` (Figma URL in description, or figma-driven instruction path), Phase 3 delegates the entire phase to the enabled `ai-<platform>-engineering-toolkit` marketplace plugin's component skill (`create-component`, fallback `create-ui-component`) via the Skill tool. Component skills live in the plugin marketplace, not the pipeline. The dispatch layer records a coarse component-build row in `state.phases["3"].subphases[]` - multi-agent's phase-tracker reads that array with no special case. The subphase list below describes the flow the plugin skill runs internally.
18
+ When multi-agent Phase 0 classifies a task as `component` (Figma URL in description, or figma-driven instruction path), Phase 3 delegates the entire phase to the enabled `ai-<platform>-toolkit` marketplace plugin's component skill (`create-component`, fallback `create-ui-component`) via the Skill tool. Component skills live in the plugin marketplace, not the pipeline. The dispatch layer records a coarse component-build row in `state.phases["3"].subphases[]` - multi-agent's phase-tracker reads that array with no special case. The subphase list below describes the flow the plugin skill runs internally.
19
19
 
20
20
  ### Internal phase order
21
21
 
@@ -122,7 +122,7 @@ Global settings that affect the figma pipeline:
122
122
 
123
123
  | Symptom | Likely cause | Fix |
124
124
  |---|---|---|
125
- | Phase 3 halts with "plugin not enabled" | The `ai-<platform>-engineering-toolkit` plugin is not enabled in this repo | Enable it in the repo's `.claude/settings.local.json` (`"ai-ios-engineering-toolkit@<marketplace>": true`) and reload the session |
125
+ | Phase 3 halts with "plugin not enabled" | The `ai-<platform>-toolkit` plugin is not enabled in this repo | Enable it in the repo's `.claude/settings.local.json` (`"ai-ios-toolkit@<marketplace>": true`) and reload the session |
126
126
  | `multi-agent:create-component` not found | Marketplace not installed / plugin disabled | Install the marketplace and enable the platform toolkit; dispatch tries `create-component` then `create-ui-component` |
127
127
  | Wiki adapter failure | Remote unreachable (separate-repo mode) | Adapter caches pending output; next run retries. Non-blocking - Phase 7 continues. |
128
128
  | Jira auto-create hits 5xx | Transient Jira outage | Non-blocking - pipeline continues without link. User can run `/multi-agent:channels` post-hoc to add it. |
@@ -1,6 +1,6 @@
1
1
  # 6. `shared/core/` vs `shared/external/` source organization
2
2
 
3
- **Status:** Accepted · 2026-04 (v5.3.3)
3
+ **Status:** Accepted · 2026-04 (v5.3.3) · The "install destination is unchanged" clause is superseded by [ADR-0009](./0009-claude-stack-skills-plugin-only.md) (v15.0.0): Claude Code no longer receives the external tree; Copilot/Codex receive a stack-filtered subset.
4
4
 
5
5
  ## Context
6
6
 
@@ -0,0 +1,31 @@
1
+ # 9. Claude Code stack skills are plugin-only; the local copy is retired
2
+
3
+ **Status:** Accepted · 2026-08 (v15.0.0) · Supersedes the "install destination is unchanged" clause of ADR-0006
4
+
5
+ ## Context
6
+
7
+ ADR-0006 split the source tree into `shared/core/` + `shared/external/` but kept the install unchanged: both trees flattened into `~/.claude/skills/`. Since then the same external catalog also became the authoring source for the `multi-agent-plugins` marketplace (`build-stack-plugins.mjs` derives each plugin's `knowledge/` layer from it), and Claude Code loads those plugins natively, namespaced (`ai-ios-toolkit:swiftui-pro`).
8
+
9
+ That left Claude Code receiving every stack skill **twice**:
10
+
11
+ - 110 of 157 local skill dirs duplicated the enabled plugins byte-for-byte - ~10k tokens of duplicate descriptions per session, 4.4 MB on disk.
12
+ - The local copy shadowed the plugin the moment it went stale, and it *was* stale in practice: the plugin cache and the local copy advanced on different schedules.
13
+ - The duplication hid real bugs: `skill-conformance.mjs` and `match-skills.mjs` only knew the local root, so they kept working by accident - against the stale copy.
14
+
15
+ ## Decision
16
+
17
+ 1. **Claude Code receives no local copy of the stack skills.** The marketplace plugins (`ai-<stack>-toolkit`, enablement managed by `/multi-agent:stack`, multi-select) are its only stack-skill source. Prompt tables, `Skill` invocations and the skills index all use the plugin-namespaced name.
18
+ 2. **Exactly two skills stay local on Claude Code**: `apple-archive-compliance` and `google-play-compliance` (`PIPELINE_LOCAL_SKILLS` in `install/claude.mjs`). They are pipeline-owned compliance catalogs, kept out of the public marketplace by policy (they may carry audit rules not meant for it), and `uninstall.mjs` already treats exactly this pair as pipeline-owned.
19
+ 3. **`shared/external/` stays in the repo as the authoring source.** It feeds `build-stack-plugins.mjs` and the Copilot/Codex copies; it is simply never copied to `~/.claude/skills` again. Installs migrate old machines by removing the dirs named in `.external-skills-manifest.json` (manifest-scoped - user-authored dirs survive).
20
+ 4. **Copilot CLI and Codex CLI keep local copies** (no plugin loader / silently truncating skill list), now **filtered to the enabled stacks**: `pluginsToDeliver` reads `enabledPlugins` from `~/.claude/settings.json` (fallback `--platform`), `partitionExternalSkillsByPlugins` routes each skill through the same `_stack-routing.mjs` table the marketplace is built with. One stack selection governs all three hosts.
21
+ 5. **Scripts that resolve skills know the plugin roots**: `skill-conformance.mjs` probes the marketplace checkout and version-named plugin cache (newest first) alongside the install roots; `build-skills-index.mjs` stamps `plugin` + `invokeAs` per entry so `match-skills.mjs` returns namespaced names.
22
+
23
+ ## Consequences
24
+
25
+ Positive: one source of truth per skill at runtime; ~13.5k tokens/session and ~5.9 MB reclaimed on Claude Code; a disabled stack is genuinely absent instead of half-present; the smoke suite now asserts the compliance-only contract (`smoke-install-layout.sh` 5b2b) and the filter's both directions (5b2).
26
+
27
+ Negative / accepted:
28
+
29
+ - A stack not enabled in `enabledPlugins` is invisible to Claude Code until `/multi-agent:stack` enables it. This is the intended behavior, not a regression.
30
+ - `dynamicSkillLoading`'s index now names skills the local tree does not hold; consumers must use `invokeAs`, not a filesystem path.
31
+ - Copilot/Codex copies go stale when the stack selection changes until `install --copilot --codex` is re-run; `/multi-agent:stack` offers that refresh after every change.
@@ -18,6 +18,7 @@ Format: lightly adapted from [Michael Nygard's ADR template](https://cognitect.c
18
18
  | [0006](./0006-skills-core-external-split.md) | `shared/core/` vs `shared/external/` source org | Accepted |
19
19
  | [0007](./0007-multi-tool-adapter-framework.md) | Multi-tool adapter framework + token-preserving uninstall | Superseded by v10.7.0 (adapters removed; Claude Code + Copilot CLI only) |
20
20
  | [0008](./0008-installer-modularization-and-secret-leak-defense.md) | Installer modularization + secret-leak defense | Accepted (amended v10.7.0: adapter module removed) |
21
+ | [0009](./0009-claude-stack-skills-plugin-only.md) | Claude Code stack skills are plugin-only; local copy retired | Accepted (supersedes ADR-0006 install-destination clause) |
21
22
 
22
23
  ## Writing a New ADR
23
24
 
@@ -71,7 +71,7 @@ graph TD
71
71
 
72
72
  ## Figma SubPhase Integration (Phase 3)
73
73
 
74
- When a task is classified `component`, Phase 3 dispatches to the marketplace component plugin (`ai-<platform>-engineering-toolkit`) via the Skill tool. Component skills are not bundled in this repo; the subphases below describe the flow the plugin skill runs internally:
74
+ When a task is classified `component`, Phase 3 dispatches to the marketplace component plugin (`ai-<platform>-toolkit`) via the Skill tool. Component skills are not bundled in this repo; the subphases below describe the flow the plugin skill runs internally:
75
75
 
76
76
  ```mermaid
77
77
  graph TD
@@ -117,7 +117,7 @@ graph TB
117
117
  end
118
118
 
119
119
  subgraph "Pipeline Specs"
120
- CMD[commands/<br/>49 command files]
120
+ CMD[commands/<br/>50 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]
@@ -163,14 +163,14 @@ User Input → Phase 0 (Init)
163
163
  ## Ecosystem Sync Targets
164
164
 
165
165
  `/multi-agent:sync` actually walks **five** targets, not the three shown in earlier
166
- revisions of this diagram Codex CLI and the two independently-shipped repos
166
+ revisions of this diagram - Codex CLI and the two independently-shipped repos
167
167
  (`multi-agent-plugins`, `dev-toolkit-mcp`) are real sync targets too:
168
168
 
169
169
  ```mermaid
170
170
  graph TD
171
171
  CC["Claude Code<br/>(source of truth)"]
172
- COP["Copilot CLI<br/>(instructions + 49 skills)"]
173
- COD["Codex CLI<br/>(1 router skill + 49 refs)"]
172
+ COP["Copilot CLI<br/>(instructions + 50 skills)"]
173
+ COD["Codex CLI<br/>(1 router skill + 50 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)"]
@@ -189,6 +189,6 @@ graph TD
189
189
  DTK -->|npm publish| NPM2["GitHub Packages (private)"]
190
190
  ```
191
191
 
192
- Full detail on how these three repos compose at install time and at run time
192
+ Full detail on how these three repos compose at install time and at run time -
193
193
  including the Phase 3 → plugin dispatch contract and the Phase 5 → dev-toolkit MCP
194
- contract lives in [`docs/ecosystem.md`](./ecosystem.md).
194
+ contract - lives in [`docs/ecosystem.md`](./ecosystem.md).
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 49 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 8-phase flow, the 50 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
  | **`dev-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,17 +18,17 @@ 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 · 49 commands"]
21
+ PHASES["8 phases · 50 commands"]
22
22
  GATES["deterministic gates + review triage"]
23
23
  end
24
24
 
25
25
  subgraph PLUG ["multi-agent-plugins (stack knowledge)"]
26
26
  direction TB
27
- IOSP["ai-ios-engineering-toolkit"]
28
- ANDP["ai-android-engineering-toolkit"]
29
- FEP["ai-frontend-engineering-toolkit"]
27
+ IOSP["ai-ios-toolkit"]
28
+ ANDP["ai-android-toolkit"]
29
+ FEP["ai-frontend-toolkit"]
30
30
  BEP["ai-backend-toolkit"]
31
- COMP["ai-common-engineering-toolkit"]
31
+ COMP["ai-common-toolkit"]
32
32
  end
33
33
 
34
34
  subgraph DTK ["dev-toolkit-mcp (device/browser hands)"]
@@ -63,8 +63,8 @@ only those:
63
63
  graph TD
64
64
  CC["Claude Code<br/>~/.claude/commands/multi-agent/<br/>(source of truth)"]
65
65
 
66
- CC -->|"Step 2: copy + reformat<br/>49 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
67
- CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 49 refs<br/>+ 8 agent TOML"]
66
+ CC -->|"Step 2: copy + reformat<br/>50 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
67
+ CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 50 refs<br/>+ 8 agent TOML"]
68
68
  CC -->|"Step 3: genericize<br/>(strip personal data)"| REPO["multi-agent-pipeline repo<br/>pipeline/"]
69
69
  CC -->|"Step 4: version + feature sync"| WEB["Website<br/>projects.ts / i18n.tsx"]
70
70
 
@@ -85,18 +85,18 @@ graph TD
85
85
  ```
86
86
 
87
87
  **Why `dev-toolkit-mcp` is drawn differently.** The other four targets are *derived*
88
- from the Claude Code source sync writes their content. `dev-toolkit-mcp` is not:
88
+ from the Claude Code source - sync writes their content. `dev-toolkit-mcp` is not:
89
89
  it's a separate codebase developed on its own schedule. Sync's Step 3d only
90
90
  *detects* whether it moved (dirty tree, unpushed commits, untagged version), runs
91
- **its own** gate suite, and ships it commit, tag, `npm publish`. If the pipeline
91
+ **its own** gate suite, and ships it - commit, tag, `npm publish`. If the pipeline
92
92
  needs a tool that toolkit doesn't have yet, that's a two-repo change: add the tool
93
93
  in `dev-toolkit-mcp`, ship it, then bump the minimum version pin back in
94
- `cross-cli-contract.md` (see §4).
94
+ `cross-cli-contract.md` (see section 4).
95
95
 
96
96
  **Also not generated: the plugins' own authored skills.** `build-stack-plugins.mjs`
97
97
  only rebuilds each plugin's `knowledge/` folder from `pipeline/skills/shared/external/`.
98
- The plugins' lifecycle skills `create-component`, `evolve-component`,
99
- `figma-utility`, `code-connect`, `branch-and-pr`, `fix-bug`, and the rest are
98
+ The plugins' lifecycle skills - `create-component`, `evolve-component`,
99
+ `figma-utility`, `code-connect`, `branch-and-pr`, `fix-bug`, and the rest - are
100
100
  hand-authored *inside* `multi-agent-plugins` and are never touched by sync.
101
101
 
102
102
  ---
@@ -105,13 +105,13 @@ hand-authored *inside* `multi-agent-plugins` and are never touched by sync.
105
105
 
106
106
  ```mermaid
107
107
  graph TD
108
- EXT["pipeline/skills/shared/external/<br/>150 skills single authoring source<br/>(the pipeline's own phases read these too)"]
108
+ EXT["pipeline/skills/shared/external/<br/>150 skills - single authoring source<br/>(the pipeline's own phases read these too)"]
109
109
 
110
- EXT -->|"cross-stack skills"| COMMONP["ai-common-engineering-toolkit<br/>10 skills · v0.2.3"]
111
- EXT -->|"Apple/Xcode-only"| IOSP["ai-ios-engineering-toolkit<br/>145 skills · v0.6.0"]
112
- EXT -->|"Android/Kotlin-only"| ANDP["ai-android-engineering-toolkit<br/>29 skills · v0.1.3"]
110
+ EXT -->|"cross-stack skills"| COMMONP["ai-common-toolkit<br/>10 skills · v0.2.3"]
111
+ EXT -->|"Apple/Xcode-only"| IOSP["ai-ios-toolkit<br/>145 skills · v0.6.0"]
112
+ EXT -->|"Android/Kotlin-only"| ANDP["ai-android-toolkit<br/>29 skills · v0.1.3"]
113
113
  EXT -->|"backend-only"| BEP["ai-backend-toolkit<br/>32 skills · v0.1.4"]
114
- EXT -->|"web/frontend-only"| FEP["ai-frontend-engineering-toolkit<br/>24 skills · v0.1.3"]
114
+ EXT -->|"web/frontend-only"| FEP["ai-frontend-toolkit<br/>24 skills · v0.1.3"]
115
115
 
116
116
  COMMONP --> BUMP{"skill set<br/>changed?"}
117
117
  IOSP --> BUMP
@@ -130,7 +130,7 @@ A skill counted in more than one platform plugin (a cross-stack knowledge skill
130
130
  plus, say, an iOS-specific one) is why the plugins' skill counts sum to more than
131
131
  the 150-skill source: `ai-common` skills are vendored into every stack plugin's
132
132
  `knowledge/`, not deduplicated across them. Versioning is per-plugin and
133
- patch-only from this generator a repo enabling only `ai-ios-engineering-toolkit`
133
+ patch-only from this generator - a repo enabling only `ai-ios-toolkit`
134
134
  never pulls an Android-only change.
135
135
 
136
136
  **Consumption is pull, not push.** A consumer repo enables a stack plugin once
@@ -150,9 +150,9 @@ measurements behind this table):
150
150
 
151
151
  | | Claude Code | Copilot CLI | Codex CLI |
152
152
  |---|---|---|---|
153
- | **Pipeline commands** | 49 slash-command skills, native | 49 skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 49 command specs as reference files Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
154
- | **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-engineering-toolkit-architecture`) |
155
- | **Component dispatch (Phase 3)** | Marketplace plugin's `create-component`/`create-screen` skill via the Skill tool | No plugin loader falls back to local frozen `figma-*` skill copies | Not part of the enforced parity axis; classification + state-shape must match, skill *inventory* does not |
153
+ | **Pipeline commands** | 50 slash-command skills, native | 50 skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 50 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
154
+ | **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`) |
155
+ | **Component dispatch (Phase 3)** | Marketplace plugin's `create-component`/`create-screen` skill via the Skill tool | No plugin loader - falls back to local frozen `figma-*` skill copies | Not part of the enforced parity axis; classification + state-shape must match, skill *inventory* does not |
156
156
  | **dev-toolkit-mcp** | `claude mcp add dev-toolkit -- npx -y @mmerterden/dev-toolkit-mcp` | `copilot mcp add dev-toolkit -- npx -y @mmerterden/dev-toolkit-mcp` | `codex mcp add dev-toolkit -- npx -y @mmerterden/dev-toolkit-mcp` (skipped with a warning if `codex` isn't on `PATH`) |
157
157
 
158
158
  `smoke-cross-cli-behavior.sh` and `smoke-codex-install.sh` gate the axes that **do**
@@ -170,7 +170,7 @@ other:
170
170
  graph TD
171
171
  START["Task running: Phase 3 (Dev)"]
172
172
  START -->|"taskType !== component"| TDD["Standard TDD loop<br/>(pipeline's own code)"]
173
- START -->|"taskType === component<br/>+ figmaUrl present"| VALIDATE["ai-ios-engineering-toolkit:figma-validate<br/>(registry, Code Connect, token compliance)"]
173
+ START -->|"taskType === component<br/>+ figmaUrl present"| VALIDATE["ai-ios-toolkit:figma-validate<br/>(registry, Code Connect, token compliance)"]
174
174
  VALIDATE -->|pass| DISPATCH["Skill tool →<br/>create-component / create-screen<br/>/ evolve-component (dual-name fallback)"]
175
175
  VALIDATE -->|fail| HALT1["halt Phase 3, surface why"]
176
176
  DISPATCH --> REPORT1["plugin returns build/test status →<br/>dispatch layer writes state.phases['3'].subphases[]"]
@@ -196,9 +196,9 @@ hard stop, per `component-dispatch.md`).
196
196
  **Phase 5 (and design-check / store-ready) → dev-toolkit** is a long-lived MCP
197
197
  session, not a one-shot call: the same stdio server process answers many tool
198
198
  calls across a phase (boot simulator once, then screenshot/tap/screenshot/tap...).
199
- Several pipeline skills pin a **minimum toolkit version** for a specific tool
199
+ Several pipeline skills pin a **minimum toolkit version** for a specific tool -
200
200
  e.g. `apple-archive-compliance` requires `ios_app_store_audit` from
201
- `dev-toolkit-mcp ≥ v2.9.0` enforced in `cross-cli-contract.md` and checked by
201
+ `dev-toolkit-mcp ≥ v2.9.0` - enforced in `cross-cli-contract.md` and checked by
202
202
  `/multi-agent:sync` Step 3d before any dev-toolkit release ships (a version bump
203
203
  that drops or renames a tool a pipeline skill depends on is a **major** bump, by
204
204
  that step's own contract).
@@ -221,8 +221,8 @@ that step's own contract).
221
221
  - **Pipeline ↔ plugins boundary = Skill tool, one direction.** The pipeline
222
222
  classifies (`taskType`, `componentScope`) and tracks state; it never reads or
223
223
  writes plugin-internal files. This is why a corporate marketplace can ship a
224
- same-named plugin (`ai-ios-engineering-toolkit:create-ui-component` vs the public
225
- `create-component`) and dispatch still resolves correctly the dual-name
224
+ same-named plugin (`ai-ios-toolkit:create-ui-component` vs the public
225
+ `create-component`) and dispatch still resolves correctly - the dual-name
226
226
  fallback lives in the pipeline, the implementation stays entirely in whichever
227
227
  plugin is enabled.
228
228
  - **Pipeline ↔ dev-toolkit boundary = MCP protocol, versioned contract.** The
@@ -233,5 +233,5 @@ that step's own contract).
233
233
  contract.
234
234
  - **Neither boundary is symmetric.** The pipeline depends on both other repos being
235
235
  present *for specific task types* (component work, UI testing) but functions
236
- without either a non-component bugfix task never touches the plugin marketplace,
236
+ without either - a non-component bugfix task never touches the plugin marketplace,
237
237
  and a task with no UI-testing step never opens the MCP connection.
package/docs/features.md CHANGED
@@ -45,14 +45,14 @@ Build commands, test runners, lint tools, and review focus areas all adapt to th
45
45
 
46
46
  ### Stack Selection (marketplace plugins)
47
47
 
48
- Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketplace. Selecting a stack enables the matching plugin(s) in the current repo's `.claude/settings.json` `enabledPlugins` - no skill copying, no session restart tricks, no directory shuffling. The `ai-common-engineering-toolkit` (accessibility audit, humanizer, Firebase) is always enabled alongside the stack plugin.
48
+ Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketplace. Selecting a stack enables the matching plugin(s) in the current repo's `.claude/settings.json` `enabledPlugins` - no skill copying, no session restart tricks, no directory shuffling. The `ai-common-toolkit` (accessibility audit, humanizer, Firebase) is always enabled alongside the stack plugin.
49
49
 
50
50
  ```bash
51
- /multi-agent:stack ios # ai-ios-engineering-toolkit (SwiftUI, Xcode, HIG)
52
- /multi-agent:stack android # ai-android-engineering-toolkit (Compose, Gradle, Hilt)
51
+ /multi-agent:stack ios # ai-ios-toolkit (SwiftUI, Xcode, HIG)
52
+ /multi-agent:stack android # ai-android-toolkit (Compose, Gradle, Hilt)
53
53
  /multi-agent:stack mobile # iOS + Android combined
54
54
  /multi-agent:stack backend # ai-backend-toolkit (spec-driven APIs)
55
- /multi-agent:stack frontend # ai-frontend-engineering-toolkit (React/TSX)
55
+ /multi-agent:stack frontend # ai-frontend-toolkit (React/TSX)
56
56
  /multi-agent:stack fullstack # backend + frontend
57
57
  /multi-agent:stack all # every stack plugin
58
58
  ```
@@ -273,7 +273,7 @@ Turn a recurring, project-specific job into a first-class `/multi-agent:<name>`
273
273
 
274
274
  ### Figma / Component Generation (dispatched to marketplace plugins)
275
275
 
276
- Component + Figma-to-code work is no longer bundled in this repo. When Phase 0 classifies a task as `component`, Phase 3 dispatches it to the per-stack marketplace plugins (`ai-ios-engineering-toolkit` / `ai-android-engineering-toolkit` in the `multi-agent-plugins` marketplace) via the Skill tool. The plugin's component skill generates `{Name}Configuration.swift`, `{Name}View.swift`, `{Name}+Modifiers.swift`, `{Name}.figma.swift`, and `FIGMA.md` with a variant matrix, then runs a 14-item pre-commit checklist covering design tokens, accessibility, tests, and Code Connect.
276
+ Component + Figma-to-code work is no longer bundled in this repo. When Phase 0 classifies a task as `component`, Phase 3 dispatches it to the per-stack marketplace plugins (`ai-ios-toolkit` / `ai-android-toolkit` in the `multi-agent-plugins` marketplace) via the Skill tool. The plugin's component skill generates `{Name}Configuration.swift`, `{Name}View.swift`, `{Name}+Modifiers.swift`, `{Name}.figma.swift`, and `FIGMA.md` with a variant matrix, then runs a 14-item pre-commit checklist covering design tokens, accessibility, tests, and Code Connect.
277
277
 
278
278
  The plugin's cross-cutting integration skills feed component detection + implementation when the design triggers them (content: form / price / ui-patterns; interaction: navigation / overlays / bottom-sheets). Each is native-SwiftUI-first and reads project specifics (token namespaces, component paths, UI systems) from `figma-config`, including the optional `ui.navigationSystem` / `ui.overlaySystem` / `ui.sheetSystem` hooks (absent -> stock SwiftUI), so the same capabilities work on any SwiftUI codebase. The plugin's evolve-component skill reconciles an existing component against current Figma (drift-heal) and additively extends it, behind a human gate.
279
279
 
package/index.js CHANGED
@@ -59,7 +59,9 @@ if (command === "--version" || command === "-v" || command === "version") {
59
59
  npx @mmerterden/multi-agent-pipeline uninstall --yes Skip prompt
60
60
  npx @mmerterden/multi-agent-pipeline uninstall --dry-run Report what would be removed
61
61
  npx @mmerterden/multi-agent-pipeline uninstall --claude Only Claude Code
62
+ npx @mmerterden/multi-agent-pipeline uninstall --copilot Only Copilot CLI
62
63
  npx @mmerterden/multi-agent-pipeline uninstall --codex Only Codex CLI
64
+ npx @mmerterden/multi-agent-pipeline uninstall --all-data ALSO remove pipeline settings + logs/state/metrics
63
65
  npx @mmerterden/multi-agent-pipeline uninstall --cursor Legacy pre-v10.7 adapter-file cleanup (also --copilot-chat / --antigravity; --target=<path> overrides cwd)
64
66
 
65
67
  Help:
@@ -24,8 +24,17 @@ import { ensureDir, ensureRealDir, isDryRun, writeFile } from "./_common.mjs";
24
24
  * The pipeline's ladder is `fable -> opus -> sonnet -> haiku`. Codex offers no
25
25
  * Anthropic models, so each tier maps onto an OpenAI model plus an effort
26
26
  * setting: effort carries the depth distinction that the model id carries on
27
- * Claude Code. Keep this table in sync with the Codex column of the Phase 4
28
- * reviewer matrix and with `pipeline/scripts/cost-table.json`.
27
+ * Claude Code.
28
+ *
29
+ * This table resolves a persona's DEFAULT tier, which is not the same thing as
30
+ * a per-slot override. Phase 4 dispatches Reviewer 3 with an explicit
31
+ * `gpt-5.6` @ `medium` (see `phases/phase-4-review.md`, `claude-md-template.md`
32
+ * and `reviewer-output.schema.json`, which all state that value) even though
33
+ * the persona's own tier is `sonnet` and resolves here to `gpt-5.4`. That is
34
+ * deliberate: the Codex panel buys its diversity from effort, so two slots
35
+ * share a model at different efforts while a third changes model. Do not
36
+ * "reconcile" the two by editing either side without deciding which behavior
37
+ * you want, and keep this table in sync with `pipeline/scripts/cost-table.json`.
29
38
  */
30
39
  export const CODEX_TIER_MAP = Object.freeze({
31
40
  fable: { model: "gpt-5.6", reasoning_effort: "xhigh" },