@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +2 -2
  3. package/docs/FIGMA_PIPELINE.md +12 -25
  4. package/docs/architecture.md +3 -5
  5. package/docs/features.md +8 -8
  6. package/install/_dev-only-files.mjs +0 -6
  7. package/install/claude.mjs +33 -15
  8. package/install/copilot.mjs +16 -14
  9. package/install/templates/copilot-instructions.md +3 -3
  10. package/package.json +1 -1
  11. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  12. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  13. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  14. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  16. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  17. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  18. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  20. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  21. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  22. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  23. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  24. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  25. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  27. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  28. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  29. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  30. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  31. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  32. package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  35. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  38. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  39. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  60. package/pipeline/preferences-template.json +17 -1
  61. package/pipeline/rules/figma-pipeline.md +2 -2
  62. package/pipeline/schemas/prefs.schema.json +0 -34
  63. package/pipeline/scripts/README.md +1 -3
  64. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  65. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  66. package/pipeline/scripts/phase-banner.sh +2 -2
  67. package/pipeline/scripts/review-scope.mjs +94 -0
  68. package/pipeline/scripts/scan-agent-config.sh +2 -2
  69. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  70. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  71. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  72. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  73. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  74. package/pipeline/scripts/smoke-clarify.sh +1 -1
  75. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  76. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  77. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  78. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  79. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  80. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  81. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  82. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  83. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  84. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  85. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  86. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  87. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  88. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  89. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  90. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  91. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  92. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  93. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  94. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  95. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  96. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  97. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  98. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  99. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  100. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  101. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  102. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  103. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  104. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  105. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  106. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  107. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  108. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  109. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  110. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  111. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  112. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  113. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  114. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  115. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  116. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  117. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  118. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  119. package/pipeline/scripts/smoke-update-check.sh +1 -1
  120. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  121. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  122. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  123. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  124. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  125. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  126. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  127. package/pipeline/scripts/uninstall.mjs +2 -2
  128. package/pipeline/skills/.skill-manifest.json +40 -160
  129. package/pipeline/skills/.skills-index.json +3 -372
  130. package/pipeline/skills/shared/README.md +1 -1
  131. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  132. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  133. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  134. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  137. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  138. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  139. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  140. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  141. package/pipeline/skills/skills-index.md +2 -43
  142. package/pipeline/commands/multi-agent/refactor.md +0 -188
  143. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  144. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  145. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  146. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  147. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  148. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  149. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  150. package/pipeline/skills/figma-android/README.md +0 -38
  151. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  152. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  153. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  154. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  155. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  156. package/pipeline/skills/figma-common/README.md +0 -64
  157. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  158. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  159. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  160. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  161. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  162. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  163. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  164. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  165. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  166. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  167. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  168. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  169. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  170. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  171. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  172. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  173. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  174. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  175. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  176. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  177. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  178. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  179. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  180. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  181. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  182. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  183. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  184. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  185. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  186. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  187. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  188. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  189. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  190. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  191. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  192. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  193. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  194. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  195. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  196. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  197. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  198. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  199. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  200. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  201. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  202. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  203. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  232. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  233. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  234. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  235. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  253. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  254. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  255. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  256. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  294. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  295. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  296. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  297. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  298. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  310. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  311. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  312. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  313. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  314. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -1,716 +0,0 @@
1
- ---
2
- name: performance-iteration-commit-all
3
- description: Reads `_tour_tracker.json`, validates all reviewed components in a single build+test cycle, pushes all local commits in a single push per submodule, then handles issue.
4
- ---
5
-
6
- # /performance-iteration-commit-all - Batch Validate & Push All Tour Components
7
-
8
- > Reads `_tour_tracker.json`, validates all reviewed components in a single build+test
9
- > cycle, pushes all local commits in a single push per submodule, then handles issue
10
- > housekeeping for each component individually.
11
-
12
- ## Guardrails
13
-
14
- > **NEVER create branches on the main repo (REPO_ROOT).** Same guardrail as `figma-iteration-commit`.
15
-
16
- > **NEVER use `json.dumps()` default formatting on JSON files.** Preserve existing format.
17
- > `ui-testing-identifiers.json` uses `" : "` (space-colon-space).
18
-
19
- > **NEVER manually edit `ui-testing-identifiers.json` during rebase conflict resolution.**
20
- > Follow the conflict resolution protocol from `figma-iteration-commit`.
21
-
22
- ## Parameters
23
-
24
- No arguments - reads `_tour_tracker.json`.
25
-
26
- ```
27
- /performance-iteration-commit-all
28
- ```
29
-
30
- ---
31
-
32
- ## Constants
33
-
34
- ```
35
- REPO_ROOT = git repo root (auto-detect)
36
- GH_REPO = {github.componentsRepo}
37
- COMMON = ${REPO_ROOT}/{repos.common.path}
38
- UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
39
- WIKI = ${REPO_ROOT}/{repos.wiki.path}
40
- TRACKER_FILE = ${REPO_ROOT}/_tour_tracker.json
41
- ```
42
-
43
- ---
44
-
45
- ## STEP 0 - Read Tracker & Verify State
46
-
47
- Read `_tour_tracker.json`.
48
-
49
- Verify:
50
- - `current_step` is `"STEP_3"` - if not, HALT: "Review not complete. Run /performance-review-next first."
51
- - `reviewed_components` has at least 1 entry
52
- - All reviewed components have local commits (check with `git log`)
53
-
54
- Collect reviewed component data:
55
-
56
- ```python
57
- reviewed = [tracker["components"][str(issue)] for issue in tracker["reviewed_components"]]
58
- lean_mode = tracker.get("lean_mode", False)
59
- ```
60
-
61
- Print:
62
-
63
- ```
64
- ╔══════════════════════════════════════════════════════════════╗
65
- ║ BATCH COMMIT - PRE-FLIGHT ║
66
- ╠══════════════════════════════════════════════════════════════╣
67
- ║ ║
68
- ║ Components to commit: ║
69
- ║ 1. ComponentA (#1000) - reviewed ✅ ║
70
- ║ 2. ComponentC (#1002) - reviewed ✅ ║
71
- ║ ║
72
- ║ Dropped (will NOT be committed): ║
73
- ║ ❌ ComponentB (#1001) - halted, dropped ║
74
- ║ ║
75
- ╚══════════════════════════════════════════════════════════════╝
76
-
77
- Proceed with validation and push? (yes/no)
78
- ```
79
-
80
- Wait for user confirmation.
81
-
82
- ---
83
-
84
- ## STEP 1 - Validate (SINGLE PASS)
85
-
86
- ### 1a. Build
87
-
88
- ```bash
89
- xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
90
- -scheme {build.scheme} -destination 'generic/platform=iOS' \
91
- CODE_SIGNING_ALLOWED=NO -quiet
92
- ```
93
-
94
- If build fails → HALT. Fix before committing.
95
-
96
- ### 1b. Tests (Combined)
97
-
98
- > **LEAN MODE:** If `lean_mode` is `true` in the tracker, **SKIP this entire substep.**
99
- > Tests were not generated during production. Print `Tests: ⏭️ skipped (lean mode)` and proceed to 1c.
100
-
101
- Run tests for ALL reviewed components in a single xcodebuild invocation:
102
-
103
- ```bash
104
- xcodebuild test -project "${REPO_ROOT}/{build.xcodeproj}" \
105
- -scheme {build.scheme} \
106
- -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
107
- -only-testing:"UIComponentsTests/ComponentAViewInspectorTests" \
108
- -only-testing:"UIComponentsTests/ComponentASnapshotTests" \
109
- -only-testing:"UIComponentsTests/ComponentCViewInspectorTests" \
110
- -only-testing:"UIComponentsTests/ComponentCSnapshotTests" \
111
- CODE_SIGNING_ALLOWED=NO -quiet
112
- ```
113
-
114
- Build the `-only-testing` flags dynamically from the reviewed components list.
115
-
116
- If tests fail → HALT. Identify failing component and fix.
117
-
118
- ### 1c. Key Sync Validation
119
-
120
- For each reviewed component:
121
-
122
- ```bash
123
- cd ${COMMON}
124
- python3 .instructions/figma/figma-to-swiftui/scripts/validate-localization-sync.py \
125
- --component "${COMPONENT_NAME}"
126
- ```
127
-
128
- If out of sync → regenerate:
129
- ```bash
130
- swift package plugin --allow-writing-to-package-directory update-localizations-dev
131
- swift package plugin --allow-writing-to-package-directory update-accessibility-dev
132
- swift run UITestingIdentifierTool generate
133
- ```
134
-
135
- If regeneration creates new changes → commit them:
136
- ```bash
137
- cd ${COMMON}
138
- git add -A
139
- git commit -m "fix(common): sync keys after tour validation
140
-
141
- Tour: performance-tour $(date +%Y%m%d)"
142
- ```
143
-
144
- ### 1d. Code Review (Lightweight)
145
-
146
- Read `.instructions/figma/figma-commit/REVIEW.md` and run the 13-point checklist
147
- across ALL reviewed components.
148
-
149
- - Auto-fix any fixable violations
150
- - If auto-fixes applied, commit:
151
- ```bash
152
- cd ${UICOMPONENTS}
153
- git add -A
154
- git commit -m "fix(uicomponents): auto-fix review violations
155
-
156
- Tour: performance-tour review fixes"
157
- ```
158
- - Re-run build (STEP 1a) to verify auto-fixes didn't break anything
159
- - If unfixable violations remain → print them, ask user to proceed or abort
160
-
161
- Print validation result:
162
-
163
- ```
164
- Validation Summary:
165
- Build: ✅
166
- Tests: ✅ (ComponentA: 12 passed, ComponentC: 8 passed) # or: ⏭️ skipped (lean mode)
167
- Key Sync: ✅
168
- Review: ✅ / ⚠️ (N warnings, M auto-fixed)
169
- ```
170
-
171
- ---
172
-
173
- ## STEP 2 - Push (SINGLE PUSH per submodule)
174
-
175
- ### 2a. Push with Rebase-Retry Loop
176
-
177
- For each submodule that has commits (common, uicomponents, wiki):
178
-
179
- ```bash
180
- cd ${SUBMODULE}
181
- PUSH_BRANCH="iteration/develop" # or "master" for wiki
182
-
183
- MAX_RETRIES=3
184
- for i in $(seq 1 $MAX_RETRIES); do
185
- git push origin ${PUSH_BRANCH} && break
186
-
187
- echo "Push rejected - remote updated. Rebasing (attempt $i)..."
188
- git fetch origin ${PUSH_BRANCH}
189
- git rebase origin/${PUSH_BRANCH}
190
-
191
- if [ $? -ne 0 ]; then
192
- # Rebase conflict - attempt auto-resolution for generated files
193
- # See "Generated File Conflict Resolution" below
194
- # If auto-resolution fails → HALT
195
- fi
196
-
197
- # Re-validate build after rebase
198
- xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
199
- -scheme {build.scheme} -destination 'generic/platform=iOS' \
200
- CODE_SIGNING_ALLOWED=NO -quiet
201
-
202
- if [ $? -ne 0 ]; then
203
- echo "HALT: Build failed after rebase. Fix before pushing."
204
- exit 1
205
- fi
206
- done
207
- ```
208
-
209
- **Push order matters:** common → uicomponents → wiki (dependencies flow this direction).
210
- In **lean mode**, wiki submodule has no commits - skip the wiki push entirely.
211
-
212
- #### Generated File Conflict Resolution (common submodule)
213
-
214
- During rebase, conflicts in generated files are **expected** when others have pushed to
215
- `iteration/develop` concurrently. **NEVER resolve these by picking a side - always
216
- accept remote then regenerate.**
217
-
218
- **Conflict resolution table:**
219
-
220
- | File | Resolution |
221
- |------|-----------|
222
- | `ui-testing-identifiers.json` | 1. `git checkout --ours` (upstream=remote during rebase) 2. Re-add our keys from `Shared/Figma/Components/{nodeId}.json` using Python with `" : "` format 3. `git add` |
223
- | `LocalizationStringKeys.swift` | 1. `git checkout --ours` 2. Run `swift package plugin --allow-writing-to-package-directory update-localizations-dev` 3. `git add` |
224
- | `UIAssetsGeneratedTokens.swift` | 1. `git checkout --ours` (timestamp-only conflict) 2. `git add` |
225
- | `UITestingIdentifierKeys.swift` | 1. `git checkout --ours` 2. Run `swift run UITestingIdentifierTool generate` 3. `git add` |
226
- | `Localizable.xcstrings` | 1. `git checkout --ours` 2. Already regenerated by `update-localizations-dev` above 3. `git add` |
227
-
228
- **Procedure per conflicted commit during rebase:**
229
-
230
- ```
231
- 1. List conflicted files: git diff --name-only --diff-filter=U
232
- 2. For each conflicted file:
233
- a. If in table above → apply resolution (accept remote + regenerate)
234
- b. If NOT in table → HALT, ask user to resolve manually
235
- 3. git add <resolved files>
236
- 4. git rebase --continue
237
- 5. If next commit also conflicts → repeat from step 1
238
- ```
239
-
240
- **Post-rebase verification:** After all conflicts resolved and rebase completes,
241
- verify our keys survived:
242
- ```bash
243
- grep -c "ComponentName" iOS/Sources/LocalizationStringKeys/Generated/LocalizationStringKeys.swift
244
- grep -c "ComponentName" Shared/UITestingIdentifiers/ui-testing-identifiers.json
245
- ```
246
- If count is 0 for any component → regenerate again before pushing.
247
-
248
- #### Wiki Conflict Resolution
249
-
250
- Wiki status pages (`ComponentImplementationStatus*.md`) are auto-generated dashboards.
251
- When conflicts occur:
252
- 1. `git checkout --ours` (accept remote counts)
253
- 2. `git add` + `git rebase --continue`
254
- 3. Status dashboard will be regenerated in STEP 3e
255
-
256
- ### 2b. Record Push SHAs
257
-
258
- After successful push:
259
-
260
- ```bash
261
- COMMON_SHA=$(git -C ${COMMON} rev-parse --short HEAD)
262
- UICOMP_SHA=$(git -C ${UICOMPONENTS} rev-parse --short HEAD)
263
- WIKI_SHA=$(git -C ${WIKI} rev-parse --short HEAD) # only if not lean_mode
264
- ```
265
-
266
- Update tracker: record SHAs for each component.
267
-
268
- ### 2c. Fetch All Remotes
269
-
270
- ```bash
271
- cd ${COMMON} && git fetch origin iteration/develop
272
- cd ${UICOMPONENTS} && git fetch origin iteration/develop
273
- # Wiki fetch - skip in lean mode
274
- if [ "$LEAN_MODE" != "true" ]; then
275
- cd ${WIKI} && git fetch origin master
276
- fi
277
- ```
278
-
279
- ### 2d. Post-Push Build Verification
280
-
281
- After all submodules are pushed, verify that the **remote dependency chain** builds
282
- correctly. This catches issues where generated files lost entries during rebase
283
- conflict resolution (e.g., `LocalizationStringKeys.swift` missing component keys).
284
-
285
- 1. Ensure `Package.swift` in uicomponents points to **remote** common (not local path):
286
- ```
287
- .package(url: "...{project.slug}-common.git", branch: "iteration/develop")
288
- ```
289
- If it has a local `path:` override, revert it first.
290
-
291
- 2. Resolve packages to pick up the freshly pushed common:
292
- ```bash
293
- cd ${UICOMPONENTS}
294
- swift package resolve
295
- ```
296
-
297
- 3. Run a quick build:
298
- ```bash
299
- xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
300
- -scheme {build.scheme} -destination 'generic/platform=iOS' \
301
- CODE_SIGNING_ALLOWED=NO -skipMacroValidation -quiet
302
- ```
303
-
304
- 4. If build fails:
305
- - Check for `has no member` errors → indicates generated file lost keys during rebase
306
- - For `LocalizationStringKeys`: `cd ${COMMON} && swift package plugin --allow-writing-to-package-directory update-localizations-dev`
307
- - For `UITestingIdentifierKeys`: `cd ${COMMON} && swift run UITestingIdentifierTool generate`
308
- - Commit fix: `git add -A && git commit -m "fix(common): regenerate keys after rebase"`
309
- - Push: `git push origin iteration/develop`
310
- - Re-run this step to confirm
311
-
312
- 5. If build succeeds → print `Post-Push Build: ✅`
313
-
314
- ---
315
-
316
- ## STEP 3 - Issue Housekeeping (Per Component)
317
-
318
- > **(strict) NONE of these substeps may be skipped.** Each substep prints a
319
- > status line (`✅` or `❌`). The Completion Gate at the end (3g) verifies ALL
320
- > substeps executed. If any critical substep is missing → HALT.
321
-
322
- Initialise a per-component result tracker:
323
-
324
- ```python
325
- housekeeping = {} # { issue_number: { "3a": bool, "3b": bool, "3c": bool, "3d": bool, "3e": bool, "3f": bool } }
326
- for comp in reviewed:
327
- housekeeping[comp["issue"]] = {k: False for k in ["3a","3b","3c","3d","3e","3f"]}
328
- ```
329
-
330
- For EACH reviewed component:
331
-
332
- ### 3a. Comment on Issue
333
-
334
- ```bash
335
- gh issue comment <N> --repo ${GH_REPO} --body "$(cat <<EOF
336
- Committed to iteration/develop (submodules) via performance-tour:
337
- - common: ${COMMON_SHA}
338
- - uicomponents: ${UICOMP_SHA}
339
- $(if [ "$LEAN_MODE" != "true" ]; then echo "- wiki: ${WIKI_SHA}"; fi)
340
- $(if [ "$LEAN_MODE" = "true" ]; then echo "\nMode: lean (tests & wiki skipped)"; fi)
341
-
342
- Tour batch: $(date +%Y-%m-%d)
343
- Ready for review.
344
- EOF
345
- )"
346
- ```
347
-
348
- Verify: `gh issue view <N> --repo ${GH_REPO} --json comments --jq '.comments[-1].body' | grep -q 'performance-tour'`
349
-
350
- Print: ` #<N> 3a Comment: ✅` or `❌`
351
-
352
- ### 3b. Update Issue Phase + Labels
353
-
354
- Determine completed phases from committed files:
355
- - Has Swift view file → phase:implementation done
356
- - Has test files → phase:testing done (**skip check in lean mode - always false**)
357
- - Has .figma.swift → phase:code-connect done
358
- - Has wiki markdown → phase:documentation done (**skip check in lean mode - always false**)
359
-
360
- **Add phase labels to issue (adjust for lean mode):**
361
-
362
- ```bash
363
- # Full mode: add all completed phase labels
364
- # Lean mode: only add phase:code-connect (no testing or documentation labels)
365
- if [ "$LEAN_MODE" = "true" ]; then
366
- gh issue edit <N> --repo ${GH_REPO} \
367
- --add-label "phase:code-connect"
368
- else
369
- gh issue edit <N> --repo ${GH_REPO} \
370
- --add-label "phase:testing" \
371
- --add-label "phase:code-connect" \
372
- --add-label "phase:documentation"
373
- fi
374
- ```
375
-
376
- **Update Phase field on Projects V2 board** to the LAST completed phase
377
- (same GraphQL mutations as `figma-iteration-commit` STEP 4b):
378
-
379
- ```bash
380
- # Phase option IDs:
381
- # Implementation = 0577dcda
382
- # Testing = 106b64ce
383
- # Code Connect = 5384b1e1
384
- # Documentation = 7307fb8f
385
- #
386
- # In lean mode, last phase = Code Connect (5384b1e1)
387
- # In full mode, last phase = Documentation (7307fb8f)
388
-
389
- 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')
390
-
391
- ITEM_ID=$(gh api graphql -f query='mutation { addProjectV2ItemById(input: { projectId: "{github.projectV2Id}", contentId: "'"$ISSUE_NODE_ID"'" }) { item { id } } }' --jq '.data.addProjectV2ItemById.item.id')
392
-
393
- # Set Phase = Documentation (last completed) - or Code Connect in lean mode
394
- LAST_PHASE_ID="7307fb8f" # Documentation
395
- if [ "$LEAN_MODE" = "true" ]; then
396
- LAST_PHASE_ID="5384b1e1" # Code Connect
397
- fi
398
- gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.phase}", value: { singleSelectOptionId: "'"$LAST_PHASE_ID"'" } }) { projectV2Item { id } } }'
399
- ```
400
-
401
- Verify: `gh api graphql` query confirms Phase field updated.
402
-
403
- Print: ` #<N> 3b Phase: ✅ → Documentation` or ` #<N> 3b Phase: ✅ → Code Connect (lean)` or `❌`
404
-
405
- ### 3c. Link Wiki to Issue
406
-
407
- > **LEAN MODE:** If `lean_mode` is `true`, **SKIP this substep.** Wiki was not generated.
408
- > Print ` #<N> 3c Wiki Link: ⏭ (lean mode)` and proceed.
409
-
410
- If wiki was committed, add/update `### Wiki` section in issue body
411
- (same logic as `figma-iteration-commit` STEP 4c).
412
-
413
- ```bash
414
- # Get current body
415
- BODY=$(gh issue view <N> --repo ${GH_REPO} --json body --jq '.body')
416
-
417
- # Construct wiki URL
418
- WIKI_URL="https://github.com/${GH_REPO}/wiki/<WIKI_RELATIVE_PATH>/<COMPONENT_NAME>"
419
-
420
- # Append wiki section if not already present
421
- if ! echo "$BODY" | grep -q '### Wiki'; then
422
- NEW_BODY="${BODY}
423
-
424
- ### Wiki
425
-
426
- [${COMPONENT_NAME}](${WIKI_URL})"
427
- gh issue edit <N> --repo ${GH_REPO} --body "$NEW_BODY"
428
- fi
429
- ```
430
-
431
- Verify: `gh issue view <N> --repo ${GH_REPO} --json body --jq '.body' | grep -q 'Wiki'`
432
-
433
- Print: ` #<N> 3c Wiki Link: ✅` or `⏭ (no wiki)` or `❌`
434
-
435
- ### 3d. Auto-Unblock Dependents
436
-
437
- After ALL components are pushed, scan blocked issues:
438
-
439
- ```bash
440
- gh issue list --repo ${GH_REPO} --state open --label blocked --json number,title,body
441
- ```
442
-
443
- For each blocked issue, check if all blocking dependencies now have implementations.
444
- If yes → remove `blocked` label + comment.
445
-
446
- Print: ` 3d Unblock: ✅ (N unblocked)` or `⏭ (none blocked)`
447
-
448
- ### 3e. Regenerate Status Dashboard
449
-
450
- > **LEAN MODE:** If `lean_mode` is `true`, **SKIP this substep.** No wiki changes were made.
451
- > Print ` 3e Dashboard: ⏭ (lean mode)` and proceed.
452
-
453
- Wiki status pages (`ComponentImplementationStatus.md`, `-DSC.md`, `-MAC.md`) contain
454
- component counts that may have been lost during rebase conflict resolution. Regenerate
455
- them after all pushes are complete.
456
-
457
- ```bash
458
- # Run the status update skill logic:
459
- cd ${WIKI}
460
-
461
- # Option A: If figma-to-swift-ui-status-update is available as a command
462
- # /figma-to-swift-ui-status-update
463
-
464
- # Option B: Manual regeneration using the registry
465
- cd ${COMMON}
466
- python3 ${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/update-status-dashboard.py \
467
- --wiki-path "${WIKI}" \
468
- --common-path "${COMMON}" \
469
- --uicomponents-path "${UICOMPONENTS}"
470
- ```
471
-
472
- If the script is not available, skip with a warning:
473
- ```
474
- ⚠️ Status dashboard regeneration skipped - script not found.
475
- Run /figma-to-swift-ui-status-update manually to update counts.
476
- ```
477
-
478
- If regeneration produces changes:
479
- ```bash
480
- cd ${WIKI}
481
- git add ComponentImplementationStatus*.md
482
- git commit -m "docs(wiki): regenerate status dashboard after tour batch
483
-
484
- Tour: performance-tour $(date +%Y-%m-%d)"
485
- git push origin master
486
- ```
487
-
488
- Print: ` 3e Dashboard: ✅ regenerated` or `⏭ (no script)`
489
-
490
- ### 3f. Jira Assignment & Content Update
491
-
492
- > This step is a **safety net** for `performance-start` STEP 4. In tour mode,
493
- > `performance-start` should assign Jira issues, but subagents may skip it.
494
- > This step verifies and fixes any gaps.
495
-
496
- For EACH reviewed component that has a Jira key (from issue body, field `### Jira Issue`):
497
-
498
- ```bash
499
- # Extract Jira key from issue body
500
- JIRA_KEY=$(gh issue view <N> --repo ${GH_REPO} --json body --jq '.body' | grep -oE '{jira.projectKey}-[0-9]+')
501
- ```
502
-
503
- If `JIRA_KEY` is empty or `_No response_` → skip with `⏭ (no Jira)`.
504
-
505
- Otherwise, run the Jira update via **Python urllib** (same approach as `performance-start` STEP 4):
506
-
507
- ```python
508
- # /tmp/jira_housekeeping_<JIRA_KEY>.py
509
- import subprocess, urllib.request, json
510
-
511
- token = subprocess.check_output(
512
- ["security", "find-generic-password", "-a",
513
- subprocess.check_output(["whoami"]).decode().strip(),
514
- "-s", "JIRA_TOKEN", "-w"],
515
- stderr=subprocess.DEVNULL
516
- ).decode().strip()
517
-
518
- JIRA_KEY = "<JIRA_KEY>"
519
-
520
- # 1. Get current user
521
- req = urllib.request.Request(
522
- "{jira.baseUrl}/rest/api/2/myself",
523
- headers={"Authorization": f"Bearer {token}"}
524
- )
525
- resp = urllib.request.urlopen(req, timeout=15)
526
- username = json.loads(resp.read().decode())["name"]
527
-
528
- # 2. Check if already assigned
529
- req2 = urllib.request.Request(
530
- f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}?fields=assignee",
531
- headers={"Authorization": f"Bearer {token}"}
532
- )
533
- resp2 = urllib.request.urlopen(req2, timeout=15)
534
- assignee = json.loads(resp2.read().decode()).get("fields",{}).get("assignee")
535
-
536
- if assignee and assignee.get("name") == username:
537
- print(f"ALREADY_ASSIGNED {JIRA_KEY}")
538
- else:
539
- # 3. Assign
540
- data = json.dumps({"name": username}).encode()
541
- req3 = urllib.request.Request(
542
- f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}/assignee",
543
- data=data,
544
- headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
545
- method="PUT"
546
- )
547
- try:
548
- urllib.request.urlopen(req3, timeout=15)
549
- print(f"ASSIGNED {JIRA_KEY}")
550
- except urllib.error.HTTPError as e:
551
- print(f"ASSIGN_FAILED {JIRA_KEY} {e.code}")
552
-
553
- # 4. Update Jira content (summary, description, labels)
554
- description = (
555
- "h3. Figma\n"
556
- "[<COMPONENT>|<FIGMA_URL>]\n\n"
557
- "h3. GitHub Issue\n"
558
- "[#<N>|https://github.com/<GH_REPO>/issues/<N>]\n\n"
559
- "h3. Component\n"
560
- "* *Registry Name:* <REGISTRY>\n"
561
- "* *Component Name:* <COMPONENT>\n"
562
- "* *Page:* <PAGE>\n\n"
563
- "h3. Status\n"
564
- "* (/) Implementation\n"
565
- "* (/) Testing\n"
566
- "* (/) Code Connect\n"
567
- "* (/) Documentation"
568
- )
569
- summary = "Implement <COMPONENT> iOS UI Component"
570
- update_data = json.dumps({
571
- "fields": {
572
- "summary": summary,
573
- "description": description,
574
- "labels": ["redesign_ios_ui_component", "MobRedesign"],
575
- "components": [{"name": "TKMOB IOS"}],
576
- "fixVersions": [{"name": "no-version"}],
577
- "customfield_22025": {"value": "YOK"},
578
- "customfield_21400": ["no-version"]
579
- }
580
- }).encode()
581
- req4 = urllib.request.Request(
582
- f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}",
583
- data=update_data,
584
- headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
585
- method="PUT"
586
- )
587
- try:
588
- urllib.request.urlopen(req4, timeout=15)
589
- print(f"UPDATED {JIRA_KEY}")
590
- except urllib.error.HTTPError as e:
591
- print(f"UPDATE_FAILED {JIRA_KEY} {e.code}")
592
- ```
593
-
594
- Print: ` #<N> 3f Jira (<JIRA_KEY>): ✅ assigned + updated` or `⏭ (no Jira)` or `⚠️ (VPN/token issue)`
595
-
596
- ### 3g. Required Completion Gate
597
-
598
- > **This gate is NON-NEGOTIABLE. Do NOT proceed to STEP 4 without passing it.**
599
-
600
- Print the housekeeping checklist for ALL components:
601
-
602
- ```
603
- ╔══════════════════════════════════════════════════════════════╗
604
- ║ HOUSEKEEPING COMPLETION GATE ║
605
- ╠══════════════════════════════════════════════════════════════╣
606
- ║ ║
607
- ║ #308 FeatureXInviteList ║
608
- ║ 3a Comment: ✅ ║
609
- ║ 3b Phase: ✅ → Documentation ║
610
- ║ 3c Wiki Link: ✅ ║
611
- ║ 3d Unblock: ⏭ (none blocked) ║
612
- ║ 3e Dashboard: ✅ regenerated ║
613
- ║ 3f Jira: ✅ {jira.projectKey}-132507 ║
614
- ║ ║
615
- ║ #309 FeatureXVoucherGroup ║
616
- ║ 3a Comment: ✅ ║
617
- ║ 3b Phase: ✅ → Documentation ║
618
- ║ 3c Wiki Link: ✅ ║
619
- ║ 3d Unblock: ⏭ (none blocked) ║
620
- ║ 3e Dashboard: ⏭ (covered above) ║
621
- ║ 3f Jira: ✅ {jira.projectKey}-132508 ║
622
- ║ ║
623
- ║ CRITICAL CHECK: ║
624
- ║ 3a (Comment): ALL ✅ ║
625
- ║ 3b (Phase): ALL ✅ ← MUST pass ║
626
- ║ 3c (Wiki): ALL ✅ ← MUST pass (if wiki exists) ║
627
- ║ (or ⏭ lean for all in lean mode) ║
628
- ║ 3f (Jira): ALL ✅ ← MUST pass (if Jira exists) ║
629
- ║ ║
630
- ║ GATE: ✅ PASSED ║
631
- ╚══════════════════════════════════════════════════════════════╝
632
- ```
633
-
634
- **Critical substeps** (MUST pass or have valid skip reason):
635
- - **3a** - Comment on issue
636
- - **3b** - Phase + labels updated
637
- - **3c** - Wiki linked (if wiki committed)
638
- - **3f** - Jira assigned (if Jira key exists)
639
-
640
- **Non-critical substeps** (warn but continue):
641
- - **3d** - Auto-unblock (best effort)
642
- - **3e** - Status dashboard (best effort)
643
-
644
- If ANY critical substep shows `❌`:
645
- 1. Print which substeps failed and for which components
646
- 2. **Retry the failed substep** (1 retry per substep)
647
- 3. If retry also fails → HALT with: `"Housekeeping incomplete. Fix manually before marking tour done."`
648
-
649
- If gate passes → proceed to STEP 4.
650
-
651
- ---
652
-
653
- ## STEP 4 - Final Report
654
-
655
- ```
656
- ╔══════════════════════════════════════════════════════════════╗
657
- ║ TOUR COMPLETE - FINAL REPORT ║
658
- ╠══════════════════════════════════════════════════════════════╣
659
- ║ ║
660
- ║ ┌───┬────────┬──────────────┬──────────┬────────────────┐ ║
661
- ║ │ # │ Issue │ Component │ Status │ SHA │ ║
662
- ║ ├───┼────────┼──────────────┼──────────┼────────────────┤ ║
663
- ║ │ 1 │ #1000 │ ComponentA │ ✅ Pushed │ abc1234 │ ║
664
- ║ │ 2 │ #1002 │ ComponentC │ ✅ Pushed │ def5678 │ ║
665
- ║ │ 3 │ #1001 │ ComponentB │ ❌ Dropped│ - │ ║
666
- ║ └───┴────────┴──────────────┴──────────┴────────────────┘ ║
667
- ║ ║
668
- ║ Validation: ║
669
- ║ Build: ✅ ║
670
- ║ Tests: ✅ (20 passed) ║
671
- ║ Review: ✅ ║
672
- ║ Post-Push: ✅ (remote dep build verified) ║
673
- ║ ║
674
- ║ Push: ║
675
- ║ common: ✅ pushed (2 commits) ║
676
- ║ uicomponents: ✅ pushed (2 commits) ║
677
- ║ wiki: ✅ pushed (2 commits) / ⏭ lean ║
678
- ║ ║
679
- ║ Issues Updated: #1000, #1002 ║
680
- ║ Jira Updated: {jira.projectKey}-132507, {jira.projectKey}-132508 ║
681
- ║ Unblocked: #1050 (was blocked by ComponentA) ║
682
- ║ Dashboard: ✅ regenerated ║
683
- ║ Housekeeping: ✅ gate passed (all 6 substeps) ║
684
- ║ ║
685
- ║ Tour Duration: 1h 23m ║
686
- ║ Components: 2 committed, 1 dropped ║
687
- ╚══════════════════════════════════════════════════════════════╝
688
- ```
689
-
690
- ### Cleanup
691
-
692
- ```bash
693
- # Remove tour tracker (tour is complete)
694
- rm -f ${TRACKER_FILE}
695
- ```
696
-
697
- ---
698
-
699
- ## Error Handling
700
-
701
- | Error | Action |
702
- |-------|--------|
703
- | Tracker not found | HALT: "No tour in progress" |
704
- | current_step not STEP_3 | HALT: "Review not complete" |
705
- | No reviewed components | HALT: "Nothing to commit" |
706
- | Build fails | HALT - fix, then re-run |
707
- | Tests fail | HALT - fix failing component, then re-run |
708
- | Push rejected (after 3 retries) | HALT - manual conflict resolution needed |
709
- | Rebase conflict (generated file) | Auto-resolve: accept remote + regenerate (see 2a table) |
710
- | Rebase conflict (non-generated) | HALT - print conflict file, ask user to resolve |
711
- | Post-push build fails | Regenerate generated files in common, commit + push fix |
712
- | Status dashboard script missing | Warn + skip - not blocking |
713
- | Issue housekeeping fails (critical: 3a/3b/3c/3f) | Retry once → if still fails, HALT |
714
- | Issue housekeeping fails (non-critical: 3d/3e) | Warn but continue |
715
- | Jira unreachable | ⚠️ warn - mark 3f as skipped with reason, pass gate |
716
- | Completion gate fails | HALT: print failed substeps, retry once, then abort |