@mmerterden/multi-agent-pipeline 18.0.0 → 19.1.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 (234) hide show
  1. package/CHANGELOG.md +287 -0
  2. package/README.md +36 -20
  3. package/README.tr.md +14 -16
  4. package/docs/adr/0002-instruction-driven-flag.md +1 -0
  5. package/docs/adr/0005-lazy-phase-docs.md +11 -1
  6. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
  7. package/docs/adr/0010-own-code-graph.md +1 -0
  8. package/docs/adr/0014-six-phase-consolidation.md +134 -0
  9. package/docs/adr/README.md +2 -1
  10. package/docs/architecture.md +37 -38
  11. package/docs/best-practices.md +1 -1
  12. package/docs/ecosystem.md +46 -27
  13. package/docs/engineering.md +1 -1
  14. package/docs/facts.json +61 -0
  15. package/docs/features.md +55 -54
  16. package/docs/performance.md +5 -5
  17. package/docs/recovery-guide.md +17 -17
  18. package/docs/token-budget-history.md +3 -1
  19. package/index.js +2 -2
  20. package/install/_codex-agents.mjs +1 -1
  21. package/install/templates/claude-hooks.json +1 -1
  22. package/install/templates/codex-instructions.md +1 -1
  23. package/install/templates/copilot-instructions.md +28 -28
  24. package/manifest.json +234 -216
  25. package/package.json +2 -2
  26. package/pipeline/agents/dev-critic.md +7 -7
  27. package/pipeline/commands/figma-to-swiftui.md +1 -1
  28. package/pipeline/commands/multi-agent/SKILL.md +9 -9
  29. package/pipeline/commands/multi-agent/analysis/SKILL.md +15 -15
  30. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
  31. package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
  32. package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
  33. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
  34. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
  36. package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
  37. package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
  38. package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
  39. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
  40. package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
  41. package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
  42. package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
  43. package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
  44. package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
  45. package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
  46. package/pipeline/commands/multi-agent/review/SKILL.md +2 -2
  47. package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
  48. package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
  49. package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
  50. package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
  51. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  52. package/pipeline/commands/multi-agent/status/SKILL.md +5 -5
  53. package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
  54. package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
  55. package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
  56. package/pipeline/lib/credential-inventory.sh +1 -1
  57. package/pipeline/lib/fetch-fortify.sh +1 -1
  58. package/pipeline/lib/model-dispatch.sh +140 -0
  59. package/pipeline/lib/model-rung.sh +142 -0
  60. package/pipeline/lib/outbound-gate.mjs +14 -0
  61. package/pipeline/lib/phase-schema.mjs +88 -0
  62. package/pipeline/lib/plan-todos.sh +5 -5
  63. package/pipeline/lib/route-state.sh +161 -0
  64. package/pipeline/lib/run-paths.sh +2 -2
  65. package/pipeline/multi-agent-refs/_account-picker.md +1 -1
  66. package/pipeline/multi-agent-refs/_dev-context.md +6 -6
  67. package/pipeline/multi-agent-refs/_input-parser.md +1 -1
  68. package/pipeline/multi-agent-refs/analysis/evidence.md +2 -11
  69. package/pipeline/multi-agent-refs/analysis/intake.md +7 -7
  70. package/pipeline/multi-agent-refs/analysis/locked.md +48 -22
  71. package/pipeline/multi-agent-refs/analysis/redesign.md +1 -1
  72. package/pipeline/multi-agent-refs/analysis/render.md +10 -10
  73. package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
  74. package/pipeline/multi-agent-refs/analysis/review.md +2 -2
  75. package/pipeline/multi-agent-refs/analysis/synthesis.md +13 -7
  76. package/pipeline/multi-agent-refs/analysis-template-corporate.md +9 -9
  77. package/pipeline/multi-agent-refs/analysis-template.md +19 -19
  78. package/pipeline/multi-agent-refs/android-guide.md +1 -1
  79. package/pipeline/multi-agent-refs/audit-guide.md +13 -13
  80. package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
  81. package/pipeline/multi-agent-refs/channels/jira.md +3 -3
  82. package/pipeline/multi-agent-refs/channels/pr.md +4 -4
  83. package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
  84. package/pipeline/multi-agent-refs/component-dispatch.md +8 -8
  85. package/pipeline/multi-agent-refs/conventions-defaults.md +2 -2
  86. package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
  87. package/pipeline/multi-agent-refs/features/analysis-jira.md +1 -1
  88. package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +4 -4
  89. package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
  90. package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
  91. package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
  92. package/pipeline/multi-agent-refs/features/doctor.md +3 -3
  93. package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
  94. package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
  95. package/pipeline/multi-agent-refs/features/model-fallback.md +41 -5
  96. package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
  97. package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
  98. package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
  99. package/pipeline/multi-agent-refs/features/review-multi-repo.md +2 -2
  100. package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
  101. package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
  102. package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
  103. package/pipeline/multi-agent-refs/features/url-enrichment.md +1 -1
  104. package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
  105. package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
  106. package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
  107. package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
  108. package/pipeline/multi-agent-refs/knowledge.md +11 -11
  109. package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
  110. package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
  111. package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
  112. package/pipeline/multi-agent-refs/phases/modes.md +30 -30
  113. package/pipeline/multi-agent-refs/phases/operations.md +8 -8
  114. package/pipeline/multi-agent-refs/phases/phase-0-init.md +24 -24
  115. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
  116. package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
  117. package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
  118. package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
  119. package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
  120. package/pipeline/multi-agent-refs/phases.md +44 -48
  121. package/pipeline/multi-agent-refs/picker-contract.md +1 -1
  122. package/pipeline/multi-agent-refs/progress-contract.md +6 -6
  123. package/pipeline/multi-agent-refs/readiness-review.md +1 -1
  124. package/pipeline/multi-agent-refs/rules.md +7 -7
  125. package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
  126. package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
  127. package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
  128. package/pipeline/preferences-template.json +9 -1
  129. package/pipeline/rules/figma-pipeline.md +8 -8
  130. package/pipeline/rules/outside-the-pipeline.md +1 -1
  131. package/pipeline/schemas/agent-state.schema.json +50 -50
  132. package/pipeline/schemas/analysis-output.schema.json +3 -3
  133. package/pipeline/schemas/analysis-spec.schema.json +2 -2
  134. package/pipeline/schemas/autopilot-config.schema.json +1 -1
  135. package/pipeline/schemas/code-graph.schema.json +1 -1
  136. package/pipeline/schemas/criteria-manifest.schema.json +1 -1
  137. package/pipeline/schemas/dev-critic-output.schema.json +1 -1
  138. package/pipeline/schemas/diff-risk.schema.json +1 -1
  139. package/pipeline/schemas/figma-project-config.schema.json +1 -1
  140. package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
  141. package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
  142. package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
  143. package/pipeline/schemas/phases.json +105 -0
  144. package/pipeline/schemas/plan-todos.schema.json +5 -5
  145. package/pipeline/schemas/planning-output.schema.json +1 -1
  146. package/pipeline/schemas/prefs.schema.json +102 -58
  147. package/pipeline/schemas/reviewer-output.schema.json +3 -3
  148. package/pipeline/schemas/route-config.schema.json +74 -0
  149. package/pipeline/schemas/scope-check.schema.json +1 -1
  150. package/pipeline/schemas/secret-patterns.json +124 -0
  151. package/pipeline/schemas/test-gap.schema.json +1 -1
  152. package/pipeline/schemas/token-budget.json +12 -18
  153. package/pipeline/schemas/triage-output.schema.json +6 -6
  154. package/pipeline/scripts/README.md +3 -3
  155. package/pipeline/scripts/_code-graph.mjs +2 -2
  156. package/pipeline/scripts/_run-paths.mjs +2 -2
  157. package/pipeline/scripts/_smoke-root.sh +1 -1
  158. package/pipeline/scripts/aggregate-metrics.mjs +1 -1
  159. package/pipeline/scripts/build-references.mjs +2 -2
  160. package/pipeline/scripts/bulk-read.sh +10 -1
  161. package/pipeline/scripts/capture-flush.sh +8 -8
  162. package/pipeline/scripts/capture-resume.sh +3 -3
  163. package/pipeline/scripts/classify-plan-safety.mjs +1 -1
  164. package/pipeline/scripts/cost-table.json +8 -1
  165. package/pipeline/scripts/diff-explain.mjs +1 -1
  166. package/pipeline/scripts/doctor.mjs +3 -3
  167. package/pipeline/scripts/gc-abandoned.sh +3 -3
  168. package/pipeline/scripts/gc-tmp.sh +1 -1
  169. package/pipeline/scripts/gc-worktrees.sh +1 -1
  170. package/pipeline/scripts/gen-facts.mjs +280 -0
  171. package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
  172. package/pipeline/scripts/gen-ref-toc.mjs +1 -1
  173. package/pipeline/scripts/graph-report.mjs +1 -1
  174. package/pipeline/scripts/jira-attach.sh +1 -1
  175. package/pipeline/scripts/learn-from-transcripts.mjs +1 -1
  176. package/pipeline/scripts/learning-curve.mjs +2 -2
  177. package/pipeline/scripts/log-metric.sh +17 -4
  178. package/pipeline/scripts/memory-save.sh +1 -1
  179. package/pipeline/scripts/migrate-prefs.mjs +22 -5
  180. package/pipeline/scripts/phase-banner.sh +20 -20
  181. package/pipeline/scripts/phase-tracker.sh +12 -12
  182. package/pipeline/scripts/plan-coverage-gate.mjs +2 -2
  183. package/pipeline/scripts/pre-commit-check.sh +30 -1
  184. package/pipeline/scripts/render-agent-log-cost.sh +1 -1
  185. package/pipeline/scripts/render-work-summary.sh +3 -3
  186. package/pipeline/scripts/review-file-filter.mjs +1 -1
  187. package/pipeline/scripts/run-aggregator.mjs +13 -6
  188. package/pipeline/scripts/run-metrics.mjs +1 -1
  189. package/pipeline/scripts/runs-index.mjs +11 -1
  190. package/pipeline/scripts/scan-skills.sh +26 -0
  191. package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
  192. package/pipeline/scripts/smoke-schema-validation.sh +26 -7
  193. package/pipeline/scripts/token-budget-report.mjs +13 -2
  194. package/pipeline/scripts/triage-memory.mjs +2 -2
  195. package/pipeline/scripts/validate-analysis-doc.mjs +274 -43
  196. package/pipeline/scripts/validate-planning.mjs +1 -1
  197. package/pipeline/scripts/validate-reviewer.mjs +1 -1
  198. package/pipeline/scripts/validate-state.mjs +45 -5
  199. package/pipeline/scripts/validate-triage.mjs +3 -3
  200. package/pipeline/scripts/verify-citations.mjs +1 -1
  201. package/pipeline/scripts/worktree-finalize.sh +5 -5
  202. package/pipeline/scripts/write-state.mjs +32 -0
  203. package/pipeline/skills/.skill-manifest.json +38 -22
  204. package/pipeline/skills/.skills-index.json +49 -5
  205. package/pipeline/skills/shared/README.md +10 -6
  206. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +8 -8
  207. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +8 -8
  208. package/pipeline/skills/shared/core/multi-agent/SKILL.md +81 -82
  209. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
  210. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
  211. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
  212. package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
  213. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
  214. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
  215. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
  216. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
  217. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
  218. package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
  219. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
  220. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
  221. package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
  222. package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
  223. package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
  224. package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
  225. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  226. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +5 -5
  227. package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
  228. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
  229. package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +1 -1
  230. package/pipeline/skills/shared/external/signal-community/SKILL.md +8 -1
  231. package/pipeline/skills/skills-index.md +8 -4
  232. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
  233. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
  234. package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
@@ -7,7 +7,7 @@ user-invocable: true
7
7
 
8
8
  # multi-agent local - Full Pipeline, Local Branch
9
9
 
10
- Runs the full 8-phase pipeline (normal mode - including the Plan Approval Gate + parallel review + triage) on the current branch **without creating a worktree**. The dedicated equivalent of the `multi-agent "task" --local` flag form.
10
+ Runs the full 6-phase pipeline (normal mode - including the Plan Approval Gate + parallel review + triage) on the current branch **without creating a worktree**. The dedicated equivalent of the `multi-agent "task" --local` flag form.
11
11
 
12
12
  ## When to use it
13
13
 
@@ -22,7 +22,7 @@ Runs the full 8-phase pipeline (normal mode - including the Plan Approval Gate
22
22
 
23
23
  ## Pipeline
24
24
 
25
- The same 8 phases as the normal pipeline: Init → Analysis → Planning → Dev → Review → Test → Commit → Report. Only Phase 0 Step 8 (workspace creation) continues on the current branch instead of a worktree; the `state.projects[*].worktreePath` field stays `null`.
25
+ The same 6 phases as the normal pipeline: Init → Analysis → Planning → Dev → Review → Test → Commit → Report. Only Phase 0 Step 8 (workspace creation) continues on the current branch instead of a worktree; the `state.projects[*].worktreePath` field stays `null`.
26
26
 
27
27
  ## Delegation
28
28
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: multi-agent-local-autopilot
3
3
  language: en
4
- description: "Full pipeline + local + autopilot - no worktree, no confirmations, all 8 phases run end-to-end on the current branch. Use when the full pipeline should run on the current branch with no worktree and no prompts."
4
+ description: "Full pipeline + local + autopilot - no worktree, no confirmations, all 6 phases run end-to-end on the current branch. Use when the full pipeline should run on the current branch with no worktree and no prompts."
5
5
  user-invocable: true
6
6
  argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
7
7
  ---
@@ -10,16 +10,16 @@ argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
10
10
 
11
11
  **Input**: $ARGUMENTS
12
12
 
13
- Runs the full 8-phase pipeline **without creating a worktree** + **skipping all confirmations**. The `autopilot + local` combination. Byte-identical behavior to `/multi-agent:local-autopilot` (Claude Code colon-form).
13
+ Runs the full 6-phase pipeline **without creating a worktree** + **skipping all confirmations**. The `autopilot + local` combination. Byte-identical behavior to `/multi-agent:local-autopilot` (Claude Code colon-form).
14
14
 
15
15
  ## Matrix (which one should I use?)
16
16
 
17
17
  | Command | Pipeline | Worktree | Confirmation |
18
18
  |---|---|---|---|
19
- | `multi-agent "task"` | Full 8 phases | ✅ | ✅ (interactive) |
20
- | `multi-agent-autopilot "task"` | Full 8 phases | ✅ | ❌ |
21
- | `multi-agent-local "task"` | Full 8 phases | ❌ | ✅ |
22
- | **`multi-agent-local-autopilot "task"`** | **Full 8 phases** | **❌** | **❌** |
19
+ | `multi-agent "task"` | Full 6 phases | ✅ | ✅ (interactive) |
20
+ | `multi-agent-autopilot "task"` | Full 6 phases | ✅ | ❌ |
21
+ | `multi-agent-local "task"` | Full 6 phases | ❌ | ✅ |
22
+ | **`multi-agent-local-autopilot "task"`** | **Full 6 phases** | **❌** | **❌** |
23
23
 
24
24
  Depth is a separate axis, asked at Phase 0 Step 7.5 rather than encoded in the command name: Full runs every phase above, Short runs Dev → Review → Test → Commit → Report. The two autopilot rows never ask and always run Full.
25
25
 
@@ -27,7 +27,7 @@ Depth is a separate axis, asked at Phase 0 Step 7.5 rather than encoded in the c
27
27
 
28
28
  - The Phase 0 Step 6 worktree step is skipped (local contract)
29
29
  - The Phase 2 Plan Approval Gate is skipped (autopilot contract) - `state.autopilot === true`
30
- - The Phase 5 test prompt is skipped, Phase 6 commit/PR does not wait for confirmation
30
+ - The Phase 3 test prompt is skipped, Phase 4 commit/PR does not wait for confirmation
31
31
  - **v7.0.0+**: The Phase 2 safety classifier (`classify-plan-safety.mjs`) always runs; if the score is ≥ 50 it asks for a single manual confirmation even in autopilot (`prefs.global.autopilotSafetyGate`, default on)
32
32
 
33
33
  ## What is NEVER skipped
@@ -48,7 +48,7 @@ multi-agent-local-autopilot "#3"
48
48
 
49
49
  ## Delegation
50
50
 
51
- The orchestrator skill (`multi-agent/SKILL.md`) takes the `--local` + `"autopilot": true` state flags together. Contract: `refs/phases/phase-0-init.md` Step 6 (local branch) + `refs/phases/phase-2-planning.md` Step 5 (gate skip) + Step 5c (safety classifier, v7.0.0+).
51
+ The orchestrator skill (`multi-agent/SKILL.md`) takes the `--local` + `"autopilot": true` state flags together. Contract: `refs/phases/phase-0-init.md` Step 6 (local branch) + `refs/phases/phase-1-plan.md` Step 5 (gate skip) + Step 5c (safety classifier, v7.0.0+).
52
52
 
53
53
  ## Required: outward-facing payload contracts
54
54
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: multi-agent-manual-test
3
3
  language: en
4
- description: "Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 5 standalone (the UI Bug Hunter lives at multi-agent-test). Use when a finished change needs trying by hand on a device or simulator."
4
+ description: "Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 3 user-test step, standalone (the UI Bug Hunter lives at multi-agent-test). Use when a finished change needs trying by hand on a device or simulator."
5
5
  user-invocable: true
6
6
  argument-hint: "[#id] - optional: task ID. Defaults to the latest task if omitted"
7
7
  ---
8
8
 
9
- # multi-agent manual-test - Phase 5 Manual Test Mode
9
+ # multi-agent manual-test - Phase 3 Manual Test Mode
10
10
 
11
11
  **Input**: $ARGUMENTS
12
12
 
@@ -16,8 +16,8 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
16
16
 
17
17
  1. **Find the task** - parse `#N` from the argument or find the most recent task
18
18
 
19
- 2. **Check the state** - the task must have completed Phase 3+
20
- - Phase < 3 → "No code has been written yet, run `resume #N` first"
19
+ 2. **Check the state** - the task must have completed Phase 2 (Dev) or later
20
+ - Phase < 2 → "No code has been written yet, run `resume #N` first"
21
21
 
22
22
  3. **Remove the worktree and switch to the branch**:
23
23
  ```bash
@@ -36,7 +36,7 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
36
36
  • Manual test in the Simulator
37
37
 
38
38
  Result:
39
- ✅ "ok" → proceeds to Phase 6 (commit)
39
+ ✅ "ok" → proceeds to Phase 4 (commit)
40
40
  ❌ "fix: ..." → the worktree is recreated and the fix is applied
41
41
  ```
42
42
 
@@ -52,5 +52,5 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
52
52
  node $HOME/.claude/scripts/evidence-gate.mjs --claim manual --status passed \
53
53
  --evidence "$WORKTREE/.pipeline/manual-test.json"
54
54
  ```
55
- Exit 1 means the "ok" is not accepted: name the criterion that lacks evidence and wait for the next reply. Exit 0 → recreate the worktree, proceed to Phase 6. Full contract: `$HOME/.claude/multi-agent-refs/phases/phase-5-test.md` step 5.
55
+ Exit 1 means the "ok" is not accepted: name the criterion that lacks evidence and wait for the next reply. Exit 0 → recreate the worktree, proceed to Phase 4. Full contract: `$HOME/.claude/multi-agent-refs/phases/phase-3-review.md` step 5.
56
56
  - **Fix needed** → recreate the worktree, apply the fix
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: multi-agent-model
3
+ language: en
4
+ description: "Turn the top model rung on or off and keep the cost ledger's pricing in step with it. Use when asked to enable or disable Fable, or which model the pipeline dispatches."
5
+ user-invocable: true
6
+ argument-hint: "[on | off] - no argument reports the current state"
7
+ ---
8
+
9
+ # multi-agent model - which rung the pipeline dispatches on
10
+
11
+ The ladder is `fable -> opus -> sonnet -> haiku` and it does not change here.
12
+ What changes is whether the top rung is in play at all, which is
13
+ `prefs.global.modelFallback.fableEnabled` and ships `false`.
14
+
15
+ ```bash
16
+ bash "$HOME/.claude/lib/model-rung.sh" ${ARGUMENTS}
17
+ ```
18
+
19
+ ## Why this command exists
20
+
21
+ The switch existed before the command did. It could only be flipped by editing
22
+ preferences by hand, and `model-fallback.md` said so in a line most people never
23
+ reached. That is a knob with no handle.
24
+
25
+ It also never travelled alone. `prefs.global.costBudget.pricingModel` defaults to
26
+ `fable` so the estimate stays an upper bound; with the rung off, that default
27
+ prices every call above what it can cost, trips the budget ceiling early, and
28
+ triggers a downgrade nobody needed. The documentation asked the user to set both.
29
+ This command sets both, together:
30
+
31
+ | `fableEnabled` | `costBudget.pricingModel` |
32
+ |---|---|
33
+ | `true` | `fable` |
34
+ | `false` | `opus` |
35
+
36
+ Flipping one without the other is the defect this closes, so the pair moves as
37
+ one write or not at all.
38
+
39
+ ## What it reports with no argument
40
+
41
+ The current rung, the pricing model, and **what the switch means on this host** -
42
+ because it does not mean the same thing on all three:
43
+
44
+ | Host | What `off` does | Why |
45
+ |---|---|---|
46
+ | Claude Code | every `preferredModel: fable` persona (architects, reviewer 1, triage) starts on `opus` | the only host where the rung is Fable 5 |
47
+ | Copilot CLI | nothing | Fable 5 is not offered there; its personas never sat on this rung |
48
+ | Codex CLI | nothing, deliberately | the `fable` rung there means `gpt-5.6 @ xhigh`, a different model on a different account - switching it from a knob named after an Anthropic model would surprise a Codex user |
49
+
50
+ So on two of the three hosts this command is a **status report**, not a switch,
51
+ and it says which one it is rather than claiming a change it did not make.
52
+
53
+ ## The consequence it prints when turning the rung off
54
+
55
+ Phase 3's reviewer panel collapses from three models to two. Reviewer 1 lands on
56
+ `opus`, which Reviewer 2 already holds, and dispatching one model twice is not
57
+ cross-model review. `consensus.reviewerCount` records `2`, and the `unverified`
58
+ verdict rule matters more rather than less - two Anthropic models agreeing on a
59
+ judgment call was already weak evidence and there is now one fewer of them.
60
+ Triage also runs on `opus`, making it the same model as Reviewer 1; the Phase 3
61
+ Step 3 anonymisation requirement covers that case and is not optional here.
62
+
63
+ This is printed at the moment of the change, not left in a doc.
64
+
65
+ ## Related
66
+
67
+ - `/multi-agent:route-on` - policy-driven rung selection per persona or phase, a
68
+ separate feature that also ships off. This command decides whether a rung
69
+ EXISTS; that one decides which rung a given call picks.
70
+ - Full fallback contract, including the three failure triggers this switch is
71
+ deliberately not one of: `$HOME/.claude/multi-agent-refs/features/model-fallback.md`
@@ -112,7 +112,7 @@ Procedure:
112
112
 
113
113
  ## Step 0c: DEV-TOOLKIT - current MCP practice for the companion toolkit
114
114
 
115
- The pipeline's hands on devices and browsers are MCP tools served by a companion repo (`multi-agent-toolkit-mcp`): Phase 5 test, `manual-test`, `design-check` and `apple-archive-compliance` all call them, and several pipeline skills declare a minimum toolkit version (see `cross-cli-contract.md`). That repo therefore has to track the MCP field, not just its own README. This step researches what current practice is and audits the toolkit against it.
115
+ The pipeline's hands on devices and browsers are MCP tools served by a companion repo (`multi-agent-toolkit-mcp`): Phase 3 test, `manual-test`, `design-check` and `apple-archive-compliance` all call them, and several pipeline skills declare a minimum toolkit version (see `cross-cli-contract.md`). That repo therefore has to track the MCP field, not just its own README. This step researches what current practice is and audits the toolkit against it.
116
116
 
117
117
  Full procedure - resolution (configuration first, never a hardcoded path; skip when nothing resolves or `enabled` is false), the 5 research axes, the audit command block, and the band-E output table + rules - lives in `$HOME/.claude/multi-agent-refs/refactor/toolkit-research.md`. Read it before running this step.
118
118
 
@@ -147,8 +147,8 @@ Output (plan band F):
147
147
  ```
148
148
  | # | Error tag | Occurrences | Users | Usual phase | Versions | Root cause (file) | Fix | In plan? |
149
149
  |---|-----------|-------------|-------|-------------|----------|-------------------|-----|----------|
150
- | 1 | 4:reviewer-json-invalid | 12 | 3 | 4 | 14.x-15.x | reviewer prompt lets prose leak | tighten schema instruction in phase-4-review.md | Yes (P0) |
151
- | 2 | phase-3-failed | 5 | 2 | 3 | 15.0.x | build step misses a stack toolchain | add preflight in phase-3-dev.md | Yes (P1) |
150
+ | 1 | 4:reviewer-json-invalid | 12 | 3 | 4 | 14.x-15.x | reviewer prompt lets prose leak | tighten schema instruction in phase-3-review.md | Yes (P0) |
151
+ | 2 | phase-3-failed | 5 | 2 | 3 | 15.0.x | build step misses a stack toolchain | add preflight in phase-2-dev.md | Yes (P1) |
152
152
  ```
153
153
 
154
154
  Rules for this band:
@@ -23,7 +23,7 @@ Resume a paused or failed task from the last successful phase.
23
23
 
24
24
  3. **Load context** - Read the findings of previous phases from `agent-log.md`:
25
25
  - Phase 1 analysis → use in Phase 2+
26
- - Phase 2 plan → use in Phase 3+
26
+ - Phase 1 plan → use in Phase 2+
27
27
  - Phase 3 code → already present in the worktree
28
28
 
29
29
  4. **Continue the pipeline** - Start from where it left off (same pipeline as the main multi-agent command)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: multi-agent-resume-local
3
3
  language: en
4
- description: "Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain."
4
+ description: "Continue already-done LOCAL work through the pipeline tail: Review (with its build gate) → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain."
5
5
  user-invocable: true
6
6
  ---
7
7
 
@@ -13,13 +13,13 @@ You already wrote (and maybe hand-tested) the change on the current branch, or c
13
13
 
14
14
  ```
15
15
  Phase 0: Init → project/branch detect, resolve base + diff (work already done), Jira id, state (NO worktree)
16
- Phase 4: Review → deterministic gates + parallel review + Fable triage
17
- Phase 5: Build+Test → stack-aware build + run existing tests; SUCCESS required (automated gate, not the interactive user-test)
18
- Phase 6: Commit → commit remaining changes + push + open PR if none exists
19
- Phase 7: Report → technical analysis + Jira comment with test scenarios (channels: Jira / PR / Confluence / Wiki)
16
+ Phase 3: Review → the Verify gate first (stack-aware build + existing tests; SUCCESS required), then
17
+ parallel review (Fable + Opus + Sonnet) + Fable triage
18
+ Phase 4: Commit → commit remaining changes + push + open PR if none exists
19
+ Phase 5: Report → technical analysis + Jira comment with test scenarios (channels: Jira / PR / Confluence / Wiki)
20
20
  ```
21
21
 
22
- Phases 1-3 (Analysis / Planning / Dev) are skipped by design - the branch's local diff IS the input.
22
+ Phases 1-2 (Plan / Dev) are skipped by design - the branch's local diff IS the Phase 2 output. The build that Dev's exit gate would have run happens inside Review instead, because there is no Dev run to inherit a log from.
23
23
 
24
24
  ## When to use it
25
25
 
@@ -35,7 +35,7 @@ Phases 1-3 (Analysis / Planning / Dev) are skipped by design - the branch's lo
35
35
 
36
36
  ```bash
37
37
  multi-agent resume-local # current branch vs base; Jira id from branch name
38
- multi-agent resume-local PROJ-12345 # explicit Jira id for the Phase 7 comment
38
+ multi-agent resume-local PROJ-12345 # explicit Jira id for the Phase 5 comment
39
39
  multi-agent resume-local --base develop # override base branch for the diff
40
40
  multi-agent resume-local autopilot # no gate prompts: auto-fix, auto-PR, auto-comment
41
41
  ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: multi-agent-route-off
3
+ language: en
4
+ description: "Disable model routing and keep its rules, so turning it back on does not re-ask for the same configuration. Use when asked to turn model routing off."
5
+ user-invocable: true
6
+ argument-hint: "(no arguments)"
7
+ ---
8
+
9
+ # multi-agent route-off - disarm routing, keep the configuration
10
+
11
+ ```bash
12
+ bash "$HOME/.claude/lib/route-state.sh" off
13
+ ```
14
+
15
+ Sets `prefs.global.modelRouting.enabled` to `false`. Dispatch returns to the
16
+ plain ladder immediately: every persona takes its `preferredModel`, and the
17
+ `modelFallback` rules are the only thing that can move it.
18
+
19
+ ## The rules are not deleted
20
+
21
+ `strategy`, `scope`, `rules[]` and `budgetCeilingUsd` all survive. `route-on`
22
+ brings back exactly what was configured, without asking again.
23
+
24
+ This is the same contract `autopilot-off` follows with its repo selection, for
25
+ the same reason: a command named after a toggle that quietly discards
26
+ configuration is a destructive action in disguise. To actually remove the rules,
27
+ replace them with an empty array:
28
+
29
+ ```bash
30
+ echo '[]' > /tmp/none.json
31
+ bash "$HOME/.claude/lib/route-state.sh" set-rules /tmp/none.json
32
+ ```
33
+
34
+ ## What stays behind
35
+
36
+ Routing decisions already written to the cost ledger stay there. They are a
37
+ record of what happened on past runs, and deleting them would make a run's cost
38
+ unexplainable after the fact - which is the one thing the ledger exists to
39
+ prevent.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: multi-agent-route-on
3
+ language: en
4
+ description: "Enable policy-driven model routing: pick a strategy, a scope, and the rules that say which rung a call lands on. Use when asked to turn model routing on."
5
+ user-invocable: true
6
+ argument-hint: "[--strategy=manual|task-fit|cost-ceiling] [--scope=subagent,bulk-read,research]"
7
+ ---
8
+
9
+ # multi-agent route-on - arm model routing
10
+
11
+ ```bash
12
+ bash "$HOME/.claude/lib/route-state.sh" on ${ARGUMENTS}
13
+ ```
14
+
15
+ Routing ships **off**. This is the command that turns it on, and it writes to
16
+ `prefs.global.modelRouting`, validated against the repo's `schemas/route-config.schema.json`.
17
+
18
+ ## What a rule is
19
+
20
+ ```json
21
+ { "when": { "persona": "code-reviewer" }, "prefer": ["opus", "sonnet"] }
22
+ { "when": { "phase": 2 }, "prefer": ["sonnet", "haiku"] }
23
+ ```
24
+
25
+ Ordered, first match wins. `when` matches on `persona`, `phase` (0..5) or
26
+ `taskKind`; `prefer` lists rungs in descending preference.
27
+
28
+ **Rung names are the contract; model ids are not.** `opus` is a rung here and a
29
+ model id in `cost-table.json`, and the second can change without anyone editing
30
+ a rule. Writing `claude-opus-5` into a rule pins a decision to a string that will
31
+ go stale.
32
+
33
+ Set rules with:
34
+
35
+ ```bash
36
+ bash "$HOME/.claude/lib/route-state.sh" set-rules path/to/rules.json
37
+ ```
38
+
39
+ ## Strategies
40
+
41
+ | Strategy | What it does |
42
+ |---|---|
43
+ | `manual` | only the explicit rules apply, nothing is inferred. The default, because a router that guesses is a router nobody can predict |
44
+ | `task-fit` | a rule may match on `taskKind`, and the cheapest rung clearing it is chosen |
45
+ | `cost-ceiling` | rungs downgrade as the run approaches `budgetCeilingUsd` |
46
+
47
+ ## Scope, and the value that is not in it
48
+
49
+ `scope` names the call sites routing may act on: `subagent`, `bulk-read`,
50
+ `research`. Every one of them is a call **this pipeline makes itself**.
51
+
52
+ There is no `host-session` value, and that absence is enforced by that schema
53
+ rather than written as advice. Routing a host session means rewriting the CLI's
54
+ base URL to point at a local gateway - which sends the user's *entire* session
55
+ through a third layer, including work that has nothing to do with this pipeline,
56
+ breaks the subscription's auth model, and silently changes which model answered.
57
+ Passing `--scope=host-session` is refused with that reason, not ignored.
58
+
59
+ ## The limit this command prints every time
60
+
61
+ On Claude Code a subagent cannot be dispatched to a non-Anthropic model: subagent
62
+ dispatch belongs to the host, not to us. So Phase 1, 2 and 3 personas stay inside
63
+ the Anthropic ladder no matter what the rules say, and external providers apply
64
+ only at `bulk-read` and `research`, where the pipeline makes the HTTP call.
65
+
66
+ This is printed by `route-status` on every invocation instead of living in a doc,
67
+ because the question it answers - "routing is on, why is the reviewer still on
68
+ Opus" - otherwise arrives days later as a bug report.
69
+
70
+ ## Related
71
+
72
+ - `/multi-agent:route-off` - disables routing and **keeps** the rules
73
+ - `/multi-agent:route-status` - what is active, and what it costs
74
+ - `/multi-agent:model` - whether the top rung exists at all. That is a different
75
+ question: this command decides which rung a call picks, that one decides
76
+ whether the top one is in play
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: multi-agent-route-status
3
+ language: en
4
+ description: "Report model routing: whether it is armed, which rule applies where, which rung the last dispatches took, and what this run has cost. Use when asked which model is being used or why."
5
+ user-invocable: true
6
+ argument-hint: "(no arguments)"
7
+ ---
8
+
9
+ # multi-agent route-status - what is actually routing
10
+
11
+ ```bash
12
+ bash "$HOME/.claude/lib/route-state.sh" status
13
+ ```
14
+
15
+ Reports the stored policy, then the part that matters more: **what it can and
16
+ cannot reach.**
17
+
18
+ ## Three states, told apart
19
+
20
+ | Output | Meaning |
21
+ |---|---|
22
+ | `routing: false`, rules present | configured and disarmed. `route-on` restores it as-is; nothing is lost |
23
+ | `routing: true`, `rules: 0` | armed with nothing to match. Not an error - a configuration state, and the most common "I turned it on and nothing changed" |
24
+ | `routing: true` with rules listed | live. Each rule is printed as `when <key>=<value> -> rung > rung` |
25
+
26
+ A disabled router with rules is deliberately not reported as "off" alone: that
27
+ reads as "unconfigured" and sends the user through `route-on`'s questions a
28
+ second time.
29
+
30
+ ## The limit, printed every time
31
+
32
+ On Claude Code a subagent cannot be sent to a non-Anthropic model. Subagent
33
+ dispatch belongs to the host; the pipeline asks for a persona and the host
34
+ decides what answers. So Phase 1, 2 and 3 personas stay inside the Anthropic
35
+ ladder whatever the rules say, and an external provider is only reachable where
36
+ the pipeline makes the HTTP call itself - `bulk-read.sh` and `research_ask`.
37
+
38
+ This paragraph is output, not documentation, because the alternative is the
39
+ question arriving later as "routing is on but the reviewer is still on Opus, is
40
+ it broken". It is not broken; it is the seam.
41
+
42
+ ## Where decisions are recorded
43
+
44
+ With `recordDecisions: true` (the default) every routing decision is written to
45
+ the cost ledger: which rule matched, which rung it chose, and why. That is what
46
+ makes a run's cost explainable after it finished - a router whose choices are not
47
+ recorded cannot be audited, and the cost question always arrives after the run,
48
+ never during it.
49
+
50
+ Per-run cost and the model breakdown come from the same ledger:
51
+
52
+ ```bash
53
+ node "$HOME/.claude/scripts/token-budget-report.mjs" --json
54
+ ```
55
+
56
+ ## Related
57
+
58
+ - `/multi-agent:route-on` / `/multi-agent:route-off` - arm and disarm
59
+ - `/multi-agent:model` - whether the top rung exists at all
@@ -223,7 +223,7 @@ Re-run scan from Step 1. Show final status:
223
223
  All tokens present. Pipeline ready to use.
224
224
 
225
225
  Optional per-project features (configured on first use, nothing to do now):
226
- • Phase 7 Report Step 2 Wiki - auto-generates component wiki pages + Figma
226
+ • Phase 5 Report Step 2 Wiki - auto-generates component wiki pages + Figma
227
227
  screenshots. Activates when (a) task is a component AND (b) a Figma token
228
228
  is in Keychain. Four adapters supported: submodule / in-repo / github-wiki
229
229
  / separate-repo. First run asks: use auto-detected path, use a custom
@@ -21,7 +21,7 @@ Show every active and completed task as a table.
21
21
 
22
22
  `runs-index.mjs` resolves through `lib/run-paths.sh` / `scripts/_run-paths.mjs`,
23
23
  so it sees both directory layouts (`<project>/<id>/` and the flat `<id>/`),
24
- the salvaged `artifacts/` copy Phase 6 leaves behind, and every spelling of a
24
+ the salvaged `artifacts/` copy Phase 4 leaves behind, and every spelling of a
25
25
  task id - and it counts a run that exists in both layouts once. Do NOT
26
26
  re-scan the tree by hand: the earlier instruction here listed three
27
27
  hard-coded `.worktrees/` paths and a single `find` depth, and on a real
@@ -32,14 +32,14 @@ Show every active and completed task as a table.
32
32
  2. **Fields per run** (already in the output): `taskId`, `project`, `branch`,
33
33
  `currentPhase`, `status`, `startedAt`, `worktreePath`, `prUrl`, `autopilot`,
34
34
  `phases[]`, `tokens`, `estUsd`, `group`, plus `duplicateOf` when the run also
35
- exists in the other layout and `salvaged` when its state is the Phase 6 copy.
35
+ exists in the other layout and `salvaged` when its state is the Phase 4 copy.
36
36
 
37
37
  3. **Groups are computed, not judged.** Report the `group` the producer
38
38
  returns rather than re-deriving it.
39
39
 
40
40
  | Group | Test | Action offered |
41
41
  |---|---|---|
42
- | `waiting` - Waiting on you | `status == "awaiting_input"`, or a `pr.url`, or phase >= 6 | `resume #N` - the work landed, it needs your answer |
42
+ | `waiting` - Waiting on you | `status == "awaiting_input"`, or a `pr.url`, or phase >= 4 | `resume #N` - the work landed, it needs your answer |
43
43
  | `stopped` - Stopped mid-development | anything else past phase 0 | `resume #N` or `kill #N` |
44
44
  | `question` - Left at a question | phase 0 | `garbage-collect --abandoned` - nothing was built |
45
45
  | `unknown` - Status not recorded | no `status` field | say so; offer nothing |
@@ -54,8 +54,8 @@ Show every active and completed task as a table.
54
54
 
55
55
  | ID | Jira/Task | Branch | Phase | Status | Duration |
56
56
  |----|-----------|--------|-------|--------|----------|
57
- | #1 | PROJ-133139 | feature/PROJ-133139-... | 7/7 DONE | ✅ Complete | 12m |
58
- | #3 | PROJ-133408 | feature/PROJ-133408-... | 7/7 DONE | ✅ Complete | 8m |
57
+ | #1 | PROJ-133139 | feature/PROJ-133139-... | 5/5 DONE | ✅ Complete | 12m |
58
+ | #3 | PROJ-133408 | feature/PROJ-133408-... | 5/5 DONE | ✅ Complete | 8m |
59
59
 
60
60
  💡 log #1 | resume #N | kill #N
61
61
  ```
@@ -43,7 +43,7 @@ is being replaced.
43
43
  | `paused` / `failed` | Say the task is not running, and that `/multi-agent:resume #N` will re-enter with the instruction applied at that phase's entry. Queue it. |
44
44
  | `complete` | Refuse. Nothing will read it. Point at `/multi-agent` for a follow-up run. |
45
45
 
46
- `currentPhase` is 7 and status is `in_progress` → warn that Phase 7 is the
46
+ `currentPhase` is 7 and status is `in_progress` → warn that Phase 5 is the
47
47
  last one, so an instruction queued now may never be consumed.
48
48
 
49
49
  3. **Read the instruction** - from the argument, or ask for it when the
@@ -54,7 +54,7 @@ is being replaced.
54
54
  4. **Show what will be queued, and ask**:
55
55
 
56
56
  ```
57
- Steer #3 ({JIRA-KEY}-12345, Phase 3 Dev, in_progress)
57
+ Steer #3 ({JIRA-KEY}-12345, Phase 2 Dev, in_progress)
58
58
 
59
59
  "the field is called web, not frontend"
60
60
 
@@ -32,8 +32,8 @@ Run all steps automatically:
32
32
  ```
33
33
  Step 0: DOCTOR node $HOME/.claude/scripts/doctor.mjs - exit 2 or 4 STOPS the sync
34
34
  Step 1: DETECT Compare timestamps, find stale targets
35
- Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 56 sub-command skills)
36
- Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 56 specs as refs + 8 agent TOML)
35
+ Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 60 sub-command skills)
36
+ Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 60 specs as refs + 8 agent TOML)
37
37
  Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
38
38
  Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
39
39
  Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
@@ -228,16 +228,17 @@ When invoked with the `release` argument:
228
228
  |-------------|-------------|
229
229
  | `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
230
230
 
231
- **56 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
231
+ **60 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
232
232
 
233
233
  ```
234
234
  analysis, analysis-jira, analysis-resolve, autopilot, autopilot-off,
235
235
  autopilot-on, autopilot-status, build-optimize, channels, complaint-analysis,
236
236
  create-jira, design-check, diff-explain, doctor, feedback, forget,
237
237
  garbage-collect, graph, help, ios-coding-standard, issue, jira, kill,
238
- language, local, local-autopilot, log, manual-test, prune-logs,
238
+ language, local, local-autopilot, log, manual-test, model, prune-logs,
239
239
  prune-prompts, purge, refactor, resume, resume-local, review,
240
- review-analysis, review-issue, review-jira, routines, save, scan, search,
240
+ review-analysis, review-issue, review-jira, route-off, route-on,
241
+ route-status, routines, save, scan, search,
241
242
  setup, stack, status, steer, store-ready, sync, test, test-accessibility,
242
243
  test-dark-mode, test-dynamic-type, test-screenshots, testflight-validation,
243
244
  uninstall, update
@@ -38,4 +38,4 @@ alarmkit, app-clips, app-intents, app-store-optimization, app-store-review, appl
38
38
 
39
39
  avkit, core-data, cryptokit, ios-simulator, pdfkit, swift-api-design-guidelines, swift-architecture, swift-formatstyle, swift-security, swiftlint
40
40
 
41
- Note: `swift-security` is a superset of the older standalone `ios-security` skill; `ios-security` is kept because Phase 4 review references it. Candidate for retirement in a later pass.
41
+ Note: `swift-security` is a superset of the older standalone `ios-security` skill; `ios-security` is kept because Phase 3 review references it. Candidate for retirement in a later pass.
@@ -33,7 +33,14 @@ So there is no API path here, only the CLI's own web search and fetch. That make
33
33
 
34
34
  - **opt-in** - `prefs.global.analyst.webSignals` defaults to false;
35
35
  - **best-effort** - a source that does not answer marks the row "could not query" and the analysis continues;
36
- - **not parity-enforced** - web search is not guaranteed on every CLI this pipeline targets, the same carve-out Figma component work already has.
36
+ - **not parity-enforced** - the CLI's own web search is not guaranteed on every host this pipeline targets, the same carve-out Figma component work already has.
37
+
38
+ Since toolkit 3.13.0 there is a second path that does not depend on the host:
39
+ `research_search` and `research_ask` run over the MCP channel, which every host
40
+ already speaks, and return the same shape everywhere. Prefer them when the
41
+ toolkit is registered and a key is configured; the host's own search stays the
42
+ fallback. The keys live in the environment and are never passed as arguments, so
43
+ nothing about this path puts a credential in a transcript.
37
44
 
38
45
  ## Never let signal into the cache digest
39
46
 
@@ -3,7 +3,7 @@
3
3
  > Auto-generated by `pipeline/scripts/build-skills-index.mjs` - do not hand-edit.
4
4
  > Regenerate with `node pipeline/scripts/build-skills-index.mjs`.
5
5
 
6
- **212 skills** across 2 groups.
6
+ **216 skills** across 2 groups.
7
7
 
8
8
  | Group | Name | Platform | Description |
9
9
  |-------|------|----------|-------------|
@@ -105,7 +105,7 @@
105
105
  | core | `multi-agent-complaint-analysis` | - | Customer-complaint triage. Ingests complaints (paste, csv/xlsx/txt/json file, Jira issue, Confluence URL), fetches Graylog evidence per trx/ |
106
106
  | core | `multi-agent-create-jira` | - | Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with |
107
107
  | core | `multi-agent-design-check` | - | Mock-mode vs Figma design audit (iOS / Android, local-only). Pick repo + module, gate on mock support, enumerate every state driver into a c |
108
- | core | `multi-agent-diff-explain` | - | Map Phase 4 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
108
+ | core | `multi-agent-diff-explain` | - | Map Phase 3 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
109
109
  | core | `multi-agent-doctor` | - | Health check for the installed pipeline: layout, preferences, credentials, hooks and host capabilities, each with one actionable step. Exit |
110
110
  | core | `multi-agent-feedback` | - | Send one message to the maintainer: a bug, an idea or a question. Only the text you type is sent - no logs, no repo names, no paths. Shows t |
111
111
  | core | `multi-agent-forget` | - | Remove a saved /multi-agent routine (created by /multi-agent:save): deletes its local-only command and its registry entry. Asks which one an |
@@ -118,19 +118,23 @@
118
118
  | core | `multi-agent-kill` | - | Stop the given task, then remove its worktree and branch. Asks for confirmation. Use when a running or stuck task should be stopped and its |
119
119
  | core | `multi-agent-language` | - | Toggle outputLanguage (assistant explanations, picker questions, PR/Jira/Confluence bodies). promptLanguage is fixed to English; commit mess |
120
120
  | core | `multi-agent-local` | - | Full pipeline in local mode - no worktree, runs directly on the current branch. Use when the full pipeline should run on the current branc |
121
- | core | `multi-agent-local-autopilot` | - | Full pipeline + local + autopilot - no worktree, no confirmations, all 8 phases run end-to-end on the current branch. Use when the full pi |
121
+ | core | `multi-agent-local-autopilot` | - | Full pipeline + local + autopilot - no worktree, no confirmations, all 6 phases run end-to-end on the current branch. Use when the full pi |
122
122
  | core | `multi-agent-log` | - | Show the agent-log.md for the given task. With no ID, shows the most recent task. Use when asked what a task did, or to read its log. |
123
123
  | core | `multi-agent-manual-test` | - | Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 5 standalone (the UI Bug Hunter lives at multi-agent-te |
124
+ | core | `multi-agent-model` | - | Turn the top model rung on or off and keep the cost ledger's pricing in step with it. Use when asked to enable or disable Fable, or which mo |
124
125
  | core | `multi-agent-prune-logs` | - | Delete per-task project logs under ~/.claude/logs/multi-agent (filter by age/project/task). Audit trail + metrics are preserved. Dry-run fir |
125
126
  | core | `multi-agent-prune-prompts` | - | Zero-base prompt review: measure the always-on instruction footprint, classify every rule block, propose keep/trial-removal/delete; applies |
126
127
  | core | `multi-agent-purge` | - | ⚠️ Wipes every worktree, branch, log, and state file. Irreversible; asks for double confirmation. Use when every worktree, branch, log and s |
127
128
  | core | `multi-agent-refactor` | - | Analyse the project: extract adapted best-practices, hunt real bugs + improvement areas, check upstream drift of derived skills, research th |
128
129
  | core | `multi-agent-resume` | - | Resume a stopped or failed task from the phase where it left off. Use when a task stopped or failed and should carry on from where it left o |
129
- | core | `multi-agent-resume-local` | - | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
130
+ | core | `multi-agent-resume-local` | - | Continue already-done LOCAL work through the pipeline tail: Review (with its build gate) → Commit/PR → Report (technical analysis + Jira tes |
130
131
  | core | `multi-agent-review` | - | Run parallel review on a branch diff or a Pull Request: 3 models on Claude Code (Fable + Opus + Sonnet), 3 models on Copilot CLI (GPT + Opus |
131
132
  | core | `multi-agent-review-analysis` | - | Review a written analysis document instead of a diff: resolve it from a path, a Confluence page or a Jira issue, run the deterministic gates |
132
133
  | core | `multi-agent-review-issue` | - | Assess whether a GitHub issue is ready for multi-agent development: fetch it, grade scope / acceptance criteria / repro / design / API / sta |
133
134
  | core | `multi-agent-review-jira` | - | Assess whether a Jira issue is ready for multi-agent development: fetch it, grade scope / acceptance criteria / repro / design / API / stack |
135
+ | core | `multi-agent-route-off` | - | Disable model routing and keep its rules, so turning it back on does not re-ask for the same configuration. Use when asked to turn model rou |
136
+ | core | `multi-agent-route-on` | - | Enable policy-driven model routing: pick a strategy, a scope, and the rules that say which rung a call lands on. Use when asked to turn mode |
137
+ | core | `multi-agent-route-status` | - | Report model routing: whether it is armed, which rule applies where, which rung the last dispatches took, and what this run has cost. Use wh |
134
138
  | core | `multi-agent-routines` | - | List your saved /multi-agent routines (from /multi-agent:save) with what each one does, rendered in outputLanguage. Use when asked which sav |
135
139
  | core | `multi-agent-save` | - | Save a recurring job as a reusable /multi-agent:<name> command. Reviews the conversation + your CLAUDE.md for candidate routines, you pick o |
136
140
  | core | `multi-agent-scan` | - | Skill security scan: walks local skill directories against a tiered pattern catalog. Use when local skill directories need checking for unsa |