@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.
- package/CHANGELOG.md +94 -0
- package/README.md +19 -36
- package/README.tr.md +18 -35
- package/docs/adr/0002-instruction-driven-flag.md +6 -5
- package/docs/adr/0005-lazy-phase-docs.md +2 -2
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
- package/docs/adr/0009-claude-stack-skills-plugin-only.md +1 -1
- package/docs/adr/0010-own-code-graph.md +5 -4
- package/docs/adr/0012-macos-only.md +2 -2
- package/docs/adr/0013-lsp-code-intelligence.md +2 -2
- package/docs/adr/0014-six-phase-consolidation.md +9 -9
- package/docs/adr/0015-one-pipeline-no-depth-answer.md +83 -0
- package/docs/adr/0016-the-run-shape-is-asked-not-typed.md +69 -0
- package/docs/adr/README.md +18 -16
- package/docs/architecture.md +2 -2
- package/docs/ecosystem.md +5 -5
- package/docs/facts.json +3 -6
- package/docs/features.md +4 -5
- package/docs/token-budget-history.md +1 -1
- package/install/_common.mjs +9 -1
- package/install/templates/copilot-instructions.md +7 -16
- package/manifest.json +111 -114
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +6 -8
- package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/forget/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -2
- package/pipeline/commands/multi-agent/help/SKILL.md +21 -27
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +5 -4
- package/pipeline/commands/multi-agent/issue/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/jira/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/purge/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +177 -48
- package/pipeline/commands/multi-agent/save/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/stack/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +6 -7
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +2 -0
- package/pipeline/lib/repo-hygiene.sh +1 -1
- package/pipeline/multi-agent-refs/analysis/render.md +1 -1
- package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +1 -1
- package/pipeline/multi-agent-refs/analysis-template.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +0 -8
- package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -11
- package/pipeline/multi-agent-refs/features/external-context-injection.md +2 -0
- package/pipeline/multi-agent-refs/features/review-delta.md +1 -1
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +3 -3
- package/pipeline/multi-agent-refs/features/skill-conformance.md +1 -1
- package/pipeline/multi-agent-refs/features/visual-evidence.md +2 -1
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
- package/pipeline/multi-agent-refs/generate-issue.md +2 -0
- package/pipeline/multi-agent-refs/issue-jira-triad.md +2 -0
- package/pipeline/multi-agent-refs/keychain.md +2 -0
- package/pipeline/multi-agent-refs/knowledge.md +0 -7
- package/pipeline/multi-agent-refs/outside-the-pipeline.md +1 -1
- package/pipeline/multi-agent-refs/payload-contracts.md +1 -1
- package/pipeline/multi-agent-refs/phases/modes.md +32 -108
- package/pipeline/multi-agent-refs/phases/operations.md +2 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +23 -42
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +7 -18
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +13 -44
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +19 -22
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +6 -6
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +2 -2
- package/pipeline/multi-agent-refs/phases.md +9 -11
- package/pipeline/multi-agent-refs/progress-contract.md +1 -1
- package/pipeline/multi-agent-refs/readiness-review.md +2 -0
- package/pipeline/multi-agent-refs/rules.md +1 -1
- package/pipeline/multi-agent-refs/tracker-contract.md +9 -40
- package/pipeline/multi-agent-refs/wiki-capture.md +3 -2
- package/pipeline/preferences-template.json +2 -2
- package/pipeline/rules/figma-pipeline.md +1 -1
- package/pipeline/schemas/agent-state.schema.json +5 -10
- package/pipeline/schemas/migrations/prefs-2.7.0-to-2.8.0.mjs +33 -0
- package/pipeline/schemas/phases.json +3 -24
- package/pipeline/schemas/prefs.schema.json +5 -5
- package/pipeline/scripts/cost-table.json +1 -1
- package/pipeline/scripts/gc-refs.sh +1 -1
- package/pipeline/scripts/gen-mode-dispatch.mjs +11 -41
- package/pipeline/scripts/migrate-prefs.mjs +18 -17
- package/pipeline/scripts/phase-tracker.sh +2 -2
- package/pipeline/scripts/phase0-exit-gate.mjs +1 -1
- package/pipeline/scripts/plan-coverage-gate.mjs +3 -3
- package/pipeline/scripts/run-aggregator.mjs +1 -1
- package/pipeline/scripts/usage-report.mjs +0 -2
- package/pipeline/scripts/worktree-finalize.sh +2 -2
- package/pipeline/skills/.skill-manifest.json +8 -20
- package/pipeline/skills/.skills-index.json +6 -39
- package/pipeline/skills/shared/README.md +5 -8
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +8 -11
- package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +13 -16
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -3
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +51 -15
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -6
- package/pipeline/skills/skills-index.md +3 -6
- package/pipeline/commands/multi-agent/local/SKILL.md +0 -132
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +0 -142
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +0 -114
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +0 -41
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +0 -55
- 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.
|
|
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
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
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: ${
|
|
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.
|
|
112
|
-
//
|
|
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.
|
|
122
|
-
|
|
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}
|
|
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
|
|
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.
|
|
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
|
|
361
|
-
// ->
|
|
362
|
-
// hop
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
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
|
|
376
|
-
: "added
|
|
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
|
|
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
|
|
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
|
|
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
|
|
154
|
-
//
|
|
155
|
-
//
|
|
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
|
|
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
|
-
#
|
|
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 (
|
|
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-
|
|
4
|
-
"skillCount":
|
|
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": "
|
|
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": "
|
|
88
|
+
"sha256": "4d6181bd8d612f758db5b60df1b18668cf39a5fa3b5174c19b063491d240c054"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"path": "shared/core/multi-agent-ios-coding-standard/SKILL.md",
|
|
92
|
-
"sha256": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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":
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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": "
|
|
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:**
|
|
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/`** -
|
|
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) -
|
|
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
|
|
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` |
|
|
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
|
|
315
|
-
- `multi-agent-
|
|
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
|
-
|
|
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
|
|
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.
|
|
331
|
-
>
|
|
332
|
-
>
|
|
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** (
|
|
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,
|
|
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-
|
|
42
|
-
Claude Code uses colon form: /multi-agent:
|
|
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
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
85
|
-
|
|
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-
|
|
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-
|
|
216
|
-
Claude Code colon form kullanır: /multi-agent:
|
|
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
|
|
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-
|
|
260
|
+
multi-agent-autopilot
|
|
264
261
|
|
|
265
262
|
------------------------------------------------------------
|
|
266
263
|
|