@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
@@ -1,188 +0,0 @@
1
- ---
2
- description: "Analyse the project, score it, draft an improvement plan, take approval, develop, then ask whether to sync."
3
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion, WebFetch
4
- ---
5
-
6
- # Multi-Agent Refactor
7
-
8
- **One command. Analyse → Score → Plan → Approval → Develop → Sync.**
9
-
10
- Deep-analyses the current project, scores it across 10 categories, drafts every improvement, asks the user for approval, applies them, and asks about sync at the end.
11
-
12
- **Input**: $ARGUMENTS (optional - area to focus on: "security", "performance", "tests", etc.)
13
-
14
- ## Flow
15
-
16
- ```
17
- Step 0: RESEARCH Search GitHub + Reddit for competing projects, gather good ideas
18
- Step 1: SCAN Walk the project structure (files, LOC, dependencies, CI, tests)
19
- Step 2: ANALYZE Deep analysis across 10 categories
20
- Step 3: SCORE Each category /10, overall /100
21
- Step 4: PLAN List every improvement + competitor idea in priority order
22
- Step 5: ASK "Start the work?" - wait for user approval
23
- Step 6: IMPLEMENT Apply approved improvements one by one (lint, test, commit)
24
- Step 7: VERIFY Confirm every test + lint passes
25
- Step 8: ASK SYNC "Run multi-agent-sync?" - wait for user approval
26
- ```
27
-
28
- ## Step 0: RESEARCH - competitor analysis
29
-
30
- Before starting work, scan for similar projects:
31
-
32
- 1. **GitHub Search**: `multi-agent pipeline AI development` + `Claude Code pipeline` + `AI coding agent`
33
- - find repos with stars:>10
34
- - read their READMEs
35
- - extract their distinct features
36
- 2. **Reddit Search**: multi-agent discussions in `r/ClaudeAI`, `r/ChatGPT`, `r/LocalLLaMA`
37
- 3. **For each competitor, record**:
38
- - distinct features we DO NOT have
39
- - ideas worth adopting
40
- - things they do better than us
41
- - things we do better than them
42
- 4. **Add to the plan**: roll the high-impact + low-effort ideas into the PLAN step (P1 priority)
43
-
44
- Output format:
45
- ```
46
- | Source | Idea | Effort | Impact | In plan? |
47
- |--------|-------|--------|------|--------------|
48
- | ralph-loop | Symlink distribution | Low | High | Yes |
49
- | atelier | Persistent Brain | High | Very High | No (roadmap) |
50
- ```
51
-
52
- ## Step 1: SCAN
53
-
54
- ```
55
- - file count, LOC (cloc or wc -l)
56
- - package.json / Package.swift / build.gradle analizi
57
- - dependency count (runtime vs dev)
58
- - Is there a CI/CD pipeline? (.github/workflows/, fastlane/, Makefile)
59
- - Is there test infrastructure? How many tests? Coverage?
60
- - Is linter/formatter config in place?
61
- - Do README, LICENSE, SECURITY.md, CHANGELOG.md exist?
62
- - Git state: branch count, last commit date, tags
63
- ```
64
-
65
- ## Step 2: ANALYZE - 10 categories
66
-
67
- | # | Category | What to check |
68
- |---|----------|-------------------|
69
- | 1 | **Architecture** | Layer separation, modularity, SOLID, dependency direction |
70
- | 2 | **Code Quality** | Naming, magic numbers, dead code, complexity, DRY |
71
- | 3 | **Security** | Hardcoded secrets, input validation, Keychain, ATS, ATT |
72
- | 4 | **Tests** | Coverage, test pyramid, edge cases, mock/stub quality |
73
- | 5 | **CI/CD** | Build matrix, lint job, release automation, artifact caching |
74
- | 6 | **Docs** | README quality, JSDoc / Swift docs, API docs, CHANGELOG |
75
- | 7 | **Performance** | Bundle size, lazy loading, memory leaks, unnecessary re-renders |
76
- | 8 | **Accessibility** | a11y labels, tap targets, VoiceOver, Dynamic Type |
77
- | 9 | **Dependency Management** | Outdated deps, vulnerability scan, lockfile, version pinning |
78
- | 10 | **DevEx** | Onboarding time, script ergonomics, error messages, debug tooling |
79
-
80
- ## Step 3: SCORE
81
-
82
- Her kategori 10 uzerinden puanlanir. Output format:
83
-
84
- ```
85
- +---------------------+-------+
86
- | Category | Score |
87
- +---------------------+-------+
88
- | Architecture | 9/10 |
89
- | Code Quality | 8/10 |
90
- | Security | 9/10 |
91
- | Tests | 7/10 |
92
- | CI/CD | 8/10 |
93
- | Docs | 7/10 |
94
- | Performance | 9/10 |
95
- | Accessibility | 6/10 |
96
- | Dependency Mgmt | 8/10 |
97
- | DevEx | 9/10 |
98
- +---------------------+-------+
99
- | TOTAL | 80/100|
100
- +---------------------+-------+
101
- ```
102
-
103
- ## Step 4: PLAN
104
-
105
- List every improvement found:
106
-
107
- ```
108
- | # | Priority | Category | Improvement | Impact |
109
- |---|---------|----------|-------------|------|
110
- | 1 | P0 | Security | Remove hardcoded API key | Critical |
111
- | 2 | P0 | Tests | Missing edge-case tests | High |
112
- | 3 | P1 | CI/CD | Add Node matrix | Medium |
113
- | 4 | P1 | Docs | Functions missing JSDoc | Medium |
114
- | 5 | P2 | DevEx | npm script naming | Low |
115
- ```
116
-
117
- Priority levels:
118
- - **P0**: bugs, security holes, broken functionality - MUST fix
119
- - **P1**: clear quality improvement - should be done
120
- - **P2**: nice-to-have - if time allows
121
-
122
- ## Step 5: ASK - user approval
123
-
124
- After showing the plan, ask:
125
-
126
- > "Found X improvements (P0: N, P1: M, P2: K). Should I start the work?"
127
-
128
- Options:
129
- - "Yes, do all"
130
- - "Only P0"
131
- - "P0 + P1 only"
132
- - (the user may pick specific items)
133
-
134
- **NEVER start the work without approval.**
135
-
136
- ## Step 6: IMPLEMENT
137
-
138
- Apply the approved improvements one by one:
139
-
140
- 1. For each improvement:
141
- - apply the change
142
- - run the relevant tests
143
- - on success, move to the next
144
- - On failure, roll back and notify the user
145
- 2. After all changes are done:
146
- - run the full lint + test suite
147
- - on success, commit
148
-
149
- Commit format: `refactor(scope): {short description}`
150
-
151
- ## Step 7: VERIFY
152
-
153
- ```bash
154
- # Lint
155
- npm run lint 2>/dev/null || swift build 2>/dev/null
156
-
157
- # Test
158
- npm test 2>/dev/null || swift test 2>/dev/null || xcodebuild test 2>/dev/null
159
-
160
- # Result
161
- echo "Lint: PASS/FAIL"
162
- echo "Test: PASS/FAIL (X/Y passed)"
163
- ```
164
-
165
- ## Step 8: ASK SYNC
166
-
167
- After every improvement is applied, ask:
168
-
169
- > "Work is complete. Should I run multi-agent-sync?"
170
-
171
- Options:
172
- - "Yes" → run the `/sync` command (full ecosystem sync)
173
- - "No" → emit a report and stop
174
- - "Commit + push only" → push the current repo without sync
175
-
176
- ## Focus filter
177
-
178
- If $ARGUMENTS is set, focus on that category only:
179
-
180
- | Input | Focus |
181
- |-------|------|
182
- | `security` | Security analysis only |
183
- | `tests` | Test coverage and quality only |
184
- | `performance` | Performance optimisation only |
185
- | `docs` | Docs only |
186
- | `ci` | CI/CD pipeline only |
187
- | `deps` | Dependency updates only |
188
- | (empty) | All 10 categories (default) |
@@ -1,92 +0,0 @@
1
- # Component Dispatch (Phase 3 short-circuit)
2
-
3
- > **TLDR** - When `taskType === "component"` (Figma URL in task description or instruction-driven figma workflow), multi-agent Phase 3 **does not run the TDD loop**. It delegates the entire phase to the `figma-to-component` skill and relays its subphases 3.0 - 3.8 via the existing phase-tracker contract. Implementation lives in the skill; multi-agent's job is classification, dispatch, and state report.
4
-
5
- This doc is referenced from `refs/phases/phase-3-dev.md`. Keeping it separate lets `phase-3-dev.md` remain tight (it's already the largest phase doc) and gives the orchestrator-report contract a stable URL for both Claude-side and Copilot-side implementations.
6
-
7
- ## Entry conditions
8
-
9
- Phase 3 checks, in order:
10
-
11
- 1. `agent-state.json` has `taskType: "component"` (set by Phase 0 Step 7).
12
- 2. `agent-state.json` has a non-null `figmaUrl`.
13
-
14
- Either missing → log the anomaly to `agent-log.md` ("component dispatch expected but state incomplete"), fall through to the standard TDD path. Never silently skip the Figma work.
15
-
16
- ## Orchestrator resolution
17
-
18
- ```
19
- project.platform → orchestrator skill
20
- ────────────────────────────────────────────────────────────────
21
- ios → pipeline/skills/figma-ios/figma-to-component/
22
- android → pipeline/skills/figma-android/figma-to-component/
23
- web, multi-* → HALT with clear error (no web target)
24
- ```
25
-
26
- If the chosen skill directory is missing, **halt with a user-visible error**. Do not silently fall back to TDD - a component task ran through the bugfix path would produce wrong artefacts and waste review cycles.
27
-
28
- ## Dispatch call
29
-
30
- Emit `→ dispatching figma-to-component <componentName>` via the progress contract, then launch a single agent invocation on the orchestrator skill with:
31
-
32
- - `figmaUrl` - primary positional argument
33
- - `agentState` - the path to `agent-state.json` so the orchestrator enriches `state.phases["3"].subphases[]`
34
- - `progressVerbosity` - forced to `verbose` when multi-agent runs in `mode: "autopilot"`; otherwise inherits `prefs.global.settings.progressVerbosity`
35
- - `mode` - `"dev"` for `--dev` runs; `"full"` otherwise
36
-
37
- ## Subphase contract
38
-
39
- The orchestrator writes each of its 8 subphases to `state.phases["3"].subphases[]` as it completes, with the shape:
40
-
41
- ```json
42
- {
43
- "id": "3.4a",
44
- "name": "4A-Configuration",
45
- "status": "done",
46
- "startedAt": "2026-04-16T18:12:02Z",
47
- "endedAt": "2026-04-16T18:13:47Z",
48
- "buildStatus": "green",
49
- "testStatus": "green"
50
- }
51
- ```
52
-
53
- Multi-agent's `phase-tracker` reads this array without any component-specific code - the tracker UI renders one row per subphase under the Phase 3 row. No new phase-tracker field is required.
54
-
55
- ## Multi-repo report
56
-
57
- When multi-repo mode is active (`state.projects.length > 1`), the orchestrator reads `state.projects[]` and runs subphases against the correct per-repo worktree:
58
-
59
- - Tokens, accessibility metadata, testing identifiers, localisation keys → `repos.common`
60
- - View / Configuration / Modifiers / Preview → `repos.components`
61
- - Wiki markdown → `repos.wiki` (if `wiki.mode === submodule` or `separate-repo`) or `repos.components/.wiki/components/` (if `wiki.mode === in-repo`)
62
-
63
- Multi-agent does **not** split the component task into per-repo Phase 3 runs - the orchestrator is aware of the repo graph and sequences writes correctly (e.g. token writes to `common` precede component reads in `components`).
64
-
65
- ## Failure + resume
66
-
67
- On orchestrator failure (subphase hits a build/test error that can't auto-fix, or hits retry cap):
68
-
69
- 1. The orchestrator persists `{subphase, error, buildLog, testLog}` to `state.phases["3"].errors[]`.
70
- 2. Multi-agent increments `state.phases["3"].retryCount`.
71
- 3. Retry re-enters the orchestrator with `phase-<N>` as the argument (the failed subphase), so the skill resumes instead of restarting.
72
- 4. Hard kill at `retryCount === 3` → surface the errors to the user, halt Phase 3. Do not loop indefinitely.
73
-
74
- ## `--dev` mode behaviour
75
-
76
- When multi-agent is invoked with `--dev` (fast path: Init → Dev → Commit → Report), the orchestrator receives `mode: "dev"` and is allowed to elide:
77
-
78
- - Subphase 5C (unit tests) - structural + snapshot are still required
79
- - Subphase 7 (wiki) - can be deferred; Phase 7 in multi-agent will ask the user whether to run it post-commit
80
-
81
- Phase 4 reviewer-skipping is **not** Phase 3's concern - Phase 4 decides based on `mode: "dev"` itself.
82
-
83
- ## Cross-CLI parity
84
-
85
- Both Claude Code and Copilot CLI implementations MUST:
86
-
87
- - Use the same orchestrator resolution table (ios / android / halt).
88
- - Emit byte-identical progress lines (`→ dispatching figma-to-component <name>`).
89
- - Write the same `state.phases["3"].subphases[]` schema.
90
- - Treat `--dev` the same way (elide 5C + 7 by default, no reviewer skip).
91
-
92
- `smoke-cross-cli-behavior.sh` asserts this contract.
@@ -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