@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,352 +0,0 @@
1
- # PHASE 2D - Analytics Events
2
-
3
- Analytics event integration using `UIComponentUtilities` view modifiers.
4
- REF: `reference/analytics-events.md`
5
-
6
- Execute if interactive elements exist in the component.
7
- DEPENDS ON: Phase 2A (uses testing identifiers as analytics event IDs)
8
- TOOL RESTRICTIONS: No Edit, No Bash
9
- NEXT: Phase 3 (Data Analysis)
10
-
11
- ---
12
-
13
- ## IMPLEMENTATION_MODULE
14
-
15
- Extensions: `Sources/UIComponentUtilities/Analytics/`
16
- - `View+Analytics.swift` - View modifiers
17
- - `AnalyticsContext.swift` - Context propagation
18
-
19
- ---
20
-
21
- ## VIEW_MODIFIERS
22
-
23
- | Modifier | Event Type | Usage |
24
- |----------|-----------|-------|
25
- | `.analyticsScreen(_:)` | `UIScreenViewed`, `UIScreenExited` | Screen lifecycle |
26
- | `.analyticsButton(id:label:type:)` | `UIInteractionButtonTapped` | Button taps |
27
- | `.analyticsCard(id:title:type:position:)` | `UIInteractionCardTapped` | Card taps |
28
- | `.analyticsLink(id:text:destination:type:)` | `UIInteractionLinkTapped` | Link taps |
29
- | `.analyticsToggle(id:label:isOn:)` | `UIInteractionToggleChanged` | Toggle changes |
30
- | `.analyticsTabChanged(id:selectedIndex:label:)` | `UINavigationTabChanged` | Tab selection changes |
31
- | `.analyticsImpression(id:type:name:position:)` | `UIVisibilityElementImpression` | Element visibility |
32
- | `.analyticsModal(id:name:type:)` | `UINavigationModalPresented/Dismissed` | Modal lifecycle |
33
- | `.analyticsError(id:type:code:message:displayType:)` | `UIErrorErrorDisplayed` | Error display |
34
- | `.analyticsContext(screenName:screenClass:)` | - | Context propagation |
35
- | `.analyticsComponent(_:)` | - | Component path |
36
-
37
- ---
38
-
39
- ## PARAMETER_TYPES
40
-
41
- | Modifier | Required | Optional |
42
- |----------|----------|----------|
43
- | `.analyticsButton` | id | label, type (.primary/.secondary/.tertiary/.text/.icon) |
44
- | `.analyticsCard` | id | title, type, position |
45
- | `.analyticsLink` | id | text, destination, type (.internal/.external/.deeplink/.phone/.email) |
46
- | `.analyticsToggle` | id, isOn | label |
47
- | `.analyticsTabChanged` | id, selectedIndex | label (closure `(Int) -> String?` returning tab title for given index) |
48
- | `.analyticsModal` | id | name, type (.sheet/.fullScreen/.popover/.alert) |
49
- | `.analyticsImpression` | id, type (.banner/.card/.promotion/.advertisement) | name, position |
50
- | `.analyticsError` | id, type (.network/.validation/.authentication/.server/.unknown) | code, message, displayType (.alert/.banner/.toast/.inline/.fullScreen) |
51
-
52
- ---
53
-
54
- ## PRE-CHECK: Phase 1 + Phase 2A Complete
55
-
56
- ```
57
- Read: {artifactPath}/pass1/_index.md
58
- Read: {artifactPath}/pass1/design_context_response.json
59
- Read: {artifactPath}/pass1/component_properties.json
60
- Read: {artifactPath}/pass2/utility_identifiers.md # From Phase 2A - use as event IDs
61
- Read: {artifactPath}/IMPLEMENTATION_HISTORY.md
62
- ```
63
-
64
- EXTRACT:
65
- - `componentName`
66
- - `artifactPath`
67
- - Interactive elements from design_context
68
- - Testing identifiers (reuse as analytics IDs)
69
-
70
- ### Registry Input (optional)
71
-
72
- The orchestrator may pass `registryData` containing pre-existing keys from `{repos.common.path}/Shared/Figma/Components/{nodeId}.json`.
73
- If `registryData.analyticsEvents` exists and is non-empty, use it to pre-populate the events list.
74
- Pre-existing events can be carried forward without re-analysis.
75
-
76
- If any required file is missing:
77
-
78
- ```
79
- STATUS: HALT
80
- PHASE: phase-2d
81
- GATE: PRE_CHECK
82
- REASON: Required artifacts not found. Phase 1 and Phase 2A must complete first.
83
- COMPLETED_GATES: []
84
- ARTIFACTS_CREATED: none
85
- USER_ACTION_REQUIRED: Run Phase 1 and Phase 2A first.
86
- - pass1/_index.md must exist (Phase 1 output)
87
- - pass2/utility_identifiers.md must exist (Phase 2A output)
88
- ```
89
-
90
- ---
91
-
92
- ## GATE 1: IDENTIFY_TRACKABLE_ELEMENTS
93
-
94
- Scan `design_context_response.json` and `component_properties.json` for elements matching event categories:
95
-
96
- | UI Element | Modifier | Event Type |
97
- |------------|----------|------------|
98
- | Button | `.analyticsButton(id:label:type:)` | `UIInteractionButtonTapped` |
99
- | Card | `.analyticsCard(id:title:type:position:)` | `UIInteractionCardTapped` |
100
- | Link | `.analyticsLink(id:text:destination:type:)` | `UIInteractionLinkTapped` |
101
- | Toggle/Switch | `.analyticsToggle(id:label:isOn:)` | `UIInteractionToggleChanged` |
102
- | Tab Group | `.analyticsTabChanged(id:selectedIndex:label:)` | `UINavigationTabChanged` |
103
- | Sheet/Modal | `.analyticsModal(id:name:type:)` | `UINavigationModalPresented/Dismissed` |
104
- | Banner/Promo | `.analyticsImpression(id:type:name:position:)` | `UIVisibilityElementImpression` |
105
- | Error Display | `.analyticsError(id:type:code:message:displayType:)` | `UIErrorErrorDisplayed` |
106
- | Screen Root | `.analyticsScreen(_:)` | `UIScreenViewed/Exited` |
107
-
108
- ### Decision
109
-
110
- | Condition | Action |
111
- |-----------|--------|
112
- | No trackable elements found | → Skip to WRITE_ARTIFACT with "No analytics required" |
113
- | Has trackable elements | → Proceed to GATE 2 |
114
-
115
- ---
116
-
117
- ## GATE 2: MAP_EVENTS_TO_IDENTIFIERS
118
-
119
- For each trackable element, map to testing identifier from Phase 2A.
120
-
121
- **ID Source:** `UITestingIdentifierKey.{ComponentName}.{element}.description`
122
-
123
- Read `pass2/utility_identifiers.md` and match each interactive element to its corresponding testing identifier.
124
-
125
- ### Modifier Mapping
126
-
127
- For each element, construct the full modifier call:
128
-
129
- | Element | Identifier Key | Modifier |
130
- |---------|----------------|----------|
131
- | Submit Button | `.submitButton` | `.analyticsButton(id: UITestingIdentifierKey.{ComponentName}.submitButton.description, label: "Submit", type: .primary)` |
132
- | Flight Card | `.flightCard` | `.analyticsCard(id: UITestingIdentifierKey.{ComponentName}.flightCard.description, title: route, type: "flight", position: index)` |
133
- | Promo Banner | `.promoBanner` | `.analyticsImpression(id: UITestingIdentifierKey.{ComponentName}.promoBanner.description, type: .banner, name: title, position: nil)` |
134
-
135
- ### Registry Output Format
136
-
137
- When building the `analyticsEvents` array for `component-utilities.json`, output each event as:
138
-
139
- ```json
140
- {
141
- "element": "Submit Button",
142
- "identifierKey": "ComponentName.submitButton",
143
- "event": "Tracks button tap via `.analyticsButton(id:label:type:)` modifier with primary type."
144
- }
145
- ```
146
-
147
- The `event` field is markdown text describing the tracked event. Each platform implements it in their own way.
148
-
149
- ---
150
-
151
- ## GATE 3: WRITE_ARTIFACT
152
-
153
- ### JSON Sidecar (machine-readable)
154
-
155
- Write `{artifactPath}/pass2/utility_analytics.json`:
156
-
157
- ```json
158
- {
159
- "analyticsEvents": [
160
- { "element": "Element name", "identifierKey": "ComponentName.element", "event": "Description of tracked event" }
161
- ]
162
- }
163
- ```
164
-
165
- If no analytics events needed, write `{ "analyticsEvents": [] }`.
166
-
167
- This JSON is consumed by `phase2-finalize.py` to build `component-utilities.json`. The orchestrator reads ONLY this JSON - never the markdown.
168
-
169
- ### Markdown Artifact (human-readable)
170
-
171
- Write `{artifactPath}/pass2/utility_analytics.md`:
172
-
173
- ```markdown
174
- # Analytics Events: {componentName}
175
-
176
- Generated: {ISO_DATE}
177
- Source: pass1/design_context_response.json, pass2/utility_identifiers.md
178
-
179
- ## Summary
180
- - Total Events: {COUNT}
181
- - Modifiers: analyticsButton({N}), analyticsCard({N}), analyticsImpression({N}), etc.
182
-
183
- ## Event Definitions
184
-
185
- | Element | Identifier Key | Modifier |
186
- |---------|----------------|----------|
187
- | Submit | .{ComponentName}.submitButton | .analyticsButton(id:label:type:) |
188
- | Card | .{ComponentName}.flightCard | .analyticsCard(id:title:type:position:) |
189
- | Banner | .{ComponentName}.promoBanner | .analyticsImpression(id:type:name:position:) |
190
-
191
- ## Implementation
192
-
193
- import UIComponentUtilities
194
-
195
- ### Screen Context (parent view)
196
- ```swift
197
- ContentView()
198
- .analyticsScreen("{ComponentName}")
199
- ```
200
-
201
- ### Button Tracking
202
- ```swift
203
- Button("Submit") { submit() }
204
- .accessibilityIdentifier(.{ComponentName}.submitButton)
205
- .analyticsButton(
206
- id: UITestingIdentifierKey.{ComponentName}.submitButton.description,
207
- label: "Submit",
208
- type: .primary
209
- )
210
- ```
211
-
212
- ### Card Tracking (with position)
213
- ```swift
214
- ForEach(flights.indices, id: \.self) { index in
215
- FlightCard(flight: flights[index])
216
- .accessibilityIdentifier(.{ComponentName}.flightCard.with(index))
217
- .analyticsCard(
218
- id: UITestingIdentifierKey.{ComponentName}.flightCard.with(index).description,
219
- title: flights[index].route,
220
- type: "flight",
221
- position: index
222
- )
223
- }
224
- ```
225
-
226
- ### Link Tracking
227
- ```swift
228
- TextLink("Terms of Service")
229
- .accessibilityIdentifier(.{ComponentName}.termsLink)
230
- .analyticsLink(
231
- id: UITestingIdentifierKey.{ComponentName}.termsLink.description,
232
- text: "Terms of Service",
233
- destination: "/terms",
234
- type: .internal
235
- )
236
- ```
237
-
238
- ### Toggle Tracking
239
- ```swift
240
- Toggle("Notifications", isOn: $notificationsEnabled)
241
- .accessibilityIdentifier(.{ComponentName}.notificationsToggle)
242
- .analyticsToggle(
243
- id: UITestingIdentifierKey.{ComponentName}.notificationsToggle.description,
244
- label: "Notifications",
245
- isOn: $notificationsEnabled
246
- )
247
- ```
248
-
249
- ### Impression Tracking (banners, promotions)
250
- ```swift
251
- PromotionBanner(promotion: promo)
252
- .accessibilityIdentifier(.{ComponentName}.promoBanner)
253
- .analyticsImpression(
254
- id: UITestingIdentifierKey.{ComponentName}.promoBanner.description,
255
- type: .banner,
256
- name: promo.title,
257
- position: index
258
- )
259
- ```
260
-
261
- ### Tab Group Tracking
262
- ```swift
263
- TabsSecondaryGroup(items: items, selectedIndex: $selectedIndex)
264
- .analyticsTabChanged(
265
- id: UITestingIdentifierKey.{ComponentName}.container.description,
266
- selectedIndex: $selectedIndex,
267
- label: { items.indices.contains($0) ? items[$0].title : nil }
268
- )
269
- ```
270
-
271
- ### Modal Tracking
272
- ```swift
273
- .sheet(isPresented: $showDetails) {
274
- DetailsView()
275
- .analyticsModal(
276
- id: "flight_details",
277
- name: "Flight Details",
278
- type: .sheet
279
- )
280
- }
281
- ```
282
-
283
- ### Error Tracking
284
- ```swift
285
- ErrorBanner(error: networkError)
286
- .analyticsError(
287
- id: "network_error",
288
- type: .network,
289
- code: "CONN_TIMEOUT",
290
- message: "Connection timed out",
291
- displayType: .banner
292
- )
293
- ```
294
-
295
- ### Direct Event (complex cases)
296
- ```swift
297
- import AnalyticsEvents
298
-
299
- UIVisibilityPullToRefreshTriggered(
300
- contentId: UITestingIdentifierKey.{ComponentName}.refreshControl.description,
301
- contentType: "flights",
302
- screenName: context.screenName,
303
- timeSinceLastRefreshMs: nil
304
- ).track()
305
- ```
306
- ```
307
-
308
- ---
309
-
310
- ## GATE 4: UPDATE_IMPLEMENTATION_HISTORY
311
-
312
- Append to `{artifactPath}/IMPLEMENTATION_HISTORY.md`:
313
-
314
- ```markdown
315
- ## Phase 2D: Analytics Events
316
- - Status: ✅ Complete
317
- - Artifact: pass2/utility_analytics.md
318
- - Events: {COUNT} ({modifiers_list})
319
- ```
320
-
321
- ---
322
-
323
- ## VALIDATION CHECKLIST
324
-
325
- Before marking complete, verify:
326
-
327
- ```
328
- [ ] Design context analyzed for interactive elements
329
- [ ] Testing identifiers loaded from Phase 2A (pass2/utility_identifiers.md)
330
- [ ] Each interactive element mapped to a view modifier (not raw events)
331
- [ ] Modifier parameters match the modifier's signature (required vs optional)
332
- [ ] IDs sourced from UITestingIdentifierKey.{Component}.{element}.description
333
- [ ] utility_analytics.json created (JSON sidecar for finalize script)
334
- [ ] utility_analytics.md created with complete implementation examples
335
- [ ] All 9 modifier types checked: analyticsButton, analyticsCard, analyticsLink, analyticsToggle, analyticsTabChanged, analyticsImpression, analyticsModal, analyticsError, analyticsScreen
336
- [ ] IMPLEMENTATION_HISTORY.md updated with Phase 2D status
337
- [ ] If no trackable elements: utility_analytics.md says "No analytics required"
338
- ```
339
-
340
- ---
341
-
342
- ## SUCCESS OUTPUT
343
-
344
- ```
345
- STATUS: COMPLETE
346
- PHASE: phase-2d
347
- GATES_PASSED: [PRE_CHECK, IDENTIFY_TRACKABLE_ELEMENTS, MAP_EVENTS_TO_IDENTIFIERS, WRITE_ARTIFACT, UPDATE_IMPLEMENTATION_HISTORY]
348
- ARTIFACTS_CREATED:
349
- - {artifactPath}/pass2/utility_analytics.json
350
- - {artifactPath}/pass2/utility_analytics.md
351
- SUMMARY: Analytics events: {COUNT} modifiers defined.
352
- ```
@@ -1,337 +0,0 @@
1
- # PHASE 3 - Data Analysis Orchestrator
2
-
3
- Orchestrates Phase 3 sub-phases: dispatches sub-agents, collects results, writes pass3/_index.md.
4
- PREV: Phase 2 (Utility Integration)
5
- NEXT: Phase 4 (Implementation)
6
-
7
- ---
8
-
9
- ## PURPOSE
10
-
11
- Phase 3 is the bridge between data collection (Phases 1-2) and code generation (Phase 4).
12
- It transforms raw Figma artifacts into actionable analysis files that Phase 4 consumes directly.
13
- Each sub-phase writes one analysis file to `pass3/`. Phase 4 reads pass3/ as its sole input.
14
-
15
- ---
16
-
17
- ## PRE-CHECK: Phase 2 Complete
18
-
19
- ```
20
- Read: {artifactPath}/IMPLEMENTATION_HISTORY.md
21
- Read: {artifactPath}/pass2/_index.md
22
- ```
23
-
24
- EXTRACT:
25
- - `componentName`
26
- - `artifactPath`
27
- - `nodeId`
28
- - `fileKey`
29
-
30
- | Result | Action |
31
- |--------|--------|
32
- | Both files exist | Proceed to REGISTRY_LOOKUP |
33
- | Either missing | HALT |
34
-
35
- FAIL →
36
- ```
37
- STATUS: HALT
38
- PHASE: phase-3
39
- GATE: PRE_CHECK
40
- REASON: IMPLEMENTATION_HISTORY.md or pass2/_index.md not found. Phase 2 must complete first.
41
- COMPLETED_GATES: []
42
- ARTIFACTS_CREATED: none
43
- USER_ACTION_REQUIRED: Run Phase 2 first.
44
- ```
45
-
46
- Verify `pass3/` directory exists. If not:
47
-
48
- ```bash
49
- mkdir -p {artifactPath}/pass3
50
- ```
51
-
52
- ---
53
-
54
- ## NORMALIZE_DESIGN_CONTEXT: Handle Sublayer Format
55
-
56
- Phase 1 script may produce a sublayer format for large components. Normalize it before dispatching sub-phases so they always see a single `response` field.
57
-
58
- ```
59
- Read: {artifactPath}/pass1/design_context_response.json
60
- ```
61
-
62
- Check the JSON structure:
63
-
64
- | Format | Detection | Action |
65
- |--------|-----------|--------|
66
- | Normal | `sublayers` is `false` or absent | No action needed - `response` field exists |
67
- | Sublayer | `sublayers` is `true` | Concatenate all `responses` values (see below) |
68
- | Already normalized | `sublayers` is `true` AND `response` field exists | No action needed - Phase 2 already normalized |
69
-
70
- ### Sublayer normalization (if not already done by Phase 2)
71
-
72
- If `sublayers: true` and no `response` field:
73
-
74
- 1. Read all values from the `responses` object (keyed by node ID, e.g. `"123:456": "...code..."`)
75
- 2. Concatenate them into a single string, separated by `\n\n// --- Sublayer: {nodeId} ---\n\n`
76
- 3. Add a `response` field to the JSON with the concatenated string
77
- 4. Keep the original `sublayers`, `sublayerNodeIds`, and `responses` fields intact (for traceability)
78
- 5. Write the updated JSON back to `{artifactPath}/pass1/design_context_response.json`
79
-
80
- After normalization, all sub-phases read the `response` field as usual - no sublayer awareness needed.
81
-
82
- ---
83
-
84
- ## ROUTING
85
-
86
- ### Sub-phase inventory
87
-
88
- | Sub-phase | Execution | Purpose | Required | Depends On |
89
- |-----------|-----------|---------|----------|------------|
90
- | 3A | **AI agent** (`phase-3a-location.md`) | Component name + path resolution | **ALWAYS** | Phase 1 (nodeId) |
91
- | 3B | **Script** (`scripts/phase3-scripts.py 3b`) | Figma variables → Swift tokens | **ALWAYS** | Phase 1 (variable_defs) |
92
- | 3C | **AI agent** (`phase-3c-nested.md`) | Nested component resolution | **ALWAYS** | Phase 1 (code_connect_map) |
93
- | 3D | **AI agent** (`phase-3d-patterns.md`) | Pattern detection + architecture + complexity | **ALWAYS** | Phase 1 (design_context, component_properties) |
94
- | 3E | **Script** (`scripts/phase3-scripts.py 3e`) | Asset inventory | If assets exist | Phase 1 (design_context_assets) |
95
- | 3F | **Script** (`scripts/phase3-scripts.py 3f`) | Utility integration summary | **ALWAYS** | Phase 2 (component-utilities.json) |
96
- | 3G | **Script** (`scripts/phase3-scripts.py 3g`) | Property coverage verification | **ALWAYS** | Phase 3D (architecture JSON output) |
97
-
98
- ### Execution flow
99
-
100
- ```
101
- PRE-CHECK
102
-
103
- NORMALIZE_DESIGN_CONTEXT
104
-
105
- ┌──────────────────────────────────────────────────┐
106
- │ WAVE 1 - PARALLEL │
107
- │ │
108
- │ Scripts (Bash, ~5s): │
109
- │ python3 scripts/phase3-scripts.py wave1 │
110
- │ → 3B Token Mapping │
111
- │ → 3E Asset Inventory │
112
- │ → 3F Utility Integration │
113
- │ │
114
- │ AI Agents (parallel sub-agents): │
115
- │ 3A - Component Location ← required │
116
- │ 3C - Nested Components ← required │
117
- │ 3D - Patterns + Architecture ← required │
118
- │ │
119
- └──────────────────────────────────────────────────┘
120
- ↓ wait for all to complete
121
-
122
- ┌──────────────────────────────────────────────────┐
123
- │ WAVE 2 - SEQUENTIAL (depends on 3D output) │
124
- │ │
125
- │ Script (Bash, ~1s): │
126
- │ python3 scripts/phase3-scripts.py 3g │
127
- │ → 3G Property Coverage Verification │
128
- │ Reads: 04b_component_architecture.json (3D) │
129
- │ │
130
- └──────────────────────────────────────────────────┘
131
-
132
- GATE 1: COLLECT_RESULTS
133
-
134
- GATE 2: WRITE_IMPLEMENTATION_SPEC
135
-
136
- GATE 3: UPDATE_IMPLEMENTATION_HISTORY
137
-
138
- GATE 4: WRITE_PASS3_INDEX
139
-
140
- PHASE OUTPUT
141
- ```
142
-
143
- ### Dispatch instructions
144
-
145
- **Wave 1 (parallel):** Launch scripts + AI agents simultaneously.
146
-
147
- Scripts (single Bash command):
148
- ```bash
149
- python3 {skillPath}/scripts/phase3-scripts.py wave1 --artifact-path {artifactPath}
150
- ```
151
- This runs 3B, 3E, 3F sequentially (~5-10s total). The script handles skip conditions for 3E automatically.
152
-
153
- AI Agents (sub-agents in parallel):
154
- - 3A, 3C, 3D - each reads from `pass1/` artifacts independently.
155
- - `design_context_response.json` is already normalized (flat `response` field) by NORMALIZE_DESIGN_CONTEXT.
156
- - Each writes its own file to `pass3/`.
157
- - Wait for ALL (scripts + agents) to complete before Wave 2.
158
-
159
- **Wave 2 (sequential):** Run 3G script after 3D completes.
160
- ```bash
161
- python3 {skillPath}/scripts/phase3-scripts.py 3g --artifact-path {artifactPath}
162
- ```
163
- - 3G reads `pass1/component_properties.json` + `pass3/04b_component_architecture.json` (from 3D).
164
- - 3G writes `pass3/00_property_coverage.json`.
165
- - Wait for 3G to complete before proceeding to GATE 1.
166
-
167
- ### Skip conditions
168
-
169
- | Sub-phase | Skip when |
170
- |-----------|-----------|
171
- | 3E | No `pass1/design_context_assets.txt` exists or file is empty (handled by script - writes placeholder automatically) |
172
-
173
- ---
174
-
175
- ## GATE 1: COLLECT_RESULTS
176
-
177
- After all sub-phases complete, verify each produced its artifact:
178
-
179
- ```
180
- [ ] pass3/01_component_location.md exists (Phase 3A)
181
- [ ] pass3/02_token_mapping.md exists (Phase 3B)
182
- [ ] pass3/03_nested_components.md exists (Phase 3C)
183
- [ ] pass3/04_patterns.md exists (Phase 3D - patterns section)
184
- [ ] pass3/04b_component_architecture.md exists (Phase 3D - architecture section)
185
- [ ] pass3/04b_component_architecture.json exists (Phase 3D - structured, for 3G script)
186
- [ ] pass3/05_complexity.md exists (Phase 3D - complexity section)
187
- [ ] pass3/06_assets.md exists (Phase 3E - or skipped placeholder)
188
- [ ] pass3/08_utility_integration.md exists (Phase 3F)
189
- [ ] pass3/00_property_coverage.json exists (Phase 3G)
190
- ```
191
-
192
- ANY missing →
193
- ```
194
- STATUS: HALT
195
- PHASE: phase-3
196
- GATE: COLLECT_RESULTS
197
- REASON: Sub-phase artifact missing.
198
- MISSING: [list missing files]
199
- USER_ACTION_REQUIRED: Re-run the failed sub-phase.
200
- ```
201
-
202
- ---
203
-
204
- ## GATE 2: WRITE_IMPLEMENTATION_SPEC (script)
205
-
206
- **IMPORTANT:** Do NOT read pass3 sub-phase output files in the main orchestrator context. The spec script compiles everything from structured JSON files.
207
-
208
- ```bash
209
- python3 {skillPath}/scripts/phase3-scripts.py spec --artifact-path '{artifactPath}'
210
- ```
211
-
212
- The script reads `04b_component_architecture.json`, `00_property_coverage.json`, `pass1/component_summary.json`, and extracts counts from markdown files. It writes `pass3/07_implementation_spec.md`.
213
-
214
- | Result | Action |
215
- |--------|--------|
216
- | Exit 0 | Proceed to GATE 3 |
217
- | Exit 1 | HALT - missing required input files |
218
-
219
- ---
220
-
221
- ## GATE 3: UPDATE_IMPLEMENTATION_HISTORY
222
-
223
- Append to `{artifactPath}/IMPLEMENTATION_HISTORY.md`:
224
-
225
- ```markdown
226
- ## Phase 3: Data Analysis
227
- - Component Location: ✅ pass3/01_component_location.md
228
- - Token Mapping: ✅ pass3/02_token_mapping.md ({MAPPED} mapped, {MISSING} missing)
229
- - Nested Components: ✅ pass3/03_nested_components.md ({CONNECTED} connected, {UNCONNECTED} unconnected)
230
- - Pattern Detection: ✅ pass3/04_patterns.md
231
- - Component Architecture: ✅ pass3/04b_component_architecture.md
232
- - Complexity: {SIMPLE/COMPLEX} ({COUNT} properties)
233
- - Assets: ✅ pass3/06_assets.md ({NEW} new, {EXISTING} existing) | ⏭️ Skipped (no assets)
234
- - Implementation Spec: ✅ pass3/07_implementation_spec.md
235
- - Utility Integration: ✅ pass3/08_utility_integration.md
236
- - Property Coverage: ✅ pass3/00_property_coverage.json ({IMPLEMENTED} implement, {SKIPPED} skip, {DEFERRED} defer)
237
- ```
238
-
239
- ---
240
-
241
- ## GATE 4: WRITE_PASS3_INDEX
242
-
243
- Write `{artifactPath}/pass3/_index.md`:
244
-
245
- ```markdown
246
- # Pass 3 - Analysis Output
247
-
248
- Component: {componentName}
249
- Generated: {ISO_DATE}
250
-
251
- ## Files
252
-
253
- | File | Description | Phase |
254
- |------|-------------|-------|
255
- | `pass3/01_component_location.md` | Component name, path, registry source | Phase 3A |
256
- | `pass3/02_token_mapping.md` | Figma variables → Swift tokens | Phase 3B |
257
- | `pass3/03_nested_components.md` | Connected/unconnected dependencies | Phase 3C |
258
- | `pass3/04_patterns.md` | Repeating/variant patterns, dimensions | Phase 3D |
259
- | `pass3/04b_component_architecture.md` | API shape, enums, configurations, list inference | Phase 3D |
260
- | `pass3/05_complexity.md` | SIMPLE/COMPLEX evaluation | Phase 3D |
261
- | `pass3/06_assets.md` | Asset inventory (new/existing) | Phase 3E |
262
- | `pass3/07_implementation_spec.md` | Compiled implementation blueprint | Phase 3 orchestrator |
263
- | `pass3/08_utility_integration.md` | Utility keys mapped to elements | Phase 3F |
264
- | `pass3/00_property_coverage.json` | Property coverage verification (IMPLEMENT/SKIP/DEFER) | Phase 3G |
265
-
266
- ## Read Instructions
267
-
268
- Phase 4 (Implementation): read `pass3/07_implementation_spec.md` first (compiled spec).
269
- For details on any section, read the individual file.
270
- Token mapping: `pass3/02_token_mapping.md`
271
- API design: `pass3/04b_component_architecture.md`
272
- Utility integration: `pass3/08_utility_integration.md`
273
- ```
274
-
275
- ---
276
-
277
- ## VALIDATION CHECKLIST
278
-
279
- ```
280
- [ ] IMPLEMENTATION_HISTORY.md loaded from Phase 2
281
- [ ] design_context_response.json normalized (sublayer → flat response field, or already normalized by Phase 2)
282
- [ ] Scripts dispatched (wave1: 3B+3E+3F via phase3-scripts.py)
283
- [ ] AI agents dispatched (3A, 3C, 3D)
284
- [ ] All Wave 1 (scripts + agents) returned COMPLETE
285
- [ ] 01_component_location.md exists
286
- [ ] 02_token_mapping.md exists
287
- [ ] 03_nested_components.md exists
288
- [ ] 04_patterns.md exists
289
- [ ] 04b_component_architecture.md exists
290
- [ ] 05_complexity.md exists
291
- [ ] 06_assets.md exists (or skipped placeholder)
292
- [ ] 07_implementation_spec.md written by spec script (NOT by orchestrator reading files)
293
- [ ] 08_utility_integration.md exists
294
- [ ] 00_property_coverage.json exists (Phase 3G - all properties have IMPLEMENT/SKIP/DEFER status)
295
- [ ] IMPLEMENTATION_HISTORY.md updated with Phase 3 summary
296
- [ ] pass3/_index.md written listing ALL pass3 files
297
- ```
298
-
299
- ---
300
-
301
- ## SUCCESS OUTPUT
302
-
303
- ```
304
- STATUS: COMPLETE
305
- PHASE: phase-3
306
- GATES_PASSED: [PRE_CHECK, NORMALIZE_DESIGN_CONTEXT, DISPATCH_WAVE_1, DISPATCH_WAVE_2, COLLECT_RESULTS, WRITE_IMPLEMENTATION_SPEC, UPDATE_IMPLEMENTATION_HISTORY, WRITE_PASS3_INDEX]
307
- ARTIFACTS_CREATED:
308
- - {artifactPath}/pass3/01_component_location.md (via Phase 3A - AI agent)
309
- - {artifactPath}/pass3/02_token_mapping.md (via Phase 3B - script)
310
- - {artifactPath}/pass3/03_nested_components.md (via Phase 3C - AI agent)
311
- - {artifactPath}/pass3/04_patterns.md (via Phase 3D - AI agent)
312
- - {artifactPath}/pass3/04b_component_architecture.md (via Phase 3D - AI agent)
313
- - {artifactPath}/pass3/04b_component_architecture.json (via Phase 3D - AI agent)
314
- - {artifactPath}/pass3/05_complexity.md (via Phase 3D - AI agent)
315
- - {artifactPath}/pass3/06_assets.md (via Phase 3E - script)
316
- - {artifactPath}/pass3/08_utility_integration.md (via Phase 3F - script)
317
- - {artifactPath}/pass3/00_property_coverage.json (via Phase 3G - script)
318
- - {artifactPath}/pass3/07_implementation_spec.md (orchestrator)
319
- - {artifactPath}/pass3/_index.md
320
- SUMMARY: Data analysis complete. {TOTAL_FILES} analysis files created. Complexity: {SIMPLE/COMPLEX}. {MAPPED}/{TOTAL} tokens mapped. {CONNECTED}/{TOTAL} nested components connected. Ready for Phase 4.
321
- ```
322
-
323
- ---
324
-
325
- ## REFERENCES
326
-
327
- | Topic | File |
328
- |-------|------|
329
- | Phase 3A | `phases/phase-3a-location.md` |
330
- | Phase 3B | `phases/phase-3b-tokens.md` |
331
- | Phase 3C | `phases/phase-3c-nested.md` |
332
- | Phase 3D | `phases/phase-3d-patterns.md` |
333
- | Phase 3E | `phases/phase-3e-assets.md` |
334
- | Phase 3F | `phases/phase-3f-utilities.md` |
335
- | Phase 3G | `phases/phase-3g-property-coverage.md` |
336
- | Registry Tool | `reference/registry.md` |
337
- | Missing Tokens | `reference/missing-tokens.md` |