@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,238 +0,0 @@
1
- ---
2
- name: performance-review-next
3
- description: Reads `_tour_tracker.json`, presents a dashboard of produced components, and guides the user through reviewing each one. Fix commits are separate. Halted components can be retried or dropped.
4
- ---
5
-
6
- # /performance-review-next - Interactive Component Review Session
7
-
8
- > Reads `_tour_tracker.json`, presents a dashboard of produced components,
9
- > and guides the user through reviewing each one. Fix commits are separate.
10
- > Halted components can be retried or dropped.
11
-
12
- ## Parameters
13
-
14
- | Parameter | Required | Default | Description |
15
- |-----------|----------|---------|-------------|
16
- | `--status` | No | - | Show dashboard only, don't start review loop |
17
-
18
- ```
19
- /performance-review-next
20
- /performance-review-next --status
21
- ```
22
-
23
- ---
24
-
25
- ## Constants
26
-
27
- ```
28
- REPO_ROOT = git repo root (auto-detect)
29
- TRACKER_FILE = ${REPO_ROOT}/_tour_tracker.json
30
- UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
31
- ```
32
-
33
- ---
34
-
35
- ## STEP 0 - Read Tracker & Show Dashboard
36
-
37
- Read `_tour_tracker.json`. If not found → HALT: "No tour in progress."
38
-
39
- Detect lean mode:
40
- ```python
41
- lean_mode = tracker.get("lean_mode", False)
42
- ```
43
-
44
- ### Dashboard
45
-
46
- ```
47
- ╔══════════════════════════════════════════════════════════════╗
48
- ║ TOUR REVIEW DASHBOARD ║
49
- ╠══════════════════════════════════════════════════════════════╣
50
- ║ ║
51
- ║ # │ Issue │ Component │ Status ║
52
- ║ ──┼────────┼──────────────┼──────────────────────────────── ║
53
- ║ 1 │ #1000 │ ComponentA │ ✅ Produced - ready for review ║
54
- ║ 2 │ #1002 │ ComponentC │ ✅ Produced - ready for review ║
55
- ║ 3 │ #1001 │ ComponentB │ ❌ Halted (Phase 4) ║
56
- ║ ║
57
- ║ Reviewed: 0/2 produced ║
58
- ║ ║
59
- ╚══════════════════════════════════════════════════════════════╝
60
- ```
61
-
62
- If `lean_mode` is `true`, add a warning banner after the dashboard:
63
-
64
- ```
65
- ⚠️ LEAN MODE - Tests & wiki were NOT generated.
66
- Review covers: implementation (Phase 4) + Code Connect (Phase 6) only.
67
- ```
68
-
69
- If `--status` → print dashboard and exit.
70
-
71
- ---
72
-
73
- ## STEP 1 - Build All (One Time)
74
-
75
- Before any review, run a single build to verify the current state:
76
-
77
- ```bash
78
- xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
79
- -scheme {build.scheme} -destination 'generic/platform=iOS' \
80
- CODE_SIGNING_ALLOWED=NO -quiet
81
- ```
82
-
83
- **If build fails:**
84
-
85
- Identify which component's files caused the failure from the error output.
86
- Print:
87
-
88
- ```
89
- ⚠️ Build failed. Error in: Sources/.../ComponentA/ComponentAView.swift:42
90
- Likely component: ComponentA (#1000)
91
-
92
- Fix the issue, then run /performance-review-next to continue.
93
- ```
94
-
95
- Do NOT proceed until build passes.
96
-
97
- **If build passes:** Print "Build ✅ - all components compile" and proceed to STEP 2.
98
-
99
- ---
100
-
101
- ## STEP 2 - Review Loop
102
-
103
- Ask user which component to review:
104
-
105
- ```
106
- Which component would you like to review?
107
- [1] ComponentA (#1000) - ready for review
108
- [2] ComponentC (#1002) - ready for review
109
- [3] ComponentB (#1001) - halted (retry/drop)
110
- [done] All reviews complete → proceed to commit
111
- ```
112
-
113
- ### 2a. Reviewing a Produced Component
114
-
115
- When user selects a produced component:
116
-
117
- 1. **Show component files:**
118
- ```bash
119
- # List files created by this component
120
- find "${UICOMPONENTS}/Sources" -path "*/${COMPONENT_NAME}/*" -type f
121
- find "${UICOMPONENTS}/Tests" -path "*/${COMPONENT_NAME}*" -type f
122
- ```
123
-
124
- 2. **Run component tests:**
125
-
126
- > **LEAN MODE:** If `lean_mode` is `true`, **SKIP this substep.** Print `Tests: ⏭ skipped (lean mode)` instead.
127
-
128
- ```bash
129
- xcodebuild test -project "${REPO_ROOT}/{build.xcodeproj}" \
130
- -scheme {build.scheme} \
131
- -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
132
- -only-testing:"UIComponentsTests/${COMPONENT_NAME}ViewInspectorTests" \
133
- -only-testing:"UIComponentsTests/${COMPONENT_NAME}SnapshotTests" \
134
- CODE_SIGNING_ALLOWED=NO -quiet
135
- ```
136
-
137
- 3. **Present review options:**
138
- ```
139
- ComponentA (#1000) - Review
140
- Files: 8 files (view, config, tests, snapshots, wiki, code-connect) # lean: fewer files
141
- Tests: ✅ 12 passed # lean: ⏭ skipped (lean mode)
142
-
143
- Actions:
144
- [approve] Mark as reviewed ✅
145
- [fix] I see an issue - let me fix it
146
- [back] Back to dashboard
147
- ```
148
-
149
- 4. **If user selects "fix":**
150
- - User makes changes manually or describes the fix
151
- - Agent applies the fix
152
- - Agent commits the fix:
153
- ```bash
154
- cd ${UICOMPONENTS}
155
- git add -A
156
- git commit -m "fix(uicomponents): [${JIRA_KEY}] fix ${COMPONENT_NAME} review feedback
157
-
158
- Refs: ${JIRA_KEY}
159
- Tour: performance-tour review fix"
160
- ```
161
- - Re-run tests to verify fix
162
- - Return to review options for this component
163
-
164
- 5. **If user selects "approve":**
165
- - Update tracker: add to `reviewed_components`
166
- - Print: "✅ ComponentA marked as reviewed"
167
- - Return to dashboard
168
-
169
- ### 2b. Reviewing a Halted Component
170
-
171
- When user selects a halted component:
172
-
173
- ```
174
- ComponentB (#1001) - Halted at Phase 4
175
- Reason: Build failure - missing dependency protocol
176
-
177
- Actions:
178
- [retry] Re-produce this component from scratch
179
- [drop] Remove from tour (issue stays open)
180
- [back] Back to dashboard
181
- ```
182
-
183
- **If "retry":**
184
- 1. Run `/performance-start <issue> --tour` + `/performance-swiftui <figma-url>` (add `--lean` if `lean_mode` is `true`)
185
- 2. If successful → commit locally, update tracker to `"produced"`
186
- 3. Return to dashboard (component now reviewable)
187
-
188
- **If "drop":**
189
- 1. Update tracker: move from `halted_components` to `dropped_components`
190
- 2. Print: "ComponentB dropped from tour. Issue #1001 remains open."
191
- 3. Return to dashboard
192
-
193
- ### 2c. All Reviews Complete
194
-
195
- When user selects "done" or all produced components are reviewed:
196
-
197
- ```
198
- ╔══════════════════════════════════════════════════════════════╗
199
- ║ REVIEW COMPLETE ║
200
- ╠══════════════════════════════════════════════════════════════╣
201
- ║ ║
202
- ║ Reviewed: 2 components ║
203
- ║ Dropped: 1 component (ComponentB) ║
204
- ║ ║
205
- ║ Ready to commit: ║
206
- ║ ✅ #1000 - ComponentA ║
207
- ║ ✅ #1002 - ComponentC ║
208
- ║ ║
209
- ║ Next: /performance-iteration-commit-all ║
210
- ╚══════════════════════════════════════════════════════════════╝
211
- ```
212
-
213
- Update tracker: `current_step = "STEP_3"`.
214
-
215
- ---
216
-
217
- ## Error Handling
218
-
219
- | Error | Action |
220
- |-------|--------|
221
- | Tracker not found | HALT: "No tour in progress" |
222
- | No produced components | HALT: "No components to review. All halted." |
223
- | Build fails during review | Show error, let user fix, re-build |
224
- | Test fails after fix | Show failure, let user decide (fix again or approve anyway) |
225
- | Retry fails again | Mark as halted again, ask user to drop or try later |
226
-
227
- ---
228
-
229
- ## Guardrails
230
-
231
- > **NEVER push during review.** All commits (including fixes) are local only.
232
-
233
- > **Fix commits are ALWAYS separate.** Never amend, squash, or rebase existing commits.
234
- > New fix commit with descriptive message.
235
-
236
- > **ALWAYS update tracker after every action** (approve, fix commit, retry, drop).
237
-
238
- > **ALWAYS re-run build after any fix** to ensure project still compiles.
@@ -1,430 +0,0 @@
1
- ---
2
- name: performance-start
3
- description: Identical to `/figma-to-swift-ui-start` for Steps 0-5. After printing the summary (Step 6), automatically invokes `/performance-swiftui <figma-url>` to begin the implementation pipeline.
4
- ---
5
-
6
- # /performance-start - Start + Auto-Launch Performance Pipeline
7
-
8
- > Identical to `/figma-to-swift-ui-start` for Steps 0-5. After printing the summary (Step 6),
9
- > automatically invokes `/performance-swiftui <figma-url>` to begin the implementation pipeline
10
- > without waiting for user input.
11
-
12
- ## Parameters
13
-
14
- | Parameter | Required | Default | Description |
15
- |-----------|----------|---------|-------------|
16
- | `<issue-number>` | Yes | - | GitHub issue number from uicomponents repo |
17
- | `jira id <KEY>` | No | - | Jira issue key (e.g., `{jira.projectKey}-129850`). If provided, updates GitHub issue body and populates Jira task. |
18
- | `--tour` | No | - | Tour mode: skips fetch/pull (STEP 1) and branch creation (STEP 2). Used by `/performance-tour` when producing multiple components on `iteration/develop`. |
19
- | `--lean` | No | - | Lean mode: forwarded to `/performance-swiftui` to skip Phase 5 (testing) and Phase 7 (wiki). Can be combined with `--tour`. |
20
-
21
- ```
22
- /performance-start #107
23
- /performance-start 107
24
- /performance-start 160, jira id {jira.projectKey}-129850
25
- /performance-start #107 --tour
26
- /performance-start #107 --lean
27
- /performance-start #107 --tour --lean
28
- ```
29
-
30
- ### Tour Mode (`--tour`)
31
-
32
- When `--tour` is passed, the following steps are **SKIPPED**:
33
-
34
- | Step | Normal Mode | Tour Mode |
35
- |------|------------|:---------:|
36
- | STEP 0 - Parse Issue | ✅ | ✅ |
37
- | STEP 0.5 - Confirm Pipeline Mode | ✅ | **SKIP** |
38
- | STEP 1 - Fetch Latest | ✅ | **SKIP** |
39
- | STEP 2 - Create Feature Branches | ✅ | **SKIP** |
40
- | STEP 3 - Registry Lookup | ✅ | ✅ |
41
- | STEP 3.5 - Save Specs Artifact | ✅ | ✅ |
42
- | STEP 4 - Assign to Me | ✅ | ✅ |
43
- | STEP 5 - Update Issue Status | ✅ | ✅ |
44
- | STEP 6 - Summary + Auto-Launch | ✅ | ✅ |
45
-
46
- **Rationale:** In tour mode, `/performance-tour` has already fetched latest and
47
- all submodules are on `iteration/develop`. Creating feature branches would conflict
48
- with the tour's single-branch local commit strategy.
49
-
50
- ---
51
-
52
- ## Constants
53
-
54
- ```
55
- REPO_ROOT = git repo root (auto-detect)
56
- GH_REPO = {github.componentsRepo}
57
- DEFAULT_JIRA = {jira.projectKey}-124692
58
- BASE_BRANCH = develop # main repo; submodules use iteration/develop
59
- ```
60
-
61
- ### Submodule Paths
62
-
63
- ```
64
- MAIN_REPO = ${REPO_ROOT}
65
- COMMON = ${REPO_ROOT}/{repos.common.path}
66
- UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
67
- WIKI = ${REPO_ROOT}/{repos.wiki.path}
68
- ```
69
-
70
- ---
71
-
72
- ## STEP 0 - Parse Issue
73
-
74
- ```bash
75
- gh issue view <N> --repo ${GH_REPO} --json number,title,body,labels,assignees
76
- ```
77
-
78
- Extract from the issue body:
79
- - **Component Name** - from `### Component Name (PascalCase)` section
80
- - **Figma URL** - from `### Figma URL` section
81
- - **Node ID** - from `### Node ID` section
82
- - **Registry Name** - from `### Registry Name` section
83
- - **Figma Page** - from `### Figma Page` section
84
- - **Jira Key** - from `### Jira Issue` section (if not `_No response_`)
85
- - **Acceptance Criteria** - from `### Acceptance Criteria` section (if not `_No response_`)
86
-
87
- If Jira key is `_No response_` or empty **and** user provided a `jira id` parameter:
88
- 1. Use the user-provided key as `JIRA_ISSUE`.
89
- 2. Update the GitHub issue body - replace `_No response_` under `### Jira Issue` with a Jira link:
90
- ```bash
91
- # Read current body, replace the Jira section, update via gh
92
- CURRENT_BODY=$(gh issue view <N> --repo ${GH_REPO} --json body --jq '.body')
93
- # Replace '_No response_' in the Jira Issue section with the link
94
- NEW_BODY=$(echo "$CURRENT_BODY" | sed 's|### Jira Issue\n\n_No response_|### Jira Issue\n\n[<JIRA_KEY>]({jira.baseUrl}/browse/<JIRA_KEY>)|')
95
- gh issue edit <N> --repo ${GH_REPO} --body "$NEW_BODY"
96
- ```
97
-
98
- If Jira key is `_No response_` or empty **and** no `jira id` parameter, use `DEFAULT_JIRA`.
99
-
100
- Derive:
101
- - `COMPONENT_PASCAL` = Component Name (e.g., `ModalsTitle`)
102
- - `COMPONENT_KEBAB` = kebab-case (e.g., `modals-title`)
103
- - `JIRA_ISSUE` = extracted key or default
104
- - `NODE_UNDERSCORE` = node-id with `-` replaced by `_` (e.g., `2820-25995` → `2820_25995`)
105
- - `BRANCH_NAME` = `feature/${JIRA_ISSUE}-GH${N}-N${NODE_UNDERSCORE}-${COMPONENT_KEBAB}`
106
-
107
- Print:
108
-
109
- ```
110
- -------------------------------------------
111
- Issue: #<N>
112
- Component: <COMPONENT_PASCAL>
113
- Jira: <JIRA_ISSUE>
114
- Node ID: <NODE_ID>
115
- Branch: feature/<JIRA_ISSUE>-GH<N>-N<NODE_UNDERSCORE>-<COMPONENT_KEBAB>
116
- Base: develop (main repo) / iteration/develop (submodules)
117
- -------------------------------------------
118
- ```
119
-
120
- ---
121
-
122
- ## STEP 0.5 - Confirm Pipeline Mode
123
-
124
- > **If `--tour` is set → SKIP this step.** Tour mode delegates mode selection to `/performance-tour`.
125
-
126
- After parsing the issue, **always ask the user** to confirm which pipeline mode to use - regardless of whether `--lean` was passed as a parameter. This prevents accidental full-pipeline runs when lean was intended, or vice versa.
127
-
128
- **Use the ask-questions tool** with these options:
129
-
130
- | Header | Question | Options |
131
- |--------|----------|---------|
132
- | Pipeline Mode | `<COMPONENT_PASCAL>` implementation - which pipeline mode? | **Lean** (skip testing & wiki - Phases 5, 7) · **Full** (all 8 phases) |
133
-
134
- - If `--lean` was passed in the original command, pre-select **Lean** as the recommended option.
135
- - If no flag was passed, pre-select **Full** as the recommended option.
136
-
137
- **After user responds:**
138
- - If user picks **Lean** → set internal `LEAN_FLAG = true` (forward `--lean` to `/performance-swiftui`).
139
- - If user picks **Full** → set internal `LEAN_FLAG = false` (no `--lean` forwarded).
140
-
141
- This confirmation overrides whatever was passed on the command line.
142
-
143
- ---
144
-
145
- ## STEP 1 - Fetch Latest
146
-
147
- > **If `--tour` is set → SKIP this entire step.** Tour mode assumes
148
- > `/performance-tour` STEP 0e has already fetched and checked out the correct branches.
149
-
150
- Ensure all repos are up to date with remote:
151
-
152
- ```bash
153
- cd ${MAIN_REPO}
154
- git fetch origin
155
- git checkout develop
156
- git pull --no-recurse-submodules origin develop
157
-
158
- cd ${COMMON}
159
- git fetch origin
160
- git checkout iteration/develop
161
- git pull origin iteration/develop
162
-
163
- cd ${UICOMPONENTS}
164
- git fetch origin
165
- git checkout iteration/develop
166
- git pull origin iteration/develop
167
- ```
168
-
169
- ---
170
-
171
- ## STEP 2 - Create Feature Branches
172
-
173
- > **If `--tour` is set → SKIP this entire step.** Tour mode stays on
174
- > `iteration/develop` with local commits. No feature branches are created.
175
-
176
- Create feature branches on **submodules only**. Do NOT create branches on the main repo - it stays on `develop`. The main repo never receives commits from this workflow; submodule refs are updated separately.
177
-
178
- ```bash
179
- # Common (tokens, localization, accessibility, testing identifiers)
180
- cd ${COMMON}
181
- git checkout -b ${BRANCH_NAME}
182
-
183
- # UIComponents (SwiftUI views, tests, snapshots)
184
- cd ${UICOMPONENTS}
185
- git checkout -b ${BRANCH_NAME}
186
- ```
187
-
188
- Wiki submodule stays on `master` - wiki changes are committed directly.
189
-
190
- ---
191
-
192
- ## STEP 3 - Registry Lookup
193
-
194
- ```bash
195
- cd ${COMMON}
196
- .build/debug/FigmaRegistryUtility lookup --node-id <NODE_ID>
197
- ```
198
-
199
- Collect:
200
- - `suggestedComponentLocation` - where the Swift files will go
201
- - `suggestedArtifactPath` - where implementation artifacts go
202
-
203
- Print:
204
-
205
- ```
206
- Component Location: <suggestedComponentLocation>
207
- Artifact Path: <suggestedArtifactPath>
208
- ```
209
-
210
- ---
211
-
212
- ## STEP 3.5 - Save Specs Artifact
213
-
214
- If the issue has acceptance criteria (not `_No response_`), save them as an artifact that the implementation pipeline can consume.
215
-
216
- ```bash
217
- mkdir -p ${REPO_ROOT}/${suggestedArtifactPath}/pass0
218
- ```
219
-
220
- Write `${suggestedArtifactPath}/pass0/specs.md`:
221
-
222
- ```markdown
223
- # Implementation Specs: {ComponentName}
224
-
225
- ## Source
226
- - Issue: #{N}
227
- - Figma: {FIGMA_URL}
228
-
229
- ## Acceptance Criteria
230
-
231
- {ACCEPTANCE_CRITERIA from issue body - verbatim}
232
-
233
- ## Implementation Guidance
234
-
235
- {Convert the acceptance criteria into actionable implementation instructions for the AI agent:
236
- - Rephrase checkbox items as concrete requirements
237
- - Add technical context where the criteria imply Swift/SwiftUI patterns
238
- - Preserve the user's intent exactly - don't add or remove requirements}
239
- ```
240
-
241
- If no acceptance criteria → skip this step. No file created.
242
-
243
- ---
244
-
245
- ## STEP 4 - Assign to Me
246
-
247
- Assign the GitHub issue and linked Jira task (if any) to the current user. Same logic as `/figma-issue assign`:
248
-
249
- ```bash
250
- gh issue edit <N> --repo ${GH_REPO} --add-assignee @me
251
- ```
252
-
253
- If Jira key exists (from issue body or user-provided `jira id` parameter - not `_No response_` and not `DEFAULT_JIRA`):
254
-
255
- Use **Python urllib** for all Jira API calls (curl is blocked by terminal auto-approval policy):
256
-
257
- ```python
258
- # /tmp/jira_start_<JIRA_KEY>.py
259
- import subprocess, urllib.request, json
260
-
261
- token = subprocess.check_output(
262
- ["security", "find-generic-password", "-a",
263
- subprocess.check_output(["whoami"]).decode().strip(),
264
- "-s", "JIRA_TOKEN", "-w"],
265
- stderr=subprocess.DEVNULL
266
- ).decode().strip()
267
-
268
- JIRA_KEY = "<JIRA_KEY>"
269
- FIGMA_URL = "<FIGMA_URL>"
270
- GITHUB_URL = "https://github.com/{github.componentsRepo}/issues/<N>"
271
- REGISTRY_NAME = "<REGISTRY_NAME>"
272
- COMPONENT_NAME = "<COMPONENT_PASCAL>"
273
- PAGE_NAME = "<FIGMA_PAGE>"
274
-
275
- # 1. Get current user
276
- req = urllib.request.Request(
277
- "{jira.baseUrl}/rest/api/2/myself",
278
- headers={"Authorization": f"Bearer {token}"}
279
- )
280
- resp = urllib.request.urlopen(req, timeout=15)
281
- username = json.loads(resp.read().decode())["name"]
282
- print(f"Username: {username}")
283
-
284
- # 2. Assign to current user
285
- data = json.dumps({"name": username}).encode()
286
- req2 = urllib.request.Request(
287
- f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}/assignee",
288
- data=data,
289
- headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
290
- method="PUT"
291
- )
292
- try:
293
- resp2 = urllib.request.urlopen(req2, timeout=15)
294
- print(f"Assigned {JIRA_KEY} to {username} (HTTP {resp2.status})")
295
- except urllib.error.HTTPError as e:
296
- print(f"Assign failed - HTTP {e.code}: {e.read().decode()[:200]}")
297
-
298
- # 3. Update Jira summary, description, and labels
299
- description = (
300
- "h3. Figma\n"
301
- f"[{COMPONENT_NAME}|{FIGMA_URL}]\n\n"
302
- "h3. GitHub Issue\n"
303
- f"[#{<N>}|{GITHUB_URL}]\n\n"
304
- "h3. Component\n"
305
- f"* *Registry Name:* {REGISTRY_NAME}\n"
306
- f"* *Component Name:* {COMPONENT_NAME}\n"
307
- f"* *Page:* {PAGE_NAME}\n\n"
308
- "h3. Status\n"
309
- "* (x) Implementation\n"
310
- "* (x) Testing\n"
311
- "* (x) Code Connect\n"
312
- "* (x) Documentation"
313
- )
314
- summary = f"Implement {COMPONENT_NAME} iOS UI Component"
315
- update_data = json.dumps({
316
- "fields": {
317
- "summary": summary,
318
- "description": description,
319
- "labels": ["redesign_ios_ui_component", "MobRedesign"],
320
- "components": [{"name": "TKMOB IOS"}],
321
- "fixVersions": [{"name": "no-version"}],
322
- "customfield_22025": {"value": "YOK"},
323
- "customfield_21400": ["no-version"]
324
- }
325
- }).encode()
326
- req3 = urllib.request.Request(
327
- f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}",
328
- data=update_data,
329
- headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
330
- method="PUT"
331
- )
332
- try:
333
- resp3 = urllib.request.urlopen(req3, timeout=15)
334
- print(f"Updated {JIRA_KEY} content (HTTP {resp3.status})")
335
- except urllib.error.HTTPError as e:
336
- print(f"Update failed - HTTP {e.code}: {e.read().decode()[:200]}")
337
- ```
338
-
339
- Run: `python3 /tmp/jira_start_<JIRA_KEY>.py`
340
-
341
- If Jira token not found or VPN unreachable, skip with warning:
342
-
343
- ```
344
- ⚠️ Jira update skipped (token missing or VPN unreachable). Update <JIRA_KEY> manually if needed.
345
- ```
346
-
347
- ---
348
-
349
- ## STEP 5 - Update Issue Status (required)
350
-
351
- **This step is mandatory. Do not skip it and do not defer it.** The issue
352
- is on the board with Status=Todo after creation. Moving it to Status=In
353
- Develop is how the board reflects that someone has started working on
354
- it. If you skip this step, the issue visually stays in the Todo column
355
- even though work has started.
356
-
357
- Set the issue phase to "Implementation" and status to "In Develop" on the Projects V2 board:
358
-
359
- ```bash
360
- # Get issue node ID
361
- ISSUE_NODE_ID=$(gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <N>) { id } } }' --jq '.data.repository.issue.id')
362
-
363
- # Add to project (if not already). This mutation is idempotent - if the
364
- # item already exists it returns the existing item id.
365
- ITEM_ID=$(gh api graphql -f query='mutation { addProjectV2ItemById(input: { projectId: "{github.projectV2Id}", contentId: "'"$ISSUE_NODE_ID"'" }) { item { id } } }' --jq '.data.addProjectV2ItemById.item.id')
366
-
367
- # Set Status = In Develop (option id: bc6c45f7)
368
- gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.status}", value: { singleSelectOptionId: "bc6c45f7" } }) { projectV2Item { id } } }'
369
-
370
- # Set Phase = Implementation (option id: 0577dcda)
371
- gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.phase}", value: { singleSelectOptionId: "0577dcda" } }) { projectV2Item { id } } }'
372
- ```
373
-
374
- ### Verify the move landed
375
-
376
- After the mutations return, confirm Status=In Develop is set (this catches
377
- silent VALIDATION errors from stale option IDs):
378
-
379
- ```bash
380
- gh api graphql -f query='{ node(id: "'"$ITEM_ID"'") { ... on ProjectV2Item { fieldValues(first: 20) { nodes { ... on ProjectV2ItemFieldSingleSelectValue { field { ... on ProjectV2SingleSelectField { name } } name } } } } } }' \
381
- --jq '.data.node.fieldValues.nodes[] | select(.field.name == "Status") | .name'
382
- ```
383
-
384
- Expected output: `In Develop`. If you see anything else (or empty),
385
- re-fetch the current option IDs and retry - do NOT proceed to implementation
386
- without the Status set correctly.
387
-
388
- ---
389
-
390
- ## STEP 6 - Summary + Auto-Launch Pipeline
391
-
392
- Print:
393
-
394
- ```markdown
395
- Ready to implement:
396
-
397
- | Field | Value |
398
- |-------|-------|
399
- | Issue | [#N](url) |
400
- | Component | <COMPONENT_PASCAL> |
401
- | Jira | <JIRA_ISSUE> |
402
- | Branch | `<BRANCH_NAME>` |
403
- | Base | `develop` (main repo) / `iteration/develop` (submodules) |
404
- | Component Location | <suggestedComponentLocation> |
405
- | Artifact Path | <suggestedArtifactPath> |
406
-
407
- 🚀 Auto-launching /performance-swiftui pipeline...
408
- ```
409
-
410
- **Immediately after printing the summary**, invoke the `/performance-swiftui` skill with the Figma URL extracted from the issue:
411
-
412
- ```
413
- /performance-swiftui <FIGMA_URL> # if LEAN_FLAG = false (Full mode confirmed in STEP 0.5)
414
- /performance-swiftui <FIGMA_URL> --lean # if LEAN_FLAG = true (Lean mode confirmed in STEP 0.5)
415
- ```
416
-
417
- Forward `--lean` based on the user's confirmed selection in **STEP 0.5** (not the raw command-line flag). This starts Phase 0 of the performance-optimized implementation pipeline.
418
-
419
- > If any STEP (0-5) failed or was aborted, do NOT auto-launch. Print the error and stop.
420
-
421
- ---
422
-
423
- ## Error Handling
424
-
425
- - **Issue not found**: Print error and stop.
426
- - **Issue body missing required fields**: Print which fields are missing, stop.
427
- - **FigmaRegistryUtility not built**: Run `swift build --product FigmaRegistryUtility` in common.
428
- - **Branch already exists**: Print warning - checkout existing branch instead of creating.
429
- - **Main repo not on develop**: Fetch and checkout automatically.
430
- - **Submodule not on iteration/develop**: Fetch and checkout automatically.