@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
@@ -75,13 +75,13 @@ multi-agent "LoginView dark mode fix" autopilot
75
75
 
76
76
  | Phase | Normal | Autopilot |
77
77
  |-------|--------|-----------|
78
- | Phase 2 (Plan Approval Gate) | Clarification (max 2 rounds) + approval loop - user replies `onayla`/`iptal`/free-text | **Gate skip** - log the plan, go straight to Phase 3 (autopilot contract: zero interaction) |
79
- | Phase 5 (User Test) | "Want to test it?" → wait | Skip → go straight to Phase 6 |
80
- | Phase 6 (Commit) | "Want to commit?" → wait | Automatic commit + push |
81
- | Phase 6 (PR) | "Want to open a PR?" → wait | Automatically create the PR |
78
+ | Phase 1 (Plan Approval Gate) | Clarification (max 2 rounds) + approval loop - user replies `onayla`/`iptal`/free-text | **Gate skip** - log the plan, go straight to Phase 3 (autopilot contract: zero interaction) |
79
+ | Phase 5 (User Test) | "Want to test it?" → wait | Skip → go straight to Phase 4 |
80
+ | Phase 4 (Commit) | "Want to commit?" → wait | Automatic commit + push |
81
+ | Phase 4 (PR) | "Want to open a PR?" → wait | Automatically create the PR |
82
82
 
83
83
  **What NEVER skips (even in autopilot):**
84
- - Phase 4 Review → if there is a blocking finding, return to Phase 3, fix + rebuild automatically (safety)
84
+ - Phase 3 Review → if there is a blocking finding, return to Phase 3, fix + rebuild automatically (safety)
85
85
  - Kill/Purge confirmations → destructive operations always ask
86
86
  - Build fail → fix + rebuild automatically (max 3 retries). If it still fails after 3 retries → pause, ask the user
87
87
 
@@ -108,8 +108,8 @@ ID is stored in `agent-state.json` and shown in `multi-agent status`:
108
108
 
109
109
  | ID | Jira | Branch | Phase | Status |
110
110
  |----|------|--------|-------|--------|
111
- | #1 | PROJ-12345 | feature/PROJ-12345-... | 3/7 Dev | ⚡ in progress |
112
- | #2 | PROJ-67890 | feature/PROJ-67890-... | 1/7 Analysis | 📊 scanning |
111
+ | #1 | PROJ-12345 | feature/PROJ-12345-... | 2/5 Dev | ⚡ in progress |
112
+ | #2 | PROJ-67890 | feature/PROJ-67890-... | 1/5 Analysis | 📊 scanning |
113
113
  ```
114
114
 
115
115
  ID counter stored at `.worktrees/.multi-agent-counter` (persists across sessions).
@@ -181,14 +181,14 @@ When `multi-agent purge` is called:
181
181
 
182
182
  When `multi-agent resume [id]` is called:
183
183
 
184
- 1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase 6 keeps its state at `.../{task-id}/artifacts/agent-state.json`, so look there too before reporting not-found.
184
+ 1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase 4 keeps its state at `.../{task-id}/artifacts/agent-state.json`, so look there too before reporting not-found.
185
185
  - If no `id` given, take the most recent task dir with `status != "done"`
186
186
  2. **Read state**: Parse `agent-state.json` → determine last completed phase
187
187
  3. **Restore context**: Read `agent-log.md` for previous findings:
188
- - Phase 1 analysis findings → reuse in Phase 2+
189
- - Phase 2 plan/todos → reuse in Phase 3+
190
- - Phase 3 code changes → already on disk in worktree
191
- - Phase 4 review findings → reuse if re-reviewing
188
+ - Phase 1 analysis findings → reuse in Phase 2+ (Dev onwards)
189
+ - Phase 1 plan/todos → reuse in Phase 2+
190
+ - Phase 2 code changes → already on disk in worktree
191
+ - Phase 3 review findings → reuse if re-reviewing
192
192
  4. **Resume from next phase**: Skip completed phases, start from `currentPhase + 1`
193
193
  5. **Log**: `🔄 Resumed PROJ-{id} from Phase {N}`
194
194
 
@@ -204,28 +204,29 @@ This works across sessions because:
204
204
 
205
205
  Every agent persona under `$HOME/.claude/agents/*.md` declares a `preferredModel` frontmatter field. The orchestrator MUST honor it on every dispatch, on both Claude Code and Copilot CLI - cross-CLI parity is enforced by `smoke-cross-cli-behavior.sh`.
206
206
 
207
- | Persona | `preferredModel` | Rationale (condensed) |
208
- |---|---|---|
209
- | `explorer` | `sonnet` | Scan/pattern work, cost-efficient without quality loss |
210
- | `code-reviewer` | `fable` | Reviewer 1; Phase 4 sets Reviewer 2 `opus`, Reviewer 3 `sonnet` |
211
- | `security-auditor` | `opus` | False-negative cost is high; opus reduces miss rate |
212
- | `ios-architect` | `fable` | Deep module/protocol/migration reasoning |
213
- | `android-architect` | `fable` | Gradle modules, Compose stability, Hilt graphs |
214
- | `backend-architect` | `fable` | API + migration + scaling reasoning |
207
+ Each persona file carries its own `modelRationale`; this is the rung only.
215
208
 
216
- **Dispatch contract (pseudo-code):**
209
+ | Persona | `preferredModel` |
210
+ |---|---|
211
+ | `explorer` | `sonnet` |
212
+ | `code-reviewer` | `fable` (Reviewer 1; Phase 3 sets Reviewer 2 `opus`, Reviewer 3 `sonnet`) |
213
+ | `security-auditor` | `opus` |
214
+ | `ios-architect` / `android-architect` / `backend-architect` | `fable` |
215
+
216
+ **Dispatch contract:**
217
217
 
218
218
  ```bash
219
219
  persona_file="$HOME/.claude/agents/${persona}.md"
220
220
  pref_model="$(awk '/^preferredModel:/ {print $2; exit}' "$persona_file")"
221
- override="${PHASE_MODEL_OVERRIDE:-}" # set by orchestrator per-dispatch (e.g. Phase 4 Reviewer 3 → sonnet)
222
- resolved_model="${override:-${pref_model:-opus}}"
221
+ override="${PHASE_MODEL_OVERRIDE:-}" # per-dispatch, e.g. Phase 3 Reviewer 3 → sonnet
222
+ routed="${override:-$("$HOME/.claude/lib/model-dispatch.sh" subagent --persona "$persona" --phase "$currentPhase" --task-kind "$taskType" --default "${pref_model:-opus}" 2>/dev/null)}"
223
+ resolved_model="${routed:-${pref_model:-opus}}"
223
224
 
224
225
  export CLAUDE_CODE_SUBAGENT_MODEL="$resolved_model"
225
- # Claude Code honors the env var; Copilot CLI reads the same env + passes as --model flag.
226
+ # Claude Code honors the env var; Copilot CLI also passes it as --model.
226
227
  ```
227
228
 
228
- **Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > persona `preferredModel` > global default (`opus`).
229
+ **Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > `prefs.global.modelRouting` rule > persona `preferredModel` > global default (`opus`). Routing here is Anthropic-only: features/model-fallback.md "Routing at dispatch".
229
230
 
230
231
  **Observability:** emit `phase.agent.dispatch` OTel span with `{persona, resolved_model, override_source}` attributes when `MULTI_AGENT_OTEL_SPANS=1` (see `phase-tracker.sh`).
231
232
 
@@ -255,7 +256,7 @@ matched_skills=$(node "$HOME/.claude/scripts/match-skills.mjs" \
255
256
  --limit 12 \
256
257
  --json)
257
258
 
258
- # Inject only matched skills[] into subagent prompts for Phase 2-4.
259
+ # Inject only matched skills[] into subagent prompts for Phase 1-3.
259
260
  # Skills not in the matched list are not loaded - saves ~10K-30K tokens
260
261
  # per subagent dispatch on small tasks.
261
262
  ```
@@ -289,16 +290,14 @@ and the copy named a path the code had stopped using.
289
290
 
290
291
  Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, and any status line rendered to the terminal - MUST come from this table. Phase labels are English on every host (`promptLanguage` is fixed to `en`; picker text follows its own matrix):
291
292
 
292
- | # | Label |
293
- |---|------------------------|
294
- | 0 | Phase 0: Init |
295
- | 1 | Phase 1: Analysis |
296
- | 2 | Phase 2: Planning |
297
- | 3 | Phase 3: Dev |
298
- | 4 | Phase 4: Review |
299
- | 5 | Phase 5: Test |
300
- | 6 | Phase 6: Commit & PR |
301
- | 7 | Phase 7: Report |
293
+ | # | Label |
294
+ |---|----------------------|
295
+ | 0 | Phase 0: Init |
296
+ | 1 | Phase 1: Plan |
297
+ | 2 | Phase 2: Dev |
298
+ | 3 | Phase 3: Review |
299
+ | 4 | Phase 4: Commit & PR |
300
+ | 5 | Phase 5: Report |
302
301
 
303
302
  **Render rule:**
304
303
 
@@ -313,7 +312,7 @@ Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, a
313
312
  All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied (Claude Code path; Copilot CLI does not have a TaskList widget so this rule is Claude-only). The native widget renders by creation order, not by phase-number metadata - out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state file is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN: register the tile in order with default `pending` status, then flip via TaskUpdate when the phase actually short-circuits. Mode-specific phase sets:
314
313
 
315
314
  - `multi-agent`: 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7
316
- - `multi-agent-local`, `multi-agent-autopilot`, `multi-agent-local-autopilot`: 0 → 1 → 2 → 3 → 4 → 6 → 7 (the interactive Phase 5 gate needs a worktree checkout and an attended run)
315
+ - `multi-agent-local`, `multi-agent-autopilot`, `multi-agent-local-autopilot`: 0 → 1 → 2 → 3 → 4 → 5 (the interactive Phase 5 gate needs a worktree checkout and an attended run)
317
316
  - `multi-agent-analysis`: 0 → 1 → 2 → 4 → 6 → 7 (no code, so no Dev and no Test)
318
317
 
319
318
  Depth decides WHICH of the command's set is registered. The tracker boots at Step -1, long before the depth question can be asked, so it registers Phase 0 alone and the remaining tiles are created at Step 7.5 once the answer is known - a Short run never draws an Analysis or Planning tile.
@@ -421,26 +420,26 @@ Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)"
421
420
 
422
421
  **IMPORTANT**: Update `agent-state.json` at EVERY phase transition. This file is the resume source of truth.
423
422
 
424
- ### Phase 1: Analysis (claude-sonnet-5, `explorer` persona)
425
- 1. Launch **explore agents** (parallel) to scan codebase:
426
- - Related files to the task
427
- - Existing patterns and conventions
428
- - Potential impact areas
423
+ ### Phase 1: Plan
424
+ Two halves, one phase, one approval gate (Phases 1 and 2 until 19.0.0).
425
+
426
+ **1a - Analysis** (claude-sonnet-5, `explorer` persona)
427
+ 1. Launch **explore agents** (parallel) to scan the codebase: related files, existing patterns and conventions, potential impact areas
429
428
  2. Optionally launch **security-auditor** agent for pre-check
430
429
  3. Summarize findings
431
- 4. Log: `📊 Phase 1: Analysis - {N} files identified, {summary}`
430
+ 4. Log: `📊 Phase 1: Plan (analysis) - {N} files identified, {summary}`
432
431
 
433
- ### Phase 2: Planning (claude-fable-5)
432
+ **1b - Planning** (claude-fable-5)
434
433
  1. Create task breakdown → todos with dependencies
435
434
  2. Launch **ios-architect** agent for architecture review (if structural changes)
436
435
  3. Determine development approach per todo (new file, modify, refactor)
437
- 4. Log: `🧠 Phase 2: Plan - {N} todos created`
438
- 5. **Plan Approval Gate** (Full + interactive only - a Short run has no plan, autopilot may not ask). Full flow in `refs/phases/phase-2-planning.md` Step 5:
436
+ 4. Log: `🧠 Phase 1: Plan - {N} todos created`
437
+ 5. **Plan Approval Gate** (Full + interactive only - a Short run has no plan, autopilot may not ask). Full flow in `refs/phases/phase-1-plan.md` Step 5:
439
438
  - **5a - Clarification** (conditional, max 2 rounds): if the Jira/issue description is ambiguous (vague acceptance, UI task without Figma, API task without endpoint contract, `ambiguityScore >= 2`, parent-story scope drift), ask structured questions before rendering the plan. User answers → plan regenerated. If it is still unclear after the 2nd round, render the plan with a "best-effort" banner.
440
439
  - **5b - Approval loop**: render plan → user: `onayla`/`iptal`/free-text. A free-text edit request → the planning model (Fable) revises the plan → show it again. No iteration cap; user controls exit via `onayla` or `iptal`.
441
- - Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["2"]`.
440
+ - Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["1"]`.
442
441
 
443
- ### Phase 3: Dev (claude-sonnet-5)
442
+ ### Phase 2: Dev (claude-sonnet-5)
444
443
  For each todo (respecting dependency order):
445
444
  1. Update todo status: `in_progress`
446
445
  2. **TDD cycle**:
@@ -450,31 +449,31 @@ For each todo (respecting dependency order):
450
449
  3. Run build: `xcodebuild` via **task agent**
451
450
  4. If build fails → fix → rebuild (max 3 attempts, track `retryCount` in `agent-state.json`)
452
451
  5. Update todo status: `done`
453
- 6. Log: `⚡ Phase 3: {todo-id} - Test ✅ Build ✅`
452
+ 6. Log: `⚡ Phase 2: {todo-id} - Test ✅ Build ✅`
454
453
 
455
- ### Phase 4: Review (parallel + triage)
454
+ ### Phase 3: Review (parallel + triage)
456
455
  0. **Diff Risk Scoring (advisory, v8.3+)** - before reviewer dispatch run `node $HOME/.claude/scripts/diff-risk-score.mjs --base "$BASE_BRANCH" --top 5` and inject the top-N risk-ranked files as a `${PRIORITY_FILES}` block into each reviewer's prompt. Heuristic, deterministic, sub-second, never gates the pipeline. Disabled when `prefs.global.diffRiskAdvisory = false`. Signals: security paths (×3), schema migrations (×4), public API surfaces (×2), no-test-change (×2.5), complexity delta (×1.5), UI-critical paths (×1.5), loc changed (×1).
457
456
  1. Launch **code-reviewer** agents in parallel. Reviewer set depends on which CLI is hosting the pipeline:
458
457
  - **Claude Code** (3 reviewers): `claude-fable-5` (deep security + architecture) + `claude-opus-5` (edge cases, different perspective) + `claude-sonnet-5` (quality + correctness)
459
458
  - **Copilot CLI** (3 reviewers): `gpt-5.4` (edge cases, different perspective) + `claude-opus-5` + `claude-sonnet-5` (Fable 5 is not offered on Copilot CLI)
460
459
  - Triage: single top-tier pass over merged findings (`claude-fable-5` on Claude Code, `claude-opus-5` on Copilot CLI)
461
460
  2. Collect findings, classify:
462
- - 🔴 **Blocking** → must fix → back to Phase 3 (max 3 iterations)
461
+ - 🔴 **Blocking** → must fix → back to Phase 2 (max 3 iterations)
463
462
  - 🟡 **Important** → fix and re-review
464
463
  - 🟢 **Suggestion** → apply if reasonable
465
- 3. Log: `🔍 Phase 4: Review - {consensus}`
464
+ 3. Log: `🔍 Phase 3: Review - {consensus}`
466
465
 
467
- ### Phase 5: Test
468
- Lets the user physically test the code before opening a PR. The prompt MUST make it explicit that saying yes **removes the worktree and checks the branch out locally** - otherwise the user is hit with an implicit side effect.
466
+ #### Phase 3 user test (optional, interactive)
467
+ Lets the user test the code before the PR. The prompt MUST say that yes **removes the worktree and checks the branch out locally**, or the side effect is implicit.
469
468
 
470
- 0. **Test Gap Report (advisory, v8.3+)** - before the local-checkout prompt run `node $HOME/.claude/scripts/test-gap-scan.mjs --base "$BASE_BRANCH" --stack <ios|android|python|node>` to surface public symbols added in this branch that have no paired test. Heuristic, deterministic, sub-second, never gates by default. iOS `*View.swift` / Android `@Composable` symbols default to `important` severity; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` (loops back to Phase 4 rework when the important+blocking count exceeds the threshold). Disabled when `prefs.testGap.enabled = false`.
469
+ 0. **Test Gap Report (advisory, v8.3+)** - before the local-checkout prompt run `node $HOME/.claude/scripts/test-gap-scan.mjs --base "$BASE_BRANCH" --stack <ios|android|python|node>` to surface public symbols added in this branch that have no paired test. Heuristic, deterministic, sub-second, never gates by default. iOS `*View.swift` / Android `@Composable` symbols default to `important` severity; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` (loops back to Phase 2 rework when the important+blocking count exceeds the threshold). Disabled when `prefs.testGap.enabled = false`.
471
470
  1. **Ask** with a native `AskUserQuestion` picker (never a typed y/N prompt). The options MUST make the local-checkout side effect explicit - testing removes the worktree and checks the branch out into the main repo:
472
471
  - `question`: "Check out locally to test now?" (rendered in `outputLanguage`)
473
472
  - `header`: "Test" (English, <=12 chars)
474
473
  - `options`:
475
474
  - `{ label: "Test now", description: "Removes the worktree and checks the branch out into the main repo for Xcode / manual test" }`
476
- - `{ label: "Skip", description: "Stay in the worktree and go to Phase 6" }`
477
- - **Skip** → go to Phase 6
475
+ - `{ label: "Skip", description: "Stay in the worktree and go to Phase 4" }`
476
+ - **Skip** → go to Phase 4
478
477
  - **Test now** → continue:
479
478
  2. **Remove the worktree and switch to the branch** (automatic):
480
479
  ```bash
@@ -491,18 +490,18 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
491
490
  • Xcode → open the app's `.xcworkspace` → Cmd+B → Cmd+U
492
491
  • Manual test on the Simulator
493
492
 
494
- ✅ "tamam" → proceeds to Phase 6
495
- ❌ "fix: ..." → worktree is recreated, returns to Phase 3
493
+ ✅ "tamam" → proceeds to Phase 4
494
+ ❌ "fix: ..." → worktree is recreated, returns to Phase 2
496
495
  ```
497
496
  4. **Pause and wait**: Wait for the user's response
498
497
  5. **If a fix is needed**:
499
498
  - Recreate the worktree: `git worktree add .worktrees/PROJ-{id} {branch-name}`
500
- - Return to Phase 3
501
- 6. Log: `🧪 Phase 5: Test - {result}`
499
+ - Return to Phase 2
500
+ 6. Log: `🧪 Phase 3: Review (user test) - {result}`
502
501
 
503
502
  > ⚠️ Commits live on the branch - removing the worktree does NOT delete the commits.
504
503
 
505
- ### Phase 6: Commit & PR
504
+ ### Phase 4: Commit & PR
506
505
 
507
506
  **Project-specific commit strategy:**
508
507
 
@@ -513,7 +512,7 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
513
512
  2. Run `/figma-iteration-commit {ComponentName}`
514
513
  - Build verification, test, key sync, code review, submodule commits to `iteration/develop`, push with rebase-retry, issue housekeeping, auto-unblock dependents - the skill handles all of it
515
514
  - Do NOT commit manually - the skill manages everything
516
- 3. Log: `📦 Phase 6: figma-iteration-commit - {ComponentName}`
515
+ 3. Log: `📦 Phase 4: figma-iteration-commit - {ComponentName}`
517
516
 
518
517
  #### my-app / generic
519
518
  1. **Ask**: "Want to commit?"
@@ -524,15 +523,15 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
524
523
  - Author: resolved from `prefs.global.identities[]` (e.g. `Ada Lovelace <ada@example.com>`) - NEVER hardcode.
525
524
  4. Push to remote
526
525
  5. **Ask**: "Want to open a Pull Request?"
527
- - **No** → go to Phase 7 (only commit + push will have been done)
526
+ - **No** → go to Phase 5 (only commit + push will have been done)
528
527
  - **Yes** → create the PR (target: source branch)
529
528
  6. **Issue body update** (if GitHub Issue exists):
530
529
  - Fill PR links in issue body: `- **common:** {PR URL}`, `- **uicomponents:** {PR URL}`
531
530
  - Update Progress flags: `Implementation 🟢`, `Testing 🟢`, `Code Connect 🟢`
532
531
  - Use `gh issue edit {issueNo} --body "{updated body}"` - preserve all existing sections
533
- 7. Log: `📦 Phase 6: Commit {sha} - PR #{number}`
532
+ 7. Log: `📦 Phase 4: Commit {sha} - PR #{number}`
534
533
 
535
- ### Phase 7 Report Step 2: WIKI + Figma Screenshots (for component tasks with GitHub Issue)
534
+ ### Phase 5 Report Step 2: WIKI + Figma Screenshots (for component tasks with GitHub Issue)
536
535
 
537
536
  Skip this sub-step if the task is NOT a component implementation (e.g., bug fix, refactor).
538
537
 
@@ -566,9 +565,9 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
566
565
  git push origin HEAD:master
567
566
  ```
568
567
  7. **Update issue Wiki flag**: Set `Wiki` → `🟢` in issue body
569
- 8. Log: `📖 Phase 7 Step 2: Wiki - {ComponentName}.md + {ComponentName}-iOS.md + screenshot`
568
+ 8. Log: `📖 Phase 5 Step 2: Wiki - {ComponentName}.md + {ComponentName}-iOS.md + screenshot`
570
569
 
571
- ### Phase 7: Report
570
+ ### Phase 5: Report
572
571
  1. Finalize `agent-log.md` with ALL sections:
573
572
  - **Timeline table**: phase, agent, model, duration, status, detail
574
573
  - **Agent Activity Report**: per-agent call count, total duration, models used, skill count
@@ -586,7 +585,7 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
586
585
  📖 Wiki: {ComponentName}.md pushed to wiki master
587
586
  📋 Full report: ~/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md
588
587
  ```
589
- 3. Log: `📋 Phase 7: Report complete`
588
+ 3. Log: `📋 Phase 5: Report complete`
590
589
 
591
590
  ---
592
591
 
@@ -635,27 +634,27 @@ Sub-agents have embedded skills in their `.agent.md` files. Each agent is pre-lo
635
634
 
636
635
  | Agent | Embedded Skills | When Activated |
637
636
  |-------|----------------|----------------|
638
- | **code-reviewer** | Code Review Excellence, Security Audit, Performance Review, TDD Verification, Error Detective | Phase 4: Review |
639
- | **ios-architect** | Spec-Driven Architecture, Context Management, Multi-Agent Coordination, API Design, Performance Architecture, Design System Governance | Phase 2: Planning |
640
- | **security-auditor** | iOS Security Deep Dive, App Store Review Gates, Third-Party SDK Risk, Error Detective (Security) | Phase 1: Analysis (pre-check) + Phase 4: Review |
637
+ | **code-reviewer** | Code Review Excellence, Security Audit, Performance Review, TDD Verification, Error Detective | Phase 3: Review |
638
+ | **ios-architect** | Spec-Driven Architecture, Context Management, Multi-Agent Coordination, API Design, Performance Architecture, Design System Governance | Phase 1: Plan |
639
+ | **security-auditor** | iOS Security Deep Dive, App Store Review Gates, Third-Party SDK Risk, Error Detective (Security) | Phase 1: Plan (analysis half, pre-check) + Phase 3: Review |
641
640
 
642
641
  ### Phase → Agent → Skills Flow
643
642
 
644
643
  ```
645
- Phase 1: Analysis
644
+ Phase 1: Plan - analysis half
646
645
  ├─ explore agents (no skills needed - pure file reading)
647
646
  └─ security-auditor agent
648
647
  └─ Skills: iOS Security Deep Dive, App Store Review Gates, SDK Risk
649
648
 
650
- Phase 2: Planning
649
+ Phase 1: Plan - planning half
651
650
  └─ ios-architect agent
652
651
  └─ Skills: Spec-Driven Architecture, API Design, Performance Architecture
653
652
 
654
- Phase 3: Dev
653
+ Phase 2: Dev
655
654
  └─ Ana agent (reads copilot-instructions.md directly)
656
655
  └─ TDD, token rules, code style - from global instructions
657
656
 
658
- Phase 4: Review (parallel + triage)
657
+ Phase 3: Review (parallel + triage)
659
658
  Claude Code (3 parallel):
660
659
  ├─ code-reviewer (claude-opus) → all 5 review skills
661
660
  └─ code-reviewer (claude-sonnet) → all 5 review skills
@@ -671,13 +670,13 @@ Phase 4: Review (parallel + triage)
671
670
  When calling sub-agents, the ana agent SHOULD add task-specific context to the prompt:
672
671
 
673
672
  ```
674
- For code-reviewer in Phase 4:
673
+ For code-reviewer in Phase 3:
675
674
  "Review this diff for PROJ-{id}. Focus areas based on analysis:
676
675
  - {files changed summary from Phase 1}
677
- - {architecture decisions from Phase 2}
676
+ - {architecture decisions from Phase 1}
678
677
  - {specific risk areas identified}"
679
678
 
680
- For ios-architect in Phase 2:
679
+ For ios-architect in Phase 1:
681
680
  "Evaluate architecture for PROJ-{id}. Context:
682
681
  - {task description from Jira/GitHub}
683
682
  - {affected modules from Phase 1 analysis}
@@ -697,9 +696,9 @@ When `multi-agent status` is called, show:
697
696
 
698
697
  | ID | Jira | Branch | Phase | Status | Duration |
699
698
  |----|------|--------|-------|--------|----------|
700
- | #1 | PROJ-12345 | feature/PROJ-12345-... | 3/7 Dev | ⚡ todo-2 in progress | 4m |
701
- | #2 | PROJ-67890 | feature/PROJ-67890-... | 4/7 Review | 🔍 Waiting consensus | 7m |
702
- | #3 | PROJ-11111 | feature/PROJ-11111-... | 7/7 DONE | ✅ Complete | 12m |
699
+ | #1 | PROJ-12345 | feature/PROJ-12345-... | 2/5 Dev | ⚡ todo-2 in progress | 4m |
700
+ | #2 | PROJ-67890 | feature/PROJ-67890-... | 3/5 Review | 🔍 Waiting consensus | 7m |
701
+ | #3 | PROJ-11111 | feature/PROJ-11111-... | 5/5 DONE | ✅ Complete | 12m |
703
702
 
704
703
  💡 kill #2 | log #1 | resume #3
705
704
  ```
@@ -17,9 +17,9 @@ Run the task end-to-end with no confirmations.
17
17
  | Phase | Normal | Autopilot |
18
18
  |-----|--------|-----------|
19
19
  | Phase 2 (Plan) | "Shall I continue?" → wait | Go straight to Phase 3 |
20
- | Phase 5 (Test) | "Do you want to test?" → wait | Skip → Phase 6 |
21
- | Phase 6 (Commit) | "Shall I commit?" → wait | Automatic commit + push |
22
- | Phase 6 (PR) | "Shall I open a PR?" → wait | Create PR automatically |
20
+ | Phase 5 (Test) | "Do you want to test?" → wait | Skip → Phase 4 |
21
+ | Phase 4 (Commit) | "Shall I commit?" → wait | Automatic commit + push |
22
+ | Phase 4 (PR) | "Shall I open a PR?" → wait | Create PR automatically |
23
23
 
24
24
  ## What is NEVER skipped
25
25
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: multi-agent-channels
3
3
  language: en
4
- description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT. Phase 7 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
4
+ description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT. Phase 5 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
5
5
  user-invocable: true
6
6
  argument-hint: '<Jira-id | PR-url | #N | Jira-url> [--channels pr,jira,confluence,wiki] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--dry-run] [--append] [--ready]'
7
7
  ---
8
8
 
9
9
  # multi-agent-channels - Multi-Channel Reporter
10
10
 
11
- > **TLDR** - Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase 7 of the pipeline delegates to this skill; users can also invoke it post-hoc by Jira ID / PR URL / branch.
11
+ > **TLDR** - Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase 5 of the pipeline delegates to this skill; users can also invoke it post-hoc by Jira ID / PR URL / branch.
12
12
  >
13
13
  > **Replaces the old enrich skill in v5.7+** - all enrich capabilities (diff auto-summarize, manual mode, reviewer-preserving Bitbucket PR PUT) are preserved and extended with two additional channels (Confluence, Wiki).
14
14
 
@@ -39,7 +39,7 @@ multi-agent-channels PROJ-12345 --dry-run # preview, no POST
39
39
  1. **Target resolution** - Parse argument, classify (Jira-id, Jira-url, PR-url GitHub or Bitbucket, GitHub-issue-number, empty→cwd+branch). Resolve linked entities (Jira→PR, PR→Jira). Detect remote type.
40
40
  2. **Context source detection** - auto-pick best available: pipeline log (`$HOME/.claude/logs/multi-agent/<project>/<task-id>/agent-log.md` matching jiraId), PR diff (`gh pr diff` or Bitbucket `/diff?contextLines=5`), or manual `--message`.
41
41
  3. **Menu (multi-select)** - channel + content, previous selections pre-ticked from `prefs.global.reportChannels` + `prefs.global.reportContent`. Greyed-out rules per context availability.
42
- 4. **Mode short-circuit** - `--channels X,Y` + `--content A,B` flags skip menu. Autopilot ALWAYS pauses at the menu (v5.7+ Phase 7 exception).
42
+ 4. **Mode short-circuit** - `--channels X,Y` + `--content A,B` flags skip menu. Autopilot ALWAYS pauses at the menu (v5.7+ Phase 5 exception).
43
43
  5. **Generator** - for each selected content source, produce a section body. Humanizer pass per channel separately.
44
44
  6. **Body preview + approval gate** - interactive runs render every selected channel's final body and ask Approve & post / Edit (loop) / Skip channels / Cancel BEFORE any external write. Skipped only by autopilot and `--dry-run`. What is posted is byte-identical to the approved preview.
45
45
  7. **Channel dispatch** - parallel adapter calls, never before the gate resolves: PR description (reviewer-preserving PUT on Bitbucket), Jira comment (wiki markup), Confluence page (storage format + parent page), Wiki (component adapter - Case A scope multi-select or Case B precondition menu).
@@ -69,7 +69,7 @@ Rendered in English (`promptLanguage` is locked to `en`).
69
69
  **Greyed-out rules:**
70
70
  - Wiki unselectable unless `state.taskType === "component"` AND `figmaConfig.wiki.enabled === true`.
71
71
  - Normal analiz + Test senaryoları unselectable if no pipeline log found.
72
- - Teknik analiz unselectable if no Phase 2 planning log AND no PR diff.
72
+ - Teknik analiz unselectable if no Phase 1 planning log AND no PR diff.
73
73
  - Auto-diff unselectable if no PR found.
74
74
  - Manuel not always available.
75
75
 
@@ -192,9 +192,9 @@ forgotten, and that is how the selector above shipped.
192
192
 
193
193
  ### Technical Details ← if "Teknik analiz" selected
194
194
  #### Changes
195
- {Per changed-file-group, what changed + why - from Phase 3 dev log}
195
+ {Per changed-file-group, what changed + why - from Phase 2 dev log}
196
196
  #### Architecture
197
- {Structural decisions, pattern changes - from Phase 2 plan}
197
+ {Structural decisions, pattern changes - from Phase 1 plan}
198
198
  #### Dependencies
199
199
  {New imports / frameworks / packages - from git diff --stat, or "None"}
200
200
 
@@ -290,16 +290,16 @@ Target length: < 80 lines (fits one screen). Auto-diff capped at 5 lines per sec
290
290
  | Jira token missing/expired | Token Save Flow inline; skip on user-skip |
291
291
  | Wiki preconditions not met | Case B menu per `refs/wiki-capture.md` |
292
292
 
293
- ## Phase 7 delegation contract
293
+ ## Phase 5 delegation contract
294
294
 
295
- Phase 7 builds a state bundle and invokes this skill internally. Responsibilities:
295
+ Phase 5 builds a state bundle and invokes this skill internally. Responsibilities:
296
296
 
297
297
  | Who | What |
298
298
  |---|---|
299
- | Phase 7 | Progress tracker (3 sub-steps), agent-log finalization, knowledge+memory capture, telemetry emission |
299
+ | Phase 5 | Progress tracker (3 sub-steps), agent-log finalization, knowledge+memory capture, telemetry emission |
300
300
  | `multi-agent-channels` | All external delivery: PR description update, Jira comment, Confluence page, Wiki pages |
301
301
 
302
- **State bundle** passed from Phase 7:
302
+ **State bundle** passed from Phase 5:
303
303
  ```json
304
304
  {
305
305
  "jiraId": "PROJ-12345",
@@ -313,7 +313,7 @@ Phase 7 builds a state bundle and invokes this skill internally. Responsibilitie
313
313
  }
314
314
  ```
315
315
 
316
- **Autopilot pause contract:** Phase 7 ALWAYS pauses at the channels menu - 30-min timeout → session ends cleanly → resumable via `/multi-agent:resume`. Full contract in `refs/phases/modes.md` + `refs/phases/phase-7-report.md`.
316
+ **Autopilot pause contract:** Phase 5 ALWAYS pauses at the channels menu - 30-min timeout → session ends cleanly → resumable via `/multi-agent:resume`. Full contract in `refs/phases/modes.md` + `refs/phases/phase-5-report.md`.
317
317
 
318
318
  ## Cross-CLI parity
319
319
 
@@ -322,12 +322,12 @@ Prompts MUST be byte-identical between Claude and Copilot. `smoke-cross-cli-beha
322
322
  Progress emission on Copilot (no native TaskCreate UI):
323
323
 
324
324
  ```bash
325
- bash ~/.copilot/scripts/phase-tracker.sh sub 7 1 "Channels dispatch" in_progress
325
+ bash ~/.copilot/scripts/phase-tracker.sh sub 5 1 "Channels dispatch" in_progress
326
326
  # ... adapter runs ...
327
- bash ~/.copilot/scripts/phase-tracker.sh sub 7 1 "Channels dispatch" completed
327
+ bash ~/.copilot/scripts/phase-tracker.sh sub 5 1 "Channels dispatch" completed
328
328
  ```
329
329
 
330
- Same shape as Phase 7 sub-step tracking.
330
+ Same shape as Phase 5 sub-step tracking.
331
331
 
332
332
  ## Examples
333
333
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: multi-agent-diff-explain
3
3
  language: en
4
- description: "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 code change'. Use when a review finding has to be traced to the exact lines that caused it."
4
+ description: "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 code change'. Use when a review finding has to be traced to the exact lines that caused it."
5
5
  user-invocable: true
6
6
  argument-hint: "[#task-id | --triage <path> | --state <path>] [--branch <name>] [--base <name>]"
7
7
  ---
@@ -10,12 +10,12 @@ argument-hint: "[#task-id | --triage <path> | --state <path>] [--branch <name>]
10
10
 
11
11
  **Input**: $ARGUMENTS
12
12
 
13
- Maps the Phase 4 triage output (`accepted` / `deferred` / `rejected`) to the branch's `git diff` output. For each finding, the relevant file/line hunk is embedded in the output. **Produces no side effects** - it only runs `git diff` and emits markdown.
13
+ Maps the Phase 3 triage output (`accepted` / `deferred` / `rejected`) to the branch's `git diff` output. For each finding, the relevant file/line hunk is embedded in the output. **Produces no side effects** - it only runs `git diff` and emits markdown.
14
14
 
15
15
  ## When to use it
16
16
 
17
17
  - After Phase 4 but before Phase 5/6: to answer "which finding lines up with which code?".
18
- - Phase 7 reporting content: "review summary with code context" for Wiki / Confluence.
18
+ - Phase 5 reporting content: "review summary with code context" for Wiki / Confluence.
19
19
  - Post-hoc audit: review-vs-fix comparison for a closed PR.
20
20
 
21
21
  ## Steps
@@ -40,7 +40,7 @@ Maps the Phase 4 triage output (`accepted` / `deferred` / `rejected`) to the bra
40
40
 
41
41
  4. **Show the output to the user** and optionally add commentary:
42
42
  - Phase 3 fix coverage: were all blocking findings touched
43
- - Deferred follow-up: are they all on the Phase 7 list
43
+ - Deferred follow-up: are they all on the Phase 5 list
44
44
 
45
45
  ## Output template
46
46
 
@@ -57,7 +57,7 @@ Maps the Phase 4 triage output (`accepted` / `deferred` / `rejected`) to the bra
57
57
  > Race condition: order total computed twice without lock
58
58
  **Fix:** Compute total once inside the existing transaction block
59
59
  \`\`\`diff
60
- @@ -98,5 +98,7 @@ ...
60
+ -98,5 +98,7 ...
61
61
  \`\`\`
62
62
  ```
63
63
 
@@ -11,7 +11,7 @@ argument-hint: "[build | refresh | ask \"<question>\" | affected \"<symbol>\" |
11
11
 
12
12
  A code graph is a map of what this repo declares and what refers to what, built by
13
13
  regex over comment-stripped source. It exists so Phase 1 can narrow its Explore
14
- fan-out and Phase 7 can refresh `~/.claude/knowledge/<project>/` without an LLM
14
+ fan-out and Phase 5 can refresh `~/.claude/knowledge/<project>/` without an LLM
15
15
  pass. It answers "where does this live" and "what depends on this". It does not
16
16
  answer "what calls this at runtime": call graphs and type resolution need a real
17
17
  parser, which would be an npm runtime dependency, and ADR-0004 forbids one.
@@ -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