@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.
Files changed (271) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +18 -18
  3. package/docs/FIGMA_PIPELINE.md +34 -34
  4. package/docs/adr/0001-three-model-triage.md +12 -12
  5. package/docs/adr/0002-instruction-driven-flag.md +5 -5
  6. package/docs/adr/0003-unified-shared-skills.md +5 -5
  7. package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
  8. package/docs/adr/0005-lazy-phase-docs.md +2 -2
  9. package/docs/adr/0006-skills-core-external-split.md +6 -6
  10. package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
  11. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
  12. package/docs/adr/README.md +1 -1
  13. package/docs/best-practices.md +3 -3
  14. package/docs/features.md +28 -28
  15. package/docs/performance.md +16 -16
  16. package/docs/recovery-guide.md +39 -39
  17. package/index.js +4 -4
  18. package/install/_common.mjs +5 -11
  19. package/install/_copilot-instructions.mjs +2 -2
  20. package/install/_dev-only-files.mjs +1 -1
  21. package/install/_platform-filter.mjs +1 -1
  22. package/install/_telemetry.mjs +1 -1
  23. package/install/claude.mjs +10 -9
  24. package/install/copilot.mjs +10 -19
  25. package/install/index.mjs +7 -15
  26. package/install/templates/copilot-instructions.md +54 -54
  27. package/install.js +1 -1
  28. package/package.json +13 -10
  29. package/pipeline/commands/multi-agent/SKILL.md +1 -1
  30. package/pipeline/commands/multi-agent/analysis/SKILL.md +1 -1
  31. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
  32. package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
  36. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
  37. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
  38. package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
  39. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
  41. package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
  42. package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
  43. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  44. package/pipeline/commands/multi-agent/help/SKILL.md +3 -3
  45. package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
  46. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
  47. package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
  48. package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
  49. package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
  50. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
  51. package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
  52. package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
  53. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
  54. package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
  55. package/pipeline/commands/multi-agent/refactor/SKILL.md +16 -8
  56. package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
  57. package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
  58. package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
  59. package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
  60. package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
  61. package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
  62. package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
  63. package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
  64. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  65. package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
  66. package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
  67. package/pipeline/commands/multi-agent/sync/SKILL.md +5 -5
  68. package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
  69. package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
  70. package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
  71. package/pipeline/eval/run-metrics-fixture.json +60 -13
  72. package/pipeline/lib/account-resolver.sh +1 -1
  73. package/pipeline/lib/channels-multi-repo.sh +1 -1
  74. package/pipeline/lib/context-link-extractor.sh +1 -1
  75. package/pipeline/lib/credential-store.sh +1 -1
  76. package/pipeline/lib/fetch-confluence.sh +1 -1
  77. package/pipeline/lib/fetch-crashlytics.sh +1 -1
  78. package/pipeline/lib/fetch-fortify.sh +1 -1
  79. package/pipeline/lib/fetch-graylog.sh +1 -1
  80. package/pipeline/lib/fetch-swagger.sh +1 -1
  81. package/pipeline/lib/issue-fetcher.sh +1 -1
  82. package/pipeline/lib/multi-repo-pipeline.sh +1 -1
  83. package/pipeline/lib/repo-cache.sh +1 -1
  84. package/pipeline/lib/submodule-detector.sh +1 -1
  85. package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
  86. package/pipeline/multi-agent-refs/component-generation.md +121 -0
  87. package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -1
  88. package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
  89. package/pipeline/multi-agent-refs/phases/phase-4-review.md +1 -1
  90. package/pipeline/preferences-template.json +5 -11
  91. package/pipeline/schemas/agent-state.schema.json +39 -9
  92. package/pipeline/schemas/analysis-output.schema.json +18 -4
  93. package/pipeline/schemas/analysis-spec.schema.json +120 -32
  94. package/pipeline/schemas/clarify-output.schema.json +15 -5
  95. package/pipeline/schemas/design-check-config.schema.json +32 -11
  96. package/pipeline/schemas/dev-critic-output.schema.json +20 -5
  97. package/pipeline/schemas/figma-project-config.schema.json +42 -10
  98. package/pipeline/schemas/learnings-ledger.schema.json +10 -2
  99. package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
  100. package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
  101. package/pipeline/schemas/plan-todos.schema.json +6 -3
  102. package/pipeline/schemas/planning-output.schema.json +5 -1
  103. package/pipeline/schemas/prefs.schema.json +91 -229
  104. package/pipeline/schemas/test-gap.schema.json +5 -5
  105. package/pipeline/schemas/token-budget.json +8 -8
  106. package/pipeline/schemas/triage-corpus.schema.json +1 -1
  107. package/pipeline/scripts/aggregate-metrics.mjs +18 -6
  108. package/pipeline/scripts/build-skills-index.mjs +6 -2
  109. package/pipeline/scripts/build-stack-plugins.mjs +142 -39
  110. package/pipeline/scripts/check-derived-drift.mjs +196 -0
  111. package/pipeline/scripts/check-md-links.mjs +6 -2
  112. package/pipeline/scripts/classify-plan-safety.mjs +20 -7
  113. package/pipeline/scripts/cost-budget-check.mjs +2 -1
  114. package/pipeline/scripts/cost-table.json +1 -1
  115. package/pipeline/scripts/diff-explain.mjs +7 -3
  116. package/pipeline/scripts/diff-risk-score.mjs +13 -3
  117. package/pipeline/scripts/eval-golden-tasks-live.mjs +8 -3
  118. package/pipeline/scripts/eval-golden-tasks.mjs +21 -9
  119. package/pipeline/scripts/eval-intent.mjs +8 -4
  120. package/pipeline/scripts/eval-mine-corpus.mjs +14 -4
  121. package/pipeline/scripts/evidence-gate.mjs +7 -2
  122. package/pipeline/scripts/fixtures/install-layout.tsv +3 -3
  123. package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
  124. package/pipeline/scripts/gen-skills-index.mjs +18 -3
  125. package/pipeline/scripts/learning-curve.mjs +13 -3
  126. package/pipeline/scripts/learnings-ledger.mjs +103 -36
  127. package/pipeline/scripts/lint-mcp-refs.mjs +13 -2
  128. package/pipeline/scripts/lint-skills.mjs +20 -9
  129. package/pipeline/scripts/localize-commands.mjs +6 -1
  130. package/pipeline/scripts/match-skills.mjs +15 -4
  131. package/pipeline/scripts/migrate-prefs.mjs +33 -16
  132. package/pipeline/scripts/phase-tracker.sh +3 -1
  133. package/pipeline/scripts/repo-map.mjs +110 -64
  134. package/pipeline/scripts/review-scope.mjs +7 -1
  135. package/pipeline/scripts/routine-registry.mjs +4 -9
  136. package/pipeline/scripts/run-aggregator.mjs +11 -5
  137. package/pipeline/scripts/run-metrics.mjs +13 -8
  138. package/pipeline/scripts/run-smokes.mjs +57 -3
  139. package/pipeline/scripts/scorecard.mjs +258 -0
  140. package/pipeline/scripts/smoke-context-budget.sh +72 -0
  141. package/pipeline/scripts/smoke-model-fallback.sh +1 -1
  142. package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +86 -7
  143. package/pipeline/scripts/smoke-own-punctuation.sh +103 -0
  144. package/pipeline/scripts/smoke-workflow-audit.sh +43 -11
  145. package/pipeline/scripts/smoke-write-state.sh +49 -5
  146. package/pipeline/scripts/test-gap-rules/android.json +11 -11
  147. package/pipeline/scripts/test-gap-rules/ios.json +16 -11
  148. package/pipeline/scripts/test-gap-rules/node.json +19 -7
  149. package/pipeline/scripts/test-gap-rules/python.json +10 -4
  150. package/pipeline/scripts/test-gap-scan.mjs +44 -12
  151. package/pipeline/scripts/test-integrity-gate.mjs +5 -1
  152. package/pipeline/scripts/token-budget-report.mjs +44 -21
  153. package/pipeline/scripts/triage-memory.mjs +126 -34
  154. package/pipeline/scripts/uninstall.mjs +74 -30
  155. package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
  156. package/pipeline/scripts/validate-diff-risk.mjs +32 -18
  157. package/pipeline/scripts/validate-test-gap.mjs +17 -7
  158. package/pipeline/scripts/validate-triage.mjs +17 -5
  159. package/pipeline/scripts/write-state.mjs +32 -9
  160. package/pipeline/skills/.skills-index.json +91 -91
  161. package/pipeline/skills/shared/README.md +57 -57
  162. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +1 -1
  163. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
  164. package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
  165. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
  166. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  167. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
  168. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  169. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
  170. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
  171. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
  172. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
  173. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
  174. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
  175. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
  176. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  177. package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
  178. package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
  179. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  180. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
  181. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
  182. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
  183. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
  184. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
  185. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
  186. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
  187. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
  188. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
  189. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
  190. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +16 -8
  191. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
  192. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +1 -1
  193. package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
  194. package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
  195. package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
  196. package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
  197. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
  198. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
  199. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  200. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
  201. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
  202. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +1 -1
  203. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +1 -1
  204. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
  205. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
  206. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
  207. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
  208. package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
  209. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
  210. package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
  211. package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
  212. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
  213. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
  214. package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
  215. package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
  216. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
  217. package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
  218. package/pipeline/skills/shared/external/council/SKILL.md +3 -3
  219. package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
  220. package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
  221. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
  222. package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
  223. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
  224. package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
  225. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
  226. package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
  227. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
  228. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
  229. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
  230. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
  231. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
  232. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
  233. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
  234. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
  235. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
  236. package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
  237. package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
  238. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
  239. package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
  240. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
  241. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
  242. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
  243. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
  244. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
  245. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
  246. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
  247. package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
  248. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
  249. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
  250. package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
  251. package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
  252. package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
  253. package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
  254. package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
  255. package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
  256. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
  257. package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
  258. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
  259. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
  260. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
  261. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
  262. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
  263. package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
  264. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
  265. package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
  266. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
  267. package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
  268. package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
  269. package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
  270. package/pipeline/skills/skills-index.md +57 -57
  271. 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 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.
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** 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).
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. that part is genuinely portable and would benefit users on tools where the orchestration can't run.
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 Full pipeline (orchestration + knowledge)
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 Knowledge layer only (v7.7.0)
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`) `.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
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 Knowledge layer (v7.9.0)
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`) `.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
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 Manual port
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`** 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.
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 pattern eklenirse build kırılır
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_…` 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.
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" the project's zero-dependency philosophy (ADR-4) is a hard constraint.
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 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
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 `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.
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 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.
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 but the boundaries are sharp and a smoke fails loudly if anything is missed.
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 the assertions check a real filesystem tree, not pure logic.
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` 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
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
@@ -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 write a new one that supersedes the old. Set the old
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.
@@ -40,11 +40,11 @@ Applied in Phase 1 (Analysis):
40
40
 
41
41
  Applied in Phase 3:
42
42
 
43
- 1. RED Write the failing test
43
+ 1. RED - Write the failing test
44
44
  2. Verify it fails for the RIGHT reason
45
- 3. GREEN Write minimal code to pass
45
+ 3. GREEN - Write minimal code to pass
46
46
  4. Verify ALL tests pass
47
- 5. REFACTOR Clean up without changing behavior
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 Full Reference
1
+ # Features - Full Reference
2
2
 
3
- Comprehensive list of every feature the pipeline ships. The top-level `README.md` only highlights the 57 most important; this file is the complete catalog.
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` lazy-loaded so the orchestrator only pays the token cost for the phase it's currently in.
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 works directly in `$PROJECT_ROOT` on a local branch. |
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` 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.
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) specialized work slots into its parent phase without inflating the count.
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 Phase 7 delegates to it, and it's also invocable post-hoc for fixes closed outside the pipeline:
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 all its capabilities (diff auto-summarize, manual mode, reviewer-preserving) are preserved; Confluence + Wiki are new.
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 uses `Ref: #N` / `Related: #N` / `See: PROJ-12345`, never `Closes` / `Fixes` / `Resolves`. Closure requires team review (configurable, typically 4 approvals).
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 stack-dependent)
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 23)
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 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.
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 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 |
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 no simulator needed. Device-level audits run in Phase 5 when requested.
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` compaction at 65% usage (prevents degradation in 8-phase sessions).
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` 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)
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 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.
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` when set, the report becomes a Phase 4 rework finding once `important + blocking` count exceeds the threshold.
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 those belong in the knowledge base.
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** triggered by user, never automatic.
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` 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)
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
 
@@ -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 fits in a terminal)
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 Phase 7 report uses this)
16
+ # JSON (for machine consumption - Phase 7 report uses this)
17
17
  node pipeline/scripts/aggregate-metrics.mjs --json
18
18
 
19
- # Filtered only recent runs
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** how many iterations of Phase 3 → Phase 4 → Phase 3 a task
32
+ - **Review cycles** - how many iterations of Phase 3 → Phase 4 → Phase 3 a task
33
33
  needed before triage approved.
34
- - **Triage classification** accepted / deferred / rejected counts per review.
35
- - **Triage edge cases** over-rejection guard trips, contradictions, invalid-
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** build / test / lint retry distribution per task.
38
- - **Cost per model** calls, duration, tokens in/out, broken down by 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** distribution of EN vs TR prompts.
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** triage is rejecting too many real findings
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`** the triage
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`** a few tasks are looping 3+ times. Usually
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 the full 14 k total is never loaded at once.
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 `log-metric.sh` fails silently if the file isn't writable.
115
+ will not error - `log-metric.sh` fails silently if the file isn't writable.
116
116
  Nothing is sent off-device.