@mmerterden/multi-agent-pipeline 11.1.0 → 11.3.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 (342) hide show
  1. package/CHANGELOG.md +58 -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/_common.mjs +9 -1
  7. package/install/_dev-only-files.mjs +0 -6
  8. package/install/claude.mjs +45 -18
  9. package/install/copilot.mjs +16 -14
  10. package/install/templates/copilot-instructions.md +3 -3
  11. package/package.json +1 -1
  12. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  13. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  14. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  16. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  17. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  18. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  20. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  21. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  22. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  23. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  24. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  25. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  27. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  28. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  29. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  30. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  31. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  32. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  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-stack-plugins.mjs +1 -1
  66. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  67. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  68. package/pipeline/scripts/phase-banner.sh +2 -2
  69. package/pipeline/scripts/review-scope.mjs +94 -0
  70. package/pipeline/scripts/scan-agent-config.sh +2 -2
  71. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  72. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  73. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  74. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  75. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  76. package/pipeline/scripts/smoke-clarify.sh +1 -1
  77. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  78. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  79. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  80. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  81. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  82. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  83. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  84. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  85. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  86. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  87. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  88. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  89. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  90. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  91. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  92. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  93. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  94. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  95. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  96. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  97. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  98. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  99. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  100. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  101. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  102. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  103. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  104. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  105. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  106. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  107. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  108. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  109. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  110. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  111. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  112. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  113. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  114. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  115. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  116. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  117. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  118. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  119. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  120. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  121. package/pipeline/scripts/smoke-update-check.sh +1 -1
  122. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  123. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  124. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  125. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  126. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  127. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  128. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  129. package/pipeline/scripts/uninstall.mjs +2 -2
  130. package/pipeline/skills/.skill-manifest.json +40 -160
  131. package/pipeline/skills/.skills-index.json +21 -372
  132. package/pipeline/skills/shared/README.md +1 -1
  133. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  134. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  135. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  136. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  137. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  138. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  139. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  140. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  141. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  142. package/pipeline/skills/shared/external/backlog/BACKLOG.md +32 -0
  143. package/pipeline/skills/shared/external/backlog/SKILL.md +49 -0
  144. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  145. package/pipeline/skills/shared/external/skill-creator/SKILL.md +48 -0
  146. package/pipeline/skills/shared/external/skill-creator/audit.md +59 -0
  147. package/pipeline/skills/shared/external/skill-creator/checklist.md +32 -0
  148. package/pipeline/skills/shared/external/skill-creator/examples.md +65 -0
  149. package/pipeline/skills/shared/external/skill-creator/label-check.md +43 -0
  150. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +83 -0
  151. package/pipeline/skills/shared/external/skill-creator/template.md +67 -0
  152. package/pipeline/skills/skills-index.md +4 -43
  153. package/pipeline/commands/multi-agent/refactor.md +0 -188
  154. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  155. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  156. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  157. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  158. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  159. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  160. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  161. package/pipeline/skills/figma-android/README.md +0 -38
  162. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  163. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  164. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  165. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  166. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  167. package/pipeline/skills/figma-common/README.md +0 -64
  168. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  169. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  170. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  171. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  172. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  173. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  174. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  175. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  176. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  177. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  178. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  179. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  180. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  181. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  182. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  183. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  184. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  185. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  186. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  187. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  188. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  189. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  190. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  191. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  192. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  193. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  194. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  195. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  196. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  197. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  198. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  199. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  200. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  201. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  202. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  203. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  204. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  205. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  206. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  207. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  208. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  209. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  210. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  232. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  233. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  234. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  235. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  236. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  237. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  238. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  239. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  240. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  241. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  242. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  253. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  254. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  255. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  256. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  257. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  258. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  259. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  260. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  261. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  262. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  263. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  294. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  295. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  296. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  297. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  298. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  299. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  300. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  301. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  302. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  303. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  304. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  305. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  310. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  311. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  312. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  313. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  314. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  315. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  316. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  317. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  318. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  319. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  320. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  321. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  332. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  333. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  334. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  335. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  336. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  337. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  338. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  339. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  340. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  341. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  342. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env bash
2
- #
3
- # smoke-existing-discovery-gate.sh
4
- #
5
- # Asserts the figma-to-component orchestrator has the Phase 1.5 existing-
6
- # component discovery gate wired in:
7
- # - phase-1.5-existing-discovery.md exists with the canonical anchors
8
- # - phase-2-orchestrator ENTRY GATE consults discovery.status
9
- # - phase-6-code-connect ENTRY GATE skips publish when already mapped
10
- #
11
- # This is Defect 10 from the GH1241 stability plan (docs/STABILITY-FIX-PLAN.md).
12
-
13
- set -euo pipefail
14
-
15
- SELF_DIR=$(cd "$(dirname "$0")" && pwd)
16
- PIPELINE_ROOT=$(cd "$SELF_DIR/.." && pwd)
17
-
18
- cd "$PIPELINE_ROOT"
19
-
20
- FAIL=0
21
-
22
- GATE_DOC="skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md"
23
- PHASE2="skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md"
24
- PHASE6="skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md"
25
-
26
- # 1. Phase 1.5 doc exists.
27
- if [ ! -f "$GATE_DOC" ]; then
28
- echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC missing"
29
- exit 1
30
- fi
31
-
32
- # 2. Phase 1.5 contains the four canonical statuses.
33
- declare -a REQUIRED_STATUSES=(
34
- "GREENFIELD_OK"
35
- "ALREADY_MAPPED"
36
- "EXISTING_SOURCE_NO_CC"
37
- "GAP_ANALYSIS"
38
- )
39
- for st in "${REQUIRED_STATUSES[@]}"; do
40
- if ! grep -qF "$st" "$GATE_DOC"; then
41
- echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC must define status $st"
42
- FAIL=$((FAIL + 1))
43
- fi
44
- done
45
-
46
- # 3. Phase 1.5 writes to agent-state.discovery.{status,sourcePath,gaps}.
47
- if ! grep -qE 'discovery.*status|"discovery"' "$GATE_DOC"; then
48
- echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC must write to agent-state.discovery"
49
- FAIL=$((FAIL + 1))
50
- fi
51
-
52
- # 4. Phase 2 ENTRY GATE consults discovery.status.
53
- if ! grep -qE "discovery\.status|agent-state\.discovery" "$PHASE2"; then
54
- echo "FAIL [smoke-existing-discovery-gate]: $PHASE2 ENTRY GATE must consult discovery.status"
55
- FAIL=$((FAIL + 1))
56
- fi
57
-
58
- # 5. Phase 6 ENTRY GATE skips when ALREADY_MAPPED or .figma.swift exists.
59
- if ! grep -qE "ALREADY_MAPPED|already published|GAP_ANALYSIS" "$PHASE6"; then
60
- echo "FAIL [smoke-existing-discovery-gate]: $PHASE6 ENTRY GATE must skip when ALREADY_MAPPED / GAP_ANALYSIS"
61
- FAIL=$((FAIL + 1))
62
- fi
63
-
64
- if [ "$FAIL" -gt 0 ]; then
65
- echo ""
66
- echo "smoke-existing-discovery-gate: $FAIL violation(s)."
67
- echo "Defect 10 contract - see docs/STABILITY-FIX-PLAN.md."
68
- exit 1
69
- fi
70
-
71
- echo "smoke-existing-discovery-gate: ok"
@@ -1,148 +0,0 @@
1
- #!/usr/bin/env bash
2
- # smoke-figma-android-parity.sh - WS-7 contract.
3
- #
4
- # Verifies the Android platform skill tree under pipeline/skills/figma-android/
5
- # mirrors the iOS peer for every platform-specific skill required by the
6
- # figma-to-component orchestrator. Also checks Android-specific details
7
- # (Kotlin file names, Compose tooling, Paparazzi/Roborazzi references).
8
-
9
- set -euo pipefail
10
-
11
- HERE="$(cd "$(dirname "$0")" && pwd)"
12
- ROOT="$(cd "$HERE/../.." && pwd)"
13
- IOS_DIR="$ROOT/pipeline/skills/figma-ios"
14
- ANDROID_DIR="$ROOT/pipeline/skills/figma-android"
15
-
16
- PASS=0
17
- FAIL=0
18
- pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
19
- fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
20
-
21
- [ -d "$IOS_DIR" ] || { echo "error: iOS tree missing at $IOS_DIR" >&2; exit 1; }
22
- [ -d "$ANDROID_DIR" ] || { echo "error: Android tree missing at $ANDROID_DIR" >&2; exit 1; }
23
-
24
- # Platform-specific skills that MUST exist on both sides.
25
- REQUIRED=(
26
- figma-to-component
27
- figma-component-implement
28
- figma-component-test
29
- figma-component-code-connect
30
- figma-component-wiki
31
- )
32
-
33
- echo "→ 1. Android tree has required platform-specific skills"
34
- for skill in "${REQUIRED[@]}"; do
35
- if [ -d "$ANDROID_DIR/$skill" ] && [ -f "$ANDROID_DIR/$skill/SKILL.md" ]; then
36
- pass "$skill present"
37
- else
38
- fail "$skill missing"
39
- fi
40
- done
41
-
42
- echo ""
43
- echo "→ 2. iOS tree has the same required skills (parity source)"
44
- for skill in "${REQUIRED[@]}"; do
45
- if [ -d "$IOS_DIR/$skill" ] && [ -f "$IOS_DIR/$skill/SKILL.md" ]; then
46
- pass "iOS $skill present"
47
- else
48
- fail "iOS $skill missing (parity source broken)"
49
- fi
50
- done
51
-
52
- echo ""
53
- echo "→ 3. Every Android SKILL.md has frontmatter with platform: android"
54
- for skill in "${REQUIRED[@]}"; do
55
- f="$ANDROID_DIR/$skill/SKILL.md"
56
- [ -f "$f" ] || continue
57
- if ! head -n 1 "$f" | grep -Fxq -- "---"; then
58
- fail "$skill/SKILL.md missing frontmatter"
59
- continue
60
- fi
61
- if awk '/^---$/{c++; next} c==1' "$f" | grep -Fq "platform: android"; then
62
- pass "$skill stamped platform: android"
63
- else
64
- fail "$skill/SKILL.md missing platform: android stamp"
65
- fi
66
- done
67
-
68
- echo ""
69
- echo "→ 4. Every Android SKILL.md stamped status: wip-v5 + sourced-from"
70
- for skill in "${REQUIRED[@]}"; do
71
- f="$ANDROID_DIR/$skill/SKILL.md"
72
- [ -f "$f" ] || continue
73
- grep -q "^status: wip-v5" "$f" && pass "$skill status: wip-v5" || fail "$skill missing status stamp"
74
- grep -q "^sourced-from: " "$f" && pass "$skill has sourced-from" || fail "$skill missing sourced-from"
75
- done
76
-
77
- echo ""
78
- echo "→ 5. Android implement skill targets Compose + Kotlin"
79
- IMPL="$ANDROID_DIR/figma-component-implement/SKILL.md"
80
- if [ -f "$IMPL" ]; then
81
- if grep -Fq "@Composable" "$IMPL" && grep -Fq "Configuration.kt" "$IMPL" && grep -Fq "@Immutable" "$IMPL"; then
82
- pass "implement references @Composable + Configuration.kt + @Immutable"
83
- else
84
- fail "implement missing Compose/Kotlin markers"
85
- fi
86
- fi
87
-
88
- echo ""
89
- echo "→ 6. Android test skill targets Compose Testing + Paparazzi"
90
- TEST="$ANDROID_DIR/figma-component-test/SKILL.md"
91
- if [ -f "$TEST" ]; then
92
- if grep -Fq "createComposeRule" "$TEST" && grep -Fq "Paparazzi" "$TEST"; then
93
- pass "test references createComposeRule + Paparazzi"
94
- else
95
- fail "test missing Compose Testing / Paparazzi markers"
96
- fi
97
- fi
98
-
99
- echo ""
100
- echo "→ 7. Android orchestrator routes Android-specific build (gradleModule)"
101
- ORCH="$ANDROID_DIR/figma-to-component/SKILL.md"
102
- if [ -f "$ORCH" ]; then
103
- if grep -Fq "gradleModule" "$ORCH" && grep -Fq "./gradlew" "$ORCH"; then
104
- pass "orchestrator references gradleModule + gradlew"
105
- else
106
- fail "orchestrator missing gradleModule / gradlew references"
107
- fi
108
- fi
109
-
110
- echo ""
111
- echo "→ 8. figma-project-config schema declares Android build fields"
112
- SCHEMA="$ROOT/pipeline/schemas/figma-project-config.schema.json"
113
- if jq -e '.properties.build.properties.gradleModule' "$SCHEMA" >/dev/null 2>&1 \
114
- && jq -e '.properties.build.properties.variant' "$SCHEMA" >/dev/null 2>&1; then
115
- pass "schema has build.gradleModule + build.variant"
116
- else
117
- fail "schema missing Android build fields"
118
- fi
119
-
120
- echo ""
121
- echo "→ 9. Platform enum covers Android"
122
- if jq -e '.properties.project.properties.platform.enum | index("android")' "$SCHEMA" >/dev/null 2>&1; then
123
- pass "project.platform enum includes android"
124
- else
125
- fail "project.platform enum missing android"
126
- fi
127
-
128
- echo ""
129
- echo "→ 10. README.md present explaining the Android tree"
130
- README="$ANDROID_DIR/README.md"
131
- if [ -f "$README" ] && grep -Fq "Android Platform Skills" "$README"; then
132
- pass "README.md present and descriptive"
133
- else
134
- fail "README.md missing or not descriptive"
135
- fi
136
-
137
- echo ""
138
- echo "→ 11. component-dispatch.md ref acknowledges Android routing"
139
- DISPATCH="$ROOT/pipeline/commands/multi-agent/refs/component-dispatch.md"
140
- if grep -Fq "android" "$DISPATCH" && grep -Fq "figma-android" "$DISPATCH"; then
141
- pass "component-dispatch.md routes iOS/Android"
142
- else
143
- fail "component-dispatch.md missing Android routing"
144
- fi
145
-
146
- echo ""
147
- echo "══ figma-android-parity smoke: $PASS passed, $FAIL failed ══"
148
- [ "$FAIL" -eq 0 ]
@@ -1,105 +0,0 @@
1
- #!/usr/bin/env bash
2
- # smoke-figma-credential-store.sh - drift gate for figma skill Keychain access.
3
- #
4
- # In v8.3.x the figma skill family was migrated off raw `security` calls and
5
- # routed through the cross-platform credential helper:
6
- # ~/.claude/lib/credential-store.sh (Claude Code installs)
7
- # ~/.copilot/lib/credential-store.sh (Copilot CLI installs)
8
- # Each bash block uses a `CRED_STORE` resolver that picks whichever helper is
9
- # present so the same source ships to both CLIs.
10
- #
11
- # This smoke locks the migration in place. It re-fails the build if anyone
12
- # reverts a figma skill back to a direct `security find-generic-password` /
13
- # `add-generic-password` / `delete-generic-password` call against one of OUR
14
- # managed token names.
15
- #
16
- # Two intentional exceptions:
17
- # - Subprocess calls that read the `Claude Code-credentials` keychain entry
18
- # (Claude Code's own OAuth-token store, not ours).
19
- # - Pedagogical references inside CHANGELOG / MIGRATION docs.
20
- #
21
- # Exit 0 = no drift, 1 = at least one figma file regressed.
22
-
23
- set -uo pipefail
24
-
25
- ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
26
-
27
- pass=0
28
- fail=0
29
- failures=()
30
- record_pass() { pass=$((pass + 1)); printf ' \033[0;32mPASS\033[0m %s\n' "$1"; }
31
- record_fail() { fail=$((fail + 1)); failures+=("$1"); printf ' \033[0;31mFAIL\033[0m %s\n' "$1"; }
32
-
33
- printf '→ smoke-figma-credential-store: figma skills route Keychain via the helper, not raw `security`\n'
34
-
35
- # 1. The 8 figma surfaces that were migrated must keep using "$CRED_STORE" or
36
- # `~/.claude/lib/credential-store.sh` / `~/.copilot/lib/credential-store.sh`.
37
- MIGRATED_FILES=(
38
- "pipeline/skills/figma-common/figma-issue/SKILL.md"
39
- "pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md"
40
- "pipeline/skills/figma-common/figma-setup/SKILL.md"
41
- "pipeline/skills/figma-common/figma-validate/SKILL.md"
42
- "pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md"
43
- "pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md"
44
- "pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md"
45
- "pipeline/skills/figma-ios/figma-to-component/reference/tools.md"
46
- "pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py"
47
- )
48
-
49
- for rel in "${MIGRATED_FILES[@]}"; do
50
- abs="$ROOT/$rel"
51
- base="$(basename "$rel")"
52
- if [ ! -f "$abs" ]; then
53
- record_fail "$base missing - figma skill set drifted out of inventory"
54
- continue
55
- fi
56
-
57
- # Each of these must reference the helper at least once (resolver, get/set/delete call,
58
- # or python subprocess wrapper). If the helper reference is gone, the file regressed.
59
- if grep -qE 'credential-store\.sh|CRED_STORE|keychain\.py' "$abs"; then
60
- record_pass "$base references the credential helper"
61
- else
62
- record_fail "$base lost its credential-store.sh reference"
63
- fi
64
-
65
- # Now look for raw `security {find,add,delete}-generic-password` calls
66
- # against OUR managed tokens. Anything matching one of these service names
67
- # is a regression. (Claude Code's own `Claude Code-credentials` entry is
68
- # NOT in this list - the figma-setup wizard is allowed to read it.)
69
- managed_tokens='FIGMA_ACCESS_TOKEN|FIGMA_MCP_TOKEN|FIGMA_API_USER|JIRA_TOKEN|CONFLUENCE_TOKEN'
70
- bad=$(grep -nE "security (find|add|delete)-generic-password.*-s [\"']?($managed_tokens)[\"']?" "$abs" 2>/dev/null || true)
71
- if [ -z "$bad" ]; then
72
- record_pass "$base contains no raw security calls against managed tokens"
73
- else
74
- record_fail "$base regressed to raw security on a managed token:
75
- $bad"
76
- fi
77
- done
78
-
79
- # 2. The cross-CLI contract doc must point callers at credential-store.sh as
80
- # the canonical path. If it ever flips back to raw `security` in the
81
- # "canonical" column the principle is broken.
82
- CONTRACT="$ROOT/pipeline/commands/multi-agent/refs/cross-cli-contract.md"
83
- if [ -f "$CONTRACT" ] && grep -qE 'canonical path is .*credential-store\.sh' "$CONTRACT"; then
84
- record_pass "cross-cli-contract.md declares credential-store.sh as canonical"
85
- else
86
- record_fail "cross-cli-contract.md no longer declares credential-store.sh as canonical"
87
- fi
88
-
89
- # 3. The Copilot install template allowlist must list the helper, not just raw `security`.
90
- TEMPLATE="$ROOT/install/templates/copilot-instructions.md"
91
- if [ -f "$TEMPLATE" ] && grep -q 'credential-store\.sh' "$TEMPLATE"; then
92
- record_pass "install template allowlist references credential-store.sh"
93
- else
94
- record_fail "install template allowlist no longer references credential-store.sh"
95
- fi
96
-
97
- # Summary
98
- total=$((pass + fail))
99
- printf '\n→ smoke-figma-credential-store: %d/%d passed\n' "$pass" "$total"
100
- if [ "$fail" -ne 0 ]; then
101
- printf '\nFailures:\n'
102
- for f in "${failures[@]}"; do printf ' - %s\n' "$f"; done
103
- exit 1
104
- fi
105
- exit 0
@@ -1,177 +0,0 @@
1
- #!/usr/bin/env bash
2
- # smoke-figma-cross-cli-inventory.sh - enforces the cross-CLI parity
3
- # inventory for the v5.0.0 figma-to-component skill set.
4
- #
5
- # Source-tree assertions (does not require install.js to have deployed
6
- # the skills). Complements smoke-cross-cli-behavior.sh (installed-tree)
7
- # and smoke-commands-skills-parity.sh (multi-agent commands).
8
- #
9
- # Contract source of truth: refs/cross-cli-contract.md section1.1.
10
- #
11
- # Verifies:
12
- # 1. Every platform-specific figma-android skill exists in figma-ios too.
13
- # 2. Every required figma-* skill from the contract table exists in figma-ios.
14
- # 3. Every SKILL.md that claims "platform: android" lives under figma-android/.
15
- # 4. Every SKILL.md that claims "platform: ios" lives under figma-ios/.
16
- # 5. No orphaned figma skill directories (not in the contract).
17
- # 6. Contract doc references both figma-ios and figma-android paths.
18
-
19
- set -euo pipefail
20
-
21
- HERE="$(cd "$(dirname "$0")" && pwd)"
22
- ROOT="$(cd "$HERE/../.." && pwd)"
23
- IOS_DIR="$ROOT/pipeline/skills/figma-ios"
24
- ANDROID_DIR="$ROOT/pipeline/skills/figma-android"
25
- COMMON_DIR="$ROOT/pipeline/skills/figma-common"
26
- CONTRACT="$ROOT/pipeline/commands/multi-agent/refs/cross-cli-contract.md"
27
-
28
- PASS=0
29
- FAIL=0
30
- pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
31
- fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
32
-
33
- for d in "$IOS_DIR" "$ANDROID_DIR" "$COMMON_DIR"; do
34
- [ -d "$d" ] || { echo "error: $d missing" >&2; exit 1; }
35
- done
36
- [ -f "$CONTRACT" ] || { echo "error: $CONTRACT missing" >&2; exit 1; }
37
-
38
- # Platform-specific skills (required on BOTH sides per contract)
39
- PLATFORM_SPECIFIC=(
40
- figma-to-component
41
- figma-component-implement
42
- figma-component-test
43
- figma-component-code-connect
44
- figma-component-wiki
45
- )
46
-
47
- # Platform-agnostic (required on at least iOS side today - WS-7b moves to figma-common/)
48
- COMMON_REQUIRED=(
49
- figma-component-start
50
- figma-component-confluence-sync
51
- figma-component-status-update
52
- figma-commit
53
- figma-iteration-commit
54
- figma-issue
55
- figma-iterate
56
- figma-cli-iterate
57
- figma-cli-lean-iterate
58
- figma-cli-iterate-mend
59
- figma-cli-skip
60
- figma-fix
61
- figma-mend
62
- figma-review
63
- figma-validate
64
- figma-setup
65
- figma-remote-mcp-auth
66
- figma-ui-patterns
67
- figma-utility
68
- figma-skip
69
- figma-form-integration
70
- figma-price-integration
71
- )
72
-
73
- echo "→ 1. Platform-specific skills exist on BOTH figma-ios and figma-android"
74
- for skill in "${PLATFORM_SPECIFIC[@]}"; do
75
- ios_ok="false"
76
- and_ok="false"
77
- [ -f "$IOS_DIR/$skill/SKILL.md" ] && ios_ok="true"
78
- [ -f "$ANDROID_DIR/$skill/SKILL.md" ] && and_ok="true"
79
- if [ "$ios_ok" = "true" ] && [ "$and_ok" = "true" ]; then
80
- pass "$skill present on both platforms"
81
- else
82
- fail "$skill parity broken (ios=$ios_ok android=$and_ok)"
83
- fi
84
- done
85
-
86
- echo ""
87
- echo "→ 2. Platform-agnostic skills live in figma-common/ (WS-7b ✓)"
88
- for skill in "${COMMON_REQUIRED[@]}"; do
89
- if [ -f "$COMMON_DIR/$skill/SKILL.md" ]; then
90
- pass "$skill present in figma-common"
91
- else
92
- fail "$skill missing in figma-common"
93
- fi
94
- done
95
-
96
- echo ""
97
- echo "→ 2b. Platform-agnostic skills are NOT duplicated under figma-ios"
98
- DUPES=0
99
- for skill in "${COMMON_REQUIRED[@]}"; do
100
- if [ -d "$IOS_DIR/$skill" ]; then
101
- fail "duplication: $skill exists in BOTH figma-ios/ and figma-common/"
102
- DUPES=$((DUPES+1))
103
- fi
104
- done
105
- [ "$DUPES" -eq 0 ] && pass "no common-skill duplication in figma-ios"
106
-
107
- echo ""
108
- echo "→ 3. figma-android SKILL.md files stamp platform: android"
109
- while IFS= read -r -d '' f; do
110
- base=$(dirname "$f" | xargs basename)
111
- if head -n 1 "$f" | grep -Fxq -- "---"; then
112
- if awk '/^---$/{c++; next} c==1' "$f" | grep -Fq "platform: android"; then
113
- pass "$base stamps platform: android"
114
- else
115
- fail "$base missing 'platform: android' stamp"
116
- fi
117
- fi
118
- done < <(find "$ANDROID_DIR" -maxdepth 2 -name SKILL.md -print0)
119
-
120
- echo ""
121
- echo "→ 4. figma-ios SKILL.md files do NOT claim platform: android (only ios or none)"
122
- while IFS= read -r -d '' f; do
123
- if awk '/^---$/{c++; next} c==1' "$f" | grep -Fq "platform: android"; then
124
- fail "$(dirname "$f" | xargs basename) claims platform: android but lives under figma-ios/"
125
- fi
126
- done < <(find "$IOS_DIR" -maxdepth 2 -name SKILL.md -print0)
127
- pass "no cross-platform stamp leakage in figma-ios/"
128
-
129
- echo ""
130
- echo "→ 5. No orphaned figma-android directories (contract-table inventory)"
131
- EXPECTED_ANDROID=("${PLATFORM_SPECIFIC[@]}")
132
- ORPHANS=0
133
- for d in "$ANDROID_DIR"/*/; do
134
- [ -d "$d" ] || continue
135
- name=$(basename "$d")
136
- case " ${EXPECTED_ANDROID[*]} " in
137
- *" $name "*) ;;
138
- *) fail "unexpected dir: figma-android/$name (not in contract)"; ORPHANS=$((ORPHANS+1)) ;;
139
- esac
140
- done
141
- [ "$ORPHANS" -eq 0 ] && pass "no orphaned figma-android directories"
142
-
143
- echo ""
144
- echo "→ 6. cross-cli-contract.md references both platforms"
145
- if grep -Fq "pipeline/skills/figma-ios" "$CONTRACT" && grep -Fq "pipeline/skills/figma-android" "$CONTRACT"; then
146
- pass "contract references figma-ios + figma-android paths"
147
- else
148
- fail "contract missing one or both figma platform paths"
149
- fi
150
-
151
- echo ""
152
- echo "→ 7. Contract section 1.1 present (figma subphase skills section)"
153
- if grep -Fq "1.1 Figma component subphase skills" "$CONTRACT"; then
154
- pass "section 1.1 heading present"
155
- else
156
- fail "section 1.1 heading missing"
157
- fi
158
-
159
- echo ""
160
- echo "→ 8. Contract section 1.2 routing rules present"
161
- if grep -Fq "1.2 Figma-skill routing from multi-agent" "$CONTRACT"; then
162
- pass "section 1.2 heading present"
163
- else
164
- fail "section 1.2 heading missing"
165
- fi
166
-
167
- echo ""
168
- echo "→ 9. Contract section 1.3 frontmatter requirements present"
169
- if grep -Fq "1.3 Figma skill frontmatter" "$CONTRACT"; then
170
- pass "section 1.3 heading present"
171
- else
172
- fail "section 1.3 heading missing"
173
- fi
174
-
175
- echo ""
176
- echo "══ figma-cross-cli-inventory smoke: $PASS passed, $FAIL failed ══"
177
- [ "$FAIL" -eq 0 ]
@@ -1,149 +0,0 @@
1
- #!/usr/bin/env bash
2
- # smoke-figma-sync.sh - WS-9 contract for sync-figma-source.sh.
3
- #
4
- # Verifies:
5
- # 1. sync script exists + executable.
6
- # 2. prefs.schema.json declares global.figmaSource with correct shape.
7
- # 3. sync script handles missing figmaSource gracefully (exit 0 w/ message).
8
- # 4. sync script handles missing path file.
9
- # 5. dry-run mode writes nothing.
10
- # 6. CHANGELOG note format is correct (includes `### Sync YYYY-MM-DD`).
11
- # 7. Watermark update logic (lastCommit + lastSyncedAt) runs atomically.
12
-
13
- set -euo pipefail
14
-
15
- HERE="$(cd "$(dirname "$0")" && pwd)"
16
- ROOT="$(cd "$HERE/../.." && pwd)"
17
- SYNC="$ROOT/pipeline/scripts/sync-figma-source.sh"
18
- SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
19
- TMP="$(mktemp -d -t figma-sync-smoke-XXXX)"
20
- trap 'rm -rf "$TMP"' EXIT
21
-
22
- PASS=0
23
- FAIL=0
24
- pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
25
- fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
26
-
27
- need() { command -v "$1" >/dev/null 2>&1 || { echo "error: $1 required" >&2; exit 127; }; }
28
- need jq
29
- need git
30
-
31
- [ -x "$SYNC" ] && pass "sync script exists and is executable" || fail "sync script not executable at $SYNC"
32
-
33
- echo ""
34
- echo "→ 2. prefs schema declares global.figmaSource with correct shape"
35
- for field in path branch lastSyncedAt lastCommit; do
36
- if jq -e ".properties.global.properties.figmaSource.properties.$field" "$SCHEMA" >/dev/null 2>&1; then
37
- pass "figmaSource.$field declared"
38
- else
39
- fail "figmaSource.$field missing from schema"
40
- fi
41
- done
42
-
43
- echo ""
44
- echo "→ 3. missing figmaSource → exit 0 with skip message"
45
- cat > "$TMP/prefs-no-source.json" <<'EOF'
46
- { "schemaVersion": "2.1.0", "global": {}, "projects": {} }
47
- EOF
48
- OUT=$(MULTI_AGENT_PREFS="$TMP/prefs-no-source.json" bash "$SYNC" 2>&1)
49
- RC=$?
50
- if [ "$RC" -eq 0 ] && echo "$OUT" | grep -Fq "figmaSource not configured"; then
51
- pass "gracefully handles missing figmaSource"
52
- else
53
- fail "did not skip cleanly (rc=$RC, out: $OUT)"
54
- fi
55
-
56
- echo ""
57
- echo "→ 4. figmaSource.path missing on disk → exit 1 with error"
58
- cat > "$TMP/prefs-bad-path.json" <<EOF
59
- { "schemaVersion": "2.1.0", "global": { "figmaSource": { "path": "$TMP/does-not-exist", "branch": "develop" } }, "projects": {} }
60
- EOF
61
- set +e
62
- OUT=$(MULTI_AGENT_PREFS="$TMP/prefs-bad-path.json" bash "$SYNC" 2>&1)
63
- RC=$?
64
- set -e
65
- if [ "$RC" -ne 0 ] && echo "$OUT" | grep -Fq "does not exist"; then
66
- pass "errors cleanly on missing path"
67
- else
68
- fail "did not error on missing path (rc=$RC)"
69
- fi
70
-
71
- echo ""
72
- echo "→ 5. dry-run mode does not mutate prefs"
73
- # Build a tiny fake source with .instructions/figma/sample/SKILL.md
74
- FAKE_SRC="$TMP/fake-src"
75
- mkdir -p "$FAKE_SRC/.instructions/figma/sample" "$FAKE_SRC/.claude/skills/sample"
76
- cat > "$FAKE_SRC/.instructions/figma/sample/SKILL.md" <<'EOF'
77
- ---
78
- name: sample
79
- description: smoke fixture
80
- ---
81
- # sample
82
- EOF
83
- cat > "$FAKE_SRC/.claude/skills/sample/SKILL.md" <<'EOF'
84
- ---
85
- name: sample
86
- description: smoke stub
87
- ---
88
- # sample stub
89
- EOF
90
- (cd "$FAKE_SRC" && git init -q && git -c user.email=t@t -c user.name=t add . && git -c user.email=t@t -c user.name=t commit -q -m init)
91
- PREFS_BEFORE="$TMP/prefs-dry.json"
92
- cat > "$PREFS_BEFORE" <<EOF
93
- { "schemaVersion": "2.1.0", "global": { "figmaSource": { "path": "$FAKE_SRC", "branch": "main" } }, "projects": {} }
94
- EOF
95
- CHECKSUM_BEFORE=$(jq -c '.' "$PREFS_BEFORE" | shasum | awk '{print $1}')
96
- MULTI_AGENT_PREFS="$PREFS_BEFORE" bash "$SYNC" --dry-run >/dev/null 2>&1 || true
97
- CHECKSUM_AFTER=$(jq -c '.' "$PREFS_BEFORE" | shasum | awk '{print $1}')
98
- [ "$CHECKSUM_BEFORE" = "$CHECKSUM_AFTER" ] && pass "dry-run leaves prefs untouched" || fail "dry-run mutated prefs"
99
-
100
- echo ""
101
- echo "→ 6. CHANGELOG heading pattern used by sync (grep shape)"
102
- if grep -Fq '### Sync $(date' "$SYNC" || grep -Eq '### Sync \$\(date' "$SYNC"; then
103
- pass "sync emits '### Sync YYYY-MM-DD' heading"
104
- else
105
- fail "sync script does not emit the canonical CHANGELOG heading"
106
- fi
107
-
108
- echo ""
109
- echo "→ 7. Watermark update uses atomic rename"
110
- if grep -Fq "mv \"\$TMP\" \"\$PREFS_FILE\"" "$SYNC"; then
111
- pass "atomic rename on prefs update"
112
- else
113
- fail "no atomic rename in sync script"
114
- fi
115
-
116
- echo ""
117
- echo "→ 8. --force-full flag is recognised"
118
- if grep -Fq -- "--force-full" "$SYNC"; then
119
- pass "force-full flag supported"
120
- else
121
- fail "force-full flag missing"
122
- fi
123
-
124
- echo ""
125
- echo "→ 9. --plan flag writes a structured JSON plan artifact"
126
- if grep -Fq -- "--plan" "$SYNC"; then
127
- pass "plan flag recognised"
128
- else
129
- fail "plan flag missing"
130
- fi
131
- if grep -Fq ".last-figma-sync-plan.json" "$SYNC"; then
132
- pass "plan writes to .last-figma-sync-plan.json"
133
- else
134
- fail "plan output path missing"
135
- fi
136
- if grep -Fq "overlaySkip" "$SYNC"; then
137
- pass "plan records overlay-skip per skill"
138
- else
139
- fail "plan does not record overlaySkip"
140
- fi
141
- if grep -Fq "tree" "$SYNC" && grep -Fq "figma-ios" "$SYNC" && grep -Fq "figma-common" "$SYNC"; then
142
- pass "plan records destination tree (figma-ios vs figma-common)"
143
- else
144
- fail "plan missing tree routing info"
145
- fi
146
-
147
- echo ""
148
- echo "══ figma-sync smoke: $PASS passed, $FAIL failed ══"
149
- [ "$FAIL" -eq 0 ]