@mmerterden/multi-agent-pipeline 14.1.1 → 14.2.2
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 +162 -0
- package/README.md +10 -6
- package/README.tr.md +143 -0
- package/docs/architecture.md +23 -8
- package/docs/ecosystem.md +237 -0
- package/install/_plugin-skills.mjs +16 -2
- package/install/codex.mjs +9 -4
- package/install/templates/copilot-instructions.md +12 -9
- package/package.json +1 -1
- package/pipeline/commands/deploy.md +4 -1
- package/pipeline/commands/multi-agent/SKILL.md +8 -5
- package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -4
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/dev/SKILL.md +10 -23
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +10 -2
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +10 -24
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +10 -3
- package/pipeline/commands/multi-agent/help/SKILL.md +49 -11
- package/pipeline/commands/multi-agent/jira/SKILL.md +13 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/log/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/ship/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +340 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +7 -6
- package/pipeline/commands/multi-agent/test/SKILL.md +18 -8
- package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +41 -0
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +28 -201
- package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
- package/pipeline/commands/sim-test.md +45 -36
- package/pipeline/lib/extract-conventions.sh +44 -15
- package/pipeline/lib/fetch-figma-annotations.sh +8 -1
- package/pipeline/lib/fetch-fortify.sh +23 -8
- package/pipeline/lib/figma-screenshot.sh +11 -1
- package/pipeline/lib/issue-fetcher.sh +76 -9
- package/pipeline/lib/md2confluence-v3.py +16 -2
- package/pipeline/lib/plan-todos.sh +5 -2
- package/pipeline/lib/post-pr-review.sh +8 -6
- package/pipeline/lib/shadow-git.sh +50 -9
- package/pipeline/lib/submodule-detector.sh +8 -1
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/channels/confluence.md +3 -0
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +13 -2
- package/pipeline/multi-agent-refs/channels/pr-review-actions.md +1 -1
- package/pipeline/multi-agent-refs/channels/pr.md +20 -0
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/cross-cli-contract.md +6 -5
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
- package/pipeline/multi-agent-refs/generate-issue.md +2 -2
- package/pipeline/multi-agent-refs/issue-jira-triad.md +3 -3
- package/pipeline/multi-agent-refs/knowledge.md +1 -1
- package/pipeline/multi-agent-refs/payload-contracts.md +67 -0
- package/pipeline/multi-agent-refs/phases/modes.md +20 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-6-commit.md +8 -40
- package/pipeline/multi-agent-refs/phases/phase-7-report.md +5 -3
- package/pipeline/multi-agent-refs/phases.md +6 -0
- package/pipeline/multi-agent-refs/rules.md +2 -0
- package/pipeline/schemas/prefs.schema.json +2 -2
- package/pipeline/scripts/audit-log-rotate.sh +10 -0
- package/pipeline/scripts/build-stack-plugins.mjs +8 -1
- package/pipeline/scripts/check-derived-drift.mjs +13 -1
- package/pipeline/scripts/diff-explain.mjs +41 -3
- package/pipeline/scripts/diff-risk-score.mjs +72 -8
- package/pipeline/scripts/gen-mode-dispatch.mjs +1 -1
- package/pipeline/scripts/learning-curve.mjs +8 -2
- package/pipeline/scripts/output-quality-check.sh +15 -4
- package/pipeline/scripts/phase-tracker.sh +21 -8
- package/pipeline/scripts/pre-commit-check.sh +69 -22
- package/pipeline/scripts/render-agent-log-cost.sh +8 -3
- package/pipeline/scripts/render-cost-summary.sh +42 -22
- package/pipeline/scripts/render-work-summary.sh +47 -13
- package/pipeline/scripts/review-scope.mjs +1 -1
- package/pipeline/scripts/run-aggregator.mjs +38 -14
- package/pipeline/scripts/smoke-schema-validation.sh +5 -1
- package/pipeline/scripts/test-gap-scan.mjs +45 -6
- package/pipeline/scripts/uninstall.mjs +39 -4
- package/pipeline/scripts/update-issue-progress.sh +12 -16
- package/pipeline/scripts/worktree-finalize.sh +23 -2
- package/pipeline/skills/.skills-index.json +58 -4
- package/pipeline/skills/shared/README.md +12 -7
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +13 -17
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +4 -17
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +8 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +5 -18
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +8 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +50 -12
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +18 -3
- package/pipeline/skills/shared/core/multi-agent-ship/SKILL.md +4 -0
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +50 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +18 -8
- package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +44 -0
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +29 -101
- package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +302 -0
- package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +144 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +156 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +108 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +175 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +865 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +335 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +344 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +130 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +264 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-key-shots.py +298 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +529 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +187 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +171 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +184 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/snapshot-resources.sh +26 -0
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +173 -0
- package/pipeline/skills/skills-index.md +10 -4
|
@@ -248,6 +248,31 @@ function rmMatchingFiles(parent, predicate) {
|
|
|
248
248
|
return count;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
+
// Copilot CLI / Codex CLI have no plugin loader, so install/_plugin-skills.mjs
|
|
252
|
+
// copies each stack plugin's authored skills straight into the flat skills/
|
|
253
|
+
// dir (~100 dirs across a typical set of enabled plugins). None of those
|
|
254
|
+
// names are in PIPELINE_CORE_SKILL_DIRS - the allowlist above only covers the
|
|
255
|
+
// pipeline's OWN skills - so they were never removed on uninstall. The
|
|
256
|
+
// installer now writes PLUGIN_SKILLS_MANIFEST listing exactly what it
|
|
257
|
+
// delivered; read it back here rather than guessing plugin skill names.
|
|
258
|
+
const PLUGIN_SKILLS_MANIFEST = ".plugin-skills-manifest.json";
|
|
259
|
+
|
|
260
|
+
function rmPluginDeliveredSkills(skillsDir) {
|
|
261
|
+
const manifestPath = join(skillsDir, PLUGIN_SKILLS_MANIFEST);
|
|
262
|
+
if (!existsSync(manifestPath)) return 0;
|
|
263
|
+
let names;
|
|
264
|
+
try {
|
|
265
|
+
names = JSON.parse(readFileSync(manifestPath, "utf-8"));
|
|
266
|
+
} catch {
|
|
267
|
+
return 0;
|
|
268
|
+
}
|
|
269
|
+
if (!Array.isArray(names)) return 0;
|
|
270
|
+
const nameSet = new Set(names);
|
|
271
|
+
const count = rmMatchingDirs(skillsDir, (name) => nameSet.has(name));
|
|
272
|
+
rmIfExists(manifestPath);
|
|
273
|
+
return count;
|
|
274
|
+
}
|
|
275
|
+
|
|
251
276
|
// Explicit terminator install/copilot.mjs writes after the pipeline section
|
|
252
277
|
// (v11.4.1+). Must stay in sync with INSTRUCTIONS_END_MARKER there.
|
|
253
278
|
const COPILOT_END_MARKER = "<!-- multi-agent-pipeline:copilot-instructions:end -->";
|
|
@@ -387,13 +412,20 @@ function cleanClaudeSettings(settingsPath) {
|
|
|
387
412
|
if (settings.hooks?.PreToolUse?.length) {
|
|
388
413
|
const before = settings.hooks.PreToolUse.length;
|
|
389
414
|
// Match both the current matcher ("Bash") and the dead pre-v11.4.1 one
|
|
390
|
-
// ("Bash(git commit:*)"); the
|
|
391
|
-
//
|
|
415
|
+
// ("Bash(git commit:*)"); the command identifies the entry as ours either
|
|
416
|
+
// way. install/claude.mjs registers TWO PreToolUse gates this way -
|
|
417
|
+
// pre-commit-check.sh AND agent-guard.sh - and only the first was ever
|
|
418
|
+
// stripped here. After ~/.claude/scripts/ is deleted below, the
|
|
419
|
+
// agent-guard.sh entry pointed at a script that no longer existed, so
|
|
420
|
+
// every subsequent Bash call fired a hook error.
|
|
392
421
|
settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter(
|
|
393
422
|
(h) =>
|
|
394
423
|
!(
|
|
395
424
|
(h.matcher === "Bash" || h.matcher === "Bash(git commit:*)") &&
|
|
396
|
-
h.hooks?.some(
|
|
425
|
+
h.hooks?.some(
|
|
426
|
+
(sub) =>
|
|
427
|
+
sub.command?.includes("pre-commit-check.sh") || sub.command?.includes("agent-guard.sh"),
|
|
428
|
+
)
|
|
397
429
|
),
|
|
398
430
|
);
|
|
399
431
|
if (settings.hooks.PreToolUse.length < before) touched = true;
|
|
@@ -540,10 +572,12 @@ export async function main() {
|
|
|
540
572
|
name === "figma-to-component",
|
|
541
573
|
);
|
|
542
574
|
n += rmMatchingDirs(skills, (name) => PIPELINE_CORE_SKILL_DIRS.includes(name));
|
|
575
|
+
n += rmPluginDeliveredSkills(skills);
|
|
543
576
|
if (n > 0) console.log(` removed ${n} skill dir(s) under ${skills}`);
|
|
544
577
|
rmIfExists(join(skills, ".skills-index.json"));
|
|
545
578
|
rmIfExists(join(skills, "skills-index.md"));
|
|
546
579
|
rmIfExists(join(skills, "README.md"));
|
|
580
|
+
rmIfExists(join(COP, "rules"));
|
|
547
581
|
// Agent definitions are FILES; remove only the pipeline-shipped names so
|
|
548
582
|
// user-authored agents survive.
|
|
549
583
|
rmMatchingFiles(join(COP, "agents"), (name) => PIPELINE_AGENT_FILES.includes(name));
|
|
@@ -613,10 +647,11 @@ export async function main() {
|
|
|
613
647
|
// Codex's own `.system` set plus user skills; `prompts/` and `agents/` hold
|
|
614
648
|
// user-authored files.
|
|
615
649
|
const skills = join(CODEX, "skills");
|
|
616
|
-
|
|
650
|
+
let n = rmMatchingDirs(
|
|
617
651
|
skills,
|
|
618
652
|
(name) => name === "multi-agent" || name.startsWith("multi-agent-"),
|
|
619
653
|
);
|
|
654
|
+
n += rmPluginDeliveredSkills(skills);
|
|
620
655
|
if (n > 0) console.log(` removed ${n} skill dir(s) under ${skills}`);
|
|
621
656
|
rmIfExists(join(CODEX, "prompts", "multi-agent.md"));
|
|
622
657
|
removeGeneratedCodexAgents(join(CODEX, "agents"));
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
# update-issue-progress.sh <task-id>
|
|
15
15
|
#
|
|
16
16
|
# Inputs:
|
|
17
|
-
# $HOME/.claude/
|
|
18
|
-
# .
|
|
17
|
+
# $HOME/.claude/logs/multi-agent/{project}/{taskId}/agent-state.json
|
|
18
|
+
# .githubIssue.owner, .githubIssue.repo, .githubIssue.number
|
|
19
19
|
# .flags.implementation, .flags.testing, .flags.codeConnect, .flags.wiki
|
|
20
20
|
#
|
|
21
21
|
# Side effects:
|
|
@@ -86,11 +86,12 @@ if [ "$TASK_ID" = "--rewrite" ]; then
|
|
|
86
86
|
exit 0
|
|
87
87
|
fi
|
|
88
88
|
|
|
89
|
-
# Resolve
|
|
90
|
-
|
|
89
|
+
# Resolve agent-state.json. multi-repo-pipeline.sh writes it under a
|
|
90
|
+
# per-project directory ($HOME/.claude/logs/multi-agent/{project}/{taskId}/)
|
|
91
|
+
# - not the ~/.claude/projects/*/state/ path this used to glob, which no
|
|
92
|
+
# writer in the pipeline ever populates.
|
|
91
93
|
AGENT_STATE=""
|
|
92
|
-
for
|
|
93
|
-
candidate="$dir/state/$TASK_ID/agent-state.json"
|
|
94
|
+
for candidate in "$HOME"/.claude/logs/multi-agent/*/"$TASK_ID"/agent-state.json; do
|
|
94
95
|
if [ -f "$candidate" ]; then
|
|
95
96
|
AGENT_STATE="$candidate"
|
|
96
97
|
break
|
|
@@ -102,18 +103,13 @@ if [ -z "$AGENT_STATE" ]; then
|
|
|
102
103
|
exit 2
|
|
103
104
|
fi
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if [ -z "$ORG_REPO" ] || ! [[ "$ORG_REPO" == */* ]]; then
|
|
110
|
-
if [[ "$ISSUE_URL" =~ github\.com/([^/]+/[^/]+)/issues/ ]]; then
|
|
111
|
-
ORG_REPO="${BASH_REMATCH[1]}"
|
|
112
|
-
fi
|
|
113
|
-
fi
|
|
106
|
+
# agent-state.schema.json has no `.issue`/`.repos` properties (additionalProperties
|
|
107
|
+
# is false) - the real GitHub-issue coordinates live at `.githubIssue.{owner,repo,number}`.
|
|
108
|
+
ISSUE_NUM=$(jq -r '.githubIssue.number // empty' "$AGENT_STATE")
|
|
109
|
+
ORG_REPO=$(jq -r 'if .githubIssue then (.githubIssue.owner + "/" + .githubIssue.repo) else empty end' "$AGENT_STATE")
|
|
114
110
|
|
|
115
111
|
if [ -z "$ORG_REPO" ] || [ -z "$ISSUE_NUM" ]; then
|
|
116
|
-
echo "update-issue-progress:
|
|
112
|
+
echo "update-issue-progress: no githubIssue in state for task=$TASK_ID (Jira-originated task, or issue not yet linked)" >&2
|
|
117
113
|
exit 3
|
|
118
114
|
fi
|
|
119
115
|
|
|
@@ -202,6 +202,7 @@ fi
|
|
|
202
202
|
# copied only if present; a task that never reached Phase 4 has no triage output
|
|
203
203
|
# and that is not an error.
|
|
204
204
|
DEST="$LOGS_ROOT/${PROJECT:+$PROJECT/}$TASK_ID/artifacts"
|
|
205
|
+
LOGS_TASK_DIR="$LOGS_ROOT/${PROJECT:+$PROJECT/}$TASK_ID"
|
|
205
206
|
|
|
206
207
|
copy_one() {
|
|
207
208
|
src="$rp_wt/$1"
|
|
@@ -214,7 +215,27 @@ copy_one() {
|
|
|
214
215
|
cp -R "$src" "$DEST/$1" 2>/dev/null && SALVAGED="${SALVAGED:+$SALVAGED,}\"$1\""
|
|
215
216
|
}
|
|
216
217
|
|
|
217
|
-
|
|
218
|
+
# agent-state.json and the tracker state file are never written INSIDE the
|
|
219
|
+
# worktree checkout - multi-repo-pipeline.sh/phase-tracker.sh write both
|
|
220
|
+
# straight to $LOGS_TASK_DIR. copy_one() sourcing from $rp_wt always missed
|
|
221
|
+
# them (src never existed → silent no-op), so this salvage - and the
|
|
222
|
+
# worktreeRemovedAt stamp below, gated on the salvaged copy existing - never
|
|
223
|
+
# actually fired for either file.
|
|
224
|
+
copy_from_logs() {
|
|
225
|
+
src="$LOGS_TASK_DIR/$1"
|
|
226
|
+
[ -e "$src" ] || return 0
|
|
227
|
+
if [ "$DRY" = "1" ]; then
|
|
228
|
+
SALVAGED="${SALVAGED:+$SALVAGED,}\"$1\""
|
|
229
|
+
return 0
|
|
230
|
+
fi
|
|
231
|
+
mkdir -p "$DEST/$(dirname "$1")" 2>/dev/null
|
|
232
|
+
cp -R "$src" "$DEST/$1" 2>/dev/null && SALVAGED="${SALVAGED:+$SALVAGED,}\"$1\""
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
copy_from_logs agent-state.json
|
|
236
|
+
copy_from_logs tracker-state.json
|
|
237
|
+
|
|
238
|
+
for a in triage-output.json \
|
|
218
239
|
.review-diff.txt .build.log .test.log .pipeline; do
|
|
219
240
|
copy_one "$a"
|
|
220
241
|
done
|
|
@@ -230,7 +251,7 @@ fi
|
|
|
230
251
|
# tree. This is what keeps `--force` off the table: a refusal after this point
|
|
231
252
|
# means unexpected dirt, and forcing past unexpected dirt is how work gets lost.
|
|
232
253
|
DROPPED=""
|
|
233
|
-
for a in
|
|
254
|
+
for a in triage-output.json \
|
|
234
255
|
.review-diff.txt .build.log .test.log .pipeline; do
|
|
235
256
|
[ -e "$rp_wt/$a" ] || continue
|
|
236
257
|
case "$a" in
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"skillCount":
|
|
3
|
+
"skillCount": 202,
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"name": "accessibility-compliance-accessibility-audit",
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
},
|
|
446
446
|
{
|
|
447
447
|
"name": "firebase",
|
|
448
|
-
"description": "You're a developer who has shipped dozens of Firebase projects. You've seen the
|
|
448
|
+
"description": "You're a developer who has shipped dozens of Firebase projects. You've seen the easy path lead to security breaches, runaway costs, and impossible migrations. You know Firebase is powerful, but you also know its sharp edges. Use when integrating or reviewing Firebase: auth, Firestore, functions, or ",
|
|
449
449
|
"platform": null,
|
|
450
450
|
"group": "external",
|
|
451
451
|
"triggerKeywords": [],
|
|
@@ -695,6 +695,15 @@
|
|
|
695
695
|
"triggerPaths": [],
|
|
696
696
|
"relativePath": "shared/external/live-activities/SKILL.md"
|
|
697
697
|
},
|
|
698
|
+
{
|
|
699
|
+
"name": "localization-reuse-map",
|
|
700
|
+
"description": ">-",
|
|
701
|
+
"platform": null,
|
|
702
|
+
"group": "external",
|
|
703
|
+
"triggerKeywords": [],
|
|
704
|
+
"triggerPaths": [],
|
|
705
|
+
"relativePath": "shared/external/localization-reuse-map/SKILL.md"
|
|
706
|
+
},
|
|
698
707
|
{
|
|
699
708
|
"name": "macos-menubar-tuist-app",
|
|
700
709
|
"description": "Build, refactor, or review SwiftUI macOS menubar apps that use Tuist. Use when building, refactoring or reviewing a SwiftUI macOS menubar app that uses Tuist.",
|
|
@@ -922,7 +931,7 @@
|
|
|
922
931
|
},
|
|
923
932
|
{
|
|
924
933
|
"name": "multi-agent-language",
|
|
925
|
-
"description": "Toggle outputLanguage (assistant explanations). promptLanguage is fixed to English
|
|
934
|
+
"description": "Toggle outputLanguage (assistant explanations, picker questions, PR/Jira/Confluence bodies). promptLanguage is fixed to English; commit messages, branch names and identifiers stay English. Use when the assistant should explain itself in a different language.",
|
|
926
935
|
"platform": null,
|
|
927
936
|
"group": "core",
|
|
928
937
|
"triggerKeywords": [],
|
|
@@ -1100,6 +1109,15 @@
|
|
|
1100
1109
|
"triggerPaths": [],
|
|
1101
1110
|
"relativePath": "shared/core/multi-agent-status/SKILL.md"
|
|
1102
1111
|
},
|
|
1112
|
+
{
|
|
1113
|
+
"name": "multi-agent-store-ready",
|
|
1114
|
+
"description": "Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, the store's own authoritative validation, and a policy review against repo source. Separate verdict per gate, a skipped gate never counted as a pass. Validates",
|
|
1115
|
+
"platform": null,
|
|
1116
|
+
"group": "core",
|
|
1117
|
+
"triggerKeywords": [],
|
|
1118
|
+
"triggerPaths": [],
|
|
1119
|
+
"relativePath": "shared/core/multi-agent-store-ready/SKILL.md"
|
|
1120
|
+
},
|
|
1103
1121
|
{
|
|
1104
1122
|
"name": "multi-agent-sync",
|
|
1105
1123
|
"description": "One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, website, and the dev-toolkit MCP server. Use when work is finished and should be propagated across Claude Code, Copilot CLI, the repos, the website and the dev-toolkit server.",
|
|
@@ -1118,9 +1136,45 @@
|
|
|
1118
1136
|
"triggerPaths": [],
|
|
1119
1137
|
"relativePath": "shared/core/multi-agent-test/SKILL.md"
|
|
1120
1138
|
},
|
|
1139
|
+
{
|
|
1140
|
+
"name": "multi-agent-test-accessibility",
|
|
1141
|
+
"description": "Accessibility audit on a booted simulator / emulator: VoiceOver labels, sub-44pt tap targets, contrast, traits. Alias pinning the accessibility scenario. Use when auditing a screen for assistive-technology support.",
|
|
1142
|
+
"platform": null,
|
|
1143
|
+
"group": "core",
|
|
1144
|
+
"triggerKeywords": [],
|
|
1145
|
+
"triggerPaths": [],
|
|
1146
|
+
"relativePath": "shared/core/multi-agent-test-accessibility/SKILL.md"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"name": "multi-agent-test-dark-mode",
|
|
1150
|
+
"description": "Dark mode UI test on a booted simulator / emulator: walk every screen light then dark, report contrast + colour bugs. Alias pinning the dark-mode scenario. Use when a dark-mode rendering bug is suspected.",
|
|
1151
|
+
"platform": null,
|
|
1152
|
+
"group": "core",
|
|
1153
|
+
"triggerKeywords": [],
|
|
1154
|
+
"triggerPaths": [],
|
|
1155
|
+
"relativePath": "shared/core/multi-agent-test-dark-mode/SKILL.md"
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
"name": "multi-agent-test-dynamic-type",
|
|
1159
|
+
"description": "Dynamic Type layout test on a booted simulator / emulator: re-walk every screen at XL through accessibility-extra-large, report truncation and clipping. Alias pinning the dynamic-type scenario. Use when checking a layout survives large text.",
|
|
1160
|
+
"platform": null,
|
|
1161
|
+
"group": "core",
|
|
1162
|
+
"triggerKeywords": [],
|
|
1163
|
+
"triggerPaths": [],
|
|
1164
|
+
"relativePath": "shared/core/multi-agent-test-dynamic-type/SKILL.md"
|
|
1165
|
+
},
|
|
1166
|
+
{
|
|
1167
|
+
"name": "multi-agent-test-screenshots",
|
|
1168
|
+
"description": "App Store screenshot set from a booted simulator / emulator in a given locale, taken as an argument and defaulting to tr. Alias pinning the screenshot scenario. Use when generating store screenshots or checking a localised build renders.",
|
|
1169
|
+
"platform": null,
|
|
1170
|
+
"group": "core",
|
|
1171
|
+
"triggerKeywords": [],
|
|
1172
|
+
"triggerPaths": [],
|
|
1173
|
+
"relativePath": "shared/core/multi-agent-test-screenshots/SKILL.md"
|
|
1174
|
+
},
|
|
1121
1175
|
{
|
|
1122
1176
|
"name": "multi-agent-testflight-validation",
|
|
1123
|
-
"description": "
|
|
1177
|
+
"description": "iOS-pinned alias of store-ready: same three gates on an iOS build, one implementation. Validates a TestFlight / App Store package, never uploads. Use when an iOS build is about to go to TestFlight, or a submission was rejected and you need why.",
|
|
1124
1178
|
"platform": null,
|
|
1125
1179
|
"group": "core",
|
|
1126
1180
|
"triggerKeywords": [],
|
|
@@ -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:** 201 skills (52 core + 149 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/`** - 52 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
|
|
10
10
|
- **`external/`** - 149 iOS / Android / generic skills imported from the upstream skill library. Mirrors of third-party guidance.
|
|
11
11
|
- Install destination stays flat: both trees flatten into `~/.claude/skills/` and `~/.copilot/skills/`. See ADR-0006 for the rationale.
|
|
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) - 52
|
|
18
18
|
- [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 89
|
|
19
19
|
- [Android / Kotlin](#android-kotlin) - 13
|
|
20
20
|
- [Web / Frontend](#web-frontend) - 10
|
|
@@ -40,7 +40,6 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
40
40
|
| [`multi-agent-dev-local`](./core/multi-agent-dev-local/) | `core` | Fast mode + local - Init → Dev(Opus) → Review → Commit → Report, no worktree. Use when a change should be developed and reviewed on the cu |
|
|
41
41
|
| [`multi-agent-dev-local-autopilot`](./core/multi-agent-dev-local-autopilot/) | `core` | Fastest + local - Dev(Opus) + autopilot, no worktree, zero interaction. Use when a change should be developed on the current branch with n |
|
|
42
42
|
| [`multi-agent-diff-explain`](./core/multi-agent-diff-explain/) | `core` | Map Phase 4 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
|
|
43
|
-
| [`multi-agent-ship`](./core/multi-agent-ship/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
|
|
44
43
|
| [`multi-agent-forget`](./core/multi-agent-forget/) | `core` | Remove a saved /multi-agent routine (created by /multi-agent:save): deletes its local-only command and its registry entry. Asks which one an |
|
|
45
44
|
| [`multi-agent-garbage-collect`](./core/multi-agent-garbage-collect/) | `core` | Sweep leftover /tmp scratch (picker state, review diffs, channel payloads, analysis drafts) from past runs. Dry-run first; confirms before d |
|
|
46
45
|
| [`multi-agent-help`](./core/multi-agent-help/) | `core` | Multi-agent pipeline usage guide - renders in EN or TR per prefs.global.outputLanguage (falls back to promptLanguage for backward compatib |
|
|
@@ -48,7 +47,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
48
47
|
| [`multi-agent-issue`](./core/multi-agent-issue/) | `core` | List unassigned GitHub issues, pick one, auto-assign, and launch the multi-agent pipeline. Use when a GitHub issue should be picked up and s |
|
|
49
48
|
| [`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 |
|
|
50
49
|
| [`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 |
|
|
51
|
-
| [`multi-agent-language`](./core/multi-agent-language/) | `core` | Toggle outputLanguage (assistant explanations). promptLanguage is fixed to English
|
|
50
|
+
| [`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 |
|
|
52
51
|
| [`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 |
|
|
53
52
|
| [`multi-agent-local-autopilot`](./core/multi-agent-local-autopilot/) | `core` | Full pipeline + local + autopilot - no worktree, no confirmations, all 8 phases run end-to-end on the current branch. Use when the full pi |
|
|
54
53
|
| [`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. |
|
|
@@ -65,11 +64,17 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
65
64
|
| [`multi-agent-scan`](./core/multi-agent-scan/) | `core` | Skill security scan: walks local skill directories against a tiered pattern catalog. Use when local skill directories need checking for unsa |
|
|
66
65
|
| [`multi-agent-search`](./core/multi-agent-search/) | `core` | Log search across every agent-log.md with smart ranking and filters. Optional --semantic flag queries the per-repo triage corpus. Use when s |
|
|
67
66
|
| [`multi-agent-setup`](./core/multi-agent-setup/) | `core` | First-run setup wizard: keychain token discovery, Git Identity onboarding, and pipeline preparation. Use when the pipeline is being set up f |
|
|
67
|
+
| [`multi-agent-ship`](./core/multi-agent-ship/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
|
|
68
68
|
| [`multi-agent-stack`](./core/multi-agent-stack/) | `core` | Select the active stack for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json (ios/android/mobile/backend/fr |
|
|
69
69
|
| [`multi-agent-status`](./core/multi-agent-status/) | `core` | Show every multi-agent task's ID, phase, branch, and status. Use when asked what is running, or for an overview of every task. |
|
|
70
|
+
| [`multi-agent-store-ready`](./core/multi-agent-store-ready/) | `core` | Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, |
|
|
70
71
|
| [`multi-agent-sync`](./core/multi-agent-sync/) | `core` | One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, website, and the dev-toolkit MCP server. Use whe |
|
|
71
72
|
| [`multi-agent-test`](./core/multi-agent-test/) | `core` | UI Bug Hunter - iOS Simulator (simctl) + Android Emulator (adb). Auto-detects platform. Screenshot + tap + analyze on the booted device. T |
|
|
72
|
-
| [`multi-agent-
|
|
73
|
+
| [`multi-agent-test-accessibility`](./core/multi-agent-test-accessibility/) | `core` | Accessibility audit on a booted simulator / emulator: VoiceOver labels, sub-44pt tap targets, contrast, traits. Alias pinning the accessibil |
|
|
74
|
+
| [`multi-agent-test-dark-mode`](./core/multi-agent-test-dark-mode/) | `core` | Dark mode UI test on a booted simulator / emulator: walk every screen light then dark, report contrast + colour bugs. Alias pinning the dark |
|
|
75
|
+
| [`multi-agent-test-dynamic-type`](./core/multi-agent-test-dynamic-type/) | `core` | Dynamic Type layout test on a booted simulator / emulator: re-walk every screen at XL through accessibility-extra-large, report truncation a |
|
|
76
|
+
| [`multi-agent-test-screenshots`](./core/multi-agent-test-screenshots/) | `core` | App Store screenshot set from a booted simulator / emulator in a given locale, taken as an argument and defaulting to tr. Alias pinning the |
|
|
77
|
+
| [`multi-agent-testflight-validation`](./core/multi-agent-testflight-validation/) | `core` | iOS-pinned alias of store-ready: same three gates on an iOS build, one implementation. Validates a TestFlight / App Store package, never upl |
|
|
73
78
|
| [`multi-agent-uninstall`](./core/multi-agent-uninstall/) | `core` | Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline set |
|
|
74
79
|
| [`multi-agent-update`](./core/multi-agent-update/) | `core` | Update the pipeline to the latest version: git pull, install, migrate. Use when the installed pipeline is behind and should be brought to th |
|
|
75
80
|
|
|
@@ -97,7 +102,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
97
102
|
| [`device-integrity`](./external/device-integrity/) | `external` | Verify device legitimacy and app integrity using DeviceCheck (DCDevice per-device bits) and App Attest (DCAppAttestService key generation, a |
|
|
98
103
|
| [`energykit`](./external/energykit/) | `external` | Query grid electricity forecasts and submit load events using EnergyKit to help users optimize home electricity usage. Use when building sma |
|
|
99
104
|
| [`eventkit-calendar`](./external/eventkit-calendar/) | `external` | Create, read, and manage calendar events and reminders using EventKit and EventKitUI. Use when adding events to the user's calendar, creatin |
|
|
100
|
-
| [`firebase`](./external/firebase/) | `external` | You're a developer who has shipped dozens of Firebase projects. You've seen the
|
|
105
|
+
| [`firebase`](./external/firebase/) | `external` | You're a developer who has shipped dozens of Firebase projects. You've seen the easy path lead to security breaches, runaway costs, and impo |
|
|
101
106
|
| [`healthkit`](./external/healthkit/) | `external` | Read, write, and query Apple Health data using HealthKit. Covers HKHealthStore authorization, sample queries, statistics queries, statistics |
|
|
102
107
|
| [`hig-components-content`](./external/hig-components-content/) | `external` | Apple Human Interface Guidelines for content display components. Use when designing or reviewing how content is displayed on an Apple platfo |
|
|
103
108
|
| [`hig-components-layout`](./external/hig-components-layout/) | `external` | Apple Human Interface Guidelines for layout and navigation components. Use when designing or reviewing layout and navigation on an Apple pla |
|
|
@@ -133,20 +133,16 @@ When `multi-agent kill [id]` is called:
|
|
|
133
133
|
|
|
134
134
|
---
|
|
135
135
|
|
|
136
|
-
## Clear Logs
|
|
136
|
+
## Clear Logs - superseded, redirect only
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
`multi-agent clear-logs`: **do not run it.** Say it was superseded, then route to
|
|
139
|
+
`multi-agent-prune-logs` (per-task logs, audit trail and metrics kept) or
|
|
140
|
+
`multi-agent-garbage-collect` (`/tmp` scratch + worktree residue).
|
|
139
141
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
5. **Confirm**:
|
|
145
|
-
```
|
|
146
|
-
🧹 Logs cleared
|
|
147
|
-
Deleted: {N} agent-log.md + {N} agent-state.json
|
|
148
|
-
Worktrees & branches: untouched
|
|
149
|
-
```
|
|
142
|
+
It scanned `.worktrees/PROJ-*/`, which holds no logs - they live at
|
|
143
|
+
`$HOME/.claude/logs/multi-agent/{project}/{task-id}/` - so it deleted nothing and
|
|
144
|
+
reported success. The name stays as a redirect so an existing invocation still lands
|
|
145
|
+
somewhere correct.
|
|
150
146
|
|
|
151
147
|
---
|
|
152
148
|
|
|
@@ -185,8 +181,8 @@ When `multi-agent purge` is called:
|
|
|
185
181
|
|
|
186
182
|
When `multi-agent resume [id]` is called:
|
|
187
183
|
|
|
188
|
-
1. **Find state file**:
|
|
189
|
-
- If no `id` given,
|
|
184
|
+
1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase 6 keeps its state at `.../{task-id}/artifacts/agent-state.json`, so look there too before reporting not-found.
|
|
185
|
+
- If no `id` given, take the most recent task dir with `status != "done"`
|
|
190
186
|
2. **Read state**: Parse `agent-state.json` → determine last completed phase
|
|
191
187
|
3. **Restore context**: Read `agent-log.md` for previous findings:
|
|
192
188
|
- Phase 1 analysis findings → reuse in Phase 2+
|
|
@@ -397,8 +393,8 @@ Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)"
|
|
|
397
393
|
git config user.name "{identity.name}"
|
|
398
394
|
git config user.email "{identity.email}"
|
|
399
395
|
```
|
|
400
|
-
4. Create log file:
|
|
401
|
-
5. Create state file:
|
|
396
|
+
4. Create log file: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md` with header
|
|
397
|
+
5. Create state file: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` with:
|
|
402
398
|
```json
|
|
403
399
|
{
|
|
404
400
|
"taskId": "PROJ-12345",
|
|
@@ -589,7 +585,7 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
|
|
|
589
585
|
⏱️ Total: 3m 18s | Agents: 12 calls | Files: 4 changed
|
|
590
586
|
📦 Commit: abc1234 | PR: #87
|
|
591
587
|
📖 Wiki: {ComponentName}.md pushed to wiki master
|
|
592
|
-
📋 Full report:
|
|
588
|
+
📋 Full report: ~/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md
|
|
593
589
|
```
|
|
594
590
|
3. Log: `📋 Phase 7: Report complete`
|
|
595
591
|
|
|
@@ -49,3 +49,7 @@ Run the task end-to-end with no confirmations.
|
|
|
49
49
|
2. **Set the autopilot flag** - `"autopilot": true` in `agent-state.json`
|
|
50
50
|
3. **Start the multi-agent pipeline** - All confirmations are skipped
|
|
51
51
|
4. **On failure** - After 3 retries still failing → pause, ask the user
|
|
52
|
+
|
|
53
|
+
## Required: outward-facing payload contracts
|
|
54
|
+
|
|
55
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
@@ -12,7 +12,7 @@ argument-hint: "[\"<free-text description>\"] [figma-url] [swagger-url] - all
|
|
|
12
12
|
|
|
13
13
|
Creates exactly one Jira issue, and only after explicit approval. The issue type (Task / Bug / Story) is asked at the start of every run. No branches, no commits, no worktrees. The description comes from the type's standard template (baseline, not a mined heading set); sections auto-size - a conditional section renders only when its trigger is present, otherwise the heading is omitted.
|
|
14
14
|
|
|
15
|
-
> **Language**: issue content (summary + description) and user-facing questions follow `prefs.global.outputLanguage
|
|
15
|
+
> **Language**: issue content (summary + description) and user-facing questions follow `prefs.global.outputLanguage`, like every other user-facing payload body (`rules.md` matrix). Code identifiers and URLs stay verbatim.
|
|
16
16
|
|
|
17
17
|
## Standard templates (A = always, C = conditional)
|
|
18
18
|
|
|
@@ -64,23 +64,10 @@ Phase 7: Report → Channels (Jira / Confluence / PR / Wiki)
|
|
|
64
64
|
| Phase 7 channels (Jira / Confluence / PR / Wiki) | ✅ | ✅ (same) |
|
|
65
65
|
| Duration | ~10-15 min | ~7-10 min |
|
|
66
66
|
|
|
67
|
-
##
|
|
67
|
+
## Required: outward-facing payload contracts
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
the input references an analysis document - a Confluence URL, a local analysis file,
|
|
71
|
-
or the user says "I ran analysis for this" - there is **no phase that turns it into a
|
|
72
|
-
plan**. The doc becomes raw context for one Dev pass, and work comes out ordered by
|
|
73
|
-
whatever the model read first: the bottom of the dependency chain lands, the screen
|
|
74
|
-
wiring does not.
|
|
69
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
75
70
|
|
|
76
|
-
|
|
71
|
+
## Intake warnings (`--dev` family)
|
|
77
72
|
|
|
78
|
-
|
|
79
|
-
This mode skips Analysis and Planning, so the analysis document will not be turned
|
|
80
|
-
into a task breakdown. For analysis-driven screen work, /multi-agent or
|
|
81
|
-
/multi-agent:local run both phases.
|
|
82
|
-
1. Continue with --dev (doc as context only)
|
|
83
|
-
2. Switch to the full pipeline
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Autopilot picks 1 and logs the warning rather than asking.
|
|
73
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
@@ -55,3 +55,11 @@ Phase 7: Report → Short terminal summary
|
|
|
55
55
|
| Confirmation (test/commit/PR) | Yes | Yes | No | **No** |
|
|
56
56
|
| Review | Parallel+triage (CLI-aware) | Parallel+triage (CLI-aware) | Parallel+triage (CLI-aware) | **Parallel+triage, auto-fix** |
|
|
57
57
|
| Estimated duration | ~12 min | ~7 min | ~10 min | **~5 min** |
|
|
58
|
+
|
|
59
|
+
## Required: outward-facing payload contracts
|
|
60
|
+
|
|
61
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
62
|
+
|
|
63
|
+
## Intake warnings (`--dev` family)
|
|
64
|
+
|
|
65
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
@@ -21,7 +21,7 @@ Phase 7: Report → Jira/Wiki + log + knowledge/memory
|
|
|
21
21
|
|
|
22
22
|
## When to use it
|
|
23
23
|
|
|
24
|
-
- Quick bug fix or small feature -
|
|
24
|
+
- Quick bug fix or small feature - analysis and planning buy nothing here
|
|
25
25
|
- You're working on the current branch and don't want to switch worktrees
|
|
26
26
|
- Quick bug fix or small feature - analysis and planning buy nothing here
|
|
27
27
|
|
|
@@ -36,23 +36,10 @@ multi-agent-dev-local "PROJ-12345" # Jira
|
|
|
36
36
|
multi-agent-dev-local "Bug: LoginView dark mode" # Free-text
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
The `--dev` family skips Phase 1 (Analysis) and Phase 2 (Planning) by design. So when
|
|
42
|
-
the input references an analysis document - a Confluence URL, a local analysis file,
|
|
43
|
-
or the user says "I ran analysis for this" - there is **no phase that turns it into a
|
|
44
|
-
plan**. The doc becomes raw context for one Dev pass, and work comes out ordered by
|
|
45
|
-
whatever the model read first: the bottom of the dependency chain lands, the screen
|
|
46
|
-
wiring does not.
|
|
39
|
+
## Required: outward-facing payload contracts
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
This mode skips Analysis and Planning, so the analysis document will not be turned
|
|
52
|
-
into a task breakdown. For analysis-driven screen work, /multi-agent or
|
|
53
|
-
/multi-agent:local run both phases.
|
|
54
|
-
1. Continue with --dev (doc as context only)
|
|
55
|
-
2. Switch to the full pipeline
|
|
56
|
-
```
|
|
43
|
+
## Intake warnings (`--dev` family)
|
|
57
44
|
|
|
58
|
-
|
|
45
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|
|
@@ -41,3 +41,11 @@ Routes to the orchestrator with the `--dev --local autopilot` flags. The pipelin
|
|
|
41
41
|
multi-agent-dev-local-autopilot "PROJ-12345" # Jira
|
|
42
42
|
multi-agent-dev-local-autopilot "Add retry to HomeNetworking" # Free-text
|
|
43
43
|
```
|
|
44
|
+
|
|
45
|
+
## Required: outward-facing payload contracts
|
|
46
|
+
|
|
47
|
+
Before writing anything outward-facing - PR body, Jira comment, Confluence page, closing report - load `$HOME/.claude/multi-agent-refs/payload-contracts.md`. It names the canonical section set for each payload, the markup dialect per surface (PR body is Markdown, Jira is wiki markup - mixing them is a defect), and the token/duration numbers the closing report must carry. Improvising a payload shape from memory is the most common failure of the short modes.
|
|
48
|
+
|
|
49
|
+
## Intake warnings (`--dev` family)
|
|
50
|
+
|
|
51
|
+
Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
|