@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,176 +0,0 @@
1
- #!/bin/bash
2
- # validate-phase4.sh - Post-Phase 4 validation for Figma-to-SwiftUI components
3
- # Runs after Phase 4 COLLECT_RESULTS, before UPDATE_IMPLEMENTATION_HISTORY.
4
- #
5
- # Usage: validate-phase4.sh <component-location> <component-name> [coverage-json-path]
6
- #
7
- # Arguments:
8
- # component-location Path to component directory (e.g., Sources/UIComponents/.../LabelBadge/)
9
- # component-name PascalCase component name (e.g., LabelBadge)
10
- # coverage-json-path Optional path to pass3/00_property_coverage.json
11
- #
12
- # Exit codes:
13
- # 0 - All checks passed
14
- # 1 - One or more violations found
15
-
16
- set -euo pipefail
17
-
18
- COMPONENT_LOCATION="${1:?Usage: validate-phase4.sh <component-location> <component-name> [coverage-json-path]}"
19
- COMPONENT_NAME="${2:?Usage: validate-phase4.sh <component-location> <component-name> [coverage-json-path]}"
20
- COVERAGE_JSON="${3:-}"
21
-
22
- VIEW_FILE="${COMPONENT_LOCATION}/${COMPONENT_NAME}.swift"
23
- VIOLATIONS=()
24
-
25
- # --- Helper ---
26
- add_violation() {
27
- VIOLATIONS+=("$1")
28
- echo "FAIL: $1"
29
- }
30
-
31
- # --- Check 0: File exists ---
32
- if [[ ! -f "$VIEW_FILE" ]]; then
33
- echo "FAIL: View file not found: $VIEW_FILE"
34
- exit 1
35
- fi
36
-
37
- echo "Validating: $VIEW_FILE"
38
- echo "---"
39
-
40
- # --- Check 1: No top-level enums ---
41
- # Top-level enums are at zero indentation (no leading whitespace).
42
- # Allowed: extensions on nested types (extension ComponentName.TypeName)
43
- if grep -nE '^(public |internal |private |fileprivate )?enum ' "$VIEW_FILE" | grep -v '^ ' | head -20 > /tmp/validate_toplevel_enums.txt 2>/dev/null; then
44
- while IFS= read -r line; do
45
- # Skip if it's inside a struct (check indentation - truly zero-indent lines only)
46
- linenum=$(echo "$line" | cut -d: -f1)
47
- content=$(sed -n "${linenum}p" "$VIEW_FILE")
48
- # Check if line starts with no whitespace
49
- if [[ "$content" =~ ^[[:space:]] ]]; then
50
- continue # indented = inside struct, OK
51
- fi
52
- add_violation "Top-level enum at line $linenum: $content"
53
- done < /tmp/validate_toplevel_enums.txt
54
- fi
55
-
56
- # --- Check 2: No hardcoded accessibility strings ---
57
- # .accessibilityLabel("...") with literal English strings is forbidden.
58
- # Allowed: .accessibilityLabel(variable) or .accessibilityLabel(.Key.something)
59
- if grep -nE '\.accessibilityLabel\("[^"]+"\)' "$VIEW_FILE" > /tmp/validate_a11y.txt 2>/dev/null; then
60
- while IFS= read -r line; do
61
- add_violation "Hardcoded accessibility string at $line"
62
- done < /tmp/validate_a11y.txt
63
- fi
64
-
65
- # --- Check 3: No magic numbers in body ---
66
- # Scan the body section for bare numeric literals not inside Constants., .Spacing., .Radius., .Size., .Font.
67
- # We look for patterns like: width: 24, height: 16, spacing: 8, cornerRadius: 12
68
- # Excluding: line numbers, array indices, opacity values (0...1), and enum raw values
69
- BODY_START=$(grep -n 'var body: some View' "$VIEW_FILE" | head -1 | cut -d: -f1)
70
- if [[ -n "$BODY_START" ]]; then
71
- BODY_CONTENT=$(tail -n +"$BODY_START" "$VIEW_FILE")
72
- # Look for numeric CGFloat/dimension patterns in body
73
- echo "$BODY_CONTENT" | grep -nE '(width|height|spacing|cornerRadius|padding|size|offset|radius).*: [0-9]+(\.[0-9]+)?' | \
74
- grep -v 'Constants\.' | \
75
- grep -v '\.Spacing\.' | \
76
- grep -v '\.Radius\.' | \
77
- grep -v '\.Size\.' | \
78
- grep -v '\.Font\.' | \
79
- grep -v '//' > /tmp/validate_magic.txt 2>/dev/null || true
80
- while IFS= read -r line; do
81
- [[ -z "$line" ]] && continue
82
- adjusted_linenum=$((BODY_START + $(echo "$line" | cut -d: -f1) - 1))
83
- content=$(echo "$line" | cut -d: -f2-)
84
- add_violation "Possible magic number in body at line $adjusted_linenum:$content"
85
- done < /tmp/validate_magic.txt
86
- fi
87
-
88
- # --- Check 4: Constants placement ---
89
- # If enum Constants exists, it must be indented (inside the struct), not at file scope.
90
- if grep -n 'enum Constants' "$VIEW_FILE" > /dev/null 2>&1; then
91
- CONSTANTS_LINE=$(grep -n 'enum Constants' "$VIEW_FILE" | head -1)
92
- LINENUM=$(echo "$CONSTANTS_LINE" | cut -d: -f1)
93
- CONTENT=$(sed -n "${LINENUM}p" "$VIEW_FILE")
94
- # Check that it has leading whitespace (is indented = inside struct)
95
- if [[ ! "$CONTENT" =~ ^[[:space:]]+ ]]; then
96
- add_violation "Constants enum at file scope (line $LINENUM) - must be nested inside View struct"
97
- fi
98
- # Check it's private
99
- if ! echo "$CONTENT" | grep -q 'private'; then
100
- add_violation "Constants enum is not private (line $LINENUM) - must be 'private enum Constants'"
101
- fi
102
- fi
103
-
104
- # --- Check 5: Property coverage ---
105
- # If coverage JSON is provided, check each IMPLEMENT property has a corresponding Swift parameter.
106
- if [[ -n "$COVERAGE_JSON" && -f "$COVERAGE_JSON" ]]; then
107
- echo "Checking property coverage against: $COVERAGE_JSON"
108
- # Extract IMPLEMENT property names using python (available on macOS)
109
- IMPLEMENT_PROPS=$(python3 -c "
110
- import json, sys
111
- with open('$COVERAGE_JSON') as f:
112
- data = json.load(f)
113
- for p in data.get('properties', []):
114
- if p.get('status') == 'IMPLEMENT':
115
- # Convert display name to likely Swift parameter name (camelCase)
116
- name = p['name'].lstrip('\u21aa ').strip()
117
- # Simple conversion: lowercase first char, remove spaces
118
- words = name.split()
119
- if len(words) > 1:
120
- swift_name = words[0].lower() + ''.join(w.capitalize() for w in words[1:])
121
- else:
122
- swift_name = name[0].lower() + name[1:]
123
- print(f'{name}|{swift_name}|{p.get(\"swiftType\", \"unknown\")}')
124
- " 2>/dev/null || true)
125
-
126
- if [[ -n "$IMPLEMENT_PROPS" ]]; then
127
- while IFS='|' read -r display_name swift_name swift_type; do
128
- # Check if the swift name appears in the file (as parameter or property)
129
- if ! grep -qi "$swift_name" "$VIEW_FILE" 2>/dev/null; then
130
- # Also try the display name lowercased
131
- lower_display=$(echo "$display_name" | tr '[:upper:]' '[:lower:]')
132
- if ! grep -qi "$lower_display" "$VIEW_FILE" 2>/dev/null; then
133
- # Also try the enum/type name from swiftType (e.g., "enum IconPosition" -> "IconPosition")
134
- type_name=$(echo "$swift_type" | sed 's/^enum //' | sed 's/\?$//')
135
- if [[ -n "$type_name" ]] && grep -qi "$type_name" "$VIEW_FILE" 2>/dev/null; then
136
- : # Found via type name - property exists with a renamed parameter
137
- else
138
- add_violation "IMPLEMENT property '$display_name' (expected: $swift_name: $swift_type) not found in view"
139
- fi
140
- fi
141
- fi
142
- done <<< "$IMPLEMENT_PROPS"
143
- fi
144
- fi
145
-
146
- # --- Check 6: Preview struct pattern ---
147
- # Verify {ComponentName}Preview struct exists and dual #Preview blocks (LTR + RTL)
148
- PREVIEW_STRUCT="${COMPONENT_NAME}Preview"
149
- if ! grep -q "struct ${PREVIEW_STRUCT}" "$VIEW_FILE" 2>/dev/null; then
150
- add_violation "Preview struct '${PREVIEW_STRUCT}' not found in $VIEW_FILE"
151
- fi
152
-
153
- RTL_PREVIEW_STRUCT="${COMPONENT_NAME}RTLPreview"
154
- if ! grep -q "struct ${RTL_PREVIEW_STRUCT}" "$VIEW_FILE" 2>/dev/null; then
155
- add_violation "RTL Preview struct '${RTL_PREVIEW_STRUCT}' not found in $VIEW_FILE"
156
- fi
157
-
158
- PREVIEW_COUNT=$(grep -c '#Preview' "$VIEW_FILE" 2>/dev/null | tr -d '[:space:]' || echo "0")
159
- if [[ "$PREVIEW_COUNT" -eq 0 ]]; then
160
- add_violation "No #Preview block found in $VIEW_FILE"
161
- elif [[ "$PREVIEW_COUNT" -gt 2 ]]; then
162
- add_violation "Too many #Preview blocks found ($PREVIEW_COUNT) - expected 2 (LTR + RTL)"
163
- fi
164
-
165
- # --- Summary ---
166
- echo "---"
167
- if [[ ${#VIOLATIONS[@]} -eq 0 ]]; then
168
- echo "PASS: All Phase 4 validation checks passed."
169
- exit 0
170
- else
171
- echo "VIOLATIONS: ${#VIOLATIONS[@]} found"
172
- for v in "${VIOLATIONS[@]}"; do
173
- echo " - $v"
174
- done
175
- exit 1
176
- fi
@@ -1,147 +0,0 @@
1
- #!/bin/bash
2
- # validate-phase6.sh - Post-Phase 6 validation for Code Connect files
3
- # Runs after Phase 6 CREATE_FIGMA_SWIFT, before VALIDATE (figma connect parse).
4
- #
5
- # Usage: validate-phase6.sh <figma-swift-path> <component-name> [component-properties-json]
6
- #
7
- # Arguments:
8
- # figma-swift-path Path to .figma.swift file
9
- # component-name PascalCase component name (e.g., LabelBadge)
10
- # component-properties-json Optional path to pass1/component_properties.json
11
- #
12
- # Exit codes:
13
- # 0 - All checks passed
14
- # 1 - One or more violations found
15
-
16
- set -euo pipefail
17
-
18
- FIGMA_SWIFT="${1:?Usage: validate-phase6.sh <figma-swift-path> <component-name> [component-properties-json]}"
19
- COMPONENT_NAME="${2:?Usage: validate-phase6.sh <figma-swift-path> <component-name> [component-properties-json]}"
20
- PROPERTIES_JSON="${3:-}"
21
-
22
- VIOLATIONS=()
23
-
24
- # --- Helper ---
25
- add_violation() {
26
- VIOLATIONS+=("$1")
27
- echo "FAIL: $1"
28
- }
29
-
30
- # --- Check 0: File exists ---
31
- if [[ ! -f "$FIGMA_SWIFT" ]]; then
32
- echo "FAIL: Figma Swift file not found: $FIGMA_SWIFT"
33
- exit 1
34
- fi
35
-
36
- echo "Validating: $FIGMA_SWIFT"
37
- echo "---"
38
-
39
- # --- Check 1: Implicit enum shorthand ---
40
- # Code Connect MUST use implicit shorthand (.case) not fully-qualified (ComponentName.EnumType.case)
41
- # Look for patterns like: ComponentName.SomeType.someCase
42
- if grep -nE "${COMPONENT_NAME}\.[A-Z][a-zA-Z]+\.[a-z]" "$FIGMA_SWIFT" > /tmp/validate_enum_qualified.txt 2>/dev/null; then
43
- while IFS= read -r line; do
44
- # Exclude comments
45
- content=$(echo "$line" | cut -d: -f2-)
46
- if [[ "$content" =~ ^[[:space:]]*//.* ]]; then
47
- continue
48
- fi
49
- add_violation "Fully-qualified enum path at $line - use implicit shorthand (.case) instead"
50
- done < /tmp/validate_enum_qualified.txt
51
- fi
52
-
53
- # Also check for Configuration. prefix in enum values (another common pattern)
54
- if grep -nE 'Configuration\.[A-Z][a-zA-Z]+\.[a-z]' "$FIGMA_SWIFT" > /tmp/validate_config_qualified.txt 2>/dev/null; then
55
- while IFS= read -r line; do
56
- content=$(echo "$line" | cut -d: -f2-)
57
- if [[ "$content" =~ ^[[:space:]]*//.* ]]; then
58
- continue
59
- fi
60
- add_violation "Fully-qualified Configuration enum path at $line - use implicit shorthand (.case)"
61
- done < /tmp/validate_config_qualified.txt
62
- fi
63
-
64
- # --- Check 2: Property coverage ---
65
- # If component_properties.json is provided, verify @Figma annotations cover the properties.
66
- if [[ -n "$PROPERTIES_JSON" && -f "$PROPERTIES_JSON" ]]; then
67
- echo "Checking property coverage against: $PROPERTIES_JSON"
68
-
69
- # Extract property names from component_properties.json
70
- FIGMA_PROPS=$(python3 -c "
71
- import json, sys
72
- with open('$PROPERTIES_JSON') as f:
73
- data = json.load(f)
74
-
75
- # Navigate to componentPropertyDefinitions
76
- comp_defs = None
77
- if 'componentPropertyDefinitions' in data:
78
- comp_defs = data['componentPropertyDefinitions']
79
- elif 'nodes' in data:
80
- for node_id, node_data in data['nodes'].items():
81
- doc = node_data.get('document', {})
82
- if 'componentPropertyDefinitions' in doc:
83
- comp_defs = doc['componentPropertyDefinitions']
84
- break
85
-
86
- if comp_defs:
87
- for key, prop in comp_defs.items():
88
- prop_type = prop.get('type', 'UNKNOWN')
89
- # Extract display name (before #)
90
- name = key.split('#')[0]
91
- print(f'{name}|{prop_type}')
92
- " 2>/dev/null || true)
93
-
94
- if [[ -n "$FIGMA_PROPS" ]]; then
95
- TOTAL=0
96
- MAPPED=0
97
- UNMAPPED_LIST=""
98
-
99
- while IFS='|' read -r prop_name prop_type; do
100
- TOTAL=$((TOTAL + 1))
101
- # Check if this property is referenced in .figma.swift
102
- # Look for @FigmaEnum, @FigmaBoolean, @FigmaString, @FigmaInstance annotations
103
- # or the property name in mapping closures
104
- if grep -qi "$prop_name" "$FIGMA_SWIFT" 2>/dev/null; then
105
- MAPPED=$((MAPPED + 1))
106
- else
107
- UNMAPPED_LIST="${UNMAPPED_LIST} - $prop_name ($prop_type)\n"
108
- fi
109
- done <<< "$FIGMA_PROPS"
110
-
111
- if [[ -n "$UNMAPPED_LIST" ]]; then
112
- echo "WARNING: $((TOTAL - MAPPED))/$TOTAL properties not found in .figma.swift:"
113
- echo -e "$UNMAPPED_LIST"
114
- # This is a warning, not a hard failure - some properties may be intentionally skipped
115
- # Only fail if more than half are missing
116
- if [[ $((TOTAL - MAPPED)) -gt $((TOTAL / 2)) ]]; then
117
- add_violation "More than half of Figma properties ($((TOTAL - MAPPED))/$TOTAL) not mapped in Code Connect"
118
- fi
119
- else
120
- echo "OK: All $TOTAL Figma properties found in .figma.swift"
121
- fi
122
- fi
123
- fi
124
-
125
- # --- Check 3: Basic structure ---
126
- # Verify the file conforms to FigmaConnect protocol (": FigmaConnect")
127
- if ! grep -q ': FigmaConnect' "$FIGMA_SWIFT" 2>/dev/null; then
128
- add_violation "No FigmaConnect protocol conformance found (': FigmaConnect') - not a valid Code Connect file"
129
- fi
130
-
131
- # Verify the file references the component name
132
- if ! grep -q "$COMPONENT_NAME" "$FIGMA_SWIFT" 2>/dev/null; then
133
- add_violation "Component name '$COMPONENT_NAME' not found in .figma.swift"
134
- fi
135
-
136
- # --- Summary ---
137
- echo "---"
138
- if [[ ${#VIOLATIONS[@]} -eq 0 ]]; then
139
- echo "PASS: All Phase 6 validation checks passed."
140
- exit 0
141
- else
142
- echo "VIOLATIONS: ${#VIOLATIONS[@]} found"
143
- for v in "${VIOLATIONS[@]}"; do
144
- echo " - $v"
145
- done
146
- exit 1
147
- fi