@mmerterden/multi-agent-pipeline 17.6.0 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +310 -0
- package/README.md +76 -18
- package/README.tr.md +55 -16
- package/docs/adr/0002-instruction-driven-flag.md +1 -0
- package/docs/adr/0005-lazy-phase-docs.md +11 -1
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
- package/docs/adr/0010-own-code-graph.md +1 -0
- package/docs/adr/0011-dormant-ci.md +25 -1
- package/docs/adr/0014-six-phase-consolidation.md +134 -0
- package/docs/adr/README.md +2 -1
- package/docs/architecture.md +37 -38
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +37 -26
- package/docs/engineering.md +1 -1
- package/docs/facts.json +45 -0
- package/docs/features.md +54 -53
- package/docs/performance.md +5 -5
- package/docs/recovery-guide.md +9 -9
- package/docs/server-readiness.md +188 -0
- package/docs/token-budget-history.md +3 -1
- package/index.js +18 -3
- package/install/_codex-agents.mjs +1 -1
- package/install/_common.mjs +42 -17
- package/install/_dev-only-files.mjs +8 -0
- package/install/_unattended-profile.mjs +113 -0
- package/install/index.mjs +48 -0
- package/install/templates/claude-hooks.json +1 -1
- package/install/templates/codex-instructions.md +1 -1
- package/install/templates/copilot-instructions.md +28 -28
- package/manifest.json +1065 -0
- package/package.json +6 -3
- package/pipeline/agents/dev-critic.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +8 -8
- package/pipeline/commands/multi-agent/analysis/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
- package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/status/SKILL.md +54 -23
- package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/lib/_jira-auth.sh +8 -0
- package/pipeline/lib/analysis-jira-write.sh +32 -0
- package/pipeline/lib/ask-choice.sh +13 -2
- package/pipeline/lib/autopilot-state.sh +8 -0
- package/pipeline/lib/credential-inventory.sh +1 -1
- package/pipeline/lib/fatal.mjs +129 -0
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/figma-mcp-refresh.sh +18 -0
- package/pipeline/lib/figma-screenshot.sh +18 -0
- package/pipeline/lib/invoked-directly.mjs +43 -0
- package/pipeline/lib/jira-publish.sh +42 -0
- package/pipeline/lib/md2confluence-v3.py +47 -0
- package/pipeline/lib/model-rung.sh +142 -0
- package/pipeline/lib/outbound-gate.mjs +175 -0
- package/pipeline/lib/phase-schema.mjs +88 -0
- package/pipeline/lib/plan-todos.sh +32 -11
- package/pipeline/lib/post-pr-review.sh +77 -8
- package/pipeline/lib/repo-hygiene.sh +8 -3
- package/pipeline/lib/require-jq.sh +40 -0
- package/pipeline/lib/route-state.sh +161 -0
- package/pipeline/lib/run-paths.sh +335 -0
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +0 -9
- package/pipeline/multi-agent-refs/analysis/intake.md +1 -1
- package/pipeline/multi-agent-refs/analysis/locked.md +21 -22
- package/pipeline/multi-agent-refs/analysis/render.md +1 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +12 -6
- package/pipeline/multi-agent-refs/android-guide.md +1 -1
- package/pipeline/multi-agent-refs/audit-guide.md +13 -13
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +3 -3
- package/pipeline/multi-agent-refs/channels/pr.md +4 -4
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
- package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +74 -4
- package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
- package/pipeline/multi-agent-refs/features/cost-analysis.md +93 -0
- package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
- package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
- package/pipeline/multi-agent-refs/features/doctor.md +47 -2
- package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
- package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
- package/pipeline/multi-agent-refs/features/model-fallback.md +5 -5
- package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
- package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
- package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +1 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
- package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
- package/pipeline/multi-agent-refs/features/verify.md +83 -0
- package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
- package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
- package/pipeline/multi-agent-refs/knowledge.md +11 -11
- package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
- package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
- package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
- package/pipeline/multi-agent-refs/phases/modes.md +30 -30
- package/pipeline/multi-agent-refs/phases/operations.md +21 -10
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +25 -25
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
- package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
- package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
- package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
- package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
- package/pipeline/multi-agent-refs/phases.md +44 -48
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +6 -6
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/rules.md +7 -7
- package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
- package/pipeline/multi-agent-refs/unattended-contract.md +129 -0
- package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
- package/pipeline/preferences-template.json +9 -1
- package/pipeline/rules/outside-the-pipeline.md +1 -1
- package/pipeline/schemas/agent-state.schema.json +50 -50
- package/pipeline/schemas/analysis-output.schema.json +2 -2
- package/pipeline/schemas/autopilot-config.schema.json +1 -1
- package/pipeline/schemas/code-graph.schema.json +1 -1
- package/pipeline/schemas/criteria-manifest.schema.json +1 -1
- package/pipeline/schemas/dev-critic-output.schema.json +1 -1
- package/pipeline/schemas/diff-risk.schema.json +1 -1
- package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
- package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
- package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
- package/pipeline/schemas/phases.json +105 -0
- package/pipeline/schemas/plan-todos.schema.json +5 -5
- package/pipeline/schemas/planning-output.schema.json +1 -1
- package/pipeline/schemas/prefs.schema.json +100 -56
- package/pipeline/schemas/reviewer-output.schema.json +3 -3
- package/pipeline/schemas/route-config.schema.json +74 -0
- package/pipeline/schemas/scope-check.schema.json +1 -1
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +12 -18
- package/pipeline/schemas/triage-output.schema.json +6 -6
- package/pipeline/scripts/README.md +3 -3
- package/pipeline/scripts/_code-graph.mjs +2 -2
- package/pipeline/scripts/_run-paths.mjs +372 -0
- package/pipeline/scripts/_smoke-root.sh +1 -1
- package/pipeline/scripts/aggregate-metrics.mjs +65 -65
- package/pipeline/scripts/autopilot-arming.mjs +2 -1
- package/pipeline/scripts/autopilot-intake.mjs +2 -1
- package/pipeline/scripts/autopilot-runner.mjs +206 -2
- package/pipeline/scripts/build-references.mjs +2 -1
- package/pipeline/scripts/build-stack-plugins.mjs +10 -2
- package/pipeline/scripts/capture-evidence.sh +7 -2
- package/pipeline/scripts/capture-flush.sh +8 -8
- package/pipeline/scripts/capture-resume.sh +3 -3
- package/pipeline/scripts/classify-plan-safety.mjs +3 -2
- package/pipeline/scripts/cost-analyze.mjs +600 -0
- package/pipeline/scripts/cost-budget-check.mjs +4 -12
- package/pipeline/scripts/council-view.mjs +2 -1
- package/pipeline/scripts/crush-json.mjs +2 -1
- package/pipeline/scripts/diff-explain.mjs +7 -10
- package/pipeline/scripts/diff-risk-score.mjs +2 -1
- package/pipeline/scripts/doctor.mjs +140 -6
- package/pipeline/scripts/evidence-gate.mjs +9 -3
- package/pipeline/scripts/feedback-send.mjs +12 -2
- package/pipeline/scripts/gc-abandoned.sh +32 -16
- package/pipeline/scripts/gc-tmp.sh +1 -1
- package/pipeline/scripts/gc-worktrees.sh +12 -5
- package/pipeline/scripts/gen-facts.mjs +175 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
- package/pipeline/scripts/gen-ref-toc.mjs +1 -1
- package/pipeline/scripts/github-ssh-setup.sh +64 -7
- package/pipeline/scripts/graph-mermaid.mjs +4 -2
- package/pipeline/scripts/graph-report.mjs +1 -1
- package/pipeline/scripts/jira-attach.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +101 -30
- package/pipeline/scripts/learn-from-transcripts.mjs +3 -2
- package/pipeline/scripts/learning-curve.mjs +36 -31
- package/pipeline/scripts/log-metric.sh +17 -4
- package/pipeline/scripts/make-manifest.mjs +199 -0
- package/pipeline/scripts/memory-save.sh +1 -1
- package/pipeline/scripts/migrate-prefs.mjs +24 -6
- package/pipeline/scripts/migrate-state.mjs +94 -4
- package/pipeline/scripts/phase-banner.sh +26 -22
- package/pipeline/scripts/phase-tracker.sh +48 -10
- package/pipeline/scripts/plan-coverage-gate.mjs +8 -4
- package/pipeline/scripts/pre-commit-check.sh +7 -0
- package/pipeline/scripts/pre-push-check.sh +7 -0
- package/pipeline/scripts/purge.sh +23 -6
- package/pipeline/scripts/render-agent-log-cost.sh +10 -3
- package/pipeline/scripts/render-cost-summary.sh +9 -2
- package/pipeline/scripts/render-work-summary.sh +14 -7
- package/pipeline/scripts/review-file-filter.mjs +5 -3
- package/pipeline/scripts/review-scope.mjs +2 -1
- package/pipeline/scripts/routine-registry.mjs +2 -1
- package/pipeline/scripts/run-aggregator.mjs +26 -20
- package/pipeline/scripts/run-metrics.mjs +4 -2
- package/pipeline/scripts/runs-index.mjs +353 -0
- package/pipeline/scripts/scorecard-snapshot.mjs +178 -0
- package/pipeline/scripts/search-logs.sh +18 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
- package/pipeline/scripts/smoke-schema-validation.sh +26 -7
- package/pipeline/scripts/test-gap-scan.mjs +2 -1
- package/pipeline/scripts/test-integrity-gate.mjs +2 -1
- package/pipeline/scripts/token-budget-report.mjs +13 -2
- package/pipeline/scripts/triage-memory.mjs +2 -2
- package/pipeline/scripts/update-issue-progress.sh +56 -7
- package/pipeline/scripts/usage-report.mjs +12 -1
- package/pipeline/scripts/validate-analysis-doc.mjs +75 -18
- package/pipeline/scripts/validate-code-graph.mjs +6 -3
- package/pipeline/scripts/validate-complaint-doc.mjs +2 -1
- package/pipeline/scripts/validate-diff-risk.mjs +6 -3
- package/pipeline/scripts/validate-planning.mjs +1 -1
- package/pipeline/scripts/validate-reviewer.mjs +1 -1
- package/pipeline/scripts/validate-state.mjs +45 -5
- package/pipeline/scripts/validate-test-gap.mjs +6 -3
- package/pipeline/scripts/validate-triage.mjs +6 -4
- package/pipeline/scripts/verify-citations.mjs +4 -2
- package/pipeline/scripts/verify.mjs +327 -0
- package/pipeline/scripts/worktree-finalize.sh +18 -9
- package/pipeline/scripts/write-state.mjs +154 -15
- package/pipeline/skills/.skill-manifest.json +37 -21
- package/pipeline/skills/.skills-index.json +104 -5
- package/pipeline/skills/shared/README.md +15 -6
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +2 -2
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +69 -71
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +35 -11
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/package_app.sh +4 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/setup_dev_signing.sh +4 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/sign-and-notarize.sh +2 -1
- package/pipeline/skills/skills-index.md +13 -4
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
|
@@ -59,30 +59,31 @@ How It Works (Phase 0 - Interactive Flow):
|
|
|
59
59
|
Pipeline (after Phase 0):
|
|
60
60
|
|
|
61
61
|
Phase 0: Init -> The 8 steps above
|
|
62
|
-
Phase 1:
|
|
63
|
-
|
|
64
|
-
Phase
|
|
65
|
-
|
|
62
|
+
Phase 1: Plan -> Stack detection + codebase scan, then task breakdown,
|
|
63
|
+
architecture review and the Plan Approval Gate (Opus)
|
|
64
|
+
Phase 2: Dev -> TDD: test -> code -> build (Sonnet) + build queue, then the
|
|
65
|
+
Verify exit gate: build, lint, tests, secrets
|
|
66
|
+
(the build runs ONCE per run; its log carries into Review)
|
|
67
|
+
Phase 3: Review -> Parallel AI review + Fable triage, then the optional user test
|
|
66
68
|
(Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
|
|
67
|
-
Phase
|
|
68
|
-
Phase
|
|
69
|
-
Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
69
|
+
Phase 4: Commit -> Commit -> push -> PR + issue body update (never auto-closes)
|
|
70
|
+
Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
70
71
|
+ internal capture (agent-log · knowledge · memory)
|
|
71
72
|
|
|
72
|
-
Autopilot always pauses at the Phase
|
|
73
|
+
Autopilot always pauses at the Phase 5 channels menu (30-min timeout → session ends).
|
|
73
74
|
|
|
74
75
|
------------------------------------------------------------
|
|
75
76
|
|
|
76
77
|
Modes:
|
|
77
78
|
|
|
78
79
|
Depth is asked at Phase 0 Step 7.5, not passed as a flag:
|
|
79
|
-
Full
|
|
80
|
-
Short Dev(Opus, self-contained) -> Review ->
|
|
80
|
+
Full Plan -> Dev(Sonnet) -> Review -> Commit -> Report
|
|
81
|
+
Short Dev(Opus, self-contained) -> Review -> Commit -> Report
|
|
81
82
|
Recommended from taskType. Review is never skipped either way.
|
|
82
83
|
|
|
83
84
|
--local No worktree - works directly on local branch
|
|
84
85
|
autopilot Skip all confirmations, including the depth question, so
|
|
85
|
-
it always runs Full (EXCEPT Phase
|
|
86
|
+
it always runs Full (EXCEPT Phase 5 channels menu)
|
|
86
87
|
|
|
87
88
|
Dedicated dash commands (Copilot):
|
|
88
89
|
multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
|
|
@@ -147,7 +148,7 @@ UI Testing (standalone):
|
|
|
147
148
|
and lives at /multi-agent:store-ready. The old /multi-agent:test "store-ready"
|
|
148
149
|
tag still works and hands off there.
|
|
149
150
|
|
|
150
|
-
Manual Test (Phase
|
|
151
|
+
Manual Test (Phase 3 user-test step, standalone - Xcode hint flow):
|
|
151
152
|
|
|
152
153
|
/multi-agent:manual-test [#N] Checkout task branch, print Xcode/SourceTree hints.
|
|
153
154
|
(Renamed from :test in v5.7.4.)
|
|
@@ -232,30 +233,31 @@ Nasıl Çalışır (Phase 0 - İnteraktif Akış):
|
|
|
232
233
|
Pipeline (Phase 0'dan sonra):
|
|
233
234
|
|
|
234
235
|
Phase 0: Init -> Yukarıdaki 8 adım
|
|
235
|
-
Phase 1:
|
|
236
|
-
|
|
237
|
-
Phase
|
|
238
|
-
|
|
236
|
+
Phase 1: Plan -> Stack tespiti + codebase taraması, ardından task kırılımı,
|
|
237
|
+
mimari inceleme ve Plan Onay Kapısı (Opus)
|
|
238
|
+
Phase 2: Dev -> TDD: test -> kod -> build (Sonnet) + build queue, sonra
|
|
239
|
+
Verify çıkış kapısı: build, lint, test, sır taraması
|
|
240
|
+
(build koşu başına BİR kez çalışır, log'u Review'a devreder)
|
|
241
|
+
Phase 3: Review -> Paralel AI review + Fable triage, sonra opsiyonel kullanıcı testi
|
|
239
242
|
(Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
|
|
240
|
-
Phase
|
|
241
|
-
Phase
|
|
242
|
-
Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
243
|
+
Phase 4: Commit -> Commit -> push -> PR + issue body güncelleme (hiç auto-close yok)
|
|
244
|
+
Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
243
245
|
+ internal capture (agent-log · knowledge · memory)
|
|
244
246
|
|
|
245
|
-
Autopilot Phase
|
|
247
|
+
Autopilot Phase 5 channels menüsünde HER ZAMAN durur (30 dk timeout → session biter).
|
|
246
248
|
|
|
247
249
|
------------------------------------------------------------
|
|
248
250
|
|
|
249
251
|
Modlar:
|
|
250
252
|
|
|
251
253
|
Derinlik Faz 0 Adım 7.5'te sorulur, bayrakla geçilmez:
|
|
252
|
-
Tam
|
|
253
|
-
Kısa Dev(Opus, kendi kendine yeten) -> Review ->
|
|
254
|
+
Tam Plan -> Dev(Sonnet) -> Review -> Commit -> Report
|
|
255
|
+
Kısa Dev(Opus, kendi kendine yeten) -> Review -> Commit -> Report
|
|
254
256
|
taskType'a göre önerilir. Review iki durumda da atlanmaz.
|
|
255
257
|
|
|
256
258
|
--local Worktree yok - doğrudan local branch'te çalışır
|
|
257
259
|
autopilot Derinlik sorusu dahil tüm onayları atlar, bu yüzden her
|
|
258
|
-
zaman Tam koşar (İSTİSNA: Phase
|
|
260
|
+
zaman Tam koşar (İSTİSNA: Phase 5 channels menüsü)
|
|
259
261
|
|
|
260
262
|
Dedicated dash komutlar (Copilot):
|
|
261
263
|
multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
|
|
@@ -14,7 +14,7 @@ Two-axis language preference for the pipeline:
|
|
|
14
14
|
|
|
15
15
|
| Field | Controls | Stored at | Mutability |
|
|
16
16
|
|---|---|---|---|
|
|
17
|
-
| `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase
|
|
17
|
+
| `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase 3 test prompt, Phase 4 local-checkout prompt) | `prefs.global.promptLanguage` | **Fixed to `en`** - never toggled by this skill |
|
|
18
18
|
| `outputLanguage` | Assistant's explanations, status updates, error messages, and pipeline-generated reports rendered to the user (NOT external payloads) | `prefs.global.outputLanguage` | Toggled by this skill |
|
|
19
19
|
|
|
20
20
|
**Why promptLanguage is fixed:** it governs the picker's structural chrome only - the `AskUserQuestion` `header` chip, host error UI, and internal contract identifiers. The chip stays English because it is capped at 12 characters and most Turkish equivalents overflow it. Everything a user actually reads follows `outputLanguage`: the picker `question`, each option's `label`, and each option's `description`, per the canonical per-field matrix in `multi-agent-refs/rules.md`. A picker whose question or buttons are English on a Turkish run is a bug, not the contract. The host's own **Other** row is injected by the CLI and stays English on every run; nothing in the pipeline can localize it.
|
|
@@ -83,5 +83,5 @@ Render in the new outputLanguage:
|
|
|
83
83
|
|
|
84
84
|
- `multi-agent-setup` - first-run language picker (asks only outputLanguage; promptLanguage seeded as `en`)
|
|
85
85
|
- `prefs.schema.json` - `global.promptLanguage` (fixed `"en"`) and `global.outputLanguage`
|
|
86
|
-
- Phase 5 / Phase
|
|
86
|
+
- Phase 5 / Phase 4 - interactive prompts follow the per-field matrix: `question` + `label` + `description` in `outputLanguage`, `header` English
|
|
87
87
|
- `multi-agent-help` - reads outputLanguage for its own copy
|
|
@@ -7,7 +7,7 @@ user-invocable: true
|
|
|
7
7
|
|
|
8
8
|
# multi-agent local - Full Pipeline, Local Branch
|
|
9
9
|
|
|
10
|
-
Runs the full
|
|
10
|
+
Runs the full 6-phase pipeline (normal mode - including the Plan Approval Gate + parallel review + triage) on the current branch **without creating a worktree**. The dedicated equivalent of the `multi-agent "task" --local` flag form.
|
|
11
11
|
|
|
12
12
|
## When to use it
|
|
13
13
|
|
|
@@ -22,7 +22,7 @@ Runs the full 8-phase pipeline (normal mode - including the Plan Approval Gate
|
|
|
22
22
|
|
|
23
23
|
## Pipeline
|
|
24
24
|
|
|
25
|
-
The same
|
|
25
|
+
The same 6 phases as the normal pipeline: Init → Analysis → Planning → Dev → Review → Test → Commit → Report. Only Phase 0 Step 8 (workspace creation) continues on the current branch instead of a worktree; the `state.projects[*].worktreePath` field stays `null`.
|
|
26
26
|
|
|
27
27
|
## Delegation
|
|
28
28
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-local-autopilot
|
|
3
3
|
language: en
|
|
4
|
-
description: "Full pipeline + local + autopilot - no worktree, no confirmations, all
|
|
4
|
+
description: "Full pipeline + local + autopilot - no worktree, no confirmations, all 6 phases run end-to-end on the current branch. Use when the full pipeline should run on the current branch with no worktree and no prompts."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
|
|
7
7
|
---
|
|
@@ -10,16 +10,16 @@ argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
|
|
|
10
10
|
|
|
11
11
|
**Input**: $ARGUMENTS
|
|
12
12
|
|
|
13
|
-
Runs the full
|
|
13
|
+
Runs the full 6-phase pipeline **without creating a worktree** + **skipping all confirmations**. The `autopilot + local` combination. Byte-identical behavior to `/multi-agent:local-autopilot` (Claude Code colon-form).
|
|
14
14
|
|
|
15
15
|
## Matrix (which one should I use?)
|
|
16
16
|
|
|
17
17
|
| Command | Pipeline | Worktree | Confirmation |
|
|
18
18
|
|---|---|---|---|
|
|
19
|
-
| `multi-agent "task"` | Full
|
|
20
|
-
| `multi-agent-autopilot "task"` | Full
|
|
21
|
-
| `multi-agent-local "task"` | Full
|
|
22
|
-
| **`multi-agent-local-autopilot "task"`** | **Full
|
|
19
|
+
| `multi-agent "task"` | Full 6 phases | ✅ | ✅ (interactive) |
|
|
20
|
+
| `multi-agent-autopilot "task"` | Full 6 phases | ✅ | ❌ |
|
|
21
|
+
| `multi-agent-local "task"` | Full 6 phases | ❌ | ✅ |
|
|
22
|
+
| **`multi-agent-local-autopilot "task"`** | **Full 6 phases** | **❌** | **❌** |
|
|
23
23
|
|
|
24
24
|
Depth is a separate axis, asked at Phase 0 Step 7.5 rather than encoded in the command name: Full runs every phase above, Short runs Dev → Review → Test → Commit → Report. The two autopilot rows never ask and always run Full.
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ Depth is a separate axis, asked at Phase 0 Step 7.5 rather than encoded in the c
|
|
|
27
27
|
|
|
28
28
|
- The Phase 0 Step 6 worktree step is skipped (local contract)
|
|
29
29
|
- The Phase 2 Plan Approval Gate is skipped (autopilot contract) - `state.autopilot === true`
|
|
30
|
-
- The Phase
|
|
30
|
+
- The Phase 3 test prompt is skipped, Phase 4 commit/PR does not wait for confirmation
|
|
31
31
|
- **v7.0.0+**: The Phase 2 safety classifier (`classify-plan-safety.mjs`) always runs; if the score is ≥ 50 it asks for a single manual confirmation even in autopilot (`prefs.global.autopilotSafetyGate`, default on)
|
|
32
32
|
|
|
33
33
|
## What is NEVER skipped
|
|
@@ -48,7 +48,7 @@ multi-agent-local-autopilot "#3"
|
|
|
48
48
|
|
|
49
49
|
## Delegation
|
|
50
50
|
|
|
51
|
-
The orchestrator skill (`multi-agent/SKILL.md`) takes the `--local` + `"autopilot": true` state flags together. Contract: `refs/phases/phase-0-init.md` Step 6 (local branch) + `refs/phases/phase-
|
|
51
|
+
The orchestrator skill (`multi-agent/SKILL.md`) takes the `--local` + `"autopilot": true` state flags together. Contract: `refs/phases/phase-0-init.md` Step 6 (local branch) + `refs/phases/phase-1-plan.md` Step 5 (gate skip) + Step 5c (safety classifier, v7.0.0+).
|
|
52
52
|
|
|
53
53
|
## Required: outward-facing payload contracts
|
|
54
54
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-manual-test
|
|
3
3
|
language: en
|
|
4
|
-
description: "Switch to the active task's branch and prepare it for manual testing in Xcode. Phase
|
|
4
|
+
description: "Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 3 user-test step, standalone (the UI Bug Hunter lives at multi-agent-test). Use when a finished change needs trying by hand on a device or simulator."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
argument-hint: "[#id] - optional: task ID. Defaults to the latest task if omitted"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# multi-agent manual-test - Phase
|
|
9
|
+
# multi-agent manual-test - Phase 3 Manual Test Mode
|
|
10
10
|
|
|
11
11
|
**Input**: $ARGUMENTS
|
|
12
12
|
|
|
@@ -16,8 +16,8 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
|
|
|
16
16
|
|
|
17
17
|
1. **Find the task** - parse `#N` from the argument or find the most recent task
|
|
18
18
|
|
|
19
|
-
2. **Check the state** - the task must have completed Phase
|
|
20
|
-
- Phase <
|
|
19
|
+
2. **Check the state** - the task must have completed Phase 2 (Dev) or later
|
|
20
|
+
- Phase < 2 → "No code has been written yet, run `resume #N` first"
|
|
21
21
|
|
|
22
22
|
3. **Remove the worktree and switch to the branch**:
|
|
23
23
|
```bash
|
|
@@ -36,7 +36,7 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
|
|
|
36
36
|
• Manual test in the Simulator
|
|
37
37
|
|
|
38
38
|
Result:
|
|
39
|
-
✅ "ok" → proceeds to Phase
|
|
39
|
+
✅ "ok" → proceeds to Phase 4 (commit)
|
|
40
40
|
❌ "fix: ..." → the worktree is recreated and the fix is applied
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -52,5 +52,5 @@ Lets you switch to the task branch for manual testing in Xcode before the PR is
|
|
|
52
52
|
node $HOME/.claude/scripts/evidence-gate.mjs --claim manual --status passed \
|
|
53
53
|
--evidence "$WORKTREE/.pipeline/manual-test.json"
|
|
54
54
|
```
|
|
55
|
-
Exit 1 means the "ok" is not accepted: name the criterion that lacks evidence and wait for the next reply. Exit 0 → recreate the worktree, proceed to Phase
|
|
55
|
+
Exit 1 means the "ok" is not accepted: name the criterion that lacks evidence and wait for the next reply. Exit 0 → recreate the worktree, proceed to Phase 4. Full contract: `$HOME/.claude/multi-agent-refs/phases/phase-3-review.md` step 5.
|
|
56
56
|
- **Fix needed** → recreate the worktree, apply the fix
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-model
|
|
3
|
+
language: en
|
|
4
|
+
description: "Turn the top model rung on or off and keep the cost ledger's pricing in step with it. Use when asked to enable or disable Fable, or which model the pipeline dispatches."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[on | off] - no argument reports the current state"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent model - which rung the pipeline dispatches on
|
|
10
|
+
|
|
11
|
+
The ladder is `fable -> opus -> sonnet -> haiku` and it does not change here.
|
|
12
|
+
What changes is whether the top rung is in play at all, which is
|
|
13
|
+
`prefs.global.modelFallback.fableEnabled` and ships `false`.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bash "$HOME/.claude/lib/model-rung.sh" ${ARGUMENTS}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Why this command exists
|
|
20
|
+
|
|
21
|
+
The switch existed before the command did. It could only be flipped by editing
|
|
22
|
+
preferences by hand, and `model-fallback.md` said so in a line most people never
|
|
23
|
+
reached. That is a knob with no handle.
|
|
24
|
+
|
|
25
|
+
It also never travelled alone. `prefs.global.costBudget.pricingModel` defaults to
|
|
26
|
+
`fable` so the estimate stays an upper bound; with the rung off, that default
|
|
27
|
+
prices every call above what it can cost, trips the budget ceiling early, and
|
|
28
|
+
triggers a downgrade nobody needed. The documentation asked the user to set both.
|
|
29
|
+
This command sets both, together:
|
|
30
|
+
|
|
31
|
+
| `fableEnabled` | `costBudget.pricingModel` |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `true` | `fable` |
|
|
34
|
+
| `false` | `opus` |
|
|
35
|
+
|
|
36
|
+
Flipping one without the other is the defect this closes, so the pair moves as
|
|
37
|
+
one write or not at all.
|
|
38
|
+
|
|
39
|
+
## What it reports with no argument
|
|
40
|
+
|
|
41
|
+
The current rung, the pricing model, and **what the switch means on this host** -
|
|
42
|
+
because it does not mean the same thing on all three:
|
|
43
|
+
|
|
44
|
+
| Host | What `off` does | Why |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| Claude Code | every `preferredModel: fable` persona (architects, reviewer 1, triage) starts on `opus` | the only host where the rung is Fable 5 |
|
|
47
|
+
| Copilot CLI | nothing | Fable 5 is not offered there; its personas never sat on this rung |
|
|
48
|
+
| Codex CLI | nothing, deliberately | the `fable` rung there means `gpt-5.6 @ xhigh`, a different model on a different account - switching it from a knob named after an Anthropic model would surprise a Codex user |
|
|
49
|
+
|
|
50
|
+
So on two of the three hosts this command is a **status report**, not a switch,
|
|
51
|
+
and it says which one it is rather than claiming a change it did not make.
|
|
52
|
+
|
|
53
|
+
## The consequence it prints when turning the rung off
|
|
54
|
+
|
|
55
|
+
Phase 3's reviewer panel collapses from three models to two. Reviewer 1 lands on
|
|
56
|
+
`opus`, which Reviewer 2 already holds, and dispatching one model twice is not
|
|
57
|
+
cross-model review. `consensus.reviewerCount` records `2`, and the `unverified`
|
|
58
|
+
verdict rule matters more rather than less - two Anthropic models agreeing on a
|
|
59
|
+
judgment call was already weak evidence and there is now one fewer of them.
|
|
60
|
+
Triage also runs on `opus`, making it the same model as Reviewer 1; the Phase 3
|
|
61
|
+
Step 3 anonymisation requirement covers that case and is not optional here.
|
|
62
|
+
|
|
63
|
+
This is printed at the moment of the change, not left in a doc.
|
|
64
|
+
|
|
65
|
+
## Related
|
|
66
|
+
|
|
67
|
+
- `/multi-agent:route-on` - policy-driven rung selection per persona or phase, a
|
|
68
|
+
separate feature that also ships off. This command decides whether a rung
|
|
69
|
+
EXISTS; that one decides which rung a given call picks.
|
|
70
|
+
- Full fallback contract, including the three failure triggers this switch is
|
|
71
|
+
deliberately not one of: `$HOME/.claude/multi-agent-refs/features/model-fallback.md`
|
|
@@ -112,7 +112,7 @@ Procedure:
|
|
|
112
112
|
|
|
113
113
|
## Step 0c: DEV-TOOLKIT - current MCP practice for the companion toolkit
|
|
114
114
|
|
|
115
|
-
The pipeline's hands on devices and browsers are MCP tools served by a companion repo (`multi-agent-toolkit-mcp`): Phase
|
|
115
|
+
The pipeline's hands on devices and browsers are MCP tools served by a companion repo (`multi-agent-toolkit-mcp`): Phase 3 test, `manual-test`, `design-check` and `apple-archive-compliance` all call them, and several pipeline skills declare a minimum toolkit version (see `cross-cli-contract.md`). That repo therefore has to track the MCP field, not just its own README. This step researches what current practice is and audits the toolkit against it.
|
|
116
116
|
|
|
117
117
|
Full procedure - resolution (configuration first, never a hardcoded path; skip when nothing resolves or `enabled` is false), the 5 research axes, the audit command block, and the band-E output table + rules - lives in `$HOME/.claude/multi-agent-refs/refactor/toolkit-research.md`. Read it before running this step.
|
|
118
118
|
|
|
@@ -147,8 +147,8 @@ Output (plan band F):
|
|
|
147
147
|
```
|
|
148
148
|
| # | Error tag | Occurrences | Users | Usual phase | Versions | Root cause (file) | Fix | In plan? |
|
|
149
149
|
|---|-----------|-------------|-------|-------------|----------|-------------------|-----|----------|
|
|
150
|
-
| 1 | 4:reviewer-json-invalid | 12 | 3 | 4 | 14.x-15.x | reviewer prompt lets prose leak | tighten schema instruction in phase-
|
|
151
|
-
| 2 | phase-3-failed | 5 | 2 | 3 | 15.0.x | build step misses a stack toolchain | add preflight in phase-
|
|
150
|
+
| 1 | 4:reviewer-json-invalid | 12 | 3 | 4 | 14.x-15.x | reviewer prompt lets prose leak | tighten schema instruction in phase-3-review.md | Yes (P0) |
|
|
151
|
+
| 2 | phase-3-failed | 5 | 2 | 3 | 15.0.x | build step misses a stack toolchain | add preflight in phase-2-dev.md | Yes (P1) |
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
Rules for this band:
|
|
@@ -23,7 +23,7 @@ Resume a paused or failed task from the last successful phase.
|
|
|
23
23
|
|
|
24
24
|
3. **Load context** - Read the findings of previous phases from `agent-log.md`:
|
|
25
25
|
- Phase 1 analysis → use in Phase 2+
|
|
26
|
-
- Phase
|
|
26
|
+
- Phase 1 plan → use in Phase 2+
|
|
27
27
|
- Phase 3 code → already present in the worktree
|
|
28
28
|
|
|
29
29
|
4. **Continue the pipeline** - Start from where it left off (same pipeline as the main multi-agent command)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-resume-local
|
|
3
3
|
language: en
|
|
4
|
-
description: "Continue already-done LOCAL work through the pipeline tail: Review
|
|
4
|
+
description: "Continue already-done LOCAL work through the pipeline tail: Review (with its build gate) → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -13,13 +13,13 @@ You already wrote (and maybe hand-tested) the change on the current branch, or c
|
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
Phase 0: Init → project/branch detect, resolve base + diff (work already done), Jira id, state (NO worktree)
|
|
16
|
-
Phase
|
|
17
|
-
|
|
18
|
-
Phase
|
|
19
|
-
Phase
|
|
16
|
+
Phase 3: Review → the Verify gate first (stack-aware build + existing tests; SUCCESS required), then
|
|
17
|
+
parallel review (Fable + Opus + Sonnet) + Fable triage
|
|
18
|
+
Phase 4: Commit → commit remaining changes + push + open PR if none exists
|
|
19
|
+
Phase 5: Report → technical analysis + Jira comment with test scenarios (channels: Jira / PR / Confluence / Wiki)
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
Phases 1-
|
|
22
|
+
Phases 1-2 (Plan / Dev) are skipped by design - the branch's local diff IS the Phase 2 output. The build that Dev's exit gate would have run happens inside Review instead, because there is no Dev run to inherit a log from.
|
|
23
23
|
|
|
24
24
|
## When to use it
|
|
25
25
|
|
|
@@ -35,7 +35,7 @@ Phases 1-3 (Analysis / Planning / Dev) are skipped by design - the branch's lo
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
multi-agent resume-local # current branch vs base; Jira id from branch name
|
|
38
|
-
multi-agent resume-local PROJ-12345 # explicit Jira id for the Phase
|
|
38
|
+
multi-agent resume-local PROJ-12345 # explicit Jira id for the Phase 5 comment
|
|
39
39
|
multi-agent resume-local --base develop # override base branch for the diff
|
|
40
40
|
multi-agent resume-local autopilot # no gate prompts: auto-fix, auto-PR, auto-comment
|
|
41
41
|
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-route-off
|
|
3
|
+
language: en
|
|
4
|
+
description: "Disable model routing and keep its rules, so turning it back on does not re-ask for the same configuration. Use when asked to turn model routing off."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "(no arguments)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent route-off - disarm routing, keep the configuration
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash "$HOME/.claude/lib/route-state.sh" off
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Sets `prefs.global.modelRouting.enabled` to `false`. Dispatch returns to the
|
|
16
|
+
plain ladder immediately: every persona takes its `preferredModel`, and the
|
|
17
|
+
`modelFallback` rules are the only thing that can move it.
|
|
18
|
+
|
|
19
|
+
## The rules are not deleted
|
|
20
|
+
|
|
21
|
+
`strategy`, `scope`, `rules[]` and `budgetCeilingUsd` all survive. `route-on`
|
|
22
|
+
brings back exactly what was configured, without asking again.
|
|
23
|
+
|
|
24
|
+
This is the same contract `autopilot-off` follows with its repo selection, for
|
|
25
|
+
the same reason: a command named after a toggle that quietly discards
|
|
26
|
+
configuration is a destructive action in disguise. To actually remove the rules,
|
|
27
|
+
replace them with an empty array:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
echo '[]' > /tmp/none.json
|
|
31
|
+
bash "$HOME/.claude/lib/route-state.sh" set-rules /tmp/none.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## What stays behind
|
|
35
|
+
|
|
36
|
+
Routing decisions already written to the cost ledger stay there. They are a
|
|
37
|
+
record of what happened on past runs, and deleting them would make a run's cost
|
|
38
|
+
unexplainable after the fact - which is the one thing the ledger exists to
|
|
39
|
+
prevent.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-route-on
|
|
3
|
+
language: en
|
|
4
|
+
description: "Enable policy-driven model routing: pick a strategy, a scope, and the rules that say which rung a call lands on. Use when asked to turn model routing on."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[--strategy=manual|task-fit|cost-ceiling] [--scope=subagent,bulk-read,research]"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent route-on - arm model routing
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash "$HOME/.claude/lib/route-state.sh" on ${ARGUMENTS}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Routing ships **off**. This is the command that turns it on, and it writes to
|
|
16
|
+
`prefs.global.modelRouting`, validated against the repo's `schemas/route-config.schema.json`.
|
|
17
|
+
|
|
18
|
+
## What a rule is
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{ "when": { "persona": "code-reviewer" }, "prefer": ["opus", "sonnet"] }
|
|
22
|
+
{ "when": { "phase": 2 }, "prefer": ["sonnet", "haiku"] }
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Ordered, first match wins. `when` matches on `persona`, `phase` (0..5) or
|
|
26
|
+
`taskKind`; `prefer` lists rungs in descending preference.
|
|
27
|
+
|
|
28
|
+
**Rung names are the contract; model ids are not.** `opus` is a rung here and a
|
|
29
|
+
model id in `cost-table.json`, and the second can change without anyone editing
|
|
30
|
+
a rule. Writing `claude-opus-5` into a rule pins a decision to a string that will
|
|
31
|
+
go stale.
|
|
32
|
+
|
|
33
|
+
Set rules with:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bash "$HOME/.claude/lib/route-state.sh" set-rules path/to/rules.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Strategies
|
|
40
|
+
|
|
41
|
+
| Strategy | What it does |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `manual` | only the explicit rules apply, nothing is inferred. The default, because a router that guesses is a router nobody can predict |
|
|
44
|
+
| `task-fit` | a rule may match on `taskKind`, and the cheapest rung clearing it is chosen |
|
|
45
|
+
| `cost-ceiling` | rungs downgrade as the run approaches `budgetCeilingUsd` |
|
|
46
|
+
|
|
47
|
+
## Scope, and the value that is not in it
|
|
48
|
+
|
|
49
|
+
`scope` names the call sites routing may act on: `subagent`, `bulk-read`,
|
|
50
|
+
`research`. Every one of them is a call **this pipeline makes itself**.
|
|
51
|
+
|
|
52
|
+
There is no `host-session` value, and that absence is enforced by that schema
|
|
53
|
+
rather than written as advice. Routing a host session means rewriting the CLI's
|
|
54
|
+
base URL to point at a local gateway - which sends the user's *entire* session
|
|
55
|
+
through a third layer, including work that has nothing to do with this pipeline,
|
|
56
|
+
breaks the subscription's auth model, and silently changes which model answered.
|
|
57
|
+
Passing `--scope=host-session` is refused with that reason, not ignored.
|
|
58
|
+
|
|
59
|
+
## The limit this command prints every time
|
|
60
|
+
|
|
61
|
+
On Claude Code a subagent cannot be dispatched to a non-Anthropic model: subagent
|
|
62
|
+
dispatch belongs to the host, not to us. So Phase 1, 2 and 3 personas stay inside
|
|
63
|
+
the Anthropic ladder no matter what the rules say, and external providers apply
|
|
64
|
+
only at `bulk-read` and `research`, where the pipeline makes the HTTP call.
|
|
65
|
+
|
|
66
|
+
This is printed by `route-status` on every invocation instead of living in a doc,
|
|
67
|
+
because the question it answers - "routing is on, why is the reviewer still on
|
|
68
|
+
Opus" - otherwise arrives days later as a bug report.
|
|
69
|
+
|
|
70
|
+
## Related
|
|
71
|
+
|
|
72
|
+
- `/multi-agent:route-off` - disables routing and **keeps** the rules
|
|
73
|
+
- `/multi-agent:route-status` - what is active, and what it costs
|
|
74
|
+
- `/multi-agent:model` - whether the top rung exists at all. That is a different
|
|
75
|
+
question: this command decides which rung a call picks, that one decides
|
|
76
|
+
whether the top one is in play
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-route-status
|
|
3
|
+
language: en
|
|
4
|
+
description: "Report model routing: whether it is armed, which rule applies where, which rung the last dispatches took, and what this run has cost. Use when asked which model is being used or why."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "(no arguments)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent route-status - what is actually routing
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash "$HOME/.claude/lib/route-state.sh" status
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Reports the stored policy, then the part that matters more: **what it can and
|
|
16
|
+
cannot reach.**
|
|
17
|
+
|
|
18
|
+
## Three states, told apart
|
|
19
|
+
|
|
20
|
+
| Output | Meaning |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `routing: false`, rules present | configured and disarmed. `route-on` restores it as-is; nothing is lost |
|
|
23
|
+
| `routing: true`, `rules: 0` | armed with nothing to match. Not an error - a configuration state, and the most common "I turned it on and nothing changed" |
|
|
24
|
+
| `routing: true` with rules listed | live. Each rule is printed as `when <key>=<value> -> rung > rung` |
|
|
25
|
+
|
|
26
|
+
A disabled router with rules is deliberately not reported as "off" alone: that
|
|
27
|
+
reads as "unconfigured" and sends the user through `route-on`'s questions a
|
|
28
|
+
second time.
|
|
29
|
+
|
|
30
|
+
## The limit, printed every time
|
|
31
|
+
|
|
32
|
+
On Claude Code a subagent cannot be sent to a non-Anthropic model. Subagent
|
|
33
|
+
dispatch belongs to the host; the pipeline asks for a persona and the host
|
|
34
|
+
decides what answers. So Phase 1, 2 and 3 personas stay inside the Anthropic
|
|
35
|
+
ladder whatever the rules say, and an external provider is only reachable where
|
|
36
|
+
the pipeline makes the HTTP call itself - `bulk-read.sh` and `research_ask`.
|
|
37
|
+
|
|
38
|
+
This paragraph is output, not documentation, because the alternative is the
|
|
39
|
+
question arriving later as "routing is on but the reviewer is still on Opus, is
|
|
40
|
+
it broken". It is not broken; it is the seam.
|
|
41
|
+
|
|
42
|
+
## Where decisions are recorded
|
|
43
|
+
|
|
44
|
+
With `recordDecisions: true` (the default) every routing decision is written to
|
|
45
|
+
the cost ledger: which rule matched, which rung it chose, and why. That is what
|
|
46
|
+
makes a run's cost explainable after it finished - a router whose choices are not
|
|
47
|
+
recorded cannot be audited, and the cost question always arrives after the run,
|
|
48
|
+
never during it.
|
|
49
|
+
|
|
50
|
+
Per-run cost and the model breakdown come from the same ledger:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
node "$HOME/.claude/scripts/token-budget-report.mjs" --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Related
|
|
57
|
+
|
|
58
|
+
- `/multi-agent:route-on` / `/multi-agent:route-off` - arm and disarm
|
|
59
|
+
- `/multi-agent:model` - whether the top rung exists at all
|
|
@@ -223,7 +223,7 @@ Re-run scan from Step 1. Show final status:
|
|
|
223
223
|
All tokens present. Pipeline ready to use.
|
|
224
224
|
|
|
225
225
|
Optional per-project features (configured on first use, nothing to do now):
|
|
226
|
-
• Phase
|
|
226
|
+
• Phase 5 Report Step 2 Wiki - auto-generates component wiki pages + Figma
|
|
227
227
|
screenshots. Activates when (a) task is a component AND (b) a Figma token
|
|
228
228
|
is in Keychain. Four adapters supported: submodule / in-repo / github-wiki
|
|
229
229
|
/ separate-repo. First run asks: use auto-detected path, use a custom
|
|
@@ -11,27 +11,51 @@ Show every active and completed task as a table.
|
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
13
|
|
|
14
|
-
1. **
|
|
15
|
-
|
|
16
|
-
- `~/my-figma-app/.worktrees/`
|
|
17
|
-
- `~/my-ios-app/.worktrees/`
|
|
14
|
+
1. **Ask the producer, do not go looking.** One command answers the whole
|
|
15
|
+
question:
|
|
18
16
|
|
|
19
|
-
2. **Scan worktrees** - Read the `agent-state.json` file in each worktree directory:
|
|
20
17
|
```bash
|
|
21
|
-
|
|
18
|
+
node "$HOME/.claude/scripts/runs-index.mjs" # grouped table
|
|
19
|
+
node "$HOME/.claude/scripts/runs-index.mjs" --json # the same records
|
|
22
20
|
```
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
`runs-index.mjs` resolves through `lib/run-paths.sh` / `scripts/_run-paths.mjs`,
|
|
23
|
+
so it sees both directory layouts (`<project>/<id>/` and the flat `<id>/`),
|
|
24
|
+
the salvaged `artifacts/` copy Phase 4 leaves behind, and every spelling of a
|
|
25
|
+
task id - and it counts a run that exists in both layouts once. Do NOT
|
|
26
|
+
re-scan the tree by hand: the earlier instruction here listed three
|
|
27
|
+
hard-coded `.worktrees/` paths and a single `find` depth, and on a real
|
|
28
|
+
install that combination missed a quarter of the runs and double-counted
|
|
29
|
+
others. It also scanned worktrees for `agent-state.json`, which Phase 0 has
|
|
30
|
+
never written there ("never inside the worktree", `phases/phase-0-init.md`).
|
|
26
31
|
|
|
27
|
-
|
|
32
|
+
2. **Fields per run** (already in the output): `taskId`, `project`, `branch`,
|
|
33
|
+
`currentPhase`, `status`, `startedAt`, `worktreePath`, `prUrl`, `autopilot`,
|
|
34
|
+
`phases[]`, `tokens`, `estUsd`, `group`, plus `duplicateOf` when the run also
|
|
35
|
+
exists in the other layout and `salvaged` when its state is the Phase 4 copy.
|
|
36
|
+
|
|
37
|
+
3. **Groups are computed, not judged.** Report the `group` the producer
|
|
38
|
+
returns rather than re-deriving it.
|
|
39
|
+
|
|
40
|
+
| Group | Test | Action offered |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `waiting` - Waiting on you | `status == "awaiting_input"`, or a `pr.url`, or phase >= 4 | `resume #N` - the work landed, it needs your answer |
|
|
43
|
+
| `stopped` - Stopped mid-development | anything else past phase 0 | `resume #N` or `kill #N` |
|
|
44
|
+
| `question` - Left at a question | phase 0 | `garbage-collect --abandoned` - nothing was built |
|
|
45
|
+
| `unknown` - Status not recorded | no `status` field | say so; offer nothing |
|
|
46
|
+
|
|
47
|
+
A run with no `status` is **not** placed in an actionable group. Unknown is
|
|
48
|
+
not a finding, and calling it dead is the same false claim in the other
|
|
49
|
+
direction.
|
|
50
|
+
|
|
51
|
+
4. **Show as a table**, grouped per step 3:
|
|
28
52
|
```
|
|
29
53
|
🤖 Multi-Agent Tasks
|
|
30
54
|
|
|
31
55
|
| ID | Jira/Task | Branch | Phase | Status | Duration |
|
|
32
56
|
|----|-----------|--------|-------|--------|----------|
|
|
33
|
-
| #1 | PROJ-133139 | feature/PROJ-133139-... |
|
|
34
|
-
| #3 | PROJ-133408 | feature/PROJ-133408-... |
|
|
57
|
+
| #1 | PROJ-133139 | feature/PROJ-133139-... | 5/5 DONE | ✅ Complete | 12m |
|
|
58
|
+
| #3 | PROJ-133408 | feature/PROJ-133408-... | 5/5 DONE | ✅ Complete | 8m |
|
|
35
59
|
|
|
36
60
|
💡 log #1 | resume #N | kill #N
|
|
37
61
|
```
|
|
@@ -43,7 +43,7 @@ is being replaced.
|
|
|
43
43
|
| `paused` / `failed` | Say the task is not running, and that `/multi-agent:resume #N` will re-enter with the instruction applied at that phase's entry. Queue it. |
|
|
44
44
|
| `complete` | Refuse. Nothing will read it. Point at `/multi-agent` for a follow-up run. |
|
|
45
45
|
|
|
46
|
-
`currentPhase` is 7 and status is `in_progress` → warn that Phase
|
|
46
|
+
`currentPhase` is 7 and status is `in_progress` → warn that Phase 5 is the
|
|
47
47
|
last one, so an instruction queued now may never be consumed.
|
|
48
48
|
|
|
49
49
|
3. **Read the instruction** - from the argument, or ask for it when the
|
|
@@ -54,7 +54,7 @@ is being replaced.
|
|
|
54
54
|
4. **Show what will be queued, and ask**:
|
|
55
55
|
|
|
56
56
|
```
|
|
57
|
-
Steer #3 ({JIRA-KEY}-12345, Phase
|
|
57
|
+
Steer #3 ({JIRA-KEY}-12345, Phase 2 Dev, in_progress)
|
|
58
58
|
|
|
59
59
|
"the field is called web, not frontend"
|
|
60
60
|
|