@mmerterden/multi-agent-pipeline 11.2.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 (331) hide show
  1. package/CHANGELOG.md +37 -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 +33 -15
  8. package/install/copilot.mjs +16 -14
  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/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  35. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  38. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  39. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  60. package/pipeline/preferences-template.json +17 -1
  61. package/pipeline/rules/figma-pipeline.md +2 -2
  62. package/pipeline/schemas/prefs.schema.json +0 -34
  63. package/pipeline/scripts/README.md +1 -3
  64. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  65. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  66. package/pipeline/scripts/phase-banner.sh +2 -2
  67. package/pipeline/scripts/review-scope.mjs +94 -0
  68. package/pipeline/scripts/scan-agent-config.sh +2 -2
  69. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  70. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  71. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  72. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  73. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  74. package/pipeline/scripts/smoke-clarify.sh +1 -1
  75. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  76. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  77. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  78. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  79. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  80. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  81. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  82. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  83. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  84. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  85. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  86. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  87. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  88. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  89. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  90. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  91. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  92. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  93. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  94. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  95. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  96. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  97. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  98. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  99. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  100. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  101. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  102. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  103. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  104. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  105. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  106. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  107. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  108. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  109. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  110. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  111. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  112. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  113. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  114. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  115. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  116. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  117. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  118. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  119. package/pipeline/scripts/smoke-update-check.sh +1 -1
  120. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  121. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  122. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  123. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  124. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  125. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  126. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  127. package/pipeline/scripts/uninstall.mjs +2 -2
  128. package/pipeline/skills/.skill-manifest.json +40 -160
  129. package/pipeline/skills/.skills-index.json +3 -372
  130. package/pipeline/skills/shared/README.md +1 -1
  131. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  132. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  133. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  134. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  137. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  138. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  139. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  140. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  141. package/pipeline/skills/skills-index.md +2 -43
  142. package/pipeline/commands/multi-agent/refactor.md +0 -188
  143. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  144. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  145. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  146. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  147. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  148. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  149. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  150. package/pipeline/skills/figma-android/README.md +0 -38
  151. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  152. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  153. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  154. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  155. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  156. package/pipeline/skills/figma-common/README.md +0 -64
  157. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  158. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  159. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  160. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  161. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  162. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  163. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  164. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  165. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  166. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  167. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  168. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  169. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  170. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  171. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  172. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  173. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  174. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  175. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  176. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  177. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  178. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  179. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  180. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  181. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  182. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  183. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  184. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  185. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  186. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  187. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  188. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  189. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  190. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  191. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  192. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  193. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  194. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  195. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  196. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  197. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  198. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  199. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  200. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  201. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  202. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  203. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  232. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  233. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  234. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  235. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  253. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  254. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  255. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  256. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  294. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  295. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  296. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  297. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  298. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  310. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  311. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  312. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  313. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  314. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  331. /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