@mmerterden/multi-agent-pipeline 19.1.4 → 20.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 (114) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +19 -36
  3. package/README.tr.md +18 -35
  4. package/docs/adr/0002-instruction-driven-flag.md +6 -5
  5. package/docs/adr/0005-lazy-phase-docs.md +2 -2
  6. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
  7. package/docs/adr/0009-claude-stack-skills-plugin-only.md +1 -1
  8. package/docs/adr/0010-own-code-graph.md +5 -4
  9. package/docs/adr/0012-macos-only.md +2 -2
  10. package/docs/adr/0013-lsp-code-intelligence.md +2 -2
  11. package/docs/adr/0014-six-phase-consolidation.md +9 -9
  12. package/docs/adr/0015-one-pipeline-no-depth-answer.md +83 -0
  13. package/docs/adr/0016-the-run-shape-is-asked-not-typed.md +69 -0
  14. package/docs/adr/README.md +18 -16
  15. package/docs/architecture.md +2 -2
  16. package/docs/ecosystem.md +5 -5
  17. package/docs/facts.json +3 -6
  18. package/docs/features.md +4 -5
  19. package/docs/token-budget-history.md +1 -1
  20. package/install/_common.mjs +9 -1
  21. package/install/templates/copilot-instructions.md +7 -16
  22. package/manifest.json +111 -114
  23. package/package.json +1 -1
  24. package/pipeline/commands/multi-agent/SKILL.md +6 -8
  25. package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -0
  26. package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +2 -0
  27. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -0
  28. package/pipeline/commands/multi-agent/autopilot/SKILL.md +2 -0
  29. package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +2 -0
  30. package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +1 -1
  31. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +2 -0
  32. package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/create-jira/SKILL.md +2 -0
  34. package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/forget/SKILL.md +2 -0
  36. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -2
  37. package/pipeline/commands/multi-agent/help/SKILL.md +21 -27
  38. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +5 -4
  39. package/pipeline/commands/multi-agent/issue/SKILL.md +2 -0
  40. package/pipeline/commands/multi-agent/jira/SKILL.md +2 -0
  41. package/pipeline/commands/multi-agent/language/SKILL.md +2 -0
  42. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +2 -0
  43. package/pipeline/commands/multi-agent/purge/SKILL.md +2 -0
  44. package/pipeline/commands/multi-agent/resume/SKILL.md +177 -48
  45. package/pipeline/commands/multi-agent/save/SKILL.md +2 -0
  46. package/pipeline/commands/multi-agent/stack/SKILL.md +2 -0
  47. package/pipeline/commands/multi-agent/sync/SKILL.md +6 -7
  48. package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +2 -0
  49. package/pipeline/commands/multi-agent/uninstall/SKILL.md +2 -0
  50. package/pipeline/lib/repo-hygiene.sh +1 -1
  51. package/pipeline/multi-agent-refs/analysis/render.md +1 -1
  52. package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
  53. package/pipeline/multi-agent-refs/analysis/synthesis.md +1 -1
  54. package/pipeline/multi-agent-refs/analysis-template.md +1 -1
  55. package/pipeline/multi-agent-refs/component-dispatch.md +0 -8
  56. package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -11
  57. package/pipeline/multi-agent-refs/features/external-context-injection.md +2 -0
  58. package/pipeline/multi-agent-refs/features/review-delta.md +1 -1
  59. package/pipeline/multi-agent-refs/features/review-multi-repo.md +3 -3
  60. package/pipeline/multi-agent-refs/features/skill-conformance.md +1 -1
  61. package/pipeline/multi-agent-refs/features/visual-evidence.md +2 -1
  62. package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
  63. package/pipeline/multi-agent-refs/generate-issue.md +2 -0
  64. package/pipeline/multi-agent-refs/issue-jira-triad.md +2 -0
  65. package/pipeline/multi-agent-refs/keychain.md +2 -0
  66. package/pipeline/multi-agent-refs/knowledge.md +0 -7
  67. package/pipeline/multi-agent-refs/outside-the-pipeline.md +1 -1
  68. package/pipeline/multi-agent-refs/payload-contracts.md +1 -1
  69. package/pipeline/multi-agent-refs/phases/modes.md +32 -108
  70. package/pipeline/multi-agent-refs/phases/operations.md +2 -0
  71. package/pipeline/multi-agent-refs/phases/phase-0-init.md +23 -42
  72. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +7 -18
  73. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +13 -44
  74. package/pipeline/multi-agent-refs/phases/phase-3-review.md +19 -22
  75. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +6 -6
  76. package/pipeline/multi-agent-refs/phases/phase-5-report.md +2 -2
  77. package/pipeline/multi-agent-refs/phases.md +9 -11
  78. package/pipeline/multi-agent-refs/progress-contract.md +1 -1
  79. package/pipeline/multi-agent-refs/readiness-review.md +2 -0
  80. package/pipeline/multi-agent-refs/rules.md +1 -1
  81. package/pipeline/multi-agent-refs/tracker-contract.md +9 -40
  82. package/pipeline/multi-agent-refs/wiki-capture.md +3 -2
  83. package/pipeline/preferences-template.json +2 -2
  84. package/pipeline/rules/figma-pipeline.md +1 -1
  85. package/pipeline/schemas/agent-state.schema.json +5 -10
  86. package/pipeline/schemas/migrations/prefs-2.7.0-to-2.8.0.mjs +33 -0
  87. package/pipeline/schemas/phases.json +3 -24
  88. package/pipeline/schemas/prefs.schema.json +5 -5
  89. package/pipeline/scripts/cost-table.json +1 -1
  90. package/pipeline/scripts/gc-refs.sh +1 -1
  91. package/pipeline/scripts/gen-mode-dispatch.mjs +11 -41
  92. package/pipeline/scripts/migrate-prefs.mjs +18 -17
  93. package/pipeline/scripts/phase-tracker.sh +2 -2
  94. package/pipeline/scripts/phase0-exit-gate.mjs +1 -1
  95. package/pipeline/scripts/plan-coverage-gate.mjs +3 -3
  96. package/pipeline/scripts/run-aggregator.mjs +1 -1
  97. package/pipeline/scripts/usage-report.mjs +0 -2
  98. package/pipeline/scripts/worktree-finalize.sh +2 -2
  99. package/pipeline/skills/.skill-manifest.json +8 -20
  100. package/pipeline/skills/.skills-index.json +6 -39
  101. package/pipeline/skills/shared/README.md +5 -8
  102. package/pipeline/skills/shared/core/multi-agent/SKILL.md +8 -11
  103. package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +1 -1
  104. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +13 -16
  105. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -3
  106. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +51 -15
  107. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -6
  108. package/pipeline/skills/skills-index.md +3 -6
  109. package/pipeline/commands/multi-agent/local/SKILL.md +0 -132
  110. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +0 -142
  111. package/pipeline/commands/multi-agent/resume-local/SKILL.md +0 -114
  112. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +0 -41
  113. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +0 -55
  114. package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +0 -51
@@ -4,7 +4,7 @@
4
4
  # `offload-ref.sh` parks build logs, diffs and test output under
5
5
  # <root>/.multi-agent/refs/<node_id>.md so a phase prompt can carry a pointer
6
6
  # instead of the whole log. In worktree modes that directory dies with the
7
- # worktree. In the --local modes there is no worktree: the refs land in the
7
+ # worktree. With a local workspace there is no worktree: the refs land in the
8
8
  # real checkout and nothing ever removes them. They are gitignored, so they are
9
9
  # invisible to `git status` and grow without bound.
10
10
  #
@@ -16,12 +16,9 @@ import { readFileSync } from "node:fs";
16
16
  * node pipeline/scripts/gen-mode-dispatch.mjs --mode=autopilot # 0..5
17
17
  * node pipeline/scripts/gen-mode-dispatch.mjs --mode=analysis # 0/1/3/4/5 (no Dev)
18
18
  *
19
- * v16.0.0 removed the four dev-* modes. Depth is no longer a command name: the
20
- * Phase 0 Step 7.5 picker asks Full or Short and sets `state.onlyDevelop`. That
21
- * answer arrives long after the tracker boots at Step -1, so v17.5.0 splits
22
- * registration for the two modes that ask it (`full`, `local`): Phase 0 at Step -1,
23
- * the rest once depth has named them. Everything else still registers its whole
24
- * set up front, and a generated phase set is per-COMMAND, never per-depth.
19
+ * There is one pipeline. A mode's phase set is a property of the COMMAND and is
20
+ * known before the tracker boots, so every mode registers its whole set at
21
+ * Step -1 and no registration is deferred.
25
22
  *
26
23
  * Companion smoke `smoke-mode-dispatch-drift.sh` regenerates the section for
27
24
  * each mode file, diffs against the on-disk content, and fails on drift.
@@ -63,9 +60,7 @@ const MODES = Object.fromEntries(
63
60
  name,
64
61
  {
65
62
  phases: modePhases(name),
66
- local: m.local,
67
63
  autopilot: m.autopilot,
68
- ...(m.depth ? { depth: true } : {}),
69
64
  },
70
65
  ]),
71
66
  );
@@ -86,9 +81,6 @@ const phaseSequence = activeIds.map((id) => `Phase ${id}`).join(" → ");
86
81
  const MODE_LABELS = {
87
82
  autopilot: "`autopilot`",
88
83
  full: "full-pipeline",
89
- local: "`--local`",
90
- "local-autopilot": "`--local autopilot`",
91
- "full-local": "full-pipeline + `--local`",
92
84
  };
93
85
  const modeLabel = MODE_LABELS[MODE] ?? `\`${MODE}\``;
94
86
 
@@ -98,46 +90,24 @@ const skipNote =
98
90
  ? `${modeLabel} mode does NOT TaskCreate phases ${skippedIds.join("/")} - those are not part of the ${modeLabel} phase set (\`${spec.phases.join(" ")}\`). Only register tiles for the active set.`
99
91
  : `${modeLabel} mode TaskCreates all ${PHASES.length} phases (no phase is skipped).`;
100
92
 
101
- const orderingNote = `**All TaskCreate calls in a batch fire in strict phase-number order BEFORE any TaskUpdate is applied.** For ${modeLabel} that means: ${spec.depth ? `Phase 0 at Step -1, then the rest in ascending order at Step 7.5 (${phaseSequence} minus whatever the depth answer drops)` : phaseSequence}. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".`;
102
-
103
- const localCaveat = spec.local
104
- ? `\n> **Local mode:** no worktree is created, work happens on the current branch. Phase 0 Init still calls \`init\` - the \`--local\` flag is stored in tracker-state.json, and \`:resume\` restores the correct CWD.\n`
105
- : "";
93
+ const orderingNote = `**All TaskCreate calls in a batch fire in strict phase-number order BEFORE any TaskUpdate is applied.** For ${modeLabel} that means: ${phaseSequence}. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".`;
106
94
 
107
95
  const banner = spec.autopilot
108
96
  ? `\n> **Autopilot mode:** user confirmations are skipped. The tracker is still mandatory - autopilot agent calls cannot skip it; skipping breaks \`smoke-tracker-contract.sh\`.\n`
109
97
  : "";
110
98
 
111
- // Registration shape. A mode that asks the depth question does not know its phase
112
- // set at Step -1 (the answer needs taskType, which needs the fetched issue and the
113
- // branch), so it registers Phase 0 there and the rest at Step 7.5. Drawing eight
114
- // tiles beside the question that decides whether two of them run is the failure this
115
- // split exists to remove.
116
- const fullSet = spec.phases.filter((p) => p !== "0:Init");
117
- const shortSet = fullSet.filter((p) => Number(p.split(":")[0]) >= 2);
99
+ // Registration shape. Every mode knows its whole phase set at Step -1, so every
100
+ // tile is created there and nothing is appended later.
118
101
  const loopFor = (list) =>
119
102
  `for p in ${list.map((x) => `"${x}"`).join(" ")}; do\n bash $HOME/.claude/scripts/phase-tracker.sh add "\${p%%:*}" "\${p#*:}"\ndone`;
120
103
 
121
- const initLoop = spec.depth
122
- ? 'bash $HOME/.claude/scripts/phase-tracker.sh add 0 "Init"\nbash $HOME/.claude/scripts/phase-tracker.sh tiles'
123
- : `${loopFor(spec.phases)}`;
124
-
125
- const deferredBlock = spec.depth
126
- ? `
127
- # Phase 0 Step 7.5, immediately after the depth answer - the first moment this
128
- # mode knows its phase set. Full:
129
- ${loopFor(fullSet)}
130
- # Short (Analysis and Planning are not run, so they get no tile at all):
131
- ${loopFor(shortSet)}
132
- # Then the widget, narrowed to the phases that do not have a tile yet:
133
- bash $HOME/.claude/scripts/phase-tracker.sh tiles --new
134
- `
135
- : "";
104
+ const initLoop = loopFor(spec.phases);
105
+ const deferredBlock = "";
136
106
 
137
107
  const out = `## Required: Phase Tracker Contract
138
108
 
139
109
  **The phase tracker is mandatory** - the agent cannot skip it. Full spec: [\`$HOME/.claude/multi-agent-refs/tracker-contract.md\`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
140
- ${banner}${localCaveat}
110
+ ${banner}
141
111
  Two channels run in parallel at every phase boundary:
142
112
 
143
113
  1. **State channel** (every CLI, identical): \`phase-tracker.sh\` writes to \`tracker-state.json\`. Drives \`:resume\`, \`:log\`, \`:status\`.
@@ -160,11 +130,11 @@ bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
160
130
 
161
131
  In Claude Code the agent MUST also drive the native TaskList widget so the user sees a sticky phase tile stack - this is the only progress signal Claude Code surfaces. Skipping these calls is the #1 source of "I don't see any phases" complaints.
162
132
 
163
- **TaskCreate ordering (strict)**: All TaskCreate calls in a registration batch fire in strict phase-number order BEFORE any TaskUpdate in that batch, and a later batch only ever appends phases numbered above everything already registered.${spec.depth ? " This mode registers in two batches (Step -1, then Step 7.5), so `tiles --new` narrows the second one and the Phase 0 tile is never created twice." : ""} The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. \`1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐\`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".
133
+ **TaskCreate ordering (strict)**: All TaskCreate calls in a registration batch fire in strict phase-number order BEFORE any TaskUpdate in that batch, and a later batch only ever appends phases numbered above everything already registered. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. \`1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐\`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".
164
134
 
165
135
  \`\`\`text
166
136
  # Register one tile per phase, capture the taskId, persist it:
167
- for each phase in ${spec.depth ? `0:Init at Step -1, then ${fullSet.join(", ")} (Full) or ${shortSet.join(", ")} (Short) at Step 7.5` : spec.phases.join(", ")}:
137
+ for each phase in ${spec.phases.join(", ")}:
168
138
  TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
169
139
  -> returns taskId
170
140
  bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
@@ -357,31 +357,32 @@ function migrate(prefs) {
357
357
  out.global.skillConformance.blockOnCoverageGap = false;
358
358
  changes.push("added skillConformance.blockOnCoverageGap=false (report, do not halt)");
359
359
  }
360
- // Rename chain for the pipeline-tail command: /multi-agent:finish (pre-v2.5.0)
361
- // -> :ship (v2.5.0) -> :resume-local (current). The autoFix value survives every
362
- // hop - carry whichever legacy block still holds one rather than reset it.
363
- if (!out.global.resumeLocal || typeof out.global.resumeLocal !== "object") {
364
- out.global.resumeLocal = {};
365
- changes.push("added resumeLocal (/multi-agent:ship renamed to :resume-local)");
366
- }
367
- if (typeof out.global.resumeLocal.autoFix !== "boolean") {
368
- const legacyAutoFix =
369
- typeof out.global.ship?.autoFix === "boolean"
370
- ? out.global.ship.autoFix
371
- : out.global.finish?.autoFix;
372
- out.global.resumeLocal.autoFix = typeof legacyAutoFix === "boolean" ? legacyAutoFix : false;
360
+ // Rename chain for the tail that runs over work already on the branch:
361
+ // global.finish -> global.ship -> global.resumeLocal -> global.resume, the
362
+ // last hop following the command itself into /multi-agent:resume. The
363
+ // autoFix value survives every hop - carry whichever legacy block still
364
+ // holds one rather than reset it.
365
+ if (!out.global.resume || typeof out.global.resume !== "object") {
366
+ out.global.resume = {};
367
+ changes.push("added resume (:resume-local folded into :resume)");
368
+ }
369
+ if (typeof out.global.resume.autoFix !== "boolean") {
370
+ const legacyAutoFix = ["resumeLocal", "ship", "finish"]
371
+ .map((k) => out.global[k]?.autoFix)
372
+ .find((v) => typeof v === "boolean");
373
+ out.global.resume.autoFix = typeof legacyAutoFix === "boolean" ? legacyAutoFix : false;
373
374
  changes.push(
374
375
  typeof legacyAutoFix === "boolean"
375
- ? "moved ship/finish autoFix -> resumeLocal.autoFix (value preserved)"
376
- : "added resumeLocal.autoFix=false",
376
+ ? "moved tail autoFix -> resume.autoFix (value preserved)"
377
+ : "added resume.autoFix=false",
377
378
  );
378
379
  }
379
- for (const legacy of ["ship", "finish"]) {
380
+ for (const legacy of ["resumeLocal", "ship", "finish"]) {
380
381
  if (out.global[legacy] && typeof out.global[legacy] === "object") {
381
382
  delete out.global[legacy].autoFix;
382
383
  if (Object.keys(out.global[legacy]).length === 0) {
383
384
  delete out.global[legacy];
384
- changes.push(`removed obsolete ${legacy} block (renamed to resumeLocal)`);
385
+ changes.push(`removed obsolete ${legacy} block (renamed to resume)`);
385
386
  }
386
387
  }
387
388
  }
@@ -1132,7 +1132,7 @@ case "$ACTION" in
1132
1132
  state=$(load_state)
1133
1133
  # Idempotent: a phase id that already exists is a no-op (name, status, and
1134
1134
  # token history are preserved). This is what lets continuation commands
1135
- # (/multi-agent:resume-local, resume) re-declare their phase set against a
1135
+ # (/multi-agent:resume, /multi-agent:manual-test) re-declare their phase set against a
1136
1136
  # pre-existing tracker without duplicating or resetting tiles.
1137
1137
  new=$(echo "$state" | jq --arg id "$PID" --arg name "$PNAME" '
1138
1138
  if any(.phases[]?; .id == $id) then .
@@ -1167,7 +1167,7 @@ case "$ACTION" in
1167
1167
  # completion is recoverable (record, then re-run) and loses no work; a
1168
1168
  # phase that genuinely made no LLM call says so with --no-llm.
1169
1169
  if [ "$STATUS" = "completed" ] && [ "$NO_LLM" -eq 0 ]; then
1170
- case " ${TRACKER_LLM_PHASES:-1 2 3 4} " in
1170
+ case " ${TRACKER_LLM_PHASES:-1 2 3 4 5} " in
1171
1171
  *" $PID "*)
1172
1172
  RECORDED=$(load_state | jq -r --arg id "$PID" \
1173
1173
  '(.phases[] | select(.id == $id) | (.tokens_in // 0) + (.tokens_out // 0)) // 0')
@@ -270,7 +270,7 @@ export function evaluate(state, extraInput = "") {
270
270
  failures.push(
271
271
  `workspaceSource="autopilot" on an interactive run. Autopilot resolves the workspace ` +
272
272
  `to a worktree because an unattended commit in the user's own checkout is what ` +
273
- `worktrees prevent; an interactive run asks (Step 5b) or is told by :local / --local.`,
273
+ `worktrees prevent; an interactive run asks at Step 5b, and the multi-repo bridge records "command".`,
274
274
  );
275
275
  }
276
276
 
@@ -150,9 +150,9 @@ if (isMain) {
150
150
 
151
151
  // No plan at all is not a pass, and neither is an empty one: a Phase 2 that
152
152
  // produced no steps, or a state whose todos got cleared, would otherwise read
153
- // as "0/0 accounted for" and let the commit through. A Short run has no Phase
154
- // 2, and the caller is expected to skip this gate for those modes rather than
155
- // let it report clean.
153
+ // as "0/0 accounted for" and let the commit through. A mode with no Phase 2
154
+ // (analysis) is expected to skip this gate explicitly rather than let it
155
+ // report clean.
156
156
  if (!Array.isArray(todos) || todos.length === 0) {
157
157
  const msg = Array.isArray(todos)
158
158
  ? "the plan has zero steps - that is an unusable plan, not a clean one; skip this gate explicitly for modes with no Phase 2"
@@ -159,7 +159,7 @@ function computeCost(modelKey, tokensIn, tokensOut, costTable) {
159
159
 
160
160
  /**
161
161
  * Heuristic: Plan (1) uses Opus per personas + dev-mode docs; Dev (2) uses
162
- * Sonnet by default unless the run is a Short pipeline (Opus); Review (3)
162
+ * Sonnet by default unless routing names another rung; Review (3)
163
163
  * triage is Opus and the reviewer breakdown comes from spans.
164
164
  *
165
165
  * This is a fallback when phase-tracker doesn't record the model used. Live
@@ -277,7 +277,6 @@ function commandOf(state) {
277
277
  const c = state.command;
278
278
  if (typeof c === "string" && c.trim()) return c.trim().slice(0, 60);
279
279
  if (state.mode) return state.mode;
280
- if (state.onlyDevelop) return "dev";
281
280
  if (state.localMode) return "local";
282
281
  return "full";
283
282
  }
@@ -501,7 +500,6 @@ function buildEvent(state) {
501
500
  m: state.mode || null,
502
501
  ap: Boolean(state.autopilot),
503
502
  lo: Boolean(state.localMode),
504
- dev: Boolean(state.onlyDevelop),
505
503
  in: inputType(state),
506
504
  rp: projectDigest(state.project),
507
505
  ph: typeof state.currentPhase === "number" ? state.currentPhase : null,
@@ -116,13 +116,13 @@ fi
116
116
 
117
117
  # --- preconditions ---------------------------------------------------------
118
118
 
119
- # `--local` mode has no worktree: worktreePath equals the project root. Removing
119
+ # A local workspace has no worktree: worktreePath equals the project root. Removing
120
120
  # it would delete the user's checkout.
121
121
  rp_wt="$(cd "$WORKTREE" 2>/dev/null && pwd -P || echo "")"
122
122
  rp_pr="$(cd "$PROJECT_ROOT" 2>/dev/null && pwd -P || echo "")"
123
123
  [ -n "$rp_wt" ] || skip "worktree path does not exist: $WORKTREE"
124
124
  [ -n "$rp_pr" ] || skip "project root does not exist: $PROJECT_ROOT"
125
- [ "$rp_wt" != "$rp_pr" ] || skip "worktree equals project root (--local mode) - nothing to remove"
125
+ [ "$rp_wt" != "$rp_pr" ] || skip "worktree equals project root (local workspace) - nothing to remove"
126
126
 
127
127
  # Refuse if the caller is standing inside the tree being removed. A shell left on
128
128
  # a deleted inode is worse than a leftover directory, and Phase 4 legitimately
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-09-21T08:28:08Z",
4
- "skillCount": 216,
3
+ "generatedAt": "2026-09-21T11:25:15Z",
4
+ "skillCount": 213,
5
5
  "entries": [
6
6
  {
7
7
  "path": "shared/core/apple-archive-compliance/SKILL.md",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  {
35
35
  "path": "shared/core/multi-agent-autopilot-status/SKILL.md",
36
- "sha256": "065958fb3ff608d7d0ea36b3eef4614da442742dc69b00799cf1658848cee786"
36
+ "sha256": "f706d3fe4a0db86691d525f4bc008c095fddffbf69026fc553b780b2389eac6e"
37
37
  },
38
38
  {
39
39
  "path": "shared/core/multi-agent-autopilot/SKILL.md",
@@ -85,11 +85,11 @@
85
85
  },
86
86
  {
87
87
  "path": "shared/core/multi-agent-help/SKILL.md",
88
- "sha256": "6ebe7d4de1a1ff815f572abb5d5db5d5af9ea507b3047ec60597a54455176da5"
88
+ "sha256": "4d6181bd8d612f758db5b60df1b18668cf39a5fa3b5174c19b063491d240c054"
89
89
  },
90
90
  {
91
91
  "path": "shared/core/multi-agent-ios-coding-standard/SKILL.md",
92
- "sha256": "15a8d583cb7c772d5223c66c158062f25fdff4c41c6d353b7b70590a441dea38"
92
+ "sha256": "a424507424e883be63886da79b294314e03c73129c658b4ad3d080315f60e325"
93
93
  },
94
94
  {
95
95
  "path": "shared/core/multi-agent-issue/SKILL.md",
@@ -107,14 +107,6 @@
107
107
  "path": "shared/core/multi-agent-language/SKILL.md",
108
108
  "sha256": "63e746bc63ec9963c54e852e6ca5cdb30afd9309a02ee3fdb35965eb931d0300"
109
109
  },
110
- {
111
- "path": "shared/core/multi-agent-local-autopilot/SKILL.md",
112
- "sha256": "5e367258e57fa710d16a1ad6363d5974b89aa99fb0ac791d1ce0070c81191f6b"
113
- },
114
- {
115
- "path": "shared/core/multi-agent-local/SKILL.md",
116
- "sha256": "0a5f20782de81ac3376088579ff6fbc3a6f3781cb285860aae796408aa57e6aa"
117
- },
118
110
  {
119
111
  "path": "shared/core/multi-agent-log/SKILL.md",
120
112
  "sha256": "34bb9841af478abfd4a052d13b821ab4ccd9b5ba29154e9a06029312955b45a4"
@@ -143,13 +135,9 @@
143
135
  "path": "shared/core/multi-agent-refactor/SKILL.md",
144
136
  "sha256": "56eb2be076a6840ddfbf57b8e82c8b4bcf76209553d41a06cc71e56dc894364e"
145
137
  },
146
- {
147
- "path": "shared/core/multi-agent-resume-local/SKILL.md",
148
- "sha256": "9f5089c748a8f0ae5983a3f392879a86017a33c883a87607169e32705c68c5e9"
149
- },
150
138
  {
151
139
  "path": "shared/core/multi-agent-resume/SKILL.md",
152
- "sha256": "6701424edde0a19b55a7de62bb5ba5f9dbaef7d9fb9ea2bce632374863145774"
140
+ "sha256": "57b97c497d34d10afdd030f44b74628a0d9f054431fec424dab7114cba775cf7"
153
141
  },
154
142
  {
155
143
  "path": "shared/core/multi-agent-review-analysis/SKILL.md",
@@ -217,7 +205,7 @@
217
205
  },
218
206
  {
219
207
  "path": "shared/core/multi-agent-sync/SKILL.md",
220
- "sha256": "3d3331d34f9610ea02b96ee27c8029734f3a3447d2857fc0dca92d5b43d0f8e2"
208
+ "sha256": "34aea52bbbe86018011edc1c96a986d1ee2aba8bdb82b19212714bac80bea076"
221
209
  },
222
210
  {
223
211
  "path": "shared/core/multi-agent-test-accessibility/SKILL.md",
@@ -253,7 +241,7 @@
253
241
  },
254
242
  {
255
243
  "path": "shared/core/multi-agent/SKILL.md",
256
- "sha256": "7ea676d07cd0104cc929b825463c521aff66047c6dcdfc28e9e37ca3752107da"
244
+ "sha256": "ca1286f3f17d76b75547320ec9b39af575a88828da14b4ed4ffe79932c7406a3"
257
245
  },
258
246
  {
259
247
  "path": "shared/external/accessibility-compliance-accessibility-audit/SKILL.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "skillCount": 216,
3
+ "skillCount": 213,
4
4
  "entries": [
5
5
  {
6
6
  "name": "accessibility-compliance-accessibility-audit",
@@ -180,7 +180,7 @@
180
180
  },
181
181
  {
182
182
  "name": "apple-archive-compliance",
183
- "description": "Apple App Store Review compliance - wraps the multi-agent-toolkit-mcp `ios_app_store_audit` tool (18-rule deep scan) with ITMS error code mapping + EN/TR humanizer templates. Consumed by: /multi-agent:test 'store-ready' (primary dispatch), Phase 4 Security Auditor (catalog cross-ref on Info.plist ",
183
+ "description": "Apple App Store Review compliance - wraps the multi-agent-toolkit-mcp `ios_app_store_audit` tool (18-rule deep scan) with ITMS error code mapping + EN/TR humanizer templates. Consumed by: /multi-agent:test 'store-ready' (primary dispatch), Phase 3 Security Auditor (catalog cross-ref on Info.plist ",
184
184
  "platform": null,
185
185
  "group": "core",
186
186
  "plugin": null,
@@ -587,7 +587,7 @@
587
587
  },
588
588
  {
589
589
  "name": "google-play-compliance",
590
- "description": "Google Play Store publication compliance - bundletool + aapt2 + apksigner orchestration + 21-rule policy catalog with Play Console error codes + humanizer templates. Consumed by: /multi-agent:test 'store-ready' (primary dispatch), Phase 4 Security Auditor (catalog cross-ref on AndroidManifest / bu",
590
+ "description": "Google Play Store publication compliance - bundletool + aapt2 + apksigner orchestration + 21-rule policy catalog with Play Console error codes + humanizer templates. Consumed by: /multi-agent:test 'store-ready' (primary dispatch), Phase 3 Security Auditor (catalog cross-ref on AndroidManifest / bu",
591
591
  "platform": null,
592
592
  "group": "core",
593
593
  "plugin": null,
@@ -1159,7 +1159,7 @@
1159
1159
  },
1160
1160
  {
1161
1161
  "name": "multi-agent-ios-coding-standard",
1162
- "description": "Audit an iOS module against the shared coding-standard registry (99 stable-ID rules), produce a remediation plan, then hand off to /multi-agent or :local. Use for a standards pass on a module, or when a review needs rule IDs rather than opinions.",
1162
+ "description": "Audit an iOS module against the shared coding-standard registry (99 stable-ID rules), produce a remediation plan, then hand off to /multi-agent. Use for a standards pass on a module, or when a review needs rule IDs rather than opinions.",
1163
1163
  "platform": null,
1164
1164
  "group": "core",
1165
1165
  "plugin": null,
@@ -1212,28 +1212,6 @@
1212
1212
  "triggerPaths": [],
1213
1213
  "relativePath": "shared/core/multi-agent-language/SKILL.md"
1214
1214
  },
1215
- {
1216
- "name": "multi-agent-local",
1217
- "description": "Full pipeline in local mode - no worktree, runs directly on the current branch. Use when the full pipeline should run on the current branch without creating a worktree.",
1218
- "platform": null,
1219
- "group": "core",
1220
- "plugin": null,
1221
- "invokeAs": "multi-agent-local",
1222
- "triggerKeywords": [],
1223
- "triggerPaths": [],
1224
- "relativePath": "shared/core/multi-agent-local/SKILL.md"
1225
- },
1226
- {
1227
- "name": "multi-agent-local-autopilot",
1228
- "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.",
1229
- "platform": null,
1230
- "group": "core",
1231
- "plugin": null,
1232
- "invokeAs": "multi-agent-local-autopilot",
1233
- "triggerKeywords": [],
1234
- "triggerPaths": [],
1235
- "relativePath": "shared/core/multi-agent-local-autopilot/SKILL.md"
1236
- },
1237
1215
  {
1238
1216
  "name": "multi-agent-log",
1239
1217
  "description": "Show the agent-log.md for the given task. With no ID, shows the most recent task. Use when asked what a task did, or to read its log.",
@@ -1247,7 +1225,7 @@
1247
1225
  },
1248
1226
  {
1249
1227
  "name": "multi-agent-manual-test",
1250
- "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.",
1228
+ "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.",
1251
1229
  "platform": null,
1252
1230
  "group": "core",
1253
1231
  "plugin": null,
@@ -1313,7 +1291,7 @@
1313
1291
  },
1314
1292
  {
1315
1293
  "name": "multi-agent-resume",
1316
- "description": "Resume a stopped or failed task from the phase where it left off. Use when a task stopped or failed and should carry on from where it left off.",
1294
+ "description": "Pick up unfinished work: a pipeline run that stopped mid-phase, or work already written on the current branch that never went through the pipeline. Use when a task stopped or failed, or when hand-written local work needs review, build, PR and reporting.",
1317
1295
  "platform": null,
1318
1296
  "group": "core",
1319
1297
  "plugin": null,
@@ -1322,17 +1300,6 @@
1322
1300
  "triggerPaths": [],
1323
1301
  "relativePath": "shared/core/multi-agent-resume/SKILL.md"
1324
1302
  },
1325
- {
1326
- "name": "multi-agent-resume-local",
1327
- "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.",
1328
- "platform": null,
1329
- "group": "core",
1330
- "plugin": null,
1331
- "invokeAs": "multi-agent-resume-local",
1332
- "triggerKeywords": [],
1333
- "triggerPaths": [],
1334
- "relativePath": "shared/core/multi-agent-resume-local/SKILL.md"
1335
- },
1336
1303
  {
1337
1304
  "name": "multi-agent-review",
1338
1305
  "description": "Run parallel review on a branch diff or a Pull Request: 3 models on Claude Code (Fable + Opus + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonnet). On PR input, posts per-finding inline comments + approve/needs-work. With no input (interactive), lists open GitHub + Bitbucket PRs to multi-select.",
@@ -2,11 +2,11 @@
2
2
 
3
3
  Single source of truth for skills delivered to both Claude Code (`~/.claude/skills/`) and Copilot CLI (`~/.copilot/skills/`) by the installer.
4
4
 
5
- **Total:** 216 skills (63 core + 153 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
5
+ **Total:** 213 skills (60 core + 153 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
6
6
 
7
7
  ## Directory layout
8
8
 
9
- - **`core/`** - 63 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
9
+ - **`core/`** - 60 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
10
10
  - **`external/`** - 153 iOS / Android / generic skills imported from the upstream skill library. Mirrors of third-party guidance.
11
11
  - Install destinations (ADR-0009): Claude Code gets NO local copy of `external/` - it loads those skills from the `multi-agent-plugins` marketplace, namespaced (`ai-<stack>-toolkit:<name>`); only the two compliance catalogs from `core/` land in `~/.claude/skills/`. Copilot CLI and Codex CLI receive a flat copy filtered to the enabled stacks. `external/` remains the single authoring source that `build-stack-plugins.mjs` publishes from.
12
12
 
@@ -14,7 +14,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
14
14
 
15
15
  ## Categories
16
16
 
17
- - [Pipeline Orchestration](#pipeline-orchestration) - 63
17
+ - [Pipeline Orchestration](#pipeline-orchestration) - 60
18
18
  - [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 90
19
19
  - [Android / Kotlin](#android-kotlin) - 13
20
20
  - [Web](#web) - 10
@@ -52,17 +52,14 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
52
52
  | [`multi-agent-jira`](./core/multi-agent-jira/) | `core` | List open Jira issues, pick one, and launch the multi-agent pipeline. Use when a Jira issue should be picked up and started without knowing |
53
53
  | [`multi-agent-kill`](./core/multi-agent-kill/) | `core` | Stop the given task, then remove its worktree and branch. Asks for confirmation. Use when a running or stuck task should be stopped and its |
54
54
  | [`multi-agent-language`](./core/multi-agent-language/) | `core` | Toggle outputLanguage (assistant explanations, picker questions, PR/Jira/Confluence bodies). promptLanguage is fixed to English; commit mess |
55
- | [`multi-agent-local`](./core/multi-agent-local/) | `core` | Full pipeline in local mode - no worktree, runs directly on the current branch. Use when the full pipeline should run on the current branc |
56
- | [`multi-agent-local-autopilot`](./core/multi-agent-local-autopilot/) | `core` | Full pipeline + local + autopilot - no worktree, no confirmations, all 6 phases run end-to-end on the current branch. Use when the full pi |
57
55
  | [`multi-agent-log`](./core/multi-agent-log/) | `core` | Show the agent-log.md for the given task. With no ID, shows the most recent task. Use when asked what a task did, or to read its log. |
58
- | [`multi-agent-manual-test`](./core/multi-agent-manual-test/) | `core` | Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 5 standalone (the UI Bug Hunter lives at multi-agent-te |
56
+ | [`multi-agent-manual-test`](./core/multi-agent-manual-test/) | `core` | 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 a |
59
57
  | [`multi-agent-model`](./core/multi-agent-model/) | `core` | Turn the top model rung on or off and keep the cost ledger's pricing in step with it. Use when asked to enable or disable Fable, or which mo |
60
58
  | [`multi-agent-prune-logs`](./core/multi-agent-prune-logs/) | `core` | Delete per-task project logs under ~/.claude/logs/multi-agent (filter by age/project/task). Audit trail + metrics are preserved. Dry-run fir |
61
59
  | [`multi-agent-prune-prompts`](./core/multi-agent-prune-prompts/) | `core` | Zero-base prompt review: measure the always-on instruction footprint, classify every rule block, propose keep/trial-removal/delete; applies |
62
60
  | [`multi-agent-purge`](./core/multi-agent-purge/) | `core` | ⚠️ Wipes every worktree, branch, log, and state file. Irreversible; asks for double confirmation. Use when every worktree, branch, log and s |
63
61
  | [`multi-agent-refactor`](./core/multi-agent-refactor/) | `core` | Analyse the project: extract adapted best-practices, hunt real bugs + improvement areas, check upstream drift of derived skills, research th |
64
- | [`multi-agent-resume`](./core/multi-agent-resume/) | `core` | Resume a stopped or failed task from the phase where it left off. Use when a task stopped or failed and should carry on from where it left o |
65
- | [`multi-agent-resume-local`](./core/multi-agent-resume-local/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review (with its build gate) → Commit/PR → Report (technical analysis + Jira tes |
62
+ | [`multi-agent-resume`](./core/multi-agent-resume/) | `core` | Pick up unfinished work: a pipeline run that stopped mid-phase, or work already written on the current branch that never went through the pi |
66
63
  | [`multi-agent-review`](./core/multi-agent-review/) | `core` | Run parallel review on a branch diff or a Pull Request: 3 models on Claude Code (Fable + Opus + Sonnet), 3 models on Copilot CLI (GPT + Opus |
67
64
  | [`multi-agent-review-analysis`](./core/multi-agent-review-analysis/) | `core` | Review a written analysis document instead of a diff: resolve it from a path, a Confluence page or a Jira issue, run the deterministic gates |
68
65
  | [`multi-agent-review-issue`](./core/multi-agent-review-issue/) | `core` | Assess whether a GitHub issue is ready for multi-agent development: fetch it, grade scope / acceptance criteria / repro / design / API / sta |
@@ -311,25 +311,22 @@ Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, a
311
311
 
312
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:
313
313
 
314
- - `multi-agent`: 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7
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)
316
- - `multi-agent-analysis`: 0 → 1 → 2 → 4 → 6 → 7 (no code, so no Dev and no Test)
314
+ - `multi-agent`, `multi-agent-autopilot`: 0 → 1 → 2 → 3 → 4 → 5 (the user-test gate inside Phase 3 needs a worktree checkout and an attended run; the phase set is the same either way)
315
+ - `multi-agent-analysis`: 0 → 1 → 3 → 4 → 5 (no code is written, so Dev is not in the set)
317
316
 
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.
317
+ Every mode registers its whole set at Step -1: the set is a property of the command, so nothing is deferred.
319
318
 
320
319
  Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)".
321
320
 
322
321
  ### Phase 0: Init
323
322
 
324
- > **Contract (strict)** - Phase 0 has **8 sequential interactive steps** plus the
325
- > Step 7.5 depth question (`/multi-agent` and `:local` only; the autopilot entries
326
- > skip it and always run Full), defined in
323
+ > **Contract (strict)** - Phase 0 has **8 sequential interactive steps**, defined in
327
324
  > `refs/phases/phase-0-init.md`. Read it before every Phase 0 run and execute all of
328
325
  > them. Do **NOT** short-circuit: even when the input is a Jira ID plus a branch, the
329
326
  > prefs load, the multi-repo offer, the branch picker and the branch-name confirm are
330
- > required UX checkpoints. A run once took a Jira ID and implemented straight onto the
331
- > local checkout with neither the project nor the branch picker ever shown, and nothing
332
- > failed, so nothing caught it. The walkthrough below covers input parsing and worktree
327
+ > required UX checkpoints. Skipping them lets a Jira ID land straight on the local
328
+ > checkout with neither the project nor the branch picker ever shown, and nothing
329
+ > fails, so nothing catches it. The walkthrough below covers input parsing and worktree
333
330
  > creation only; it is not the contract.
334
331
  >
335
332
  > **Exit gate (BLOCKING).** Prose alone did not stop that run. Before marking Phase 0
@@ -434,7 +431,7 @@ Two halves, one phase, one approval gate (Phases 1 and 2 until 19.0.0).
434
431
  2. Launch **ios-architect** agent for architecture review (if structural changes)
435
432
  3. Determine development approach per todo (new file, modify, refactor)
436
433
  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:
434
+ 5. **Plan Approval Gate** (interactive only - autopilot may not ask). Full flow in `refs/phases/phase-1-plan.md` Step 5:
438
435
  - **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.
439
436
  - **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`.
440
437
  - Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["1"]`.
@@ -37,7 +37,7 @@ not a fault.
37
37
 
38
38
  When `swiftc` was available at `autopilot-on` time, `~/.claude/autopilot/bin/menubar`
39
39
  shows the same thing in the top right, refreshing on its own: one row per item
40
- with its id, whether it is running Full or Short, the phase as a fraction, the
40
+ with its id, the phase as a fraction, the
41
41
  elapsed time and the stack, then the queue, then what is waiting, then the PRs of
42
42
  the last day - each one clickable.
43
43
 
@@ -38,8 +38,8 @@ Render **exactly one** of the two blocks below - the one matching `LANG`. Do n
38
38
  multi-agent "#316" -> GitHub Issue #
39
39
  multi-agent "bug/feature description" -> Free-text
40
40
 
41
- (Copilot CLI uses the dash form: multi-agent-local, multi-agent-channels, etc.
42
- Claude Code uses colon form: /multi-agent:local, /multi-agent:channels, etc.)
41
+ (Copilot CLI uses the dash form: multi-agent-channels, etc.
42
+ Claude Code uses colon form: /multi-agent:channels, etc.)
43
43
 
44
44
  ------------------------------------------------------------
45
45
 
@@ -52,7 +52,7 @@ How It Works (Phase 0 - Interactive Flow):
52
52
  5. BRANCH NAME bugfix/{jiraId} or feature/{jiraId} -> confirm
53
53
  6. GIT ID Select identity from preferences (multiple supported)
54
54
  7. INSTRUCTION Auto-detect if .instructions/ exists (figma etc.)
55
- 8. WORKSPACE Create worktree (default) or local branch (--local)
55
+ 8. WORKSPACE Ask where the branch lives: worktree (default) or project root
56
56
 
57
57
  ------------------------------------------------------------
58
58
 
@@ -76,17 +76,15 @@ Pipeline (after Phase 0):
76
76
 
77
77
  Modes:
78
78
 
79
- Depth is asked at Phase 0 Step 7.5, not passed as a flag:
80
- Full Plan -> Dev(Sonnet) -> Review -> Commit -> Report
81
- Short Dev(Opus, self-contained) -> Review -> Commit -> Report
82
- Recommended from taskType. Review is never skipped either way.
79
+ One pipeline. Every mode runs its whole phase set:
80
+ Plan -> Dev(Sonnet) -> Review -> Commit -> Report
81
+ What a run costs follows the evidence the task carries.
83
82
 
84
- --local No worktree - works directly on local branch
85
- autopilot Skip all confirmations, including the depth question, so
86
- it always runs Full (EXCEPT Phase 5 channels menu)
83
+ autopilot Skip all confirmations and resolve the workspace to a
84
+ worktree (EXCEPT Phase 5 channels menu)
87
85
 
88
86
  Dedicated dash commands (Copilot):
89
- multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
87
+ multi-agent-autopilot
90
88
 
91
89
  ------------------------------------------------------------
92
90
 
@@ -212,8 +210,8 @@ Logs: $HOME/.copilot/logs/multi-agent/{project}/{task-id}/ (Copilot)
212
210
  multi-agent "#316" -> GitHub Issue #
213
211
  multi-agent "bug/özellik açıklaması" -> Serbest metin
214
212
 
215
- (Copilot CLI dash form kullanır: multi-agent-local, multi-agent-channels vb.
216
- Claude Code colon form kullanır: /multi-agent:local, /multi-agent:channels vb.)
213
+ (Copilot CLI dash form kullanır: multi-agent-channels vb.
214
+ Claude Code colon form kullanır: /multi-agent:channels vb.)
217
215
 
218
216
  ------------------------------------------------------------
219
217
 
@@ -226,7 +224,7 @@ Nasıl Çalışır (Phase 0 - İnteraktif Akış):
226
224
  5. BRANCH NAME bugfix/{jiraId} veya feature/{jiraId} -> onayla
227
225
  6. GIT ID Kimlik seç (prefs'ten; birden fazla desteklenir)
228
226
  7. INSTRUCTION .instructions/ varsa otomatik algıla
229
- 8. WORKSPACE Worktree yarat (default) ya da local branch (--local)
227
+ 8. WORKSPACE Branch nerede yaşayacak: worktree (default) ya da proje kökü
230
228
 
231
229
  ------------------------------------------------------------
232
230
 
@@ -255,12 +253,11 @@ Modlar:
255
253
  Kısa Dev(Opus, kendi kendine yeten) -> Review -> Commit -> Report
256
254
  taskType'a göre önerilir. Review iki durumda da atlanmaz.
257
255
 
258
- --local Worktree yok - doğrudan local branch'te çalışır
259
256
  autopilot Derinlik sorusu dahil tüm onayları atlar, bu yüzden her
260
257
  zaman Tam koşar (İSTİSNA: Phase 5 channels menüsü)
261
258
 
262
259
  Dedicated dash komutlar (Copilot):
263
- multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
260
+ multi-agent-autopilot
264
261
 
265
262
  ------------------------------------------------------------
266
263