@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,288 +0,0 @@
1
- ---
2
- name: figma-cli-lean-iterate
3
- description: Runs a lean Figma-to-SwiftUI pipeline for one or more issues: pick → start → implement (phases 0-4) → code connect (phase 6) → commit. Skips testing (phase 5) and wiki (phase 7).
4
- ---
5
-
6
- # /figma-cli-lean-iterate - Lean Pipeline Orchestrator for CLI
7
-
8
- ## Purpose
9
-
10
- Runs a **lean** Figma-to-SwiftUI pipeline for one or more issues: pick → start → implement (phases 0-4) → code connect (phase 6) → commit. **Skips testing (phase 5) and wiki (phase 7).** Returns a structured `ORCHESTRATOR_RESULT` block that the CLI orchestrator can parse.
11
-
12
- This skill is identical in structure to `/figma-cli-iterate` - the only difference is that phases 5 and 7 are omitted. Use this when you want a faster turnaround and will run tests/wiki separately (or not at all).
13
-
14
- This skill IS the orchestrator. It dispatches **only leaf-phase subagents** - individual phase instruction files that read one doc, execute gates, and return. It never delegates to multi-phase meta-skills.
15
-
16
- ## Forbidden Dispatches
17
-
18
- **NEVER dispatch these as subagents - they are orchestrators that would try to dispatch further:**
19
-
20
- - `/figma-to-swift-ui-implement` (Phases 0-4)
21
- - `/figma-to-swift-ui-test` (Phase 5)
22
- - `/figma-to-swift-ui-code-connect` (Phase 6)
23
- - `/figma-to-swift-ui-wiki` (Phase 7)
24
- - `/figma-iteration-commit`
25
- - `/figma-to-swiftui` (entire pipeline)
26
-
27
- Instead, dispatch the **leaf phase instruction files** directly via Agent tool.
28
-
29
- ## Parameters
30
-
31
- ```
32
- /figma-cli-lean-iterate #230 ← implement specific issue (lean)
33
- /figma-cli-lean-iterate ← auto-pick next available (lean)
34
- ```
35
-
36
- ---
37
-
38
- ## Constants
39
-
40
- ```
41
- GH_REPO = {github.componentsRepo}
42
- REPO_ROOT = git repo root (auto-detect)
43
- COMMON = ${REPO_ROOT}/{repos.common.path}
44
- UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
45
- PHASE_DIR = .instructions/figma/figma-to-swiftui/phases
46
- REF_DIR = .instructions/figma/figma-to-swiftui/reference
47
- SCRIPT_DIR = .instructions/figma/figma-to-swiftui/scripts
48
- ```
49
-
50
- Note: the `WIKI` submodule is intentionally omitted from the constants - the lean flow never touches it.
51
-
52
- ---
53
-
54
- ## STEP 0 - Pick Issue
55
-
56
- Same logic as `/figma-iterate` STEP 0. Read `.instructions/figma/figma-iterate/SKILL.md` STEP 0 for details.
57
-
58
- Extract from issue body: `componentName`, `figmaUrl`, `nodeId`, `jiraKey`, `registryName`, `figmaPage`, `acceptanceCriteria`.
59
-
60
- ---
61
-
62
- ## STEP 1 - Start
63
-
64
- Run inline (not as a skill). Read `.instructions/figma/figma-to-swift-ui-start/SKILL.md` for the full procedure:
65
-
66
- 1. Parse issue → extract metadata
67
- 2. Fetch latest → checkout `develop` (main stays on develop, NO feature branch), `iteration/develop` (submodules)
68
- 3. Create feature branches on **submodules only** (common, uicomponents) - wiki submodule is NOT checked out
69
- 4. Registry lookup → `componentLocation`, `artifactPath`
70
- 5. Save specs artifact if acceptance criteria exist
71
- 6. Assign (GitHub + Jira)
72
- 7. **Move GitHub issue to "In Develop" on the Projects V2 board** - required. Read STEP 5 of the start skill. Run both GraphQL mutations: set Status option `bc6c45f7` (In Develop) and Phase option `0577dcda` (Implementation). Do NOT skip this - new issues are created with Status=Todo, so this transition is how the board reflects "someone is working on it".
73
-
74
- ---
75
-
76
- ## required PRE-READ
77
-
78
- Before dispatching any phase subagent, read:
79
- ${REF_DIR}/orchestrator-discipline.md
80
-
81
- These 6 rules govern orchestrator behavior. Violations have caused repeated failures. Follow them strictly.
82
-
83
- ---
84
-
85
- ## STEP 2 - Implement (Phases 0-4, 6)
86
-
87
- This is the core orchestration. Run each phase by dispatching leaf subagents and scripts.
88
-
89
- **Phases 5 (testing) and 7 (wiki) are INTENTIONALLY skipped in the lean flow.** The `status.ios.tested` and `status.ios.wiki` registry flags will remain their previous values.
90
-
91
- ### Spec Injection (Option A)
92
-
93
- Before dispatching any Phase 4+ subagent, check if `{artifactPath}/pass0/specs.md` exists. If it does:
94
- 1. Read the specs
95
- 2. Extract concrete requirements
96
- 3. Inject them as **CRITICAL SPEC GATES** in the subagent dispatch prompt - NOT as a sidecar "also read this file" instruction
97
-
98
- This ensures spec requirements become indistinguishable from standard gates.
99
-
100
- ### Phase Dispatch Table
101
-
102
- All instruction files relative to `${PHASE_DIR}/`.
103
-
104
- | Phase | Instruction | Model | Subagent? |
105
- |-------|-------------|-------|-----------|
106
- | 0 | `phase-0-init.md` | opus | Yes (leaf) |
107
- | 1 | `${SCRIPT_DIR}/phase1-gather.py` | N/A | No (script) |
108
- | 2A | `phase-2a-testing-identifiers.md` | opus | Yes (leaf) |
109
- | 2B | `phase-2b-localization.md` | sonnet | Yes (leaf) |
110
- | 2C | `phase-2c-accessibility.md` | opus | Yes (leaf) |
111
- | 2D | `phase-2d-analytics.md` | sonnet | Yes (leaf) |
112
- | 3A | `phase-3a-location.md` | sonnet | Yes (leaf) |
113
- | 3C | `phase-3c-nested.md` | sonnet | Yes (leaf) |
114
- | 3H | `phase-3h-variant-config.md` | opus | Yes (leaf) |
115
- | 3D | `phase-3d-patterns.md` | opus | Yes (leaf) |
116
- | 4A | `phase-4a-configuration.md` | opus | Yes (leaf, COMPLEX only) |
117
- | 4B | `phase-4b-view.md` | opus | Yes (leaf) |
118
- | 4C | `phase-4c-documentation.md` | sonnet | Yes (leaf) |
119
- | 4D | `phase-4d-preview.md` | sonnet | Yes (leaf) |
120
- | 4E | `phase-4e-modifiers.md` | sonnet | Yes (leaf, COMPLEX only) |
121
- | ~~5A~~ | *(skipped - lean)* | - | - |
122
- | ~~5B~~ | *(skipped - lean)* | - | - |
123
- | ~~5C~~ | *(skipped - lean)* | - | - |
124
- | 6 | `phase-6-code-connect.md` | opus | Yes (leaf) |
125
- | ~~7~~ | *(skipped - lean)* | - | - |
126
-
127
- ### Dispatch Prompt Template
128
-
129
- For each leaf subagent:
130
-
131
- ```
132
- You are executing {Phase Name} of the Figma-to-SwiftUI workflow (lean run - no testing, no wiki).
133
-
134
- ## Context
135
- - Component: {componentName}
136
- - File Key: {fileKey}
137
- - Node ID: {nodeId}
138
- - Artifact Path: {artifactPath}
139
- - Component Location: {componentLocation}
140
-
141
- ## CRITICAL SPEC GATES (only if specs exist)
142
- {Concrete requirements extracted from specs - phrased as mandatory instructions, not a file reference}
143
-
144
- ## Tool Restrictions
145
- {from dispatch table}
146
-
147
- ## Your Instructions
148
- Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
149
- {PHASE_DIR}/{instruction file}
150
-
151
- Read the return protocol from:
152
- {REF_DIR}/halt-return-protocol.md
153
-
154
- ## Reference Files
155
- {relevant reference files from the read-order table in figma-to-swiftui/SKILL.md}
156
-
157
- ## Previous Phase Artifacts
158
- {artifact paths in read order - compact first}
159
- ```
160
-
161
- ### Phase Execution Flow
162
-
163
- **Phase 0**: Dispatch subagent → verify `IMPLEMENTATION_HISTORY.md` created.
164
-
165
- **Phase 1**: Run script:
166
- ```bash
167
- python3 ${SCRIPT_DIR}/phase1-gather.py \
168
- --file-key "{fileKey}" --node-id "{nodeId}" \
169
- --artifact-path "{artifactPath}" --component-name "{componentName}"
170
- ```
171
- If `COMPLETE_WITH_DEFERRED` → dispatch Phase 1 deferred resolution subagent.
172
-
173
- **Phase 2**:
174
- 1. Pre-check: verify `pass1/_index.md`
175
- 2. Normalize: check sublayers in `design_context_response.json`
176
- 3. Registry lookup: `FigmaRegistryUtility utility-lookup --node-id '{nodeId}'`
177
- 4. Wave 1 (parallel): dispatch 2A + 2B + 2C subagents simultaneously
178
- 5. Wave 2: dispatch 2D subagent
179
- 6. Finalize: `python3 ${SCRIPT_DIR}/phase2-finalize.py ...`
180
-
181
- **Phase 3**:
182
- 1. Wave 1 (parallel): `python3 ${SCRIPT_DIR}/phase3-scripts.py wave1 ...` + dispatch 3A + 3C + 3H subagents
183
- 2. Missing token resolution: check `pass3/02_token_mapping.md` for "⚠️ not found". If any → dispatch resolution subagent
184
- 3. Wave 2: dispatch 3D subagent
185
- 4. Wave 3: `python3 ${SCRIPT_DIR}/phase3-scripts.py 3g ...`
186
- 5. Spec: `python3 ${SCRIPT_DIR}/phase3-scripts.py spec ...`
187
- 6. Write `pass3/_index.md`
188
-
189
- **Phase 4**:
190
- 1. Read `pass3/05_complexity.md` → SIMPLE or COMPLEX
191
- 2. Prepare directory: `mkdir -p {componentLocation}`
192
- 3. Wave 1 (parallel): dispatch 4B + 4C (+ 4A if COMPLEX)
193
- 4. Wave 2 (parallel): dispatch 4D (+ 4E if COMPLEX)
194
- 5. Validate: `bash ${SCRIPT_DIR}/validate-phase4.sh ...`
195
- 6. Build: `xcodebuild build ...` - fix errors if any
196
- 7. Registry finalize: `python3 ${SCRIPT_DIR}/phase4-finalize.py ...`
197
-
198
- **Phase 5 (TESTING)**: **SKIPPED - lean flow.** Do NOT switch Package.swift to local common. Do NOT dispatch 5A/5B/5C. Do NOT run tests. The `status.ios.tested` flag will stay at its previous value.
199
-
200
- **Phase 6**: Dispatch subagent → run `${SCRIPT_DIR}/phase6-finalize.py` as safety net.
201
-
202
- **Phase 7 (WIKI)**: **SKIPPED - lean flow.** Do NOT dispatch 7A. Do NOT touch the wiki submodule. The `status.ios.wiki` flag will stay at its previous value.
203
-
204
- ---
205
-
206
- ## STEP 3 - Commit
207
-
208
- Run inline. Read `.instructions/figma/figma-iteration-commit/SKILL.md` for the full procedure, with these lean-mode adjustments:
209
-
210
- 1. Rebase submodules to `iteration/develop` if on feature branch
211
- 2. Build validation
212
- 3. Commit to `iteration/develop` (**common → uicomponents only** - wiki submodule is intentionally untouched)
213
- 4. Push with rebase-retry loop
214
- 5. Clean up feature branches (common + uicomponents only)
215
- 6. Issue housekeeping (comment, progress table - but the Tests and Wiki rows stay at their previous state)
216
- 7. Auto-unblock dependents
217
-
218
- **Skip any step in `/figma-iteration-commit` that writes to or pushes the wiki submodule.**
219
-
220
- ---
221
-
222
- ## STEP 4 - Loop
223
-
224
- Same logic as `/figma-iterate` STEP 4. If specific issue → exit after one. If `--count` → decrement. Otherwise → pick next.
225
-
226
- ---
227
-
228
- ## STEP 5 - Output Result
229
-
230
- Output EXACTLY this block as your FINAL message. Nothing else after it.
231
-
232
- ### On success (per component):
233
-
234
- ```
235
- ORCHESTRATOR_RESULT:
236
- status: COMPLETE
237
- mode: lean
238
- issueNumber: <N>
239
- componentName: <name>
240
- figmaUrl: <url>
241
- nodeId: <nodeId>
242
- jiraKey: <key>
243
- commits:
244
- common: <SHA>
245
- uicomponents: <SHA>
246
- wiki: null # lean run - wiki not touched
247
- phases: [0, 1, 2, 3, 4, 6] # 5 and 7 intentionally omitted
248
- testsRun: 0 # lean run - no tests executed
249
- summary: <one-line>
250
- ```
251
-
252
- ### On failure:
253
-
254
- ```
255
- ORCHESTRATOR_RESULT:
256
- status: FAILED
257
- mode: lean
258
- issueNumber: <N>
259
- componentName: <name>
260
- failedPhase: <phase>
261
- reason: <exact reason>
262
- suggestion: <what to fix>
263
- ```
264
-
265
- ### On full iteration completion:
266
-
267
- ```
268
- ORCHESTRATOR_RESULT:
269
- status: ITERATION_COMPLETE
270
- mode: lean
271
- completed:
272
- - { issue: <N>, component: <name>, commits: { common: <SHA>, uicomponents: <SHA> } }
273
- failed:
274
- - { issue: <N>, component: <name>, phase: <phase>, reason: <reason> }
275
- remaining: <count>
276
- ```
277
-
278
- ---
279
-
280
- ## Error Handling
281
-
282
- - **No available issues**: Output ORCHESTRATOR_RESULT with status ITERATION_COMPLETE, empty completed/failed.
283
- - **Blocked issue**: Output FAILED.
284
- - **Phase HALT**: Show reason, ask user. If resolved → retry phase. If skipped → FAILED for this component, move to next.
285
- - **Build failure**: Attempt auto-fix. If unfixable → FAILED.
286
- - **3 consecutive failures**: Stop iteration.
287
- - **Subagents can't dispatch subagents**: This is why we dispatch only leaf phases. If a phase instruction file references dispatching subagents, ignore that - run its gates directly in the subagent.
288
- - **Accidental phase-5 / phase-7 dispatch**: If you catch yourself dispatching a 5A/5B/5C/7A subagent, STOP immediately. This is the lean flow - those phases must not run.
@@ -1,362 +0,0 @@
1
- ---
2
- name: figma-cli-skip
3
- description: CLI variant of /figma-skip - fetches origin iteration/develop on mobile-common, marks a Figma component as skipped in the registry, commits, pushes, and returns a structured ORCHESTRATOR_RESULT block for the CLI.
4
- user-invocable: true
5
- argument-hint: <figma-url> [<figma-url> ...] [--reason <reason>]
6
- allowed-tools: Bash, Read, Write, Edit
7
- status: wip-v5
8
- sourced-from: upstream/figma-cli-skip
9
- ---
10
-
11
- # /figma-cli-skip - CLI Skip Orchestrator
12
-
13
- ## Purpose
14
-
15
- CLI-friendly variant of `/figma-skip`. Marks one or more Figma components as
16
- skipped in the `mobile-common` component registry, then **commits and pushes
17
- to `origin/iteration/develop`** so the skip state is visible to other tools
18
- and teammates immediately. Returns a structured `ORCHESTRATOR_RESULT` block
19
- the CLI orchestrator can parse.
20
-
21
- This skill wraps the existing `/figma-skip` logic with:
22
- - A mandatory `git fetch origin iteration/develop` + fast-forward/rebase on
23
- `mobile-common` **before** touching registry files.
24
- - A mandatory commit + push on `mobile-common` **after** writing the registry
25
- entries and regenerating the catalog.
26
- - A structured machine-readable output block.
27
-
28
- It does **not** update Confluence (that's VPN-gated and not a CLI concern).
29
- Use `/figma-skip` directly when you need the Confluence dashboard refreshed.
30
-
31
- ## Forbidden Operations
32
-
33
- > **NEVER create branches on the main repo (REPO_ROOT).** This skill only
34
- > touches the `mobile-common` submodule. Main repo submodule pointer updates
35
- > are out of scope - handle them separately.
36
-
37
- > **NEVER commit unrelated working-tree changes.** Stage only the registry
38
- > JSON(s) you wrote and the catalog output files the `FigmaRegistryUtility
39
- > catalog` command produced. Use explicit file paths with `git add` - never
40
- > `git add -A` / `git add .`.
41
-
42
- > **NEVER skip hooks (`--no-verify`) or force-push.** If push is rejected
43
- > because the remote moved, rebase and retry; do not force.
44
-
45
- ## Parameters
46
-
47
- ```
48
- /figma-cli-skip https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
49
- /figma-cli-skip https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId} --reason "Cursor component, not needed on mobile"
50
- /figma-cli-skip <url1> <url2> <url3> --reason "Legacy components removed from scope"
51
- ```
52
-
53
- | Parameter | Required | Description |
54
- |-----------|----------|-------------|
55
- | `<figma-url>` | Yes | One or more Figma URLs (space-separated for batch). |
56
- | `--reason <reason>` | No | Free-form skip reason. Captured in the commit message body. |
57
-
58
- ### URL Parsing
59
-
60
- For each URL, extract:
61
- ```
62
- https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
63
- ```
64
- Convert `-` to `:` in node-id (e.g., `3-9045` → `3:9045`). The registry
65
- filename is `{nodeId-with-colon-replaced-by-dash}.json` (e.g., `3-9045.json`).
66
-
67
- ## Constants
68
-
69
- ```
70
- REPO_ROOT = git repo root (auto-detect via `git rev-parse --show-toplevel`)
71
- COMMON = ${REPO_ROOT}/{repos.common.path}
72
- REGISTRY_DIR = ${COMMON}/Shared/Figma/Components
73
- UTILITY = ${COMMON}/.build/debug/FigmaRegistryUtility
74
- ```
75
-
76
- ---
77
-
78
- ## STEP 0 - Parse Arguments
79
-
80
- Split `$ARGUMENTS` into URLs and flags. Extract:
81
- - `urls[]` - every non-flag argument that looks like a Figma URL
82
- - `reason` - value after `--reason` (may be empty)
83
-
84
- If `urls` is empty → output `FAILED` with `reason: "No Figma URL provided"`.
85
-
86
- For each URL, extract `fileKey` and `nodeId` (colon form).
87
-
88
- ---
89
-
90
- ## STEP 1 - Sync `mobile-common` to `origin/iteration/develop`
91
-
92
- ```bash
93
- cd "${COMMON}"
94
- git fetch origin iteration/develop
95
- ```
96
-
97
- Check current branch:
98
- ```bash
99
- CURRENT_BRANCH=$(git branch --show-current)
100
- ```
101
-
102
- **If `CURRENT_BRANCH == iteration/develop`**:
103
- ```bash
104
- git pull --ff-only origin iteration/develop
105
- ```
106
- If fast-forward fails (local has diverged work) → HALT with
107
- `FAILED / reason: "mobile-common iteration/develop has diverged from origin - resolve manually before running figma-cli-skip"`.
108
-
109
- **If on a different branch**:
110
- Check whether the working tree is clean:
111
- ```bash
112
- git status --porcelain
113
- ```
114
- - If dirty → HALT with `FAILED / reason: "mobile-common working tree is dirty on {branch} - commit or stash before running figma-cli-skip"`.
115
- - If clean → checkout and fast-forward:
116
- ```bash
117
- git checkout iteration/develop
118
- git pull --ff-only origin iteration/develop
119
- ```
120
-
121
- After this step, `mobile-common` must be on `iteration/develop` and even with
122
- `origin/iteration/develop`.
123
-
124
- ---
125
-
126
- ## STEP 2 - Ensure `FigmaRegistryUtility` Is Built
127
-
128
- ```bash
129
- cd "${COMMON}"
130
- if [[ ! -x "${UTILITY}" ]]; then
131
- swift build --product FigmaRegistryUtility
132
- fi
133
- ```
134
-
135
- If the build fails → HALT with `FAILED / reason: "FigmaRegistryUtility build failed"` and include the build error tail.
136
-
137
- ---
138
-
139
- ## STEP 3 - Process Each URL
140
-
141
- For each `(fileKey, nodeId)` pair:
142
-
143
- ### 3a. Resolve Component Name
144
-
145
- ```bash
146
- cd "${COMMON}"
147
- "${UTILITY}" lookup --node-id '{nodeId-with-colon}'
148
- ```
149
-
150
- Parse `suggestedComponentName` from the JSON output. If the lookup fails
151
- (node not in registry), still proceed - the lookup may return a suggested
152
- name even for unknown nodes. If no name is returned at all, use the raw
153
- `{nodeId}` as a placeholder and note it in the summary.
154
-
155
- ### 3b. Check Existing Registry Entry
156
-
157
- Path: `${REGISTRY_DIR}/{nodeId-with-colon-replaced-by-dash}.json`
158
-
159
- **If file exists**:
160
- - Read it.
161
- - If `"skip": true` is already set → record this component as `ALREADY_SKIPPED` (no changes) and continue to next URL. Do NOT short-circuit the whole batch.
162
- - If not skipped → overwrite with the skip payload (below). Log that you're overwriting pre-existing implementation data.
163
-
164
- **If file does not exist**:
165
- - Create it with the skip payload.
166
-
167
- ### 3c. Write the Skip Payload
168
-
169
- ```json
170
- {
171
- "nodeId": "{nodeId-with-colon}",
172
- "componentName": {
173
- "ios": "{componentName}",
174
- "android": "{componentName}"
175
- },
176
- "skip": true,
177
- "codeConnect": {
178
- "ios": false,
179
- "android": false
180
- },
181
- "confluence": {
182
- "page": null,
183
- "ios": null,
184
- "android": null
185
- },
186
- "fileKey": "{fileKey}",
187
- "lastUpdated": "{YYYY-MM-DD}",
188
- "updatedBy": "ios",
189
- "testingIdentifiers": [],
190
- "localizationKeys": [],
191
- "accessibilityKeys": [],
192
- "analyticsEvents": []
193
- }
194
- ```
195
-
196
- Use the current date (UTC) for `lastUpdated`.
197
-
198
- Collect the relative path (`Shared/Figma/Components/{filename}.json`) into a
199
- `written_files[]` list for later staging.
200
-
201
- ---
202
-
203
- ## STEP 4 - Regenerate Catalog
204
-
205
- Run once **after all URLs have been processed**, not per-URL:
206
-
207
- ```bash
208
- cd "${COMMON}"
209
- "${UTILITY}" catalog
210
- ```
211
-
212
- Capture the list of files the catalog command wrote/modified. In practice
213
- this writes into `Shared/Figma/Catalog/` (or similar). Use `git status
214
- --porcelain` to discover everything that changed under `Shared/Figma/` and
215
- stage those paths explicitly in STEP 5.
216
-
217
- If catalog regeneration fails → HALT with `FAILED / reason: "Catalog regeneration failed"`.
218
-
219
- ---
220
-
221
- ## STEP 5 - Commit & Push
222
-
223
- ### 5a. Stage only the intended files
224
-
225
- ```bash
226
- cd "${COMMON}"
227
- # Registry JSONs we wrote
228
- git add Shared/Figma/Components/{file1}.json Shared/Figma/Components/{file2}.json ...
229
- # Catalog files the utility regenerated (discover via `git status --porcelain`
230
- # - stage every modified/untracked path that lives under Shared/Figma/ AND was
231
- # not already present before STEP 4)
232
- git add <catalog paths discovered from git status>
233
- ```
234
-
235
- **Do NOT** use `git add -A` or `git add .`. If there are unrelated dirty
236
- files in the working tree (there shouldn't be, STEP 1 guaranteed it), leave
237
- them alone.
238
-
239
- ### 5b. Verify the index is what we expect
240
-
241
- ```bash
242
- git diff --cached --name-only
243
- ```
244
-
245
- Only `Shared/Figma/Components/*.json` and `Shared/Figma/Catalog/*` paths
246
- should appear. If anything else shows up → HALT with
247
- `FAILED / reason: "Unexpected files staged: {list}"`.
248
-
249
- ### 5c. Commit
250
-
251
- Commit message format:
252
-
253
- - **Single skip**:
254
- ```
255
- chore(common): skip {componentName} [{nodeId}]
256
-
257
- Reason: {reason or "Not specified"}
258
- ```
259
- - **Batch skip (2+)**:
260
- ```
261
- chore(common): skip {N} components
262
-
263
- - {componentName1} [{nodeId1}]
264
- - {componentName2} [{nodeId2}]
265
- - ...
266
-
267
- Reason: {reason or "Not specified"}
268
- ```
269
-
270
- Pass the body via HEREDOC to preserve formatting:
271
-
272
- ```bash
273
- git commit -m "$(cat <<'EOF'
274
- chore(common): skip {componentName} [{nodeId}]
275
-
276
- Reason: {reason or "Not specified"}
277
- EOF
278
- )"
279
- ```
280
-
281
- Capture the resulting commit SHA from `git rev-parse HEAD`.
282
-
283
- ### 5d. Push with rebase retry
284
-
285
- ```bash
286
- git push origin iteration/develop
287
- ```
288
-
289
- **If push is rejected (non-fast-forward)**:
290
- ```bash
291
- git fetch origin iteration/develop
292
- git rebase origin/iteration/develop
293
- git push origin iteration/develop
294
- ```
295
- Allow up to 3 rebase-retry attempts. If it still fails → HALT with
296
- `FAILED / reason: "Push rejected after 3 rebase retries"`.
297
-
298
- After a successful rebase, re-read the new HEAD SHA for the output.
299
-
300
- ---
301
-
302
- ## STEP 6 - Output `ORCHESTRATOR_RESULT`
303
-
304
- Output EXACTLY this block as your FINAL message. Nothing else after it.
305
-
306
- ### On success (single or batch, all components either skipped now or already skipped):
307
-
308
- ```
309
- ORCHESTRATOR_RESULT:
310
- status: COMPLETE
311
- commit: <SHA>
312
- pushed: true
313
- branch: iteration/develop
314
- skipped:
315
- - { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: NEWLY_SKIPPED }
316
- - { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: ALREADY_SKIPPED }
317
- reason: <reason or "Not specified">
318
- summary: <one-line - e.g. "Skipped 2 components, 1 already skipped">
319
- ```
320
-
321
- If **all** components were `ALREADY_SKIPPED` (nothing new written, nothing
322
- committed, nothing pushed), the block looks like:
323
-
324
- ```
325
- ORCHESTRATOR_RESULT:
326
- status: NOOP
327
- commit: -
328
- pushed: false
329
- branch: iteration/develop
330
- skipped:
331
- - { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: ALREADY_SKIPPED }
332
- reason: <reason or "Not specified">
333
- summary: All components already skipped
334
- ```
335
-
336
- ### On failure:
337
-
338
- ```
339
- ORCHESTRATOR_RESULT:
340
- status: FAILED
341
- failedStep: <STEP 0 | 1 | 2 | 3 | 4 | 5>
342
- reason: <exact reason>
343
- branch: iteration/develop
344
- skippedBeforeFailure:
345
- - { nodeId: <nodeId>, componentName: <name>, state: <NEWLY_SKIPPED | ALREADY_SKIPPED> }
346
- suggestion: <what to fix - e.g. "resolve rebase conflicts manually and re-run">
347
- ```
348
-
349
- ---
350
-
351
- ## Error Handling Quick Reference
352
-
353
- | Failure | Action |
354
- |---------|--------|
355
- | No URLs provided | `FAILED / STEP 0 / "No Figma URL provided"` |
356
- | Dirty working tree on feature branch | `FAILED / STEP 1 / "mobile-common working tree is dirty"` |
357
- | Diverged `iteration/develop` | `FAILED / STEP 1 / "mobile-common has diverged from origin"` |
358
- | `FigmaRegistryUtility` build failure | `FAILED / STEP 2` + build error tail |
359
- | `FigmaRegistryUtility lookup` returns nothing usable | Continue with `{nodeId}` as placeholder; note in summary |
360
- | Catalog regeneration failure | `FAILED / STEP 4` |
361
- | Unexpected files staged | `FAILED / STEP 5 / "Unexpected files staged: ..."` |
362
- | Push rejected after 3 rebase retries | `FAILED / STEP 5 / "Push rejected after 3 rebase retries"` |