@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.1

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 (335) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +2 -2
  3. package/docs/FIGMA_PIPELINE.md +12 -25
  4. package/docs/architecture.md +3 -5
  5. package/docs/features.md +8 -8
  6. package/install/_dev-only-files.mjs +0 -6
  7. package/install/claude.mjs +39 -17
  8. package/install/copilot.mjs +22 -16
  9. package/install/templates/copilot-instructions.md +3 -3
  10. package/package.json +1 -1
  11. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  12. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  13. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  14. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  16. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  17. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  18. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  20. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  21. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  22. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  23. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  24. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  25. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  27. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  28. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  29. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  30. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  31. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  32. package/pipeline/lib/credential-store.sh +8 -4
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  35. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  38. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  39. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  60. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  61. package/pipeline/preferences-template.json +17 -1
  62. package/pipeline/rules/figma-pipeline.md +2 -2
  63. package/pipeline/schemas/prefs.schema.json +0 -34
  64. package/pipeline/scripts/README.md +1 -3
  65. package/pipeline/scripts/build-skills-index.mjs +3 -6
  66. package/pipeline/scripts/eval-mine-corpus.mjs +187 -0
  67. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  68. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  69. package/pipeline/scripts/lint-skills.mjs +26 -1
  70. package/pipeline/scripts/phase-banner.sh +2 -2
  71. package/pipeline/scripts/review-scope.mjs +94 -0
  72. package/pipeline/scripts/scan-agent-config.sh +2 -2
  73. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  74. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  75. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  76. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  77. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  78. package/pipeline/scripts/smoke-clarify.sh +1 -1
  79. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  80. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  81. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  82. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  83. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  84. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  85. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  86. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  87. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  88. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  89. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  90. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  91. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  92. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  93. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  94. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  95. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  96. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  97. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  98. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  99. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  100. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  101. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  102. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  103. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  104. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  105. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  106. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  107. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  108. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  109. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  110. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  111. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  112. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  113. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  114. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  115. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  116. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  117. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  118. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  119. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  120. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  121. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  122. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  123. package/pipeline/scripts/smoke-update-check.sh +1 -1
  124. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  125. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  126. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  127. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  128. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  129. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  130. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  131. package/pipeline/scripts/uninstall.mjs +17 -6
  132. package/pipeline/skills/.skill-manifest.json +40 -160
  133. package/pipeline/skills/.skills-index.json +3 -373
  134. package/pipeline/skills/shared/README.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  137. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  138. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  139. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  140. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  141. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  142. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  143. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  144. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  145. package/pipeline/skills/skills-index.md +3 -44
  146. package/pipeline/commands/multi-agent/refactor.md +0 -188
  147. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  148. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  149. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  150. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  151. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  152. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  153. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  154. package/pipeline/skills/figma-android/README.md +0 -38
  155. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  156. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  157. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  158. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  159. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  160. package/pipeline/skills/figma-common/README.md +0 -64
  161. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  162. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  163. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  164. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  165. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  166. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  167. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  168. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  169. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  170. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  171. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  172. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  173. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  174. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  175. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  176. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  177. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  178. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  179. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  180. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  181. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  182. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  183. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  184. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  185. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  186. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  187. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  188. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  189. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  190. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  191. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  192. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  193. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  194. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  195. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  196. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  197. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  198. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  199. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  200. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  201. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  202. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  203. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  232. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  233. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  234. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  235. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  253. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  254. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  255. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  256. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  294. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  295. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  296. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  297. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  298. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  310. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  311. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  312. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  313. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  314. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  332. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  333. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  334. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  335. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -18,13 +18,13 @@
18
18
  set -uo pipefail
19
19
 
20
20
  ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
21
- CLAUDE_CMD="$ROOT/pipeline/commands/multi-agent/channels.md"
21
+ CLAUDE_CMD="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
22
22
  COPILOT_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-channels/SKILL.md"
23
- ENRICH_CMD="$ROOT/pipeline/commands/multi-agent/enrich.md"
23
+ ENRICH_CMD="$ROOT/pipeline/commands/multi-agent/enrich/SKILL.md"
24
24
  ENRICH_SKILL_DIR="$ROOT/pipeline/skills/shared/core/multi-agent-enrich"
25
- PHASE7="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-7-report.md"
26
- MODES="$ROOT/pipeline/commands/multi-agent/refs/phases/modes.md"
27
- WIKI_CAPTURE="$ROOT/pipeline/commands/multi-agent/refs/wiki-capture.md"
25
+ PHASE7="$ROOT/pipeline/multi-agent-refs/phases/phase-7-report.md"
26
+ MODES="$ROOT/pipeline/multi-agent-refs/phases/modes.md"
27
+ WIKI_CAPTURE="$ROOT/pipeline/multi-agent-refs/wiki-capture.md"
28
28
  SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
29
29
  MIGRATE="$ROOT/pipeline/scripts/migrate-prefs.mjs"
30
30
  TEMPLATE="$ROOT/pipeline/preferences-template.json"
@@ -24,7 +24,7 @@ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
24
24
  AGENT="$ROOT/pipeline/agents/task-clarifier.md"
25
25
  SCHEMA="$ROOT/pipeline/schemas/clarify-output.schema.json"
26
26
  PREFS_SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
27
- PHASE_DOC="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
27
+ PHASE_DOC="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
28
28
 
29
29
  pass=0
30
30
  fail=0
@@ -36,7 +36,7 @@ fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
36
36
  # Underscore-prefixed files (e.g. _account-picker.md) are internal fragments
37
37
  # loaded by other commands via Read; they're not invocable slash commands and
38
38
  # intentionally have no matching skill.
39
- CMDS=$(find "$CMDS_DIR" -maxdepth 1 -name "*.md" ! -name "_*" -exec basename {} .md \; | sort)
39
+ CMDS=$(find "$CMDS_DIR" -mindepth 2 -maxdepth 2 -name "SKILL.md" -exec dirname {} \; | xargs -n1 basename | sort)
40
40
 
41
41
  # help.md in commands maps to multi-agent-help skill; the main "multi-agent"
42
42
  # skill covers the behavior documented across multiple command files, so we
@@ -67,7 +67,7 @@ echo "→ Checking that every multi-agent-* skill has a corresponding command"
67
67
  SKILLS=$(find "$SKILLS_DIR" -maxdepth 1 -type d -name "multi-agent-*" -exec basename {} \; | sed 's/^multi-agent-//' | sort)
68
68
 
69
69
  for skill in $SKILLS; do
70
- cmd_file="$CMDS_DIR/$skill.md"
70
+ cmd_file="$CMDS_DIR/$skill/SKILL.md"
71
71
  # A few skills are Copilot-CLI-style conveniences without a Claude slash equivalent:
72
72
  case "$skill" in
73
73
  autopilot | dev-autopilot) # dash-style shortcut skills, the flags are documented in help.md
@@ -76,7 +76,7 @@ for skill in $SKILLS; do
76
76
  ;;
77
77
  esac
78
78
  if [ -f "$cmd_file" ]; then
79
- pass "skills/shared/multi-agent-$skill/ ↔ commands/multi-agent/$skill.md"
79
+ pass "skills/shared/multi-agent-$skill/ ↔ commands/multi-agent/$skill/SKILL.md"
80
80
  else
81
81
  fail "skills/shared/multi-agent-$skill/ has no matching command"
82
82
  fi
@@ -18,7 +18,7 @@
18
18
  set -euo pipefail
19
19
 
20
20
  REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
21
- PHASES_DIR="$REPO_ROOT/pipeline/commands/multi-agent/refs/phases"
21
+ PHASES_DIR="$REPO_ROOT/pipeline/multi-agent-refs/phases"
22
22
 
23
23
  PASS=0
24
24
  FAIL=0
@@ -24,9 +24,9 @@ APPLE_SKILL="$ROOT/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md
24
24
  GOOGLE_SKILL="$ROOT/pipeline/skills/shared/core/google-play-compliance/SKILL.md"
25
25
  SIM_TEST="$ROOT/pipeline/commands/sim-test.md"
26
26
  SEC_AUDITOR="$ROOT/pipeline/agents/security-auditor.md"
27
- REVIEW_CMD="$ROOT/pipeline/commands/multi-agent/review.md"
27
+ REVIEW_CMD="$ROOT/pipeline/commands/multi-agent/review/SKILL.md"
28
28
  REVIEW_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-review/SKILL.md"
29
- CHANNELS_CMD="$ROOT/pipeline/commands/multi-agent/channels.md"
29
+ CHANNELS_CMD="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
30
30
  CHANNELS_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-channels/SKILL.md"
31
31
 
32
32
  PASS=0
@@ -18,7 +18,7 @@ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
18
18
  RENDERER="$ROOT/pipeline/scripts/render-cost-summary.sh"
19
19
  TABLE="$ROOT/pipeline/scripts/cost-table.json"
20
20
  SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
21
- CHANNELS_DOC="$ROOT/pipeline/commands/multi-agent/channels.md"
21
+ CHANNELS_DOC="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
22
22
 
23
23
  pass=0
24
24
  fail=0
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
  # smoke-cross-cli-behavior.sh - enforces the cross-CLI parity invariant
3
- # defined in ~/.claude/commands/multi-agent/refs/cross-cli-contract.md.
3
+ # defined in ~/.claude/multi-agent-refs/cross-cli-contract.md.
4
4
  #
5
5
  # This is a behavioral complement to smoke-sync-parity.sh (which tests the
6
6
  # parity checker itself). This script asserts the actual Claude Code and
@@ -41,7 +41,10 @@ fi
41
41
  # Underscore-prefixed Claude files (e.g. _account-picker.md) are internal
42
42
  # fragments lazy-loaded by other commands; they're not invocable on either CLI
43
43
  # and intentionally have no Copilot skill counterpart.
44
- CLAUDE_LIST=$(find "$CLAUDE_CMDS" -maxdepth 1 -name "*.md" ! -name "_*" -type f -exec basename {} \; 2>/dev/null | sed 's/\.md$//' | sort)
44
+ # Also exclude local-only alias wrappers (frontmatter `local-only: true`) - personal
45
+ # aliases to private marketplace-plugin skills, intentionally Claude-only, no Copilot peer.
46
+ CLAUDE_LIST=$(find "$CLAUDE_CMDS" -mindepth 2 -maxdepth 2 -name "SKILL.md" 2>/dev/null \
47
+ | while IFS= read -r f; do grep -q "^local-only: true" "$f" || basename "$(dirname "$f")"; done | sort)
45
48
  COPILOT_LIST=$(find "$COPILOT_SKILLS" -maxdepth 1 -type d -name "multi-agent-*" -exec basename {} \; 2>/dev/null | sed 's/^multi-agent-//' | sort)
46
49
 
47
50
  if [ "$CLAUDE_LIST" = "$COPILOT_LIST" ]; then
@@ -69,7 +72,7 @@ DEPRECATED=(
69
72
  )
70
73
  for p in "${DEPRECATED[@]}"; do
71
74
  # grep -l returns filenames; empty = no matches
72
- FOUND=$(grep -l -F -- "$p" "$CLAUDE_CMDS"/*.md 2>/dev/null || true)
75
+ FOUND=$(grep -l -F -- "$p" $(find "$CLAUDE_CMDS" -name SKILL.md 2>/dev/null) 2>/dev/null || true)
73
76
  if [ -z "$FOUND" ]; then
74
77
  pass "no '$p' in Claude commands"
75
78
  else
@@ -85,7 +88,7 @@ PERSONAL_HARDCODES=(
85
88
  "${USER}_tkgithub"
86
89
  )
87
90
  for p in "${PERSONAL_HARDCODES[@]}"; do
88
- FOUND=$(grep -l -F -- "$p" "$CLAUDE_CMDS"/*.md 2>/dev/null || true)
91
+ FOUND=$(grep -l -F -- "$p" $(find "$CLAUDE_CMDS" -name SKILL.md 2>/dev/null) 2>/dev/null || true)
89
92
  if [ -z "$FOUND" ]; then
90
93
  pass "no '$p' leaked into Claude commands"
91
94
  else
@@ -97,13 +100,13 @@ done
97
100
  echo ""
98
101
  echo "→ 4. Canonical placeholders present (sanity)"
99
102
  # These MUST exist (regressions would mean someone undid a drift fix)
100
- if grep -q -F "{owner}" "$CLAUDE_CMDS/sync.md" 2>/dev/null; then
103
+ if grep -q -F "{owner}" "$CLAUDE_CMDS/sync/SKILL.md" 2>/dev/null; then
101
104
  pass "sync.md uses canonical '{owner}'"
102
105
  else
103
106
  fail "sync.md missing '{owner}' - drift fix may have regressed"
104
107
  fi
105
108
 
106
- if grep -q -F "{website-host}" "$CLAUDE_CMDS/sync.md" 2>/dev/null; then
109
+ if grep -q -F "{website-host}" "$CLAUDE_CMDS/sync/SKILL.md" 2>/dev/null; then
107
110
  pass "sync.md uses canonical '{website-host}'"
108
111
  else
109
112
  fail "sync.md missing '{website-host}' - drift fix may have regressed"
@@ -114,7 +117,7 @@ echo ""
114
117
  echo "→ 5. Canonical project-name vocabulary in log.md"
115
118
  CANONICAL_PROJECTS=("my-ui-components" "my-figma-app" "my-ios-app")
116
119
  for c in "${CANONICAL_PROJECTS[@]}"; do
117
- if grep -q -F -- "$c" "$CLAUDE_CMDS/log.md" 2>/dev/null; then
120
+ if grep -q -F -- "$c" "$CLAUDE_CMDS/log/SKILL.md" 2>/dev/null; then
118
121
  pass "log.md references '$c'"
119
122
  else
120
123
  fail "log.md missing canonical '$c'"
@@ -124,7 +127,7 @@ done
124
127
  # ──────────────────────────────────────────────────────────────────────────
125
128
  echo ""
126
129
  echo "→ 6. Contract doc exists (required source of truth)"
127
- CONTRACT="$CLAUDE_CMDS/refs/cross-cli-contract.md"
130
+ CONTRACT="$HOME/.claude/multi-agent-refs/cross-cli-contract.md"
128
131
  if [ -f "$CONTRACT" ]; then
129
132
  SIZE=$(wc -l < "$CONTRACT" | tr -d ' ')
130
133
  if [ "$SIZE" -ge 100 ]; then
@@ -138,40 +141,11 @@ fi
138
141
 
139
142
  # ──────────────────────────────────────────────────────────────────────────
140
143
  echo ""
141
- echo "→ 7. Figma skill trees deployed to both CLIs (WS-8b, v5.0.1+)"
142
-
143
- CLAUDE_SKILLS="$HOME/.claude/skills"
144
- FIGMA_TREES=(figma-ios figma-android figma-common)
145
-
146
- for tree in "${FIGMA_TREES[@]}"; do
147
- claude_tree="$CLAUDE_SKILLS/$tree"
148
- claude_note=""
149
- # /multi-agent:stack parks inactive-platform trees under skills-inactive/.
150
- # A parked tree is still deployed - count it from its parked location so
151
- # iOS-stack machines don't fail on the android tree (and vice versa).
152
- if [ ! -d "$claude_tree" ] && [ -d "$HOME/.claude/skills-inactive/$tree" ]; then
153
- claude_tree="$HOME/.claude/skills-inactive/$tree"
154
- claude_note=" (claude: parked by /multi-agent:stack)"
155
- fi
156
- copilot_tree="$COPILOT_SKILLS/$tree"
157
- if [ -d "$claude_tree" ] && [ -d "$copilot_tree" ]; then
158
- claude_count=$(find "$claude_tree" -maxdepth 1 -mindepth 1 -type d | wc -l | tr -d ' ')
159
- copilot_count=$(find "$copilot_tree" -maxdepth 1 -mindepth 1 -type d | wc -l | tr -d ' ')
160
- if [ "$claude_count" -eq "$copilot_count" ]; then
161
- pass "$tree deployed to both CLIs ($claude_count skills each)$claude_note"
162
- else
163
- fail "$tree count mismatch (claude=$claude_count copilot=$copilot_count)$claude_note"
164
- fi
165
- elif [ -d "$claude_tree" ] || [ -d "$copilot_tree" ]; then
166
- fail "$tree deployed to only ONE CLI"
167
- else
168
- echo " (tree not installed on either CLI - run \`node install.js --all\` to deploy)"
169
- fi
170
- done
171
-
172
- # ──────────────────────────────────────────────────────────────────────────
173
- echo ""
174
- echo "→ 8. Agent personas deployed to both CLIs"
144
+ # Figma/component skill trees no longer ship in the pipeline (v11.2.0+): they
145
+ # live in the marketplace component plugins (ai-ios-engineering-toolkit /
146
+ # multi-agent-plugins), which each CLI loads through its own plugin channel.
147
+ # The pipeline therefore has no figma tree to deploy or parity-check here.
148
+ echo "→ 7. Agent personas deployed to both CLIs"
175
149
 
176
150
  CLAUDE_AGENTS="$HOME/.claude/agents"
177
151
  COPILOT_AGENTS="$HOME/.copilot/agents"
@@ -207,7 +181,7 @@ fi
207
181
  # drift across the phase doc, the schema, and the consensus block.
208
182
  echo "→ reviewer-count contract (Claude=2, Copilot=3)"
209
183
  REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
210
- P4="$REPO_ROOT/pipeline/commands/multi-agent/refs/phases/phase-4-review.md"
184
+ P4="$REPO_ROOT/pipeline/multi-agent-refs/phases/phase-4-review.md"
211
185
  REVSCHEMA="$REPO_ROOT/pipeline/schemas/reviewer-output.schema.json"
212
186
  TRSCHEMA="$REPO_ROOT/pipeline/schemas/triage-output.schema.json"
213
187
  if grep -qiE "Claude Code (dispatches|=|:) ?2|2-model" "$P4" && grep -qiE "Copilot CLI (dispatches|=|:) ?3|3-model" "$P4"; then
@@ -24,7 +24,7 @@
24
24
  set -euo pipefail
25
25
 
26
26
  REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
27
- PHASE_DIR="$REPO_ROOT/pipeline/commands/multi-agent/refs/phases"
27
+ PHASE_DIR="$REPO_ROOT/pipeline/multi-agent-refs/phases"
28
28
  SCHEMA_DIR="$REPO_ROOT/pipeline/schemas"
29
29
 
30
30
  PASS=0
@@ -16,7 +16,7 @@ set -euo pipefail
16
16
 
17
17
  ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
18
18
  AGENT="$ROOT/pipeline/agents/dev-critic.md"
19
- PHASE_DOC="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md"
19
+ PHASE_DOC="$ROOT/pipeline/multi-agent-refs/phases/phase-3-dev.md"
20
20
  PREFS_SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
21
21
  CRITIC_SCHEMA="$ROOT/pipeline/schemas/dev-critic-output.schema.json"
22
22
 
@@ -28,7 +28,7 @@ TMP=$(mktemp -d)
28
28
 
29
29
  # ──────────────────────────────────────────────────────────────────────────
30
30
  echo "→ 1. Command + skill files exist"
31
- [ -f "$REPO_ROOT/pipeline/commands/multi-agent/diff-explain.md" ] && pass "diff-explain.md present" || fail "diff-explain.md missing"
31
+ [ -f "$REPO_ROOT/pipeline/commands/multi-agent/diff-explain/SKILL.md" ] && pass "diff-explain.md present" || fail "diff-explain.md missing"
32
32
  [ -f "$REPO_ROOT/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md" ] && pass "multi-agent-diff-explain SKILL.md present" || fail "Copilot peer missing"
33
33
  [ -x "$SCRIPT" ] && pass "diff-explain.mjs is executable" || fail "diff-explain.mjs not executable"
34
34
 
@@ -22,7 +22,7 @@ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
22
22
  SCORE="$ROOT/pipeline/scripts/diff-risk-score.mjs"
23
23
  VALIDATE="$ROOT/pipeline/scripts/validate-diff-risk.mjs"
24
24
  SCHEMA="$ROOT/pipeline/schemas/diff-risk.schema.json"
25
- PHASE4="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-4-review.md"
25
+ PHASE4="$ROOT/pipeline/multi-agent-refs/phases/phase-4-review.md"
26
26
  REVIEWER="$ROOT/pipeline/agents/code-reviewer.md"
27
27
  PREFS="$ROOT/pipeline/schemas/prefs.schema.json"
28
28
  FIX_IOS="$ROOT/pipeline/scripts/fixtures/diff-risk-ios.diff"
@@ -80,7 +80,7 @@ echo ""
80
80
  echo "→ 5. Wiring: phase docs reference the gate"
81
81
  GREP_HITS=0
82
82
  for doc in phase-3-dev phase-4-review phase-6-commit; do
83
- grep -q "evidence-gate" "$ROOT/pipeline/commands/multi-agent/refs/phases/$doc.md" && GREP_HITS=$((GREP_HITS+1))
83
+ grep -q "evidence-gate" "$ROOT/pipeline/multi-agent-refs/phases/$doc.md" && GREP_HITS=$((GREP_HITS+1))
84
84
  done
85
85
  if [ "$GREP_HITS" -ge 2 ]; then
86
86
  pass "evidence-gate referenced in $GREP_HITS phase docs"
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env bash
2
- # smoke-figma-dispatch.sh - Phase 3 component dispatch contract.
2
+ # smoke-figma-dispatch.sh - Phase 3 component dispatch contract (plugin-based).
3
3
  #
4
- # Verifies that multi-agent Phase 3 delegates to the figma-to-component
5
- # orchestrator (WS-4) instead of embedding figma logic inline.
4
+ # Verifies that multi-agent Phase 3 dispatches component tasks to the
5
+ # ai-<platform>-engineering-toolkit MARKETPLACE PLUGIN (create-component,
6
+ # fallback create-ui-component) instead of a bundled figma-to-component skill.
6
7
  #
7
- # Runs offline - scans docs only, no orchestrator invocation.
8
+ # Runs offline - scans docs only, no skill invocation.
8
9
 
9
10
  set -euo pipefail
10
11
 
11
12
  HERE="$(cd "$(dirname "$0")" && pwd)"
12
13
  ROOT="$(cd "$HERE/../.." && pwd)"
13
- PHASE0="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
14
- PHASE3="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md"
15
- DISPATCH="$ROOT/pipeline/commands/multi-agent/refs/component-dispatch.md"
16
- ORCH_IOS="$ROOT/pipeline/skills/figma-ios/figma-to-component/SKILL.md"
14
+ PHASE0="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
15
+ PHASE3="$ROOT/pipeline/multi-agent-refs/phases/phase-3-dev.md"
16
+ DISPATCH="$ROOT/pipeline/multi-agent-refs/component-dispatch.md"
17
17
 
18
18
  PASS=0
19
19
  FAIL=0
@@ -22,62 +22,47 @@ fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
22
22
 
23
23
  [ -f "$PHASE0" ] || { echo "error: $PHASE0 missing" >&2; exit 1; }
24
24
  [ -f "$PHASE3" ] || { echo "error: $PHASE3 missing" >&2; exit 1; }
25
- [ -f "$DISPATCH" ] || { echo "error: $DISPATCH missing (WS-4 extracted contract)" >&2; exit 1; }
26
- [ -f "$ORCH_IOS" ] || { echo "error: orchestrator skill missing at $ORCH_IOS (run WS-2 import first)" >&2; exit 1; }
25
+ [ -f "$DISPATCH" ] || { echo "error: $DISPATCH missing" >&2; exit 1; }
27
26
 
28
- # Combined scan - both Phase 3 itself and the extracted contract may carry the
29
- # canonical strings. Use a function so each check reads both.
30
- has_in_phase3_or_dispatch() {
31
- grep -Fq "$1" "$PHASE3" || grep -Fq "$1" "$DISPATCH"
32
- }
33
-
34
- echo "→ 1. Phase 0 classification routes component → figma-to-component"
35
- if grep -Fq "pipeline/skills/figma-ios/figma-to-component" "$PHASE0"; then
36
- pass "Phase 0 references the new orchestrator path"
37
- else
38
- fail "Phase 0 does NOT reference pipeline/skills/figma-ios/figma-to-component"
39
- fi
40
-
41
- if grep -Fq "figma-to-swiftui" "$PHASE0"; then
42
- fail "Phase 0 still references legacy 'figma-to-swiftui' (expected 'figma-to-component')"
27
+ echo "→ 1. no bundled figma orchestrator remains in the tree"
28
+ if [ -e "$ROOT/pipeline/skills/figma-ios" ] || [ -e "$ROOT/pipeline/skills/figma-android" ] || [ -e "$ROOT/pipeline/skills/figma-common" ]; then
29
+ fail "bundled pipeline/skills/figma-* tree still present (should be plugin-only)"
43
30
  else
44
- pass "Phase 0 has no legacy figma-to-swiftui reference"
31
+ pass "no pipeline/skills/figma-* tree (component skills live in the plugin)"
45
32
  fi
46
33
 
47
34
  echo ""
48
- echo "→ 2. Phase 3 has a component dispatch section"
49
- if grep -Fq "Component tasks - delegated dispatch" "$PHASE3"; then
50
- pass "Phase 3 has 'Component tasks - delegated dispatch' section"
35
+ echo "→ 2. Phase 0 routes component tasks to the plugin component skill"
36
+ if grep -Fq "create-component" "$PHASE0"; then
37
+ pass "Phase 0 references the plugin create-component skill"
51
38
  else
52
- fail "Phase 3 missing component dispatch section"
39
+ fail "Phase 0 does NOT reference create-component"
53
40
  fi
54
-
55
- if grep -Fq 'taskType === "component"' "$DISPATCH"; then
56
- pass "dispatch contract mentions taskType guard"
41
+ if grep -Fq "figma-to-swiftui" "$PHASE0" || grep -Fq "skills/figma-ios/figma-to-component" "$PHASE0"; then
42
+ fail "Phase 0 still references a legacy/bundled figma orchestrator path"
57
43
  else
58
- fail "dispatch contract missing taskType guard"
44
+ pass "Phase 0 has no legacy/bundled figma orchestrator reference"
59
45
  fi
60
46
 
61
47
  echo ""
62
- echo "→ 3. dispatch documents platform routing (iOS + Android orchestrator selection)"
63
- if grep -Fq "figma-ios/figma-to-component" "$DISPATCH" && grep -Fq "figma-android" "$DISPATCH"; then
64
- pass "dispatch documents iOS + Android orchestrator routing"
48
+ echo "→ 3. dispatch guards taskType and resolves the plugin (dual-name)"
49
+ if grep -Fq 'taskType === "component"' "$DISPATCH"; then
50
+ pass "dispatch mentions taskType guard"
65
51
  else
66
- fail "dispatch missing platform-aware orchestrator routing"
52
+ fail "dispatch missing taskType guard"
67
53
  fi
68
-
69
- echo ""
70
- echo "→ 4. dispatch delegates subphase tracking to orchestrator"
71
- if grep -Fq "subphases[]" "$DISPATCH" || grep -Fq 'subphases\[\]' "$DISPATCH"; then
72
- pass "dispatch documents state.phases[3].subphases[] report"
54
+ if grep -Fq "create-component" "$DISPATCH" && grep -Fq "create-ui-component" "$DISPATCH"; then
55
+ pass "dispatch documents dual-name resolution (create-component / create-ui-component)"
73
56
  else
74
- fail "dispatch missing subphases[] documentation"
57
+ fail "dispatch missing dual-name plugin resolution"
75
58
  fi
76
59
 
77
- if grep -Fq "phase-tracker" "$DISPATCH"; then
78
- pass "dispatch refers to phase-tracker for subphase rendering"
60
+ echo ""
61
+ echo "→ 4. dispatch layer owns subphase state + phase-tracker"
62
+ if grep -Fq 'subphases[]' "$DISPATCH" && grep -Fq "phase-tracker" "$DISPATCH"; then
63
+ pass "dispatch documents state.phases[3].subphases[] + phase-tracker"
79
64
  else
80
- fail "dispatch missing phase-tracker reference"
65
+ fail "dispatch missing subphases[]/phase-tracker documentation"
81
66
  fi
82
67
 
83
68
  echo ""
@@ -87,7 +72,6 @@ if grep -Fq "<!-- progress-contract: applied -->" "$PHASE3"; then
87
72
  else
88
73
  fail "Phase 3 missing the adoption marker"
89
74
  fi
90
-
91
75
  if grep -Fq "<!-- progress-contract: applied -->" "$PHASE0"; then
92
76
  pass "Phase 0 carries the adoption marker"
93
77
  else
@@ -95,28 +79,33 @@ else
95
79
  fi
96
80
 
97
81
  echo ""
98
- echo "→ 6. Phase 3 emits dispatch progress lines"
99
- if grep -qE '→ dispatching figma-to-component' "$PHASE3"; then
100
- pass "Phase 3 documents '→ dispatching figma-to-component <name>' emission"
82
+ echo "→ 6. Phase 3 emits the plugin dispatch progress line"
83
+ if grep -qE '→ dispatching create-component' "$PHASE3"; then
84
+ pass "Phase 3 documents '→ dispatching create-component <name>' emission"
101
85
  else
102
86
  fail "Phase 3 missing dispatch progress line"
103
87
  fi
104
88
 
105
89
  echo ""
106
- echo "→ 7. dispatch has failure + retry semantics for orchestrator"
107
- if grep -Fq "retryCount" "$DISPATCH" && grep -qE '(resume via|resumes instead of restarting)' "$DISPATCH"; then
108
- pass "dispatch documents retryCount + orchestrator resume path"
90
+ echo "→ 7. dispatch has failure + retry semantics"
91
+ if grep -Fq "retryCount" "$DISPATCH"; then
92
+ pass "dispatch documents retryCount"
109
93
  else
110
- fail "dispatch missing retry / resume documentation"
94
+ fail "dispatch missing retryCount documentation"
111
95
  fi
112
96
 
113
97
  echo ""
114
- echo "→ 8. dispatch covers multi-repo report"
115
- if grep -Fq "state.projects[]" "$DISPATCH" || grep -Fq 'state\.projects\[\]' "$DISPATCH"; then
98
+ echo "→ 8. dispatch covers multi-repo + intentional cross-CLI divergence"
99
+ if grep -Fq 'state.projects[]' "$DISPATCH"; then
116
100
  pass "dispatch documents multi-repo report"
117
101
  else
118
102
  fail "dispatch missing multi-repo report paragraph"
119
103
  fi
104
+ if grep -Fiq "Copilot" "$DISPATCH"; then
105
+ pass "dispatch documents the Copilot cross-CLI divergence"
106
+ else
107
+ fail "dispatch missing cross-CLI divergence note"
108
+ fi
120
109
 
121
110
  echo ""
122
111
  echo "══ figma-dispatch smoke: $PASS passed, $FAIL failed ══"
@@ -62,7 +62,7 @@ else
62
62
  fi
63
63
 
64
64
  # 4. picker-contract documents the hook template + the phase-enforced caveat
65
- PC="$ROOT/pipeline/commands/multi-agent/refs/picker-contract.md"
65
+ PC="$ROOT/pipeline/multi-agent-refs/picker-contract.md"
66
66
  if grep -q "claude-hooks.json" "$PC" && grep -q "phase-enforced" "$PC"; then
67
67
  pass "picker-contract references the template + the phase-enforced gates caveat"
68
68
  else
@@ -16,13 +16,13 @@ set -euo pipefail
16
16
 
17
17
  HERE="$(cd "$(dirname "$0")" && pwd)"
18
18
  ROOT="$(cd "$HERE/../.." && pwd)"
19
- CMD="$ROOT/pipeline/commands/multi-agent/generate.md"
20
- REF="$ROOT/pipeline/commands/multi-agent/refs/generate-issue.md"
19
+ CMD="$ROOT/pipeline/commands/multi-agent/generate/SKILL.md"
20
+ REF="$ROOT/pipeline/multi-agent-refs/generate-issue.md"
21
21
  SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-generate/SKILL.md"
22
- DISPATCHER="$ROOT/pipeline/commands/multi-agent.md"
23
- CONTRACT="$ROOT/pipeline/commands/multi-agent/refs/cross-cli-contract.md"
24
- SYNC="$ROOT/pipeline/commands/multi-agent/sync.md"
25
- HELP="$ROOT/pipeline/commands/multi-agent/help.md"
22
+ DISPATCHER="$ROOT/pipeline/commands/multi-agent/SKILL.md"
23
+ CONTRACT="$ROOT/pipeline/multi-agent-refs/cross-cli-contract.md"
24
+ SYNC="$ROOT/pipeline/commands/multi-agent/sync/SKILL.md"
25
+ HELP="$ROOT/pipeline/commands/multi-agent/help/SKILL.md"
26
26
 
27
27
  PASS=0
28
28
  FAIL=0
@@ -34,7 +34,7 @@ for f in "$CMD" "$REF" "$SKILL"; do
34
34
  if [ -f "$f" ]; then pass "exists: ${f#$ROOT/}"; else fail "missing: ${f#$ROOT/}"; fi
35
35
  done
36
36
  # old split commands must be gone
37
- for f in "$ROOT/pipeline/commands/multi-agent/generate-task.md" "$ROOT/pipeline/commands/multi-agent/generate-bug.md"; do
37
+ for f in "$ROOT/pipeline/commands/multi-agent/generate-task/SKILL.md" "$ROOT/pipeline/commands/multi-agent/generate-bug/SKILL.md"; do
38
38
  if [ -f "$f" ]; then fail "stale file present: ${f#$ROOT/}"; else pass "removed: ${f##*/}"; fi
39
39
  done
40
40
  [ "$FAIL" -eq 0 ] || { echo "══ generate-issue smoke: $PASS passed, $FAIL failed ══"; exit 1; }
@@ -90,7 +90,7 @@ grep -Fqi "swagger" "$REF" && pass "swagger context present" || fail "swagger co
90
90
  echo ""
91
91
  echo "→ 8. registration + count consistency (36)"
92
92
  grep -Fq '| `generate ' "$DISPATCHER" && pass "dispatcher routing: generate" || fail "dispatcher routing missing: generate"
93
- grep -Fq "generate.md" "$DISPATCHER" && pass "dispatcher loading row" || fail "dispatcher loading row missing"
93
+ grep -Fq "generate/SKILL.md" "$DISPATCHER" && pass "dispatcher loading row" || fail "dispatcher loading row missing"
94
94
  grep -Fq "## 1. Command Inventory (36 commands)" "$CONTRACT" && pass "contract count = 36" || fail "contract count wrong"
95
95
  grep -Eq '(^|[ ,])generate, help([ ,]|$)' "$CONTRACT" && pass "contract list has generate" || fail "contract list missing generate"
96
96
  grep -Fq "**36 commands are synced**" "$SYNC" && pass "sync count = 36" || fail "sync count wrong"
@@ -12,9 +12,9 @@
12
12
  set -euo pipefail
13
13
 
14
14
  ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
15
- OPS="$ROOT/pipeline/commands/multi-agent/refs/phases/operations.md"
16
- LOGFMT="$ROOT/pipeline/commands/multi-agent/refs/phases/log-format.md"
17
- RESUME="$ROOT/pipeline/commands/multi-agent/resume.md"
15
+ OPS="$ROOT/pipeline/multi-agent-refs/phases/operations.md"
16
+ LOGFMT="$ROOT/pipeline/multi-agent-refs/phases/log-format.md"
17
+ RESUME="$ROOT/pipeline/commands/multi-agent/resume/SKILL.md"
18
18
 
19
19
  pass=0
20
20
  fail=0
@@ -16,8 +16,8 @@ set -uo pipefail
16
16
  # machines that haven't re-run install.js after a pipeline update.
17
17
  HERE="$(cd "$(dirname "$0")" && pwd)"
18
18
  ROOT="$(cd "$HERE/../.." && pwd)"
19
- PHASE0="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
20
- SETUP="$ROOT/pipeline/commands/multi-agent/setup.md"
19
+ PHASE0="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
20
+ SETUP="$ROOT/pipeline/commands/multi-agent/setup/SKILL.md"
21
21
  PREFS_SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
22
22
 
23
23
  PASS=0; FAIL=0
@@ -14,7 +14,7 @@ set -uo pipefail
14
14
 
15
15
  ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
16
16
  CLASSIFY="$ROOT/pipeline/lib/classify-intent.sh"
17
- PHASE0="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
17
+ PHASE0="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
18
18
  PREFS="$ROOT/pipeline/schemas/prefs.schema.json"
19
19
 
20
20
  PASS=0
@@ -19,8 +19,8 @@ cd "$PIPELINE_ROOT"
19
19
 
20
20
  FAIL=0
21
21
 
22
- TEMPLATE="commands/multi-agent/refs/channels/issue-comment.md"
23
- PHASE7="commands/multi-agent/refs/phases/phase-7-report.md"
22
+ TEMPLATE="multi-agent-refs/channels/issue-comment.md"
23
+ PHASE7="multi-agent-refs/phases/phase-7-report.md"
24
24
 
25
25
  # 1. Template file exists.
26
26
  if [ ! -f "$TEMPLATE" ]; then
@@ -14,9 +14,9 @@ set -euo pipefail
14
14
  HERE="$(cd "$(dirname "$0")" && pwd)"
15
15
  ROOT="$(cd "$HERE/../.." && pwd)"
16
16
  PREFS="$ROOT/pipeline/schemas/prefs.schema.json"
17
- PHASE0="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-0-init.md"
18
- PHASE7="$ROOT/pipeline/commands/multi-agent/refs/phases/phase-7-report.md"
19
- TRIAD="$ROOT/pipeline/commands/multi-agent/refs/issue-jira-triad.md"
17
+ PHASE0="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
18
+ PHASE7="$ROOT/pipeline/multi-agent-refs/phases/phase-7-report.md"
19
+ TRIAD="$ROOT/pipeline/multi-agent-refs/issue-jira-triad.md"
20
20
 
21
21
  PASS=0
22
22
  FAIL=0
@@ -59,7 +59,7 @@ fi
59
59
 
60
60
  echo ""
61
61
  echo "→ 4. Channels Wiki adapter documents wiki → Jira auto-link"
62
- CHANNELS="$(cd "$HERE/../.." && pwd)/pipeline/commands/multi-agent/channels.md"
62
+ CHANNELS="$(cd "$HERE/../.." && pwd)/pipeline/commands/multi-agent/channels/SKILL.md"
63
63
  if grep -Fq "Wiki → Jira" "$CHANNELS" || grep -Fq "wiki summary to Jira" "$CHANNELS" \
64
64
  || grep -Fq "Wiki → Jira comment" "$CHANNELS" || grep -Fq "wiki pages" "$CHANNELS"; then
65
65
  pass "channels.md documents the wiki → Jira report"
@@ -42,7 +42,7 @@ declare -a FORBIDDEN_PHRASES=(
42
42
  # (it's the rule source), CHANGELOG (history), STABILITY-FIX-PLAN (history),
43
43
  # and feedback memory (notes the rule, can quote it).
44
44
  TARGETS=(
45
- "commands/multi-agent/refs/phases/*.md"
45
+ "multi-agent-refs/phases/*.md"
46
46
  "commands/multi-agent/*.md"
47
47
  "skills/shared/core/multi-agent/SKILL.md"
48
48
  )
@@ -51,10 +51,10 @@ TARGETS=(
51
51
  # setup.md (Step 0 sets the language and explains why label stays English),
52
52
  # refs/picker-contract.md (UI contract spec).
53
53
  declare -a ALLOWLIST=(
54
- "commands/multi-agent/refs/rules.md"
55
- "commands/multi-agent/language.md"
56
- "commands/multi-agent/setup.md"
57
- "commands/multi-agent/refs/picker-contract.md"
54
+ "multi-agent-refs/rules.md"
55
+ "commands/multi-agent/language/SKILL.md"
56
+ "commands/multi-agent/setup/SKILL.md"
57
+ "multi-agent-refs/picker-contract.md"
58
58
  )
59
59
 
60
60
  is_allowlisted() {
@@ -83,7 +83,7 @@ for pattern in "${FORBIDDEN_PHRASES[@]}"; do
83
83
  done
84
84
 
85
85
  # Positive assertion: rules.md must contain the per-field language matrix.
86
- RULES="commands/multi-agent/refs/rules.md"
86
+ RULES="multi-agent-refs/rules.md"
87
87
  if [ -f "pipeline/$RULES" ]; then
88
88
  if ! grep -q "Per-field language matrix" "pipeline/$RULES"; then
89
89
  echo "FAIL [smoke-language-axis]: $RULES must contain the 'Per-field language matrix' section"
@@ -75,9 +75,9 @@ echo "$briefA" | grep -q 'repoB only fact' && fail "repoA brief leaked repoB con
75
75
 
76
76
  echo ""
77
77
  echo "→ 5. wiring + docs"
78
- grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md" && pass "phase-1 injects the brief" || fail "phase-1 wiring missing"
79
- grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/commands/multi-agent/refs/phases/phase-4-review.md" && pass "phase-4 triage injects rejected prefs" || fail "phase-4 wiring missing"
80
- grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/commands/multi-agent/refs/phases/phase-7-report.md" && pass "phase-7 distills the ledger" || fail "phase-7 wiring missing"
78
+ grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/multi-agent-refs/phases/phase-1-analysis.md" && pass "phase-1 injects the brief" || fail "phase-1 wiring missing"
79
+ grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/multi-agent-refs/phases/phase-4-review.md" && pass "phase-4 triage injects rejected prefs" || fail "phase-4 wiring missing"
80
+ grep -q 'learnings-ledger.mjs' "$ROOT/pipeline/multi-agent-refs/phases/phase-7-report.md" && pass "phase-7 distills the ledger" || fail "phase-7 wiring missing"
81
81
  grep -q '"learningsLedger"' "$ROOT/pipeline/schemas/prefs.schema.json" && pass "prefs exposes learningsLedger" || fail "prefs toggle missing"
82
82
  [ -f "$ROOT/pipeline/schemas/learnings-ledger.schema.json" ] && pass "ledger schema present" || fail "ledger schema missing"
83
83