@mmerterden/multi-agent-pipeline 17.6.0 → 19.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 (272) hide show
  1. package/CHANGELOG.md +310 -0
  2. package/README.md +76 -18
  3. package/README.tr.md +55 -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/0011-dormant-ci.md +25 -1
  9. package/docs/adr/0014-six-phase-consolidation.md +134 -0
  10. package/docs/adr/README.md +2 -1
  11. package/docs/architecture.md +37 -38
  12. package/docs/best-practices.md +1 -1
  13. package/docs/ecosystem.md +37 -26
  14. package/docs/engineering.md +1 -1
  15. package/docs/facts.json +45 -0
  16. package/docs/features.md +54 -53
  17. package/docs/performance.md +5 -5
  18. package/docs/recovery-guide.md +9 -9
  19. package/docs/server-readiness.md +188 -0
  20. package/docs/token-budget-history.md +3 -1
  21. package/index.js +18 -3
  22. package/install/_codex-agents.mjs +1 -1
  23. package/install/_common.mjs +42 -17
  24. package/install/_dev-only-files.mjs +8 -0
  25. package/install/_unattended-profile.mjs +113 -0
  26. package/install/index.mjs +48 -0
  27. package/install/templates/claude-hooks.json +1 -1
  28. package/install/templates/codex-instructions.md +1 -1
  29. package/install/templates/copilot-instructions.md +28 -28
  30. package/manifest.json +1065 -0
  31. package/package.json +6 -3
  32. package/pipeline/agents/dev-critic.md +3 -3
  33. package/pipeline/commands/figma-to-swiftui.md +1 -1
  34. package/pipeline/commands/multi-agent/SKILL.md +8 -8
  35. package/pipeline/commands/multi-agent/analysis/SKILL.md +9 -9
  36. package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
  37. package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
  38. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
  39. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
  41. package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
  42. package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
  43. package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
  44. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
  45. package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
  46. package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
  47. package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
  48. package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
  49. package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
  50. package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
  51. package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
  52. package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
  53. package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
  54. package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
  55. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  56. package/pipeline/commands/multi-agent/status/SKILL.md +54 -23
  57. package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
  58. package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
  59. package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
  60. package/pipeline/lib/_jira-auth.sh +8 -0
  61. package/pipeline/lib/analysis-jira-write.sh +32 -0
  62. package/pipeline/lib/ask-choice.sh +13 -2
  63. package/pipeline/lib/autopilot-state.sh +8 -0
  64. package/pipeline/lib/credential-inventory.sh +1 -1
  65. package/pipeline/lib/fatal.mjs +129 -0
  66. package/pipeline/lib/fetch-fortify.sh +1 -1
  67. package/pipeline/lib/figma-mcp-refresh.sh +18 -0
  68. package/pipeline/lib/figma-screenshot.sh +18 -0
  69. package/pipeline/lib/invoked-directly.mjs +43 -0
  70. package/pipeline/lib/jira-publish.sh +42 -0
  71. package/pipeline/lib/md2confluence-v3.py +47 -0
  72. package/pipeline/lib/model-rung.sh +142 -0
  73. package/pipeline/lib/outbound-gate.mjs +175 -0
  74. package/pipeline/lib/phase-schema.mjs +88 -0
  75. package/pipeline/lib/plan-todos.sh +32 -11
  76. package/pipeline/lib/post-pr-review.sh +77 -8
  77. package/pipeline/lib/repo-hygiene.sh +8 -3
  78. package/pipeline/lib/require-jq.sh +40 -0
  79. package/pipeline/lib/route-state.sh +161 -0
  80. package/pipeline/lib/run-paths.sh +335 -0
  81. package/pipeline/multi-agent-refs/_account-picker.md +1 -1
  82. package/pipeline/multi-agent-refs/_dev-context.md +1 -1
  83. package/pipeline/multi-agent-refs/_input-parser.md +1 -1
  84. package/pipeline/multi-agent-refs/analysis/evidence.md +0 -9
  85. package/pipeline/multi-agent-refs/analysis/intake.md +1 -1
  86. package/pipeline/multi-agent-refs/analysis/locked.md +21 -22
  87. package/pipeline/multi-agent-refs/analysis/render.md +1 -1
  88. package/pipeline/multi-agent-refs/analysis/synthesis.md +12 -6
  89. package/pipeline/multi-agent-refs/android-guide.md +1 -1
  90. package/pipeline/multi-agent-refs/audit-guide.md +13 -13
  91. package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
  92. package/pipeline/multi-agent-refs/channels/jira.md +3 -3
  93. package/pipeline/multi-agent-refs/channels/pr.md +4 -4
  94. package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
  95. package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
  96. package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
  97. package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +74 -4
  98. package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
  99. package/pipeline/multi-agent-refs/features/cost-analysis.md +93 -0
  100. package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
  101. package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
  102. package/pipeline/multi-agent-refs/features/doctor.md +47 -2
  103. package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
  104. package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
  105. package/pipeline/multi-agent-refs/features/model-fallback.md +5 -5
  106. package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
  107. package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
  108. package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
  109. package/pipeline/multi-agent-refs/features/review-multi-repo.md +1 -1
  110. package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
  111. package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
  112. package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
  113. package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
  114. package/pipeline/multi-agent-refs/features/verify.md +83 -0
  115. package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
  116. package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
  117. package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
  118. package/pipeline/multi-agent-refs/knowledge.md +11 -11
  119. package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
  120. package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
  121. package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
  122. package/pipeline/multi-agent-refs/phases/modes.md +30 -30
  123. package/pipeline/multi-agent-refs/phases/operations.md +21 -10
  124. package/pipeline/multi-agent-refs/phases/phase-0-init.md +25 -25
  125. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
  126. package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
  127. package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
  128. package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
  129. package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
  130. package/pipeline/multi-agent-refs/phases.md +44 -48
  131. package/pipeline/multi-agent-refs/picker-contract.md +1 -1
  132. package/pipeline/multi-agent-refs/progress-contract.md +6 -6
  133. package/pipeline/multi-agent-refs/readiness-review.md +1 -1
  134. package/pipeline/multi-agent-refs/rules.md +7 -7
  135. package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
  136. package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
  137. package/pipeline/multi-agent-refs/unattended-contract.md +129 -0
  138. package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
  139. package/pipeline/preferences-template.json +9 -1
  140. package/pipeline/rules/outside-the-pipeline.md +1 -1
  141. package/pipeline/schemas/agent-state.schema.json +50 -50
  142. package/pipeline/schemas/analysis-output.schema.json +2 -2
  143. package/pipeline/schemas/autopilot-config.schema.json +1 -1
  144. package/pipeline/schemas/code-graph.schema.json +1 -1
  145. package/pipeline/schemas/criteria-manifest.schema.json +1 -1
  146. package/pipeline/schemas/dev-critic-output.schema.json +1 -1
  147. package/pipeline/schemas/diff-risk.schema.json +1 -1
  148. package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
  149. package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
  150. package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
  151. package/pipeline/schemas/phases.json +105 -0
  152. package/pipeline/schemas/plan-todos.schema.json +5 -5
  153. package/pipeline/schemas/planning-output.schema.json +1 -1
  154. package/pipeline/schemas/prefs.schema.json +100 -56
  155. package/pipeline/schemas/reviewer-output.schema.json +3 -3
  156. package/pipeline/schemas/route-config.schema.json +74 -0
  157. package/pipeline/schemas/scope-check.schema.json +1 -1
  158. package/pipeline/schemas/test-gap.schema.json +1 -1
  159. package/pipeline/schemas/token-budget.json +12 -18
  160. package/pipeline/schemas/triage-output.schema.json +6 -6
  161. package/pipeline/scripts/README.md +3 -3
  162. package/pipeline/scripts/_code-graph.mjs +2 -2
  163. package/pipeline/scripts/_run-paths.mjs +372 -0
  164. package/pipeline/scripts/_smoke-root.sh +1 -1
  165. package/pipeline/scripts/aggregate-metrics.mjs +65 -65
  166. package/pipeline/scripts/autopilot-arming.mjs +2 -1
  167. package/pipeline/scripts/autopilot-intake.mjs +2 -1
  168. package/pipeline/scripts/autopilot-runner.mjs +206 -2
  169. package/pipeline/scripts/build-references.mjs +2 -1
  170. package/pipeline/scripts/build-stack-plugins.mjs +10 -2
  171. package/pipeline/scripts/capture-evidence.sh +7 -2
  172. package/pipeline/scripts/capture-flush.sh +8 -8
  173. package/pipeline/scripts/capture-resume.sh +3 -3
  174. package/pipeline/scripts/classify-plan-safety.mjs +3 -2
  175. package/pipeline/scripts/cost-analyze.mjs +600 -0
  176. package/pipeline/scripts/cost-budget-check.mjs +4 -12
  177. package/pipeline/scripts/council-view.mjs +2 -1
  178. package/pipeline/scripts/crush-json.mjs +2 -1
  179. package/pipeline/scripts/diff-explain.mjs +7 -10
  180. package/pipeline/scripts/diff-risk-score.mjs +2 -1
  181. package/pipeline/scripts/doctor.mjs +140 -6
  182. package/pipeline/scripts/evidence-gate.mjs +9 -3
  183. package/pipeline/scripts/feedback-send.mjs +12 -2
  184. package/pipeline/scripts/gc-abandoned.sh +32 -16
  185. package/pipeline/scripts/gc-tmp.sh +1 -1
  186. package/pipeline/scripts/gc-worktrees.sh +12 -5
  187. package/pipeline/scripts/gen-facts.mjs +175 -0
  188. package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
  189. package/pipeline/scripts/gen-ref-toc.mjs +1 -1
  190. package/pipeline/scripts/github-ssh-setup.sh +64 -7
  191. package/pipeline/scripts/graph-mermaid.mjs +4 -2
  192. package/pipeline/scripts/graph-report.mjs +1 -1
  193. package/pipeline/scripts/jira-attach.sh +1 -1
  194. package/pipeline/scripts/keychain-save.sh +101 -30
  195. package/pipeline/scripts/learn-from-transcripts.mjs +3 -2
  196. package/pipeline/scripts/learning-curve.mjs +36 -31
  197. package/pipeline/scripts/log-metric.sh +17 -4
  198. package/pipeline/scripts/make-manifest.mjs +199 -0
  199. package/pipeline/scripts/memory-save.sh +1 -1
  200. package/pipeline/scripts/migrate-prefs.mjs +24 -6
  201. package/pipeline/scripts/migrate-state.mjs +94 -4
  202. package/pipeline/scripts/phase-banner.sh +26 -22
  203. package/pipeline/scripts/phase-tracker.sh +48 -10
  204. package/pipeline/scripts/plan-coverage-gate.mjs +8 -4
  205. package/pipeline/scripts/pre-commit-check.sh +7 -0
  206. package/pipeline/scripts/pre-push-check.sh +7 -0
  207. package/pipeline/scripts/purge.sh +23 -6
  208. package/pipeline/scripts/render-agent-log-cost.sh +10 -3
  209. package/pipeline/scripts/render-cost-summary.sh +9 -2
  210. package/pipeline/scripts/render-work-summary.sh +14 -7
  211. package/pipeline/scripts/review-file-filter.mjs +5 -3
  212. package/pipeline/scripts/review-scope.mjs +2 -1
  213. package/pipeline/scripts/routine-registry.mjs +2 -1
  214. package/pipeline/scripts/run-aggregator.mjs +26 -20
  215. package/pipeline/scripts/run-metrics.mjs +4 -2
  216. package/pipeline/scripts/runs-index.mjs +353 -0
  217. package/pipeline/scripts/scorecard-snapshot.mjs +178 -0
  218. package/pipeline/scripts/search-logs.sh +18 -0
  219. package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
  220. package/pipeline/scripts/smoke-schema-validation.sh +26 -7
  221. package/pipeline/scripts/test-gap-scan.mjs +2 -1
  222. package/pipeline/scripts/test-integrity-gate.mjs +2 -1
  223. package/pipeline/scripts/token-budget-report.mjs +13 -2
  224. package/pipeline/scripts/triage-memory.mjs +2 -2
  225. package/pipeline/scripts/update-issue-progress.sh +56 -7
  226. package/pipeline/scripts/usage-report.mjs +12 -1
  227. package/pipeline/scripts/validate-analysis-doc.mjs +75 -18
  228. package/pipeline/scripts/validate-code-graph.mjs +6 -3
  229. package/pipeline/scripts/validate-complaint-doc.mjs +2 -1
  230. package/pipeline/scripts/validate-diff-risk.mjs +6 -3
  231. package/pipeline/scripts/validate-planning.mjs +1 -1
  232. package/pipeline/scripts/validate-reviewer.mjs +1 -1
  233. package/pipeline/scripts/validate-state.mjs +45 -5
  234. package/pipeline/scripts/validate-test-gap.mjs +6 -3
  235. package/pipeline/scripts/validate-triage.mjs +6 -4
  236. package/pipeline/scripts/verify-citations.mjs +4 -2
  237. package/pipeline/scripts/verify.mjs +327 -0
  238. package/pipeline/scripts/worktree-finalize.sh +18 -9
  239. package/pipeline/scripts/write-state.mjs +154 -15
  240. package/pipeline/skills/.skill-manifest.json +37 -21
  241. package/pipeline/skills/.skills-index.json +104 -5
  242. package/pipeline/skills/shared/README.md +15 -6
  243. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +2 -2
  244. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +2 -2
  245. package/pipeline/skills/shared/core/multi-agent/SKILL.md +69 -71
  246. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
  247. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
  248. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
  249. package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
  250. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
  251. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
  252. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
  253. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
  254. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
  255. package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
  256. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
  257. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
  258. package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
  259. package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
  260. package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
  261. package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
  262. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  263. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +35 -11
  264. package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
  265. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
  266. package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/package_app.sh +4 -1
  267. package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/setup_dev_signing.sh +4 -1
  268. package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/sign-and-notarize.sh +2 -1
  269. package/pipeline/skills/skills-index.md +13 -4
  270. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
  271. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
  272. package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
@@ -59,30 +59,31 @@ How It Works (Phase 0 - Interactive Flow):
59
59
  Pipeline (after Phase 0):
60
60
 
61
61
  Phase 0: Init -> The 8 steps above
62
- Phase 1: Analysis -> Stack detection + codebase scan (Sonnet)
63
- Phase 2: Planning -> Task breakdown + architecture review + Plan Approval Gate
64
- Phase 3: Dev -> TDD: test -> code -> build (Sonnet) + build queue
65
- Phase 4: Review -> Deterministic gates + parallel AI review + Fable triage
62
+ Phase 1: Plan -> Stack detection + codebase scan, then task breakdown,
63
+ architecture review and the Plan Approval Gate (Opus)
64
+ Phase 2: Dev -> TDD: test -> code -> build (Sonnet) + build queue, then the
65
+ Verify exit gate: build, lint, tests, secrets
66
+ (the build runs ONCE per run; its log carries into Review)
67
+ Phase 3: Review -> Parallel AI review + Fable triage, then the optional user test
66
68
  (Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
67
- Phase 5: Test -> Optional: switch to branch, test in Xcode
68
- Phase 6: Commit -> Commit -> push -> PR + issue body update (never auto-closes)
69
- Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
69
+ Phase 4: Commit -> Commit -> push -> PR + issue body update (never auto-closes)
70
+ Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
70
71
  + internal capture (agent-log · knowledge · memory)
71
72
 
72
- Autopilot always pauses at the Phase 7 channels menu (30-min timeout → session ends).
73
+ Autopilot always pauses at the Phase 5 channels menu (30-min timeout → session ends).
73
74
 
74
75
  ------------------------------------------------------------
75
76
 
76
77
  Modes:
77
78
 
78
79
  Depth is asked at Phase 0 Step 7.5, not passed as a flag:
79
- Full Analysis -> Plan -> Dev(Sonnet) -> Review -> Test -> Commit -> Report
80
- Short Dev(Opus, self-contained) -> Review -> Test -> Commit -> Report
80
+ Full Plan -> Dev(Sonnet) -> Review -> Commit -> Report
81
+ Short Dev(Opus, self-contained) -> Review -> Commit -> Report
81
82
  Recommended from taskType. Review is never skipped either way.
82
83
 
83
84
  --local No worktree - works directly on local branch
84
85
  autopilot Skip all confirmations, including the depth question, so
85
- it always runs Full (EXCEPT Phase 7 channels menu)
86
+ it always runs Full (EXCEPT Phase 5 channels menu)
86
87
 
87
88
  Dedicated dash commands (Copilot):
88
89
  multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
@@ -147,7 +148,7 @@ UI Testing (standalone):
147
148
  and lives at /multi-agent:store-ready. The old /multi-agent:test "store-ready"
148
149
  tag still works and hands off there.
149
150
 
150
- Manual Test (Phase 5 standalone - Xcode hint flow):
151
+ Manual Test (Phase 3 user-test step, standalone - Xcode hint flow):
151
152
 
152
153
  /multi-agent:manual-test [#N] Checkout task branch, print Xcode/SourceTree hints.
153
154
  (Renamed from :test in v5.7.4.)
@@ -232,30 +233,31 @@ Nasıl Çalışır (Phase 0 - İnteraktif Akış):
232
233
  Pipeline (Phase 0'dan sonra):
233
234
 
234
235
  Phase 0: Init -> Yukarıdaki 8 adım
235
- Phase 1: Analysis -> Stack tespiti + codebase taraması (Sonnet)
236
- Phase 2: Planning -> Task kırılımı + mimari inceleme + Plan Onay Kapısı
237
- Phase 3: Dev -> TDD: test -> kod -> build (Sonnet) + build queue
238
- Phase 4: Review -> Deterministik kapılar + paralel AI review + Fable triage
236
+ Phase 1: Plan -> Stack tespiti + codebase taraması, ardından task kırılımı,
237
+ mimari inceleme ve Plan Onay Kapısı (Opus)
238
+ Phase 2: Dev -> TDD: test -> kod -> build (Sonnet) + build queue, sonra
239
+ Verify çıkış kapısı: build, lint, test, sır taraması
240
+ (build koşu başına BİR kez çalışır, log'u Review'a devreder)
241
+ Phase 3: Review -> Paralel AI review + Fable triage, sonra opsiyonel kullanıcı testi
239
242
  (Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
240
- Phase 5: Test -> Opsiyonel: branch'e geç, Xcode'da test
241
- Phase 6: Commit -> Commit -> push -> PR + issue body güncelleme (hiç auto-close yok)
242
- Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
243
+ Phase 4: Commit -> Commit -> push -> PR + issue body güncelleme (hiç auto-close yok)
244
+ Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
243
245
  + internal capture (agent-log · knowledge · memory)
244
246
 
245
- Autopilot Phase 7 channels menüsünde HER ZAMAN durur (30 dk timeout → session biter).
247
+ Autopilot Phase 5 channels menüsünde HER ZAMAN durur (30 dk timeout → session biter).
246
248
 
247
249
  ------------------------------------------------------------
248
250
 
249
251
  Modlar:
250
252
 
251
253
  Derinlik Faz 0 Adım 7.5'te sorulur, bayrakla geçilmez:
252
- Tam Analiz -> Plan -> Dev(Sonnet) -> Review -> Test -> Commit -> Report
253
- Kısa Dev(Opus, kendi kendine yeten) -> Review -> Test -> Commit -> Report
254
+ Tam Plan -> Dev(Sonnet) -> Review -> Commit -> Report
255
+ Kısa Dev(Opus, kendi kendine yeten) -> Review -> Commit -> Report
254
256
  taskType'a göre önerilir. Review iki durumda da atlanmaz.
255
257
 
256
258
  --local Worktree yok - doğrudan local branch'te çalışır
257
259
  autopilot Derinlik sorusu dahil tüm onayları atlar, bu yüzden her
258
- zaman Tam koşar (İSTİSNA: Phase 7 channels menüsü)
260
+ zaman Tam koşar (İSTİSNA: Phase 5 channels menüsü)
259
261
 
260
262
  Dedicated dash komutlar (Copilot):
261
263
  multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
@@ -14,7 +14,7 @@ Two-axis language preference for the pipeline:
14
14
 
15
15
  | Field | Controls | Stored at | Mutability |
16
16
  |---|---|---|---|
17
- | `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase 5 test prompt, Phase 6 local-checkout prompt) | `prefs.global.promptLanguage` | **Fixed to `en`** - never toggled by this skill |
17
+ | `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase 3 test prompt, Phase 4 local-checkout prompt) | `prefs.global.promptLanguage` | **Fixed to `en`** - never toggled by this skill |
18
18
  | `outputLanguage` | Assistant's explanations, status updates, error messages, and pipeline-generated reports rendered to the user (NOT external payloads) | `prefs.global.outputLanguage` | Toggled by this skill |
19
19
 
20
20
  **Why promptLanguage is fixed:** it governs the picker's structural chrome only - the `AskUserQuestion` `header` chip, host error UI, and internal contract identifiers. The chip stays English because it is capped at 12 characters and most Turkish equivalents overflow it. Everything a user actually reads follows `outputLanguage`: the picker `question`, each option's `label`, and each option's `description`, per the canonical per-field matrix in `multi-agent-refs/rules.md`. A picker whose question or buttons are English on a Turkish run is a bug, not the contract. The host's own **Other** row is injected by the CLI and stays English on every run; nothing in the pipeline can localize it.
@@ -83,5 +83,5 @@ Render in the new outputLanguage:
83
83
 
84
84
  - `multi-agent-setup` - first-run language picker (asks only outputLanguage; promptLanguage seeded as `en`)
85
85
  - `prefs.schema.json` - `global.promptLanguage` (fixed `"en"`) and `global.outputLanguage`
86
- - Phase 5 / Phase 6 - interactive prompts follow the per-field matrix: `question` + `label` + `description` in `outputLanguage`, `header` English
86
+ - Phase 5 / Phase 4 - interactive prompts follow the per-field matrix: `question` + `label` + `description` in `outputLanguage`, `header` English
87
87
  - `multi-agent-help` - reads outputLanguage for its own copy
@@ -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
@@ -11,27 +11,51 @@ Show every active and completed task as a table.
11
11
 
12
12
  ## Steps
13
13
 
14
- 1. **Detect project** - Find the repo root from cwd (if none, look at all known repos):
15
- - `~/my-ui-components/.worktrees/`
16
- - `~/my-figma-app/.worktrees/`
17
- - `~/my-ios-app/.worktrees/`
14
+ 1. **Ask the producer, do not go looking.** One command answers the whole
15
+ question:
18
16
 
19
- 2. **Scan worktrees** - Read the `agent-state.json` file in each worktree directory:
20
17
  ```bash
21
- find {repo}/.worktrees/ -name "agent-state.json" -maxdepth 2
18
+ node "$HOME/.claude/scripts/runs-index.mjs" # grouped table
19
+ node "$HOME/.claude/scripts/runs-index.mjs" --json # the same records
22
20
  ```
23
21
 
24
- 3. **Parse state** - For each task:
25
- - `taskId`, `branch`, `currentPhase`, `status`, `startedAt`, `autopilot`
22
+ `runs-index.mjs` resolves through `lib/run-paths.sh` / `scripts/_run-paths.mjs`,
23
+ so it sees both directory layouts (`<project>/<id>/` and the flat `<id>/`),
24
+ the salvaged `artifacts/` copy Phase 4 leaves behind, and every spelling of a
25
+ task id - and it counts a run that exists in both layouts once. Do NOT
26
+ re-scan the tree by hand: the earlier instruction here listed three
27
+ hard-coded `.worktrees/` paths and a single `find` depth, and on a real
28
+ install that combination missed a quarter of the runs and double-counted
29
+ others. It also scanned worktrees for `agent-state.json`, which Phase 0 has
30
+ never written there ("never inside the worktree", `phases/phase-0-init.md`).
26
31
 
27
- 4. **Show as a table**:
32
+ 2. **Fields per run** (already in the output): `taskId`, `project`, `branch`,
33
+ `currentPhase`, `status`, `startedAt`, `worktreePath`, `prUrl`, `autopilot`,
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 4 copy.
36
+
37
+ 3. **Groups are computed, not judged.** Report the `group` the producer
38
+ returns rather than re-deriving it.
39
+
40
+ | Group | Test | Action offered |
41
+ |---|---|---|
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
+ | `stopped` - Stopped mid-development | anything else past phase 0 | `resume #N` or `kill #N` |
44
+ | `question` - Left at a question | phase 0 | `garbage-collect --abandoned` - nothing was built |
45
+ | `unknown` - Status not recorded | no `status` field | say so; offer nothing |
46
+
47
+ A run with no `status` is **not** placed in an actionable group. Unknown is
48
+ not a finding, and calling it dead is the same false claim in the other
49
+ direction.
50
+
51
+ 4. **Show as a table**, grouped per step 3:
28
52
  ```
29
53
  🤖 Multi-Agent Tasks
30
54
 
31
55
  | ID | Jira/Task | Branch | Phase | Status | Duration |
32
56
  |----|-----------|--------|-------|--------|----------|
33
- | #1 | PROJ-133139 | feature/PROJ-133139-... | 7/7 DONE | ✅ Complete | 12m |
34
- | #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 |
35
59
 
36
60
  💡 log #1 | resume #N | kill #N
37
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