@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +2 -2
  3. package/docs/FIGMA_PIPELINE.md +12 -25
  4. package/docs/architecture.md +3 -5
  5. package/docs/features.md +8 -8
  6. package/install/_dev-only-files.mjs +0 -6
  7. package/install/claude.mjs +39 -17
  8. package/install/copilot.mjs +22 -16
  9. package/install/templates/copilot-instructions.md +3 -3
  10. package/package.json +1 -1
  11. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  12. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  13. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  14. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  16. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  17. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  18. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  20. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  21. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  22. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  23. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  24. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  25. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  27. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  28. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  29. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  30. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  31. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  32. package/pipeline/lib/credential-store.sh +8 -4
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  35. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  38. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  39. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  60. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  61. package/pipeline/preferences-template.json +17 -1
  62. package/pipeline/rules/figma-pipeline.md +2 -2
  63. package/pipeline/schemas/prefs.schema.json +0 -34
  64. package/pipeline/scripts/README.md +1 -3
  65. package/pipeline/scripts/build-skills-index.mjs +3 -6
  66. package/pipeline/scripts/eval-mine-corpus.mjs +187 -0
  67. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  68. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  69. package/pipeline/scripts/lint-skills.mjs +26 -1
  70. package/pipeline/scripts/phase-banner.sh +2 -2
  71. package/pipeline/scripts/review-scope.mjs +94 -0
  72. package/pipeline/scripts/scan-agent-config.sh +2 -2
  73. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  74. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  75. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  76. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  77. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  78. package/pipeline/scripts/smoke-clarify.sh +1 -1
  79. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  80. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  81. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  82. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  83. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  84. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  85. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  86. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  87. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  88. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  89. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  90. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  91. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  92. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  93. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  94. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  95. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  96. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  97. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  98. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  99. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  100. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  101. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  102. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  103. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  104. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  105. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  106. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  107. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  108. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  109. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  110. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  111. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  112. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  113. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  114. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  115. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  116. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  117. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  118. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  119. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  120. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  121. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  122. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  123. package/pipeline/scripts/smoke-update-check.sh +1 -1
  124. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  125. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  126. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  127. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  128. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  129. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  130. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  131. package/pipeline/scripts/uninstall.mjs +17 -6
  132. package/pipeline/skills/.skill-manifest.json +40 -160
  133. package/pipeline/skills/.skills-index.json +3 -373
  134. package/pipeline/skills/shared/README.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  137. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  138. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  139. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  140. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  141. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  142. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  143. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  144. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  145. package/pipeline/skills/skills-index.md +3 -44
  146. package/pipeline/commands/multi-agent/refactor.md +0 -188
  147. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  148. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  149. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  150. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  151. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  152. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  153. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  154. package/pipeline/skills/figma-android/README.md +0 -38
  155. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  156. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  157. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  158. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  159. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  160. package/pipeline/skills/figma-common/README.md +0 -64
  161. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  162. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  163. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  164. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  165. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  166. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  167. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  168. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  169. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  170. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  171. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  172. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  173. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  174. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  175. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  176. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  177. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  178. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  179. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  180. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  181. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  182. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  183. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  184. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  185. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  186. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  187. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  188. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  189. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  190. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  191. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  192. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  193. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  194. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  195. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  196. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  197. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  198. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  199. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  200. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  201. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  202. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  203. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  232. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  233. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  234. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  235. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  253. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  254. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  255. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  256. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  294. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  295. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  296. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  297. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  298. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  310. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  311. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  312. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  313. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  314. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  332. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  333. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  334. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  335. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -1,514 +0,0 @@
1
- ---
2
- name: figma-setup
3
- description: One-time environment setup for Figma-to-SwiftUI workflow. Verifies MCP connectivity, API credentials, Code Connect CLI, and FigmaRegistryUtility.
4
- user-invocable: true
5
- argument-hint: [run | status | reset | retrieve-token | save-token]
6
- allowed-tools: Bash, Read, Write, AskUserQuestion
7
- status: wip-v5
8
- sourced-from: upstream/figma-setup
9
- ---
10
-
11
- # /figma-setup - Environment Setup
12
-
13
- One-time environment setup for the Figma-to-SwiftUI workflow. Run before your first `/figma` invocation, or when `/figma` reports missing prerequisites.
14
-
15
- ---
16
-
17
- ## Parse Input
18
-
19
- | Argument | Action |
20
- |----------|--------|
21
- | `run` (default) | Execute full setup checks |
22
- | `status` | Read and display marker file |
23
- | `reset` | Delete marker file, re-run all checks |
24
- | `retrieve-token` | Retrieve remote MCP OAuth token (see Token Management below) |
25
- | `save-token` | Save a remote MCP OAuth token to keychain (see Token Management below) |
26
-
27
- **Marker file:** `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/.setup-verified.json`
28
-
29
- For `status`: read and display the marker file. If it doesn't exist, tell the user to run `/figma-setup run`.
30
- For `reset`: delete the marker file, then execute `run`.
31
-
32
- ---
33
-
34
- ## Checks
35
-
36
- Execute each check in order. For each:
37
- 1. Run the check command
38
- 2. PASS → record result, move to next
39
- 3. FAIL → guide user through fix, re-check
40
- 4. User says "skip" → record as `skipped`, move to next
41
-
42
- ---
43
-
44
- ### CHECK 1: Git User
45
-
46
- ```bash
47
- git config user.name
48
- ```
49
-
50
- **PASS:** Non-empty output → store as `gitUser`.
51
-
52
- **FAIL:** Ask user for their name, then:
53
- ```bash
54
- git config user.name "<NAME>"
55
- ```
56
-
57
- ---
58
-
59
- ### CHECK 2: Figma Local MCP
60
-
61
- Test connectivity by calling the local MCP tool:
62
-
63
- ```
64
- mcp__figma__get_metadata(nodeId: "0:1")
65
- ```
66
-
67
- **PASS:** Returns data → local MCP is connected.
68
-
69
- **FAIL:** Tell the user:
70
-
71
- > To enable Figma Local MCP:
72
- > 1. Open **Figma Desktop** (download from https://www.figma.com/downloads/)
73
- > 2. Open any design file
74
- > 3. Press **Shift+D** to enable Dev Mode
75
- > 4. MCP server starts automatically on `http://127.0.0.1:3845/mcp`
76
-
77
- Ask: "Confirm when Figma Desktop is running with Dev Mode enabled, or say 'skip'."
78
-
79
- Re-check after confirmation. Record `skipped` if user skips.
80
-
81
- ---
82
-
83
- ### CHECK 3: Figma Remote MCP
84
-
85
- ```
86
- mcp__figma-remote__whoami()
87
- ```
88
-
89
- **PASS:** Returns authenticated user info.
90
-
91
- **FAIL:** Tell the user:
92
-
93
- > To enable Figma Remote MCP:
94
- > 1. Your editor should prompt OAuth authentication via browser
95
- > 2. Complete the consent flow in the browser
96
- > 3. Return here and confirm
97
-
98
- Ask: "Confirm when OAuth is complete, or say 'skip'."
99
-
100
- Re-check after confirmation. Record `skipped` if user skips.
101
-
102
- **CRITICAL:** At least one of CHECK 2 or CHECK 3 must pass. If BOTH are skipped → HALT:
103
- ```
104
- At least one Figma MCP connection (local or remote) is required. Cannot proceed.
105
- ```
106
-
107
- ---
108
-
109
- ### CHECK 3b: MCP OAuth Token for Scripts (FIGMA_MCP_TOKEN)
110
-
111
- Scripts like `remote-mcp-fetch.py` need the MCP OAuth token to call remote MCP outside of chat context. This check extracts it from Claude Code credentials and saves it to keychain.
112
-
113
- **Only run if CHECK 3 passed.** If CHECK 3 was skipped, skip this too.
114
-
115
- #### 3b-a. Check if token already exists and works
116
-
117
- ```bash
118
- TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null) && [ -n "$TOKEN" ] && echo "TOKEN_EXISTS" || echo "TOKEN_MISSING"
119
- ```
120
-
121
- If TOKEN_EXISTS, verify it works:
122
-
123
- ```bash
124
- TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null) && curl -s -o /dev/null -w "%{http_code}" -X POST "https://mcp.figma.com/mcp" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "Authorization: Bearer $TOKEN" -d '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"clientInfo":{"name":"setup-check","version":"1.0.0"},"protocolVersion":"2025-03-26"},"id":1}'
125
- ```
126
-
127
- - `200` → PASS, token is valid
128
- - `401` → token expired or invalid, proceed to 3b-b
129
- - Other → network issue, retry
130
-
131
- #### 3b-b. Extract from Claude Code credentials
132
-
133
- Claude Code stores MCP OAuth tokens in macOS Keychain under `Claude Code-credentials`. Extract the `figma-remote` access token:
134
-
135
- ```bash
136
- python3 -c "
137
- import subprocess, os, re, json
138
- raw = subprocess.check_output(['security', 'find-generic-password', '-s', 'Claude Code-credentials', '-a', os.environ['USER'], '-w'], stderr=subprocess.DEVNULL).decode()
139
- match = re.search(r'\"figma-remote\|[^\"]+\":\{[^}]*\"accessToken\":\"([^\"]+)\"', raw)
140
- if match:
141
- print(match.group(1))
142
- else:
143
- print('EXTRACT_FAILED')
144
- "
145
- ```
146
-
147
- - If output starts with `figu_` → valid OAuth token
148
- - If `EXTRACT_FAILED` → Claude Code has no figma-remote credentials
149
-
150
- #### 3b-c. If extraction succeeded - save to keychain
151
-
152
- ```bash
153
- TOKEN="<extracted_token>" && "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "MCP_TOKEN_STORED" || echo "MCP_TOKEN_STORE_FAILED"
154
- ```
155
-
156
- **IMPORTANT:** Do NOT echo the token in chat. Capture the python3 output into a variable directly:
157
-
158
- ```bash
159
- MCP_TOKEN=$(python3 -c "
160
- import subprocess, os, re
161
- raw = subprocess.check_output(['security', 'find-generic-password', '-s', 'Claude Code-credentials', '-a', os.environ['USER'], '-w'], stderr=subprocess.DEVNULL).decode()
162
- match = re.search(r'\"figma-remote\|[^\\\"]+\":\{[^}]*\"accessToken\":\"([^\\\"]+)\"', raw)
163
- print(match.group(1) if match else '')
164
- " 2>/dev/null) && [ -n "$MCP_TOKEN" ] && "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "MCP_TOKEN_STORED" || echo "MCP_TOKEN_STORE_FAILED"
165
- ```
166
-
167
- Then verify (repeat 3b-a verification curl).
168
-
169
- #### 3b-d. If extraction failed
170
-
171
- Tell the user:
172
-
173
- > Could not extract MCP OAuth token from Claude Code credentials.
174
- > This means `figma-remote` MCP has not completed OAuth yet.
175
- > 1. Ensure CHECK 3 passed (remote MCP whoami works)
176
- > 2. Re-run `/figma-setup` after completing remote MCP OAuth
177
-
178
- Record as `skipped`. Scripts will fall back to extracting at runtime (slower but functional).
179
-
180
- ---
181
-
182
- ### CHECK 4: Figma API Token (Secure Clipboard Flow)
183
-
184
- **IMPORTANT: The token must NEVER appear in chat. Use the clipboard flow below.**
185
-
186
- #### 4a. Check if token already exists
187
-
188
- ```bash
189
- "$HOME/.claude/lib/credential-store.sh" get \1 >/dev/null 2>&1 && echo "TOKEN_EXISTS" || echo "TOKEN_MISSING"
190
- ```
191
-
192
- #### 4b. If TOKEN_EXISTS - verify it works
193
-
194
- ```bash
195
- curl -s -o /dev/null -w "%{http_code}" -H "X-Figma-Token: $("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null)" "https://api.figma.com/v1/me"
196
- ```
197
-
198
- - `200` → PASS, token is valid
199
- - `403` → token expired or revoked, proceed to 4c
200
- - Other → network issue, retry
201
-
202
- #### 4c. If TOKEN_MISSING or expired - secure setup
203
-
204
- Tell the user:
205
-
206
- > 1. Go to **https://www.figma.com/developers/api#access-tokens**
207
- > 2. Click **"Get personal access token"**
208
- > 3. Set expiry (note: PATs are capped at 90 days max)
209
- > 4. **Copy the token to your clipboard** (Cmd+C)
210
- > 5. **Do NOT paste the token in this chat**
211
- > 6. Come back here and confirm
212
-
213
- Ask: "Confirm when the token is copied to your clipboard."
214
-
215
- After user confirms, run this SINGLE command:
216
-
217
- ```bash
218
- "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "TOKEN_STORED" || echo "TOKEN_STORE_FAILED"
219
- ```
220
-
221
- Then immediately clear clipboard:
222
-
223
- ```bash
224
- pbcopy < /dev/null && echo "CLIPBOARD_CLEARED"
225
- ```
226
-
227
- Then verify (repeat 4b). If still failing → HALT.
228
-
229
- ---
230
-
231
- ### CHECK 5: Figma API User
232
-
233
- ```bash
234
- "$HOME/.claude/lib/credential-store.sh" get \1 >/dev/null 2>&1 && echo "USER_EXISTS" || echo "USER_MISSING"
235
- ```
236
-
237
- **If USER_MISSING:**
238
-
239
- Ask: "What is your Figma account email address?"
240
-
241
- After user provides email:
242
-
243
- ```bash
244
- "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "USER_STORED" || echo "USER_STORE_FAILED"
245
- ```
246
-
247
- ---
248
-
249
- ### CHECK 6: Code Connect CLI
250
-
251
- ```bash
252
- npx @figma/code-connect@latest --version 2>/dev/null
253
- ```
254
-
255
- **PASS:** Returns version number (e.g., `1.4.1`).
256
-
257
- **FAIL:** Node.js/npm is required. Tell the user:
258
-
259
- > Code Connect CLI requires Node.js. Install options:
260
- > - Download from https://nodejs.org/ (LTS recommended)
261
- > - Or: `brew install node`
262
- >
263
- > Code Connect uses `npx` - no global install needed.
264
-
265
- Ask: "Confirm when Node.js is installed, or say 'skip'."
266
-
267
- Record `skipped` if user skips. Code Connect is only needed for Phase 6.
268
-
269
- ---
270
-
271
- ### CHECK 7: FigmaRegistryUtility
272
-
273
- ```bash
274
- CONFIG_PATH="{repos.packagesContainer}/{project.slug}-common" && swift run --package-path "$CONFIG_PATH" FigmaRegistryUtility --help >/dev/null 2>&1 && echo "REGISTRY_OK" || echo "REGISTRY_BUILD_NEEDED"
275
- ```
276
-
277
- **If REGISTRY_BUILD_NEEDED:**
278
-
279
- ```bash
280
- CONFIG_PATH="{repos.packagesContainer}/{project.slug}-common" && swift build --package-path "$CONFIG_PATH" --product FigmaRegistryUtility 2>&1 | tail -5
281
- ```
282
-
283
- If build succeeds → re-check. If build fails → HALT with the build error output.
284
-
285
- ---
286
-
287
- ### CHECK 8: GitHub CLI (`gh`)
288
-
289
- ```bash
290
- gh --version 2>/dev/null
291
- ```
292
-
293
- **PASS:** Returns version (e.g., `gh version 2.x.x`).
294
-
295
- **FAIL:** Tell the user:
296
-
297
- > GitHub CLI is required for issue management, Projects V2, and PR workflows.
298
- > Install: `brew install gh`
299
-
300
- Ask: "Confirm when installed, or say 'skip'."
301
-
302
- #### 8b. Authentication
303
-
304
- ```bash
305
- gh auth status 2>&1
306
- ```
307
-
308
- **PASS:** Shows logged in account.
309
-
310
- **FAIL:** Tell the user:
311
-
312
- > Run `gh auth login` and complete the browser flow.
313
- > Required scopes: `repo`, `read:org`, `project`
314
-
315
- Ask: "Confirm when authenticated."
316
-
317
- #### 8c. Project scope
318
-
319
- ```bash
320
- gh api graphql -f query='{ viewer { login } }' 2>&1
321
- ```
322
-
323
- If `INSUFFICIENT_SCOPES` error mentioning `project`:
324
-
325
- > Your token needs the `project` scope. Run:
326
- > `gh auth refresh -s project -h github.com`
327
-
328
- ---
329
-
330
- ### CHECK 9: Jira Token
331
-
332
- ```bash
333
- "$HOME/.claude/lib/credential-store.sh" get \1 >/dev/null 2>&1 && echo "TOKEN_EXISTS" || echo "TOKEN_MISSING"
334
- ```
335
-
336
- #### 9a. If TOKEN_EXISTS - verify
337
-
338
- ```bash
339
- curl -s -o /dev/null -w "%{http_code}" "{jira.baseUrl}/rest/api/2/myself" \
340
- -H "Authorization: Bearer $("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null)"
341
- ```
342
-
343
- - `200` → PASS
344
- - `401/403` → token expired, proceed to 9b
345
- - Connection error → VPN not connected, record as `skipped (no VPN)`
346
-
347
- #### 9b. If TOKEN_MISSING or expired
348
-
349
- Tell the user:
350
-
351
- > Jira token is needed for `/figma-issue` Jira integration.
352
- > 1. Go to **{jira.baseUrl}/secure/ViewProfile.jspa** → **Personal Access Tokens**
353
- > 2. Create a token
354
- > 3. **Copy to clipboard** (Cmd+C)
355
- > 4. **Do NOT paste in chat**
356
-
357
- Ask: "Confirm when token is copied to clipboard."
358
-
359
- ```bash
360
- "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "TOKEN_STORED" || echo "TOKEN_STORE_FAILED"
361
- ```
362
-
363
- Clear clipboard:
364
- ```bash
365
- pbcopy < /dev/null && echo "CLIPBOARD_CLEARED"
366
- ```
367
-
368
- Verify (repeat 9a). If VPN not connected, accept as `pass (stored, not verified)`.
369
-
370
- ---
371
-
372
- ### CHECK 10: Confluence Token
373
-
374
- ```bash
375
- "$HOME/.claude/lib/credential-store.sh" get \1 >/dev/null 2>&1 && echo "TOKEN_EXISTS" || echo "TOKEN_MISSING"
376
- ```
377
-
378
- Same flow as CHECK 9 but for Confluence:
379
- - Verify: `curl -s -o /dev/null -w "%{http_code}" "{confluence.baseUrl}/rest/api/content?limit=1" -H "Authorization: Bearer ..."`
380
- - If missing: guide user to create PAT at `{confluence.baseUrl}`
381
- - Clipboard flow, same as Jira
382
- - VPN required - if not connected, record as `skipped (no VPN)`
383
-
384
- ---
385
-
386
- ## Write Marker File
387
-
388
- After all checks complete, create `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/.setup-verified.json`:
389
-
390
- ```json
391
- {
392
- "verified": "<ISO_TIMESTAMP>",
393
- "checks": {
394
- "git_user": { "status": "pass", "value": "<NAME>" },
395
- "figma_local_mcp": { "status": "pass|skipped" },
396
- "figma_remote_mcp": { "status": "pass|skipped" },
397
- "figma_mcp_token": { "status": "pass|skipped", "note": "FIGMA_MCP_TOKEN in keychain for script access" },
398
- "figma_api_token": { "status": "pass|skipped" },
399
- "figma_api_user": { "status": "pass|skipped" },
400
- "code_connect_cli": { "status": "pass|skipped", "version": "<VERSION>" },
401
- "registry_utility": { "status": "pass" },
402
- "github_cli": { "status": "pass|skipped", "scopes": "repo,read:org,project" },
403
- "jira_token": { "status": "pass|skipped" },
404
- "confluence_token": { "status": "pass|skipped" }
405
- }
406
- }
407
- ```
408
-
409
- ---
410
-
411
- ## Token Management
412
-
413
- ### `retrieve-token` - Retrieve Remote MCP OAuth Token
414
-
415
- Looks up the Figma remote MCP OAuth token (`figu_` prefix) and prints it for the user.
416
-
417
- **Resolution order:**
418
-
419
- 1. **Keychain `FIGMA_MCP_TOKEN`** - the dedicated keychain entry saved by `save-token` or CHECK 3b.
420
-
421
- ```bash
422
- "$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null
423
- ```
424
-
425
- 2. **Claude Code credentials** - if not in dedicated keychain, extract from Claude Code's credential store.
426
-
427
- ```bash
428
- python3 -c "
429
- import subprocess, os, re
430
- raw = subprocess.check_output(
431
- ['security', 'find-generic-password', '-s', 'Claude Code-credentials',
432
- '-a', os.environ['USER'], '-w'],
433
- stderr=subprocess.DEVNULL
434
- ).decode()
435
- match = re.search(r'\"figma-remote\|[^\"]+\":\{[^}]*\"accessToken\":\"([^\"]+)\"', raw)
436
- print(match.group(1) if match else 'NOT_FOUND')
437
- "
438
- ```
439
-
440
- **Output:**
441
- - If found → print the token to the user
442
- - If `NOT_FOUND` → tell the user:
443
- > No remote MCP token found. Ensure `figma-remote` MCP has completed OAuth (CHECK 3), or use `/figma-setup save-token` to store one manually.
444
-
445
- ---
446
-
447
- ### `save-token` - Save Remote MCP OAuth Token to Keychain
448
-
449
- Saves a provided token (or extracts from Claude Code credentials) to the dedicated `FIGMA_MCP_TOKEN` keychain entry so scripts can use it.
450
-
451
- **Flow:**
452
-
453
- 1. Ask the user:
454
-
455
- > Do you want to:
456
- > a) **Auto-extract** from Claude Code credentials (recommended)
457
- > b) **Paste** a token manually (copy to clipboard first)
458
-
459
- 2a. **Auto-extract:**
460
-
461
- ```bash
462
- MCP_TOKEN=$(python3 -c "
463
- import subprocess, os, re
464
- raw = subprocess.check_output(
465
- ['security', 'find-generic-password', '-s', 'Claude Code-credentials',
466
- '-a', os.environ['USER'], '-w'],
467
- stderr=subprocess.DEVNULL
468
- ).decode()
469
- match = re.search(r'\"figma-remote\|[^\\\"]+\":\{[^}]*\"accessToken\":\"([^\\\"]+)\"', raw)
470
- print(match.group(1) if match else '')
471
- " 2>/dev/null)
472
- ```
473
-
474
- If empty → tell user Claude Code has no figma-remote credentials, suggest completing OAuth first.
475
-
476
- 2b. **Paste from clipboard:**
477
-
478
- ```bash
479
- MCP_TOKEN=$(pbpaste)
480
- ```
481
-
482
- Then clear clipboard: `pbcopy < /dev/null`
483
-
484
- 3. **Save to keychain:**
485
-
486
- ```bash
487
- "$HOME/.claude/lib/credential-store.sh" delete \1 >/dev/null 2>&1
488
- "$HOME/.claude/lib/credential-store.sh" set \1 \"\2\" >/dev/null 2>&1 && echo "TOKEN_SAVED" || echo "TOKEN_SAVE_FAILED"
489
- ```
490
-
491
- 4. **Verify** the saved token works:
492
-
493
- ```bash
494
- TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null) && curl -s -o /dev/null -w "%{http_code}" -X POST "https://mcp.figma.com/mcp" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "Authorization: Bearer $TOKEN" -d '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"clientInfo":{"name":"setup-check","version":"1.0.0"},"protocolVersion":"2025-03-26"},"id":1}'
495
- ```
496
-
497
- - `200` → print "Token saved and verified."
498
- - `401` → print "Token saved but verification failed (expired or invalid)."
499
-
500
- **IMPORTANT:** Do NOT echo the raw token during the save flow. Only show it during `retrieve-token`.
501
-
502
- ---
503
-
504
- ## Output
505
-
506
- ```
507
- SETUP COMPLETE
508
-
509
- Checks passed: [list]
510
- Checks skipped: [list]
511
- Marker: {repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/.setup-verified.json
512
-
513
- Your environment is ready for /figma.
514
- ```