@mmerterden/multi-agent-pipeline 12.6.0 → 12.7.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 +83 -0
- package/README.md +18 -18
- package/docs/FIGMA_PIPELINE.md +34 -34
- package/docs/adr/0001-three-model-triage.md +12 -12
- package/docs/adr/0002-instruction-driven-flag.md +5 -5
- package/docs/adr/0003-unified-shared-skills.md +5 -5
- package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
- package/docs/adr/0005-lazy-phase-docs.md +2 -2
- package/docs/adr/0006-skills-core-external-split.md +6 -6
- package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
- package/docs/adr/README.md +1 -1
- package/docs/best-practices.md +3 -3
- package/docs/features.md +28 -28
- package/docs/performance.md +16 -16
- package/docs/recovery-guide.md +39 -39
- package/index.js +4 -4
- package/install/_common.mjs +5 -11
- package/install/_copilot-instructions.mjs +2 -2
- package/install/_dev-only-files.mjs +1 -1
- package/install/_platform-filter.mjs +1 -1
- package/install/_telemetry.mjs +1 -1
- package/install/claude.mjs +10 -9
- package/install/copilot.mjs +10 -19
- package/install/index.mjs +7 -15
- package/install/templates/copilot-instructions.md +54 -54
- package/install.js +1 -1
- package/package.json +13 -10
- package/pipeline/commands/multi-agent/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +16 -8
- package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/sync/SKILL.md +5 -5
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
- package/pipeline/eval/run-metrics-fixture.json +60 -13
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/channels-multi-repo.sh +1 -1
- package/pipeline/lib/context-link-extractor.sh +1 -1
- package/pipeline/lib/credential-store.sh +1 -1
- package/pipeline/lib/fetch-confluence.sh +1 -1
- package/pipeline/lib/fetch-crashlytics.sh +1 -1
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/fetch-graylog.sh +1 -1
- package/pipeline/lib/fetch-swagger.sh +1 -1
- package/pipeline/lib/issue-fetcher.sh +1 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/repo-cache.sh +1 -1
- package/pipeline/lib/submodule-detector.sh +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
- package/pipeline/multi-agent-refs/component-generation.md +121 -0
- package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -1
- package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +1 -1
- package/pipeline/preferences-template.json +5 -11
- package/pipeline/schemas/agent-state.schema.json +39 -9
- package/pipeline/schemas/analysis-output.schema.json +18 -4
- package/pipeline/schemas/analysis-spec.schema.json +120 -32
- package/pipeline/schemas/clarify-output.schema.json +15 -5
- package/pipeline/schemas/design-check-config.schema.json +32 -11
- package/pipeline/schemas/dev-critic-output.schema.json +20 -5
- package/pipeline/schemas/figma-project-config.schema.json +42 -10
- package/pipeline/schemas/learnings-ledger.schema.json +10 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
- package/pipeline/schemas/plan-todos.schema.json +6 -3
- package/pipeline/schemas/planning-output.schema.json +5 -1
- package/pipeline/schemas/prefs.schema.json +91 -229
- package/pipeline/schemas/test-gap.schema.json +5 -5
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/scripts/aggregate-metrics.mjs +18 -6
- package/pipeline/scripts/build-skills-index.mjs +6 -2
- package/pipeline/scripts/build-stack-plugins.mjs +142 -39
- package/pipeline/scripts/check-derived-drift.mjs +196 -0
- package/pipeline/scripts/check-md-links.mjs +6 -2
- package/pipeline/scripts/classify-plan-safety.mjs +20 -7
- package/pipeline/scripts/cost-budget-check.mjs +2 -1
- package/pipeline/scripts/cost-table.json +1 -1
- package/pipeline/scripts/diff-explain.mjs +7 -3
- package/pipeline/scripts/diff-risk-score.mjs +13 -3
- package/pipeline/scripts/eval-golden-tasks-live.mjs +8 -3
- package/pipeline/scripts/eval-golden-tasks.mjs +21 -9
- package/pipeline/scripts/eval-intent.mjs +8 -4
- package/pipeline/scripts/eval-mine-corpus.mjs +14 -4
- package/pipeline/scripts/evidence-gate.mjs +7 -2
- package/pipeline/scripts/fixtures/install-layout.tsv +3 -3
- package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
- package/pipeline/scripts/gen-skills-index.mjs +18 -3
- package/pipeline/scripts/learning-curve.mjs +13 -3
- package/pipeline/scripts/learnings-ledger.mjs +103 -36
- package/pipeline/scripts/lint-mcp-refs.mjs +13 -2
- package/pipeline/scripts/lint-skills.mjs +20 -9
- package/pipeline/scripts/localize-commands.mjs +6 -1
- package/pipeline/scripts/match-skills.mjs +15 -4
- package/pipeline/scripts/migrate-prefs.mjs +33 -16
- package/pipeline/scripts/phase-tracker.sh +3 -1
- package/pipeline/scripts/repo-map.mjs +110 -64
- package/pipeline/scripts/review-scope.mjs +7 -1
- package/pipeline/scripts/routine-registry.mjs +4 -9
- package/pipeline/scripts/run-aggregator.mjs +11 -5
- package/pipeline/scripts/run-metrics.mjs +13 -8
- package/pipeline/scripts/run-smokes.mjs +57 -3
- package/pipeline/scripts/scorecard.mjs +258 -0
- package/pipeline/scripts/smoke-context-budget.sh +72 -0
- package/pipeline/scripts/smoke-model-fallback.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +86 -7
- package/pipeline/scripts/smoke-own-punctuation.sh +103 -0
- package/pipeline/scripts/smoke-workflow-audit.sh +43 -11
- package/pipeline/scripts/smoke-write-state.sh +49 -5
- package/pipeline/scripts/test-gap-rules/android.json +11 -11
- package/pipeline/scripts/test-gap-rules/ios.json +16 -11
- package/pipeline/scripts/test-gap-rules/node.json +19 -7
- package/pipeline/scripts/test-gap-rules/python.json +10 -4
- package/pipeline/scripts/test-gap-scan.mjs +44 -12
- package/pipeline/scripts/test-integrity-gate.mjs +5 -1
- package/pipeline/scripts/token-budget-report.mjs +44 -21
- package/pipeline/scripts/triage-memory.mjs +126 -34
- package/pipeline/scripts/uninstall.mjs +74 -30
- package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
- package/pipeline/scripts/validate-diff-risk.mjs +32 -18
- package/pipeline/scripts/validate-test-gap.mjs +17 -7
- package/pipeline/scripts/validate-triage.mjs +17 -5
- package/pipeline/scripts/write-state.mjs +32 -9
- package/pipeline/skills/.skills-index.json +91 -91
- package/pipeline/skills/shared/README.md +57 -57
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +1 -1
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +16 -8
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
- package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
- package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
- package/pipeline/skills/shared/external/council/SKILL.md +3 -3
- package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
- package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
- package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
- package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
- package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
- package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
- package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
- package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
- package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
- package/pipeline/skills/skills-index.md +57 -57
- package/pipeline/scripts/smoke-plugin-validate.sh +0 -64
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# 7. Multi-tool adapter framework + token-preserving uninstall
|
|
2
2
|
|
|
3
|
-
**Status:** Superseded · 2026-07-02 (v10.7.0 removed all non-native adapters
|
|
3
|
+
**Status:** Superseded · 2026-07-02 (v10.7.0 removed all non-native adapters - the pipeline targets Claude Code + Copilot CLI only). Original acceptance: 2026-04-27 (v7.7.0 / v7.9.0). Kept as the historical record of why the adapter framework existed; install flags documented below no longer exist.
|
|
4
4
|
|
|
5
5
|
## Context
|
|
6
6
|
|
|
7
|
-
Through v7.6, the pipeline shipped to two CLIs only: Claude Code and Copilot CLI. Both expose **subagent dispatch**
|
|
7
|
+
Through v7.6, the pipeline shipped to two CLIs only: Claude Code and Copilot CLI. Both expose **subagent dispatch** - the ability for the orchestrator to fan out work to parallel sub-agents with their own model, prompt, and context. This is a hard prerequisite for the 8-phase pipeline (Phase 1 parallel exploration, Phase 4 multi-reviewer review, Phase 7 multi-channel reporting).
|
|
8
8
|
|
|
9
9
|
Users started asking: "can it work with Cursor / Windsurf / Cline / Copilot Chat / Continue / Zed?" The honest answer is mixed:
|
|
10
10
|
|
|
11
11
|
- **Subagent dispatch:** none of those tools expose it. So the orchestration layer cannot run there; only single-shot rules / instructions are loaded into a chat context.
|
|
12
|
-
- **Knowledge layer:** the pipeline's value is split roughly 30/70 between orchestration and content. The 193 SKILL.md catalog + 12 rules describe how to write good Swift / Compose / TypeScript / etc.
|
|
12
|
+
- **Knowledge layer:** the pipeline's value is split roughly 30/70 between orchestration and content. The 193 SKILL.md catalog + 12 rules describe how to write good Swift / Compose / TypeScript / etc. - that part is genuinely portable and would benefit users on tools where the orchestration can't run.
|
|
13
13
|
|
|
14
14
|
Three forces shaped this decision:
|
|
15
15
|
|
|
@@ -21,7 +21,7 @@ Three forces shaped this decision:
|
|
|
21
21
|
|
|
22
22
|
We introduce a tiered support model and a uninstaller that's contractually forbidden from touching credential storage.
|
|
23
23
|
|
|
24
|
-
### Tier 1
|
|
24
|
+
### Tier 1 - Full pipeline (orchestration + knowledge)
|
|
25
25
|
|
|
26
26
|
Tools with subagent dispatch get the full 8-phase pipeline.
|
|
27
27
|
|
|
@@ -30,23 +30,23 @@ Tools with subagent dispatch get the full 8-phase pipeline.
|
|
|
30
30
|
|
|
31
31
|
Both install slash commands / skills, agent personas, scripts, rules, and the full skills tree to `$HOME/.claude/` or `$HOME/.copilot/`.
|
|
32
32
|
|
|
33
|
-
### Tier 2
|
|
33
|
+
### Tier 2 - Knowledge layer only (v7.7.0)
|
|
34
34
|
|
|
35
35
|
Tools without subagent dispatch but with a documented rules / instructions format. Pipeline orchestration commands are filtered out (they have no callable surface here); rules + skills catalog port natively to each tool's format.
|
|
36
36
|
|
|
37
|
-
- **Cursor** (`--cursor`)
|
|
38
|
-
- **Windsurf** (`--windsurf`)
|
|
39
|
-
- **Cline** (`--cline`)
|
|
37
|
+
- **Cursor** (`--cursor`) - `.cursor/rules/multi-agent-*.mdc` + `.cursorrules` legacy fallback
|
|
38
|
+
- **Windsurf** (`--windsurf`) - `.windsurfrules` (single file, marker-wrapped)
|
|
39
|
+
- **Cline** (`--cline`) - `.clinerules/multi-agent-*.md` per-skill files
|
|
40
40
|
|
|
41
|
-
### Tier 3
|
|
41
|
+
### Tier 3 - Knowledge layer (v7.9.0)
|
|
42
42
|
|
|
43
43
|
Three more tools with the same contract.
|
|
44
44
|
|
|
45
|
-
- **GitHub Copilot Chat** (`--copilot-chat`)
|
|
46
|
-
- **Continue.dev** (`--continue`)
|
|
47
|
-
- **Zed AI** (`--zed`)
|
|
45
|
+
- **GitHub Copilot Chat** (`--copilot-chat`) - `.github/copilot-instructions.md` marker-wrapped + `.github/instructions/multi-agent-*.instructions.md` per-skill
|
|
46
|
+
- **Continue.dev** (`--continue`) - `.continue/rules/multi-agent-*.md` per-skill
|
|
47
|
+
- **Zed AI** (`--zed`) - `.rules` single file, marker-wrapped
|
|
48
48
|
|
|
49
|
-
### Tier 4
|
|
49
|
+
### Tier 4 - Manual port
|
|
50
50
|
|
|
51
51
|
Closed/proprietary tools (JetBrains AI, Codeium, Tabnine, Amazon Q Developer) get no automated installer. Skill content can be copy-pasted; PRs welcome.
|
|
52
52
|
|
|
@@ -54,11 +54,11 @@ Closed/proprietary tools (JetBrains AI, Codeium, Tabnine, Amazon Q Developer) ge
|
|
|
54
54
|
|
|
55
55
|
All non-Tier-1 adapters share `pipeline/adapters/_base.mjs`:
|
|
56
56
|
|
|
57
|
-
- **`parseFrontmatter`** / **`walkSkills`**
|
|
58
|
-
- **`inferGlobs`**
|
|
59
|
-
- **`replaceManagedBlock`** / **`removeManagedBlock`**
|
|
60
|
-
- **`withoutOrchestrationSkills`**
|
|
61
|
-
- **`concatSkills`**
|
|
57
|
+
- **`parseFrontmatter`** / **`walkSkills`** - read SKILL.md, return name + frontmatter + body
|
|
58
|
+
- **`inferGlobs`** - map skill name → glob pattern (`**/*.swift`, `**/*.{kt,kts}`, etc.) for tools that scope rules by file pattern
|
|
59
|
+
- **`replaceManagedBlock`** / **`removeManagedBlock`** - read/write/strip the `<!-- multi-agent-pipeline:begin / end -->` marker pair inside a user-owned file. Lets us share rules files (`.windsurfrules`, `.rules`, `copilot-instructions.md`) with content the user already authored.
|
|
60
|
+
- **`withoutOrchestrationSkills`** - filter `multi-agent-*` core skills (the orchestration namespace) from the export. They have no callable surface in Tier 2 / Tier 3 tools.
|
|
61
|
+
- **`concatSkills`** - single-document concatenation for adapters that emit one rules file (Windsurf, Zed) instead of per-skill files.
|
|
62
62
|
|
|
63
63
|
Each adapter exports a `{ name, install, uninstall }` contract. New adapters are mostly format-mapping over this base; adding a fourth would be ~150 LOC.
|
|
64
64
|
|
|
@@ -76,7 +76,7 @@ The contract is enforced statically by `smoke-delete-flow.sh` step 7:
|
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
78
|
grep -qE "credential-store|delete-generic-password|cmdkey /delete|secret-tool clear" uninstall.mjs
|
|
79
|
-
# fail varsa exit 1
|
|
79
|
+
# fail varsa exit 1 - pattern eklenirse build kırılır
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
A future refactor that adds any credential-store deletion API to the uninstaller fails the build before it ships. Same posture for adapter modules: `smoke-adapters-tier3.sh` step 6 scans every Tier 3 adapter file.
|
|
@@ -10,9 +10,9 @@ Two pressures collided during the v7.x line:
|
|
|
10
10
|
|
|
11
11
|
1. **Installer monolith.** `install.js` reached 1246 LOC by v7.9.1. It mixed flag parsing, three platform installers (Claude / Copilot / six third-party adapters), telemetry, a dev-only file exclusion list, and a 200-line static generator for `copilot-instructions.md`. Reasoning about install behaviour required holding the whole file in your head; reviewers asked for documentation we could not produce because every change touched untyped, intertwined sections.
|
|
12
12
|
|
|
13
|
-
2. **Secret leaks at deploy time.** During the v7.9.1 production deploy of `mmerterden.dev`, a `vercel deploy --token=vcp_
|
|
13
|
+
2. **Secret leaks at deploy time.** During the v7.9.1 production deploy of `mmerterden.dev`, a `vercel deploy --token=vcp_...` invocation failed. The Vercel CLI printed the failed argv verbatim in its retry hint. That leaked the deploy token into the conversation transcript and forced a token rotation. A second incident in the same release window - `git -c user.email=...` overriding the repo-local config - pushed seven commits with the wrong author identity, which Vercel's contributor gate then blocked. Both classes of failure share a root cause: privileged values flowed through argv when the codebase had no audited boundary between provider tools and the orchestration layer.
|
|
14
14
|
|
|
15
|
-
We needed an architectural answer that prevented both classes of failure from recurring without expanding scope into "rewrite everything as TypeScript"
|
|
15
|
+
We needed an architectural answer that prevented both classes of failure from recurring without expanding scope into "rewrite everything as TypeScript" - the project's zero-dependency philosophy (ADR-4) is a hard constraint.
|
|
16
16
|
|
|
17
17
|
## Decision
|
|
18
18
|
|
|
@@ -22,18 +22,18 @@ The monolith splits into focused modules under `install/`:
|
|
|
22
22
|
|
|
23
23
|
```
|
|
24
24
|
install/
|
|
25
|
-
index.mjs
|
|
26
|
-
claude.mjs
|
|
27
|
-
copilot.mjs
|
|
28
|
-
_adapters.mjs
|
|
29
|
-
_common.mjs
|
|
30
|
-
_platform-filter.mjs
|
|
31
|
-
_telemetry.mjs
|
|
32
|
-
_copilot-instructions.mjs
|
|
33
|
-
_dev-only-files.mjs
|
|
25
|
+
index.mjs - entry point, flag parsing, dispatcher
|
|
26
|
+
claude.mjs - Claude Code installer
|
|
27
|
+
copilot.mjs - Copilot CLI installer
|
|
28
|
+
_adapters.mjs - third-party adapter dispatch
|
|
29
|
+
_common.mjs - shared FS helpers (copyDir, ensureDir, ...)
|
|
30
|
+
_platform-filter.mjs - --platform=ios|android filter
|
|
31
|
+
_telemetry.mjs - opt-in install telemetry
|
|
32
|
+
_copilot-instructions.mjs - generator for ~/.copilot/copilot-instructions.md
|
|
33
|
+
_dev-only-files.mjs - single source of truth for excluded files
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
`install.js` keeps its bin entry contract (24 lines, just `import { runInstall } from './install/index.mjs'; await runInstall(process.argv)`). Existing invocations
|
|
36
|
+
`install.js` keeps its bin entry contract (24 lines, just `import { runInstall } from './install/index.mjs'; await runInstall(process.argv)`). Existing invocations - `npx ... install --all`, the `package.json` `./install` export, every smoke test that runs `node install.js` - continue working without API changes. The package.json `files` array adds `install/**/*` so npm publish ships the new modules.
|
|
37
37
|
|
|
38
38
|
### 2. Install layout is now a regression gate
|
|
39
39
|
|
|
@@ -50,8 +50,8 @@ Future refactors must keep this smoke green. Drift is detected before it ships,
|
|
|
50
50
|
|
|
51
51
|
`pipeline/lib/vercel-deploy.sh` is the safe wrapper around the Vercel CLI. Three properties hold for every invocation:
|
|
52
52
|
|
|
53
|
-
1. Tokens flow through `VERCEL_TOKEN` env var. The wrapper refuses to deploy if `--token=` appears anywhere in argv
|
|
54
|
-
2. Every stdout/stderr line is piped through a `redact_filter` sed pass that scrubs `--token
|
|
53
|
+
1. Tokens flow through `VERCEL_TOKEN` env var. The wrapper refuses to deploy if `--token=` appears anywhere in argv - that pattern was the v7.9.1 leak.
|
|
54
|
+
2. Every stdout/stderr line is piped through a `redact_filter` sed pass that scrubs `--token=...`, `vcp_...`, `Bearer ...`, `"token":"..."`, and `"VERCEL_TOKEN":"..."` shapes.
|
|
55
55
|
3. Failed deploys exit with a clear marker line; the wrapper does not echo the original argv that the CLI printed in its retry hint.
|
|
56
56
|
|
|
57
57
|
`pipeline/scripts/smoke-vercel-deploy-redact.sh` (12 assertions) is the regression gate for the redact filter. Each known leak shape has a fixture that must NOT survive redaction.
|
|
@@ -83,18 +83,18 @@ Schema validation proves each schema is well-formed. It does not prove that prod
|
|
|
83
83
|
|
|
84
84
|
**What gets harder:**
|
|
85
85
|
|
|
86
|
-
- Adding a brand-new install target. The contributor must touch `install/index.mjs` (flag wiring), create `install/<target>.mjs` (installer), update `smoke-install-layout.sh` (assertion). That's three files instead of one
|
|
86
|
+
- Adding a brand-new install target. The contributor must touch `install/index.mjs` (flag wiring), create `install/<target>.mjs` (installer), update `smoke-install-layout.sh` (assertion). That's three files instead of one - but the boundaries are sharp and a smoke fails loudly if anything is missed.
|
|
87
87
|
- Maintaining the static `_copilot-instructions.mjs` generator. The body still has to match the source-of-truth content in `pipeline/commands/multi-agent/`. Plan: in v9 we replace the static template with a generator that reads the actual phase files. For v8 the smoke `smoke-multi-repo-integration.sh` already greps the generator output for canonical strings, so drift is detected.
|
|
88
88
|
|
|
89
89
|
**What we explicitly chose not to do:**
|
|
90
90
|
|
|
91
91
|
- Migrate to TypeScript. The zero-dependency rule (ADR-4) still holds; TS would force a build step.
|
|
92
|
-
- Move the install layout assertions into a unit test. Bash + `find` is the right tool
|
|
92
|
+
- Move the install layout assertions into a unit test. Bash + `find` is the right tool - the assertions check a real filesystem tree, not pure logic.
|
|
93
93
|
- Auto-rotate Vercel tokens on detected leak. Rotation is a user decision; the wrapper just makes leaks harder, never silently mints replacements.
|
|
94
94
|
|
|
95
95
|
## References
|
|
96
96
|
|
|
97
97
|
- `install/` directory split (this ADR)
|
|
98
|
-
- `pipeline/lib/vercel-deploy.sh`
|
|
99
|
-
- `pipeline/scripts/smoke-install-layout.sh`, `smoke-vercel-deploy-redact.sh`, `smoke-mode-dispatch-drift.sh`, `smoke-cross-phase-cohesion.sh`
|
|
100
|
-
- `feedback_vercel_cli_token_leak.md`, `feedback_git_author_repo_local.md`, `feedback_explicit_consent_for_push.md`
|
|
98
|
+
- `pipeline/lib/vercel-deploy.sh` - secret-leak defense wrapper
|
|
99
|
+
- `pipeline/scripts/smoke-install-layout.sh`, `smoke-vercel-deploy-redact.sh`, `smoke-mode-dispatch-drift.sh`, `smoke-cross-phase-cohesion.sh` - regression gates
|
|
100
|
+
- `feedback_vercel_cli_token_leak.md`, `feedback_git_author_repo_local.md`, `feedback_explicit_consent_for_push.md` - incident retrospectives that drove this work
|
package/docs/adr/README.md
CHANGED
|
@@ -30,5 +30,5 @@ Format: lightly adapted from [Michael Nygard's ADR template](https://cognitect.c
|
|
|
30
30
|
|
|
31
31
|
## Changing a Past Decision
|
|
32
32
|
|
|
33
|
-
Don't rewrite ADRs
|
|
33
|
+
Don't rewrite ADRs - write a new one that supersedes the old. Set the old
|
|
34
34
|
ADR's status to `Superseded by 00NN` and link both ways.
|
package/docs/best-practices.md
CHANGED
|
@@ -40,11 +40,11 @@ Applied in Phase 1 (Analysis):
|
|
|
40
40
|
|
|
41
41
|
Applied in Phase 3:
|
|
42
42
|
|
|
43
|
-
1. RED
|
|
43
|
+
1. RED - Write the failing test
|
|
44
44
|
2. Verify it fails for the RIGHT reason
|
|
45
|
-
3. GREEN
|
|
45
|
+
3. GREEN - Write minimal code to pass
|
|
46
46
|
4. Verify ALL tests pass
|
|
47
|
-
5. REFACTOR
|
|
47
|
+
5. REFACTOR - Clean up without changing behavior
|
|
48
48
|
|
|
49
49
|
## 5. Deterministic Quality Gates (from claude-pipeline)
|
|
50
50
|
|
package/docs/features.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Features
|
|
1
|
+
# Features - Full Reference
|
|
2
2
|
|
|
3
|
-
Comprehensive list of every feature the pipeline ships. The top-level `README.md` only highlights the 5
|
|
3
|
+
Comprehensive list of every feature the pipeline ships. The top-level `README.md` only highlights the 5-7 most important; this file is the complete catalog.
|
|
4
4
|
|
|
5
5
|
## Core Pipeline
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ Phase 7: Report External: Jira comment · Wiki + Figma screenshots · Confluen
|
|
|
19
19
|
Internal: agent-log.md + Quality & Metrics + knowledge + memory
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
Each phase reads its own spec file under `pipeline/multi-agent-refs/phases/phase-N-*.md`
|
|
22
|
+
Each phase reads its own spec file under `pipeline/multi-agent-refs/phases/phase-N-*.md` - lazy-loaded so the orchestrator only pays the token cost for the phase it's currently in.
|
|
23
23
|
|
|
24
24
|
### Modifier Flags (orthogonal, combinable)
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ Each phase reads its own spec file under `pipeline/multi-agent-refs/phases/phase
|
|
|
27
27
|
| ----------- | ----------------------------------------------------------------------------------- |
|
|
28
28
|
| `autopilot` | Skip all confirmation prompts; still fails safe on review blockers + build retries. |
|
|
29
29
|
| `--dev` | Strip to Init → Dev(Opus self-contained) → Commit → Report. No Phase 1/2/4/5. |
|
|
30
|
-
| `--local` | No worktree
|
|
30
|
+
| `--local` | No worktree - works directly in `$PROJECT_ROOT` on a local branch. |
|
|
31
31
|
|
|
32
32
|
Compose freely: `--dev --local autopilot` = shortest, least-friction path.
|
|
33
33
|
|
|
@@ -45,7 +45,7 @@ Build commands, test runners, lint tools, and review focus areas all adapt to th
|
|
|
45
45
|
|
|
46
46
|
### Stack Selection (marketplace plugins)
|
|
47
47
|
|
|
48
|
-
Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketplace. Selecting a stack enables the matching plugin(s) in the current repo's `.claude/settings.json` `enabledPlugins`
|
|
48
|
+
Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketplace. Selecting a stack enables the matching plugin(s) in the current repo's `.claude/settings.json` `enabledPlugins` - no skill copying, no session restart tricks, no directory shuffling. The `ai-common-engineering-toolkit` (accessibility audit, humanizer, Firebase) is always enabled alongside the stack plugin.
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
51
|
/multi-agent:stack ios # ai-ios-engineering-toolkit (SwiftUI, Xcode, HIG)
|
|
@@ -73,7 +73,7 @@ Result persisted to `agent-state.taskType`:
|
|
|
73
73
|
|
|
74
74
|
### SubPhase Convention
|
|
75
75
|
|
|
76
|
-
When a specialized skill takes over a main pipeline phase, progress is reported as SubPhases (e.g. `SubPhase 3.0: Init`, `SubPhase 3.1: Gather`). The top-level pipeline stays fixed at 8 phases (0-7)
|
|
76
|
+
When a specialized skill takes over a main pipeline phase, progress is reported as SubPhases (e.g. `SubPhase 3.0: Init`, `SubPhase 3.1: Gather`). The top-level pipeline stays fixed at 8 phases (0-7) - specialized work slots into its parent phase without inflating the count.
|
|
77
77
|
|
|
78
78
|
## PR & Review Flow
|
|
79
79
|
|
|
@@ -92,7 +92,7 @@ Phase 6 asks `DRAFT or READY?` before creating the PR and persists the choice in
|
|
|
92
92
|
|
|
93
93
|
### `channels` Command
|
|
94
94
|
|
|
95
|
-
Multi-channel reporter
|
|
95
|
+
Multi-channel reporter - Phase 7 delegates to it, and it's also invocable post-hoc for fixes closed outside the pipeline:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
98
|
/multi-agent:channels # current branch, current PR
|
|
@@ -102,7 +102,7 @@ Multi-channel reporter — Phase 7 delegates to it, and it's also invocable post
|
|
|
102
102
|
/multi-agent:channels ABC-1234 --channels jira,confluence --content test
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
Multi-select **channels** (Jira / Confluence / Wiki / PR description) × multi-select **content** (normal analysis / test scenarios / auto-diff summary / manual note). Each body runs through the humanizer skill per-channel. Bitbucket PR updates use the reviewer-preserving PUT pattern (title + description + reviewers + fromRef + toRef + version mandatory). Replaces the earlier `enrich` command
|
|
105
|
+
Multi-select **channels** (Jira / Confluence / Wiki / PR description) × multi-select **content** (normal analysis / test scenarios / auto-diff summary / manual note). Each body runs through the humanizer skill per-channel. Bitbucket PR updates use the reviewer-preserving PUT pattern (title + description + reviewers + fromRef + toRef + version mandatory). Replaces the earlier `enrich` command - all its capabilities (diff auto-summarize, manual mode, reviewer-preserving) are preserved; Confluence + Wiki are new.
|
|
106
106
|
|
|
107
107
|
### Body Preservation Contract (smoke-verified)
|
|
108
108
|
|
|
@@ -110,7 +110,7 @@ Every external-system body (PR description, Jira comment, GitHub issue) uses `jq
|
|
|
110
110
|
|
|
111
111
|
### Issue Safety
|
|
112
112
|
|
|
113
|
-
Never auto-closes issues
|
|
113
|
+
Never auto-closes issues - uses `Ref: #N` / `Related: #N` / `See: PROJ-12345`, never `Closes` / `Fixes` / `Resolves`. Closure requires team review (configurable, typically 4 approvals).
|
|
114
114
|
|
|
115
115
|
## Review Quality
|
|
116
116
|
|
|
@@ -119,13 +119,13 @@ Never auto-closes issues — uses `Ref: #N` / `Related: #N` / `See: PROJ-12345`,
|
|
|
119
119
|
Cheap, objective checks run BEFORE any AI token is spent:
|
|
120
120
|
|
|
121
121
|
1. Build (acquires xcodebuild lock, isolated DerivedData per worktree)
|
|
122
|
-
2. Lint (SwiftLint / detekt / ruff / eslint
|
|
122
|
+
2. Lint (SwiftLint / detekt / ruff / eslint - stack-dependent)
|
|
123
123
|
3. Tests pass
|
|
124
124
|
4. Secret scan
|
|
125
125
|
|
|
126
126
|
If any gate fails, fix first. Don't waste AI tokens reviewing broken code.
|
|
127
127
|
|
|
128
|
-
### CLI-Aware Parallel Review + Fable Triage (Phase 4 Steps 2
|
|
128
|
+
### CLI-Aware Parallel Review + Fable Triage (Phase 4 Steps 2-3)
|
|
129
129
|
|
|
130
130
|
| Reviewer | Model | Focus | Where it runs |
|
|
131
131
|
| ---------- | ------------------- | --------------------------------- | -------------------- |
|
|
@@ -133,7 +133,7 @@ If any gate fails, fix first. Don't waste AI tokens reviewing broken code.
|
|
|
133
133
|
| Reviewer 2 | `gpt-5.4` | Edge cases, different perspective | **Copilot CLI only** |
|
|
134
134
|
| Reviewer 3 | `claude-sonnet-4-6` | Quality + correctness + naming | Both CLIs |
|
|
135
135
|
|
|
136
|
-
The reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers in parallel (Fable + Sonnet
|
|
136
|
+
The reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers in parallel (Fable + Sonnet - GPT-5.4 is not available there); Copilot CLI dispatches all 3. Each returns structured JSON for deterministic aggregation. Cross-model diversity catches blind spots that any single model family would miss.
|
|
137
137
|
|
|
138
138
|
**Fable Triage** (Phase 4 Step 3, Opus on Copilot CLI): Evaluates merged raw findings against task scope. Classifies each as `accepted` (fix now), `deferred` (out of scope, log for later), or `rejected` (false positive / noise). Only triage-accepted blocking items loop back to Phase 3.
|
|
139
139
|
|
|
@@ -143,10 +143,10 @@ After triage returns, output is validated by `validate-triage.mjs`:
|
|
|
143
143
|
|
|
144
144
|
| Exit | Meaning |
|
|
145
145
|
| ----- | ------------------------------------------------------------ |
|
|
146
|
-
| **0** | Valid and clean
|
|
147
|
-
| **1** | Invalid structure
|
|
148
|
-
| **2** | Over-rejection guard tripped
|
|
149
|
-
| **3** | Contradiction auto-corrected
|
|
146
|
+
| **0** | Valid and clean - act on triage output |
|
|
147
|
+
| **1** | Invalid structure - retry once, then fallback |
|
|
148
|
+
| **2** | Over-rejection guard tripped - pause for human |
|
|
149
|
+
| **3** | Contradiction auto-corrected - proceed with corrected output |
|
|
150
150
|
|
|
151
151
|
### Bidirectional Approved↔Blocking Auto-Correction
|
|
152
152
|
|
|
@@ -176,7 +176,7 @@ If changes include UI files, reviewers check for:
|
|
|
176
176
|
- Small tap targets (<44×44pt iOS / <48×48dp Android) (→ important)
|
|
177
177
|
- Missing identifiers + Dynamic Type support (→ suggestion)
|
|
178
178
|
|
|
179
|
-
Pure code analysis
|
|
179
|
+
Pure code analysis - no simulator needed. Device-level audits run in Phase 5 when requested.
|
|
180
180
|
|
|
181
181
|
### Status Enforcement
|
|
182
182
|
|
|
@@ -186,7 +186,7 @@ Phase 3 treats the issue-tracker status update as a required step with a post-mu
|
|
|
186
186
|
|
|
187
187
|
- **Pre-Commit Secret Detection** (12 patterns): `PreToolUse` hook scans staged files for API keys/tokens, AWS access keys, private keys, `.env` files, service account JSON. Commit **blocked** if found.
|
|
188
188
|
- **Build Queue**: All `xcodebuild` calls acquire a lock. Each worktree uses own `-derivedDataPath`. Stale locks auto-clean after 15 min. Non-Xcode builds don't need the lock.
|
|
189
|
-
- **Context Management**: `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=65`
|
|
189
|
+
- **Context Management**: `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=65` - compaction at 65% usage (prevents degradation in 8-phase sessions).
|
|
190
190
|
- **3-Iteration Hard Kill**: Any retry loop stops after 3 attempts, then pauses for user. No infinite loops.
|
|
191
191
|
|
|
192
192
|
## Testing & Quality
|
|
@@ -195,9 +195,9 @@ Phase 3 treats the issue-tracker status update as a required step with a post-mu
|
|
|
195
195
|
|
|
196
196
|
All critical state files are schema-validated at read and write time:
|
|
197
197
|
|
|
198
|
-
- `agent-state.schema.json`
|
|
199
|
-
- `prefs.schema.json`
|
|
200
|
-
- `triage-output.schema.json`
|
|
198
|
+
- `agent-state.schema.json` - validates `$HOME/.claude/logs/multi-agent/.../agent-state.json`
|
|
199
|
+
- `prefs.schema.json` - validates `$HOME/.claude/multi-agent-preferences.json`
|
|
200
|
+
- `triage-output.schema.json` - validates triage output (contradiction `if`/`then` constraint built in)
|
|
201
201
|
|
|
202
202
|
### Smoke Test Suites
|
|
203
203
|
|
|
@@ -225,13 +225,13 @@ Per-phase token budgets prevent runaway sessions. If a phase exceeds its budget,
|
|
|
225
225
|
|
|
226
226
|
### Diff Risk Scoring
|
|
227
227
|
|
|
228
|
-
`pipeline/scripts/diff-risk-score.mjs` runs at Phase 4 Step 1.75
|
|
228
|
+
`pipeline/scripts/diff-risk-score.mjs` runs at Phase 4 Step 1.75 - before reviewer dispatch. Heuristic, deterministic, sub-second, no LLM. Top-N risk-ranked files inject into each reviewer's prompt as a `${PRIORITY_FILES}` block; reviewers read those files first but still review the entire diff.
|
|
229
229
|
|
|
230
230
|
Signals + weights: `security_path` ×3, `migration` ×4, `public_api` ×2, `no_test_change` ×2.5, `test_lines_removed` ×3 (test file shrinks - immutable-test backstop), `complexity_delta` ×1.5, `ui_critical` ×1.5, `loc_changed` ×1. Toggle via `prefs.global.diffRiskAdvisory` (default ON).
|
|
231
231
|
|
|
232
232
|
### Test Gap Detection
|
|
233
233
|
|
|
234
|
-
`pipeline/scripts/test-gap-scan.mjs` runs at Phase 5 Step 0. Walks the diff for newly added public symbols and reports those with no paired test. Stack-specific rules ship for iOS, Android, Python, Node.js. iOS Views and Android `@Composable` symbols default to `important`; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold`
|
|
234
|
+
`pipeline/scripts/test-gap-scan.mjs` runs at Phase 5 Step 0. Walks the diff for newly added public symbols and reports those with no paired test. Stack-specific rules ship for iOS, Android, Python, Node.js. iOS Views and Android `@Composable` symbols default to `important`; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` - when set, the report becomes a Phase 4 rework finding once `important + blocking` count exceeds the threshold.
|
|
235
235
|
|
|
236
236
|
### Triage Memory
|
|
237
237
|
|
|
@@ -247,7 +247,7 @@ Incremental learning. Phase 7 captures architecture, patterns, gotchas, and deci
|
|
|
247
247
|
|
|
248
248
|
Pipeline learns behavioral signals (feedback corrections, project constraints, external references). Phase 7 saves, Phase 1 injects. Max 3 new memories per run. Merge-over-duplicate. Stale memories verified before use.
|
|
249
249
|
|
|
250
|
-
**What does NOT go in memory**: architecture, code patterns, build gotchas, design decisions
|
|
250
|
+
**What does NOT go in memory**: architecture, code patterns, build gotchas, design decisions - those belong in the knowledge base.
|
|
251
251
|
|
|
252
252
|
### Lesson Diagnosis (Reflexion)
|
|
253
253
|
|
|
@@ -290,7 +290,7 @@ Automated visual testing and compliance audits via direct Bash (no MCP server de
|
|
|
290
290
|
| iOS Archive | Phase 6, release | `codesign`, `plutil`, `nm` |
|
|
291
291
|
| Android APK | Phase 6, release | `aapt2`, `apksigner` |
|
|
292
292
|
|
|
293
|
-
Audits are **on-demand**
|
|
293
|
+
Audits are **on-demand** - triggered by user, never automatic.
|
|
294
294
|
|
|
295
295
|
### Jira + Confluence
|
|
296
296
|
|
|
@@ -304,9 +304,9 @@ Token registry maps logical names (`jira`, `bitbucket`, `github`, `confluence`)
|
|
|
304
304
|
|
|
305
305
|
## Schemas & Validation
|
|
306
306
|
|
|
307
|
-
- `pipeline/schemas/agent-state.schema.json`
|
|
308
|
-
- `pipeline/schemas/prefs.schema.json`
|
|
309
|
-
- `pipeline/schemas/triage-output.schema.json`
|
|
307
|
+
- `pipeline/schemas/agent-state.schema.json` - validates agent state lifecycle
|
|
308
|
+
- `pipeline/schemas/prefs.schema.json` - validates preferences
|
|
309
|
+
- `pipeline/schemas/triage-output.schema.json` - validates triage output (contradiction `if`/`then` constraint built in)
|
|
310
310
|
|
|
311
311
|
## File Layout
|
|
312
312
|
|
package/docs/performance.md
CHANGED
|
@@ -7,16 +7,16 @@ you can read, embed in a report, or feed into a dashboard.
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
# Plain-text summary (the default
|
|
10
|
+
# Plain-text summary (the default - fits in a terminal)
|
|
11
11
|
node pipeline/scripts/aggregate-metrics.mjs
|
|
12
12
|
|
|
13
13
|
# Markdown table (for PR descriptions, wikis, dashboards)
|
|
14
14
|
node pipeline/scripts/aggregate-metrics.mjs --markdown
|
|
15
15
|
|
|
16
|
-
# JSON (for machine consumption
|
|
16
|
+
# JSON (for machine consumption - Phase 7 report uses this)
|
|
17
17
|
node pipeline/scripts/aggregate-metrics.mjs --json
|
|
18
18
|
|
|
19
|
-
# Filtered
|
|
19
|
+
# Filtered - only recent runs
|
|
20
20
|
node pipeline/scripts/aggregate-metrics.mjs --since=2026-04-01
|
|
21
21
|
|
|
22
22
|
# Per-task or per-phase drill-down
|
|
@@ -29,15 +29,15 @@ node pipeline/scripts/aggregate-metrics.mjs --phase=4
|
|
|
29
29
|
Each event in `metrics.jsonl` is a single-line JSON object written by
|
|
30
30
|
`log-metric.sh`. Events cover:
|
|
31
31
|
|
|
32
|
-
- **Review cycles**
|
|
32
|
+
- **Review cycles** - how many iterations of Phase 3 → Phase 4 → Phase 3 a task
|
|
33
33
|
needed before triage approved.
|
|
34
|
-
- **Triage classification**
|
|
35
|
-
- **Triage edge cases**
|
|
34
|
+
- **Triage classification** - accepted / deferred / rejected counts per review.
|
|
35
|
+
- **Triage edge cases** - over-rejection guard trips, contradictions, invalid-
|
|
36
36
|
JSON retries, timeouts.
|
|
37
|
-
- **Phase 3 retries**
|
|
38
|
-
- **Cost per model**
|
|
37
|
+
- **Phase 3 retries** - build / test / lint retry distribution per task.
|
|
38
|
+
- **Cost per model** - calls, duration, tokens in/out, broken down by model
|
|
39
39
|
(Fable, Opus, Sonnet, GPT-5.4).
|
|
40
|
-
- **Language preference**
|
|
40
|
+
- **Language preference** - distribution of EN vs TR prompts.
|
|
41
41
|
|
|
42
42
|
## Typical Output (Markdown)
|
|
43
43
|
|
|
@@ -58,9 +58,9 @@ _Source: ~/.claude/logs/multi-agent/metrics.jsonl · Events: 421 (0 parse errors
|
|
|
58
58
|
|
|
59
59
|
| Category | Count | Rate |
|
|
60
60
|
|----------|-------|------|
|
|
61
|
-
| Raw findings | 167 |
|
|
61
|
+
| Raw findings | 167 | - |
|
|
62
62
|
| Accepted | 41 | 0.25 |
|
|
63
|
-
| Deferred | 19 |
|
|
63
|
+
| Deferred | 19 | - |
|
|
64
64
|
| Rejected | 107 | 0.64 |
|
|
65
65
|
|
|
66
66
|
## Cost Per Model
|
|
@@ -74,11 +74,11 @@ _Source: ~/.claude/logs/multi-agent/metrics.jsonl · Events: 421 (0 parse errors
|
|
|
74
74
|
|
|
75
75
|
## Interpreting Review-Cycle Metrics
|
|
76
76
|
|
|
77
|
-
- **`cycles per task avg` > 2.0**
|
|
77
|
+
- **`cycles per task avg` > 2.0** - triage is rejecting too many real findings
|
|
78
78
|
or Phase 3 isn't converging. Inspect the edge-cases table.
|
|
79
|
-
- **Most-common edge case = `over_rejection_guard_tripped`**
|
|
79
|
+
- **Most-common edge case = `over_rejection_guard_tripped`** - the triage
|
|
80
80
|
prompt lost scope context. Look at `phase-4-review.md:57-91`.
|
|
81
|
-
- **`p95` much higher than `avg`**
|
|
81
|
+
- **`p95` much higher than `avg`** - a few tasks are looping 3+ times. Usually
|
|
82
82
|
means one of: bad acceptance criteria in Phase 2, tests that flake, or
|
|
83
83
|
environment-dependent build failures.
|
|
84
84
|
|
|
@@ -101,7 +101,7 @@ Current totals (v3.5.0):
|
|
|
101
101
|
| **Total** | **13600** | **16300** | **~14.3k** |
|
|
102
102
|
|
|
103
103
|
Lazy loading keeps these off the model's context until each phase actually
|
|
104
|
-
runs
|
|
104
|
+
runs - the full 14 k total is never loaded at once.
|
|
105
105
|
|
|
106
106
|
## Embedding Metrics in Phase 7 Reports
|
|
107
107
|
|
|
@@ -112,5 +112,5 @@ template in `phase-7-report.md`.
|
|
|
112
112
|
## Disabling Metrics
|
|
113
113
|
|
|
114
114
|
Remove or rename `~/.claude/logs/multi-agent/metrics.jsonl`. The pipeline
|
|
115
|
-
will not error
|
|
115
|
+
will not error - `log-metric.sh` fails silently if the file isn't writable.
|
|
116
116
|
Nothing is sent off-device.
|