@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,93 +0,0 @@
1
- # Sub-Component Graph Registry
2
-
3
- Discovers which Figma components use other components as instances (sub-components).
4
- Produces `Shared/Figma/sub-component-graph.json` via the Figma REST API.
5
-
6
- ---
7
-
8
- ## Script
9
-
10
- `.instructions/figma/figma-to-swiftui/scripts/figma-subcomponent-graph.py`
11
-
12
- ## Output
13
-
14
- `{repos.common.path}/Shared/Figma/sub-component-graph.json`
15
-
16
- ## Usage
17
-
18
- ```bash
19
- # From repo root
20
- python3 .instructions/figma/figma-to-swiftui/scripts/figma-subcomponent-graph.py
21
-
22
- # Preview without API calls
23
- python3 .instructions/figma/figma-to-swiftui/scripts/figma-subcomponent-graph.py --dry-run
24
-
25
- # Skip Visual Assets (icons/flags - rarely have sub-components)
26
- python3 .instructions/figma/figma-to-swiftui/scripts/figma-subcomponent-graph.py --skip-assets
27
-
28
- # Verbose output
29
- python3 .instructions/figma/figma-to-swiftui/scripts/figma-subcomponent-graph.py --verbose
30
- ```
31
-
32
- ## Prerequisites
33
-
34
- - `FIGMA_ACCESS_TOKEN` in macOS Keychain
35
- - `component-catalog.json` generated (run `FigmaRegistryUtility catalog` first)
36
-
37
- ## How It Works
38
-
39
- 1. Reads `component-catalog.json` for the full component list + Figma URLs
40
- 2. Groups components by Figma file key (3 files)
41
- 3. Batch-fetches node trees via `GET /v1/files/:key/nodes?ids=...` (25 nodes/request)
42
- 4. Walks each node subtree for `INSTANCE` children
43
- 5. Resolves `INSTANCE.componentId` → catalog component via:
44
- - Response `components` map → `componentSetId` (variant → parent set)
45
- - Direct nodeId match against catalog
46
- - Fallback: sanitized name match against catalog
47
- 6. Computes reverse `usedBy` map
48
- 7. Writes `sub-component-graph.json`
49
-
50
- ## Registry Format
51
-
52
- ```json
53
- {
54
- "version": "1.0",
55
- "generatedAt": "2026-02-25T...",
56
- "source": "Figma REST API /files/:key/nodes",
57
- "stats": {
58
- "totalComponents": 2049,
59
- "componentsWithSubComponents": 150,
60
- "componentsUsedAsSub": 80,
61
- "apiCalls": 82,
62
- "errors": 0
63
- },
64
- "graph": {
65
- "9047:386": {
66
- "name": "AvatarMembership",
67
- "subComponents": ["IconBrand", "LabelBadge"],
68
- "usedBy": ["ProfileCard", "HeaderMenu"],
69
- "unresolvedInstances": 3
70
- }
71
- }
72
- }
73
- ```
74
-
75
- ### Fields
76
-
77
- | Field | Description |
78
- |-------|-------------|
79
- | `subComponents` | Catalog component names used as INSTANCE children |
80
- | `usedBy` | Catalog components that use this component (reverse map) |
81
- | `unresolvedInstances` | Instance count that couldn't be mapped to catalog (internal/private layers) |
82
-
83
- ## Consumers
84
-
85
- - `confluence-component-status.py` - reads graph to compute readiness (ready/blocked)
86
- - Phase 3C (nested components) - can reference graph for dependency info
87
- - Phase 4B (view implementation) - knows which sub-components to import
88
-
89
- ## When to Re-run
90
-
91
- - After Figma design changes that add/remove component nesting
92
- - After `FigmaRegistryUtility catalog` produces a new catalog
93
- - One-time initial run is sufficient for current status page needs
@@ -1,98 +0,0 @@
1
- # UITESTING IDENTIFIER NAMING
2
-
3
- Naming rules for UIComponents testing identifiers.
4
-
5
- ---
6
-
7
- ## Format
8
-
9
- | Type | Key (PascalCase.Dot) | Value (snake_case) |
10
- |------|-----|-------|
11
- | Static | `<Component>.<Element>` | `<component>_<element>` |
12
- | List Item | `<Component>.Item.<Element>` | `<component>_item_<element>_%@` |
13
- | Variant | `<Component>.Item.<Variant>` | `<component>_item_<variant>_%@` |
14
-
15
- ---
16
-
17
- ## Rules
18
-
19
- **Key:** PascalCase segments, dots as separators, max 5 levels
20
- **Value:** All lowercase, underscores as separators, max 100 chars, `%@` for dynamic params
21
-
22
- ---
23
-
24
- ## Usage in Swift
25
-
26
- ```swift
27
- import UITestingIdentifiers
28
-
29
- // Static
30
- .accessibilityIdentifier(UITestingIdentifierKey.Component.element.identifier)
31
-
32
- // Dynamic (List)
33
- .accessibilityIdentifier(UITestingIdentifierKey.Component.Item.label.with(index).identifier)
34
-
35
- // Multiple Parameters
36
- .accessibilityIdentifier(UITestingIdentifierKey.SeatMap.Seat.number.with(row, column).identifier)
37
- ```
38
-
39
- ---
40
-
41
- ## Common Elements
42
-
43
- | Element | Key Suffix | Description |
44
- |---------|------------|-------------|
45
- | Title | `.Title` | Main title text |
46
- | Subtitle | `.Subtitle` | Secondary text |
47
- | ActionButton | `.ActionButton` | Primary action |
48
- | CloseButton | `.CloseButton` | Dismiss/close |
49
- | Item | `.Item.<Element>` | List/grid items |
50
- | Header | `.Header` | Section header |
51
- | Footer | `.Footer` | Section footer |
52
- | Image | `.Image` | Image element |
53
- | Badge | `.Badge` | Badge/tag |
54
- | Link | `.Link` | Text link |
55
-
56
- ---
57
-
58
- ## Context-Aware Identifiers
59
-
60
- Identifiers cascade via `UIIdentifierContext` EnvironmentKey. Parent views append context segments; child components automatically get prefixed identifiers.
61
-
62
- | Level | Modifier | Accumulates |
63
- |-------|----------|-------------|
64
- | Screen | `.identifierContext(.PassengerList.screen)` | `["passenger_list"]` |
65
- | Section | `.identifierContext(.PassengerList.search)` | `["passenger_list", "search"]` |
66
- | Component | `.accessibilityIdentifier(.TurkishButton.button)` | → `passenger_list_search_turkishbutton_button` |
67
-
68
- Both type-safe and raw string accepted:
69
-
70
- ```swift
71
- .identifierContext(.PassengerList.screen) // type-safe UITestingIdentifierKey (recommended)
72
- .identifierContext("passenger_list") // raw string (fallback)
73
- .testIdentifier(.TurkishButton.button) // alias for accessibilityIdentifier
74
- ```
75
-
76
- Context keys are regular UITestingIdentifierKey entries - add via the tool:
77
-
78
- ```bash
79
- UITestingIdentifierTool add --key 'PassengerList.screen' --value 'passenger_list'
80
- ```
81
-
82
- ### Rules for Context Segments
83
-
84
- - **snake_case** - same as identifier values
85
- - **Prefer type-safe keys** - `.identifierContext(.PassengerList.screen)` over raw strings
86
- - **Descriptive** - `passenger_list`, not `pl` or `screen1`
87
- - **Stable** - don't use indices unless necessary (use `.with()` for dynamic)
88
- - **No component name** - the component's own identifier already includes it
89
-
90
- ---
91
-
92
- ## Validation
93
-
94
- 1. Key follows PascalCase.Dot.Notation
95
- 2. Value is snake_case
96
- 3. Value length <= 100 characters
97
- 4. No spaces or special characters
98
- 5. Unique within component scope
@@ -1,261 +0,0 @@
1
- # FIGMA TOOLS REFERENCE
2
-
3
- ---
4
-
5
- ## 1. MCP TOOLS
6
-
7
- ### 1.1 Tool Inventory
8
-
9
- | Tool | Local | Remote | Purpose | Returns |
10
- |------|-------|--------|---------|---------|
11
- | `get_design_context` | yes | yes | Code generation from design node | Code + asset URLs |
12
- | `get_variable_defs` | yes | yes | Resolved design tokens for node | `{"tokenName": "value"}` |
13
- | `get_code_connect_map` | yes | yes | Component source mappings for node | `{"nodeId": {src, name}}` |
14
- | `add_code_connect_map` | yes | yes | Register component mapping in Figma | Success / failure |
15
- | `get_screenshot` | yes | yes | Visual PNG snapshot of node | PNG image |
16
- | `get_metadata` | yes | yes | Layer hierarchy as XML | XML (IDs, types, positions) |
17
- | `get_figjam` | yes | yes | FigJam board content extraction | FigJam data |
18
- | `create_design_system_rules` | yes | yes | Generate design system rules prompt | Rules prompt text |
19
- | `generate_diagram` | yes | yes | Create FigJam diagram from Mermaid | FigJam diagram URL |
20
- | `get_code_connect_suggestions` | yes | yes | Auto-detect mapping candidates | Candidate list |
21
- | `send_code_connect_mappings` | yes | yes | Batch confirm Code Connect mappings | Confirmation |
22
- | `generate_figma_design` | no | yes | Push web page or UI to Figma file | Figma file URL |
23
- | `whoami` | no | yes | Verify OAuth authentication | Authenticated user info |
24
-
25
- **Local prefix:** `mcp__figma__` - **Remote prefix:** `mcp__figma-remote__`
26
-
27
- ---
28
-
29
- ### 1.2 Tool Calls - Local MCP
30
-
31
- **Prefix:** `mcp__figma__`
32
- **Endpoint:** `http://127.0.0.1:3845/mcp`
33
- **Requirement:** Figma Desktop running + Dev Mode enabled (Shift+D)
34
- **Note:** `nodeId` is optional on local - omit to use the currently selected node.
35
-
36
- ```
37
- mcp__figma__get_design_context(nodeId?: "X:Y", dirForAssetWrites?: "/abs/path", forceCode?: true)
38
- mcp__figma__get_variable_defs(nodeId?: "X:Y")
39
- mcp__figma__get_code_connect_map(nodeId?: "X:Y")
40
- mcp__figma__add_code_connect_map(nodeId?: "X:Y", source: "path/to/File.swift", componentName: "Name", label: "SwiftUI")
41
- mcp__figma__get_screenshot(nodeId?: "X:Y")
42
- mcp__figma__get_metadata(nodeId?: "X:Y")
43
- mcp__figma__get_figjam(nodeId: "X:Y")
44
- mcp__figma__create_design_system_rules()
45
- mcp__figma__generate_diagram(name: "Title", mermaidSyntax: "graph LR ...")
46
- mcp__figma__get_code_connect_suggestions(nodeId?: "X:Y")
47
- mcp__figma__send_code_connect_mappings(nodeId: "X:Y", mappings: [...])
48
- ```
49
-
50
- ---
51
-
52
- ### 1.3 Tool Calls - Remote MCP
53
-
54
- **Prefix:** `mcp__figma-remote__`
55
- **Endpoint:** `https://mcp.figma.com/mcp`
56
- **Requirement:** OAuth authentication
57
- **Note:** `fileKey` + `nodeId` are REQUIRED on remote for all file-scoped tools.
58
-
59
- ```
60
- mcp__figma-remote__get_design_context(fileKey: "abc", nodeId: "X:Y", forceCode?: true)
61
- mcp__figma-remote__get_variable_defs(fileKey: "abc", nodeId: "X:Y")
62
- mcp__figma-remote__get_code_connect_map(fileKey: "abc", nodeId: "X:Y")
63
- mcp__figma-remote__add_code_connect_map(fileKey: "abc", nodeId: "X:Y", source: "path/to/File.swift", componentName: "Name", label: "SwiftUI")
64
- mcp__figma-remote__get_screenshot(fileKey: "abc", nodeId: "X:Y")
65
- mcp__figma-remote__get_metadata(fileKey: "abc", nodeId: "X:Y")
66
- mcp__figma-remote__get_figjam(fileKey: "abc", nodeId: "X:Y")
67
- mcp__figma-remote__create_design_system_rules()
68
- mcp__figma-remote__generate_diagram(name: "Title", mermaidSyntax: "graph LR ...")
69
- mcp__figma-remote__get_code_connect_suggestions(fileKey: "abc", nodeId: "X:Y")
70
- mcp__figma-remote__send_code_connect_mappings(fileKey: "abc", nodeId: "X:Y", mappings: [...])
71
- mcp__figma-remote__generate_figma_design(outputMode: "newFile", fileName: "Name")
72
- mcp__figma-remote__whoami()
73
- ```
74
-
75
- ---
76
-
77
- ### 1.4 Parameters
78
-
79
- | Parameter | Format | Example |
80
- |-----------|--------|---------|
81
- | `nodeId` | `"X:Y"` (colon) or `"X-Y"` (hyphen) | `"123:456"` |
82
- | `fileKey` | Alphanumeric string from Figma URL | `"pqrs123abc"` |
83
- | `dirForAssetWrites` | Absolute path to `.xcassets` dir | `"/Users/me/Project/Assets.xcassets"` |
84
- | `forceCode` | Boolean | `true` |
85
- | `componentName` | PascalCase string | `"ButtonPrimary"` |
86
- | `source` | Relative or absolute file path | `"Sources/UIComponents/Button.swift"` |
87
- | `label` | Framework label string | `"SwiftUI"` |
88
- | `mermaidSyntax` | Mermaid.js diagram string | `"graph LR A --> B"` |
89
-
90
- ---
91
-
92
- ### 1.5 Fallback Strategy
93
-
94
- ```
95
- LOCAL → fails? → REMOTE → fails? → STOP (report to user, do not retry)
96
- ```
97
-
98
- Prefer local for all active development. Use remote only when Figma Desktop is unavailable.
99
-
100
- ---
101
-
102
- ### 1.6 Return Formats
103
-
104
- **get_design_context**
105
- Returns generated code + asset URLs. If response is XML instead of code, the design node is too large - extract sublayer `nodeId` values from the XML and call again on each sublayer.
106
-
107
- **get_variable_defs**
108
- ```json
109
- { "Spacing/Spacing8": "8", "Text/primary": "#1A1A1A", "Color/brand": "#E81932" }
110
- ```
111
-
112
- **get_code_connect_map**
113
- ```json
114
- { "123:456": { "codeConnectSrc": "Sources/UIComponents/Button.swift", "codeConnectName": "Button" } }
115
- ```
116
- Empty `{}` means no mapping registered for that node.
117
-
118
- **get_metadata**
119
- XML containing node IDs, layer types, names, positions, and sizes. Use to identify sublayer node IDs when `get_design_context` returns XML.
120
-
121
- ---
122
-
123
- ### 1.7 Rate Limits (MCP Remote - effective November 2025)
124
-
125
- | Plan | Per Minute | Per Day |
126
- |------|-----------|---------|
127
- | Viewer / Collaborator | - | 6 / month total |
128
- | Dev / Full Pro | 15 | 200 |
129
- | Dev / Full Org | 20 | 200 |
130
- | Dev / Full Enterprise | 20 | 600 |
131
-
132
- ---
133
-
134
- ## 2. DEVELOPER API
135
-
136
- ### 2.1 Base URL + Auth
137
-
138
- ```
139
- Base: https://api.figma.com/v1
140
- Header: X-Figma-Token: figd_your_token_here
141
- ```
142
-
143
- **Retrieve token from macOS Keychain:**
144
- ```bash
145
- export TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1)
146
- curl -H "X-Figma-Token: $TOKEN" "https://api.figma.com/v1/..."
147
- ```
148
-
149
- ---
150
-
151
- ### 2.2 Key Endpoints
152
-
153
- | Endpoint | Method | Description |
154
- |----------|--------|-------------|
155
- | `/files/:key` | GET | Full file document tree |
156
- | `/files/:key/nodes?ids=X:Y` | GET | Specific nodes by ID |
157
- | `/files/:key/images?ids=X:Y` | GET | Export node as image |
158
- | `/files/:key/variables/local` | GET | Local variable definitions |
159
- | `/files/:key/variables/published` | GET | Published variable library |
160
- | `/files/:key/components` | GET | All components in file |
161
- | `/files/:key/component_sets` | GET | All component sets in file |
162
- | `/files/:key/styles` | GET | All styles in file |
163
-
164
- ---
165
-
166
- ### 2.3 Common Calls
167
-
168
- **Get specific node:**
169
- ```bash
170
- curl -H "X-Figma-Token: $TOKEN" \
171
- "https://api.figma.com/v1/files/FILE_KEY/nodes?ids=123:456"
172
- ```
173
-
174
- **Export image:**
175
- ```bash
176
- curl -H "X-Figma-Token: $TOKEN" \
177
- "https://api.figma.com/v1/images/FILE_KEY?ids=123:456&format=png&scale=2"
178
- ```
179
-
180
- **Get local variables:**
181
- ```bash
182
- curl -H "X-Figma-Token: $TOKEN" \
183
- "https://api.figma.com/v1/files/FILE_KEY/variables/local"
184
- ```
185
-
186
- ---
187
-
188
- ### 2.4 OAuth Scopes
189
-
190
- | Scope | Description |
191
- |-------|-------------|
192
- | `file_content:read` | Read file contents and layer data |
193
- | `file_metadata:read` | Read file metadata |
194
- | `file_variables:read` | Read variables and design tokens |
195
- | `file_comments:read` | Read file comments |
196
- | `code_connect:read` | Read Code Connect mappings |
197
- | `code_connect:write` | Publish Code Connect mappings (required for `figma connect publish`) |
198
- | `file_dev_resources:read` | Read dev resources |
199
- | `projects:read` | Read team projects |
200
- | `webhooks:write` | Manage webhooks |
201
-
202
- **Deprecated:** `files:read` - replace with `file_content:read` + `file_metadata:read`.
203
- **Note:** Personal Access Tokens (PATs) are capped at 90-day expiry.
204
-
205
- ---
206
-
207
- ### 2.5 Error Codes
208
-
209
- | Status | Meaning | Action |
210
- |--------|---------|--------|
211
- | 200 | Success | - |
212
- | 400 | Bad request | Check parameter format |
213
- | 403 | Forbidden | Check token validity and scopes |
214
- | 404 | Not found | Check fileKey and nodeId |
215
- | 429 | Rate limited | Wait for `X-RateLimit-Reset` header timestamp |
216
- | 500 | Server error | Retry after delay |
217
-
218
- ---
219
-
220
- ## 3. QUICK REFERENCE
221
-
222
- ### 3.1 URL to IDs
223
-
224
- ```
225
- URL format: https://figma.com/design/{fileKey}/{fileName}?node-id={int1}-{int2}
226
-
227
- Example: https://figma.com/design/pqrs123/MyFile?node-id=123-456
228
- fileKey: pqrs123
229
- nodeId: 123:456 (convert hyphen → colon)
230
- ```
231
-
232
- Branch URLs: use `branchKey` (not `fileKey`) when URL contains `/branch/:branchKey/`.
233
-
234
- ---
235
-
236
- ### 3.2 When to Use What
237
-
238
- | Need | Use |
239
- |------|-----|
240
- | Inspect design during active dev | Local MCP |
241
- | Register Code Connect mapping | Local MCP only |
242
- | Get design tokens / variables | Local or Remote MCP (get_variable_defs) |
243
- | Desktop not available | Remote MCP |
244
- | CI/CD pipeline or automation | Remote MCP or REST API |
245
- | Batch export images | REST API |
246
- | Auth debugging | Remote MCP whoami |
247
- | Design too large (XML response) | Drill into sublayer nodeIds |
248
-
249
- ---
250
-
251
- ### 3.3 Troubleshooting
252
-
253
- | Symptom | Cause | Fix |
254
- |---------|-------|-----|
255
- | Connection refused (127.0.0.1:3845) | Figma Desktop not running | Open Figma Desktop, enable Dev Mode (Shift+D) |
256
- | 403 Forbidden | Invalid or expired token / missing scope | Verify token; check scopes; run whoami |
257
- | get_design_context returns XML | Node too large | Use get_metadata to find sublayer nodeIds, call on each |
258
- | get_code_connect_map returns `{}` | Component not registered | Use add_code_connect_map via local MCP |
259
- | 429 Too Many Requests | Rate limit hit | Wait for X-RateLimit-Reset timestamp |
260
- | generate_figma_design unavailable | Local MCP limitation | Use remote MCP only for this tool |
261
- | get_variable_defs returns empty | No variables bound to node | Try parent node or REST API `/files/:key/variables/local` |
@@ -1,147 +0,0 @@
1
- # VIEWINSPECTOR REFERENCE
2
-
3
- ViewInspector library for SwiftUI view hierarchy inspection and unit testing.
4
-
5
- Package: `https://github.com/nalexn/ViewInspector`
6
- Version: `0.10.3` (latest as of Sep 2025)
7
- License: MIT
8
-
9
- ---
10
-
11
- ## FRAMEWORK SUPPORT
12
-
13
- | Framework | Supported | Notes |
14
- |-----------|-----------|-------|
15
- | XCTest | Yes | Full support, RECOMMENDED |
16
- | Swift Testing | Warning | Known issues with @Test (GitHub #319) - use XCTest |
17
- | Swift 6.0+ | Yes | Use `.implicitAnyView()` for implicit AnyView wrappers |
18
- | iOS 17+ / iOS 26 | Yes | v0.10.3 fixes accessibilityIdentifier on iOS 26 |
19
-
20
- ---
21
-
22
- ## SETUP
23
-
24
- ```swift
25
- import ViewInspector
26
- import XCTest
27
-
28
- extension MyComponent: Inspectable { }
29
- ```
30
-
31
- ---
32
-
33
- ## VIEW TRAVERSAL
34
-
35
- ```swift
36
- // By type
37
- try view.inspect().find(ViewType.Text.self)
38
- try view.inspect().find(ViewType.Button.self)
39
-
40
- // By content
41
- try view.inspect().find(text: "Submit")
42
- try view.inspect().find(button: "Submit")
43
-
44
- // By accessibility identifier
45
- try view.inspect().find(viewWithAccessibilityIdentifier: "submit_button")
46
-
47
- // By index (Swift 6+: use .implicitAnyView())
48
- try view.inspect().implicitAnyView().vStack().text(0)
49
- ```
50
-
51
- ---
52
-
53
- ## READING VALUES
54
-
55
- ```swift
56
- // Text content
57
- try text.string()
58
-
59
- // Font / Color
60
- try text.attributes().font()
61
- try text.attributes().foregroundColor()
62
-
63
- // Image name
64
- try image.actualImage().name()
65
-
66
- // Accessibility
67
- try view.accessibilityLabel().string()
68
- try view.accessibilityIdentifier()
69
- ```
70
-
71
- ---
72
-
73
- ## TRIGGERING ACTIONS
74
-
75
- ```swift
76
- try button.tap()
77
- try toggle.tap()
78
- try textField.setInput("New Value")
79
- try view.callOnTapGesture()
80
- ```
81
-
82
- ---
83
-
84
- ## STATE TESTING
85
-
86
- ```swift
87
- // @State
88
- let view = Counter()
89
- let button = try view.inspect().find(ViewType.Button.self)
90
- XCTAssertEqual(try button.labelView().text().string(), "Count: 0")
91
- try button.tap()
92
- XCTAssertEqual(try button.labelView().text().string(), "Count: 1")
93
-
94
- // @Binding
95
- var value = false
96
- let binding = Binding(get: { value }, set: { value = $0 })
97
- let view = ToggleView(isOn: binding)
98
- try view.inspect().find(ViewType.Toggle.self).tap()
99
- XCTAssertTrue(value)
100
- ```
101
-
102
- ---
103
-
104
- ## FIGMA ARTIFACT CROSS-CHECK
105
-
106
- ```swift
107
- func testMatchesFigmaArtifact() throws {
108
- let artifact = try loadFigmaArtifact(named: "MyComponent")
109
- let view = MyComponent()
110
-
111
- for expectedText in artifact.texts {
112
- XCTAssertNotNil(try view.inspect().find(text: expectedText))
113
- }
114
- for expectedId in artifact.accessibilityIdentifiers {
115
- XCTAssertNotNil(try view.inspect().find(viewWithAccessibilityIdentifier: expectedId))
116
- }
117
- }
118
- ```
119
-
120
- ---
121
-
122
- ## TEST FILE STRUCTURE
123
-
124
- ```
125
- Source: Sources/<Module>/Components/<Path>/<Component>.swift
126
- Test: Tests/<Module>Tests/ViewInspector/Components/<Path>/<Component>ViewInspectorTests.swift
127
- ```
128
-
129
- Full layout:
130
- ```
131
- Tests/<Module>Tests/
132
- ├── ViewInspector/Components/<Path>/<Component>ViewInspectorTests.swift
133
- ├── Unit/Components/<Path>/<Component>Tests.swift
134
- ├── FigmaArtifacts/<Component>_figma_artifact.json
135
- └── __Snapshots__/<Component>ViewInspectorTests/testDefaultState.1.png
136
- ```
137
-
138
- ---
139
-
140
- ## COMMON ISSUES
141
-
142
- | Issue | Solution |
143
- |-------|----------|
144
- | `Type is not Inspectable` | Add `extension MyView: Inspectable { }` |
145
- | `View not found` | Use `.implicitAnyView()` for Swift 6+ |
146
- | `Cannot find in ForEach` | Use `.forEach().view(Type.self, index)` |
147
- | `Async view not loaded` | Use `ViewHosting.host()` and wait |