@mmerterden/multi-agent-pipeline 11.1.0 → 11.3.0

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