@fprad0/skill-master-mcp 0.0.8 → 0.0.10

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 (223) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +61 -8
  3. package/VERSION.md +3 -3
  4. package/bin/lib/menu-core.mjs +798 -7
  5. package/bin/skill-master-bootstrap-global.mjs +48 -0
  6. package/bin/skill-master-doctor.mjs +168 -0
  7. package/bin/skill-master-install-global-skills.mjs +97 -0
  8. package/bin/skill-master-menu.mjs +184 -36
  9. package/bin/skill-master-register-clients.mjs +177 -0
  10. package/dist/domain-router.d.ts +11 -0
  11. package/dist/domain-router.d.ts.map +1 -0
  12. package/dist/domain-router.js +79 -0
  13. package/dist/domain-router.js.map +1 -0
  14. package/dist/index.js +159 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/moral-governance.d.ts +24 -0
  17. package/dist/moral-governance.d.ts.map +1 -0
  18. package/dist/moral-governance.js +143 -0
  19. package/dist/moral-governance.js.map +1 -0
  20. package/dist/prompt-router.d.ts +4 -0
  21. package/dist/prompt-router.d.ts.map +1 -1
  22. package/dist/prompt-router.js +18 -2
  23. package/dist/prompt-router.js.map +1 -1
  24. package/docs/planning/V0_0_9_APROVACAO_CRITICA_MENSAGENS_DE_VENDA.md +85 -0
  25. package/docs/planning/V0_0_9_FONTES_E_CRITERIOS_DE_AUTORIDADE.md +139 -0
  26. package/docs/planning/V0_0_9_MATRIZ_SKILLS_MULTIDISCIPLINARES.md +105 -0
  27. package/docs/planning/V0_0_9_POLITICA_MORAL_CATOLICA_PARA_IA.md +181 -0
  28. package/docs/planning/V0_0_9_PROMPTS_EXECUCAO.md +59 -0
  29. package/docs/planning/V0_0_9_ROADMAP_DISCERNIMENTO_E_CONHECIMENTO_AMPLO.md +181 -0
  30. package/docs/skill-candidates/v0.0.10/cli-creator/LICENSE.txt +201 -0
  31. package/docs/skill-candidates/v0.0.10/cli-creator/SKILL.md +160 -0
  32. package/docs/skill-candidates/v0.0.10/cli-creator/agents/openai.yaml +4 -0
  33. package/docs/skill-candidates/v0.0.10/cli-creator/references/agent-cli-patterns.md +154 -0
  34. package/docs/skill-candidates/v0.0.10/developer-workstation-ops/SKILL.md +32 -0
  35. package/docs/skill-candidates/v0.0.10/figma/LICENSE.txt +2 -0
  36. package/docs/skill-candidates/v0.0.10/figma/SKILL.md +42 -0
  37. package/docs/skill-candidates/v0.0.10/figma/agents/openai.yaml +14 -0
  38. package/docs/skill-candidates/v0.0.10/figma/assets/figma-small.svg +3 -0
  39. package/docs/skill-candidates/v0.0.10/figma/assets/figma.png +0 -0
  40. package/docs/skill-candidates/v0.0.10/figma/assets/icon.svg +28 -0
  41. package/docs/skill-candidates/v0.0.10/figma/references/figma-mcp-config.md +35 -0
  42. package/docs/skill-candidates/v0.0.10/figma/references/figma-tools-and-prompts.md +34 -0
  43. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/LICENSE.TXT +2 -0
  44. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/SKILL.md +349 -0
  45. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/agents/openai.yaml +14 -0
  46. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/figma-small.svg +3 -0
  47. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/figma.png +0 -0
  48. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/icon.svg +28 -0
  49. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/references/mapping-checklist.md +7 -0
  50. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/scripts/normalize_node_id.py +25 -0
  51. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/LICENSE.TXT +2 -0
  52. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/SKILL.md +537 -0
  53. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/agents/openai.yaml +14 -0
  54. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/figma-small.svg +3 -0
  55. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/figma.png +0 -0
  56. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/icon.svg +28 -0
  57. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/references/rule-template.md +15 -0
  58. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -0
  59. package/docs/skill-candidates/v0.0.10/figma-generate-design/LICENSE.TXT +2 -0
  60. package/docs/skill-candidates/v0.0.10/figma-generate-design/SKILL.md +341 -0
  61. package/docs/skill-candidates/v0.0.10/figma-generate-design/agents/openai.yaml +14 -0
  62. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/figma-small.svg +3 -0
  63. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/figma.png +0 -0
  64. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/icon.svg +28 -0
  65. package/docs/skill-candidates/v0.0.10/figma-generate-design/maintainers.yml +1 -0
  66. package/docs/skill-candidates/v0.0.10/figma-generate-library/LICENSE.TXT +2 -0
  67. package/docs/skill-candidates/v0.0.10/figma-generate-library/SKILL.md +314 -0
  68. package/docs/skill-candidates/v0.0.10/figma-generate-library/agents/openai.yaml +14 -0
  69. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/figma-small.svg +3 -0
  70. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/figma.png +0 -0
  71. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/icon.svg +28 -0
  72. package/docs/skill-candidates/v0.0.10/figma-generate-library/maintainers.yml +3 -0
  73. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/code-connect-setup.md +260 -0
  74. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/component-creation.md +1014 -0
  75. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/discovery-phase.md +518 -0
  76. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/documentation-creation.md +834 -0
  77. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/error-recovery.md +540 -0
  78. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/naming-conventions.md +527 -0
  79. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/token-creation.md +962 -0
  80. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/bindVariablesToComponent.js +110 -0
  81. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/cleanupOrphans.js +127 -0
  82. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createComponentWithVariants.js +148 -0
  83. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createDocumentationPage.js +139 -0
  84. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createSemanticTokens.js +108 -0
  85. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createVariableCollection.js +49 -0
  86. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/inspectFileStructure.js +121 -0
  87. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/rehydrateState.js +92 -0
  88. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/validateCreation.js +83 -0
  89. package/docs/skill-candidates/v0.0.10/figma-implement-design/LICENSE.txt +2 -0
  90. package/docs/skill-candidates/v0.0.10/figma-implement-design/SKILL.md +258 -0
  91. package/docs/skill-candidates/v0.0.10/figma-implement-design/agents/openai.yaml +14 -0
  92. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/figma-small.svg +3 -0
  93. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/figma.png +0 -0
  94. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/icon.svg +28 -0
  95. package/docs/skill-candidates/v0.0.10/figma-use/LICENSE.TXT +2 -0
  96. package/docs/skill-candidates/v0.0.10/figma-use/SKILL.md +233 -0
  97. package/docs/skill-candidates/v0.0.10/figma-use/agents/openai.yaml +14 -0
  98. package/docs/skill-candidates/v0.0.10/figma-use/assets/figma-small.svg +3 -0
  99. package/docs/skill-candidates/v0.0.10/figma-use/assets/figma.png +0 -0
  100. package/docs/skill-candidates/v0.0.10/figma-use/assets/icon.svg +28 -0
  101. package/docs/skill-candidates/v0.0.10/figma-use/maintainers.yml +1 -0
  102. package/docs/skill-candidates/v0.0.10/figma-use/references/api-reference.md +301 -0
  103. package/docs/skill-candidates/v0.0.10/figma-use/references/common-patterns.md +512 -0
  104. package/docs/skill-candidates/v0.0.10/figma-use/references/component-patterns.md +488 -0
  105. package/docs/skill-candidates/v0.0.10/figma-use/references/effect-style-patterns.md +123 -0
  106. package/docs/skill-candidates/v0.0.10/figma-use/references/gotchas.md +599 -0
  107. package/docs/skill-candidates/v0.0.10/figma-use/references/maintainers.yml +12 -0
  108. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-patterns.md +513 -0
  109. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.d.ts +11293 -0
  110. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.index.md +441 -0
  111. package/docs/skill-candidates/v0.0.10/figma-use/references/text-style-patterns.md +203 -0
  112. package/docs/skill-candidates/v0.0.10/figma-use/references/validation-and-recovery.md +109 -0
  113. package/docs/skill-candidates/v0.0.10/figma-use/references/variable-patterns.md +354 -0
  114. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/maintainers.yml +9 -0
  115. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--creating.md +17 -0
  116. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--using.md +17 -0
  117. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components.md +50 -0
  118. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-effect-styles.md +52 -0
  119. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-text-styles.md +90 -0
  120. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--creating.md +13 -0
  121. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--using.md +13 -0
  122. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables.md +64 -0
  123. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds.md +41 -0
  124. package/docs/skill-candidates/v0.0.10/frontend-design/LICENSE.txt +177 -0
  125. package/docs/skill-candidates/v0.0.10/frontend-design/SKILL.md +55 -0
  126. package/docs/skill-candidates/v0.0.10/frontend-ui-ux-systems/SKILL.md +32 -0
  127. package/docs/skill-candidates/v0.0.10/github/SKILL.md +74 -0
  128. package/docs/skill-candidates/v0.0.10/github/agents/openai.yaml +6 -0
  129. package/docs/skill-candidates/v0.0.10/github/assets/github-small.svg +3 -0
  130. package/docs/skill-candidates/v0.0.10/github/assets/github.png +0 -0
  131. package/docs/skill-candidates/v0.0.10/image-graphic-design-rendering/SKILL.md +28 -0
  132. package/docs/skill-candidates/v0.0.10/language-quality-pt-en-fr-it-ru/SKILL.md +28 -0
  133. package/docs/skill-candidates/v0.0.10/math-physics-reasoning/SKILL.md +28 -0
  134. package/docs/skill-candidates/v0.0.10/mcp-builder/LICENSE.txt +202 -0
  135. package/docs/skill-candidates/v0.0.10/mcp-builder/SKILL.md +236 -0
  136. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/evaluation.md +602 -0
  137. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/mcp_best_practices.md +249 -0
  138. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/node_mcp_server.md +970 -0
  139. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/python_mcp_server.md +719 -0
  140. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/connections.py +151 -0
  141. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/evaluation.py +373 -0
  142. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/example_evaluation.xml +22 -0
  143. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/requirements.txt +2 -0
  144. package/docs/skill-candidates/v0.0.10/mcp-client-readiness/SKILL.md +31 -0
  145. package/docs/skill-candidates/v0.0.10/openai-docs/LICENSE.txt +201 -0
  146. package/docs/skill-candidates/v0.0.10/openai-docs/SKILL.md +161 -0
  147. package/docs/skill-candidates/v0.0.10/openai-docs/agents/openai.yaml +14 -0
  148. package/docs/skill-candidates/v0.0.10/openai-docs/assets/openai-small.svg +3 -0
  149. package/docs/skill-candidates/v0.0.10/openai-docs/assets/openai.png +0 -0
  150. package/docs/skill-candidates/v0.0.10/openai-docs/references/latest-model.md +37 -0
  151. package/docs/skill-candidates/v0.0.10/openai-docs/references/prompting-guide.md +244 -0
  152. package/docs/skill-candidates/v0.0.10/openai-docs/references/upgrade-guide.md +181 -0
  153. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/fetch-codex-manual.mjs +598 -0
  154. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/resolve-latest-model-info.js +147 -0
  155. package/docs/skill-candidates/v0.0.10/playwright/LICENSE.txt +201 -0
  156. package/docs/skill-candidates/v0.0.10/playwright/NOTICE.txt +14 -0
  157. package/docs/skill-candidates/v0.0.10/playwright/SKILL.md +147 -0
  158. package/docs/skill-candidates/v0.0.10/playwright/agents/openai.yaml +6 -0
  159. package/docs/skill-candidates/v0.0.10/playwright/assets/playwright-small.svg +3 -0
  160. package/docs/skill-candidates/v0.0.10/playwright/assets/playwright.png +0 -0
  161. package/docs/skill-candidates/v0.0.10/playwright/references/cli.md +116 -0
  162. package/docs/skill-candidates/v0.0.10/playwright/references/workflows.md +95 -0
  163. package/docs/skill-candidates/v0.0.10/playwright/scripts/playwright_cli.sh +25 -0
  164. package/docs/skill-candidates/v0.0.10/polyglot-backend-engineering/SKILL.md +32 -0
  165. package/docs/skill-candidates/v0.0.10/screenshot/LICENSE.txt +201 -0
  166. package/docs/skill-candidates/v0.0.10/screenshot/SKILL.md +267 -0
  167. package/docs/skill-candidates/v0.0.10/screenshot/agents/openai.yaml +6 -0
  168. package/docs/skill-candidates/v0.0.10/screenshot/assets/screenshot-small.svg +5 -0
  169. package/docs/skill-candidates/v0.0.10/screenshot/assets/screenshot.png +0 -0
  170. package/docs/skill-candidates/v0.0.10/screenshot/scripts/ensure_macos_permissions.sh +54 -0
  171. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_display_info.swift +22 -0
  172. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_permissions.swift +40 -0
  173. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_window_info.swift +126 -0
  174. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.ps1 +163 -0
  175. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.py +585 -0
  176. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/SKILL.md +62 -0
  177. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/agents/openai.yaml +4 -0
  178. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/activation-policy.md +77 -0
  179. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/human-approval-policy.md +83 -0
  180. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/persona-dev-senior-master.md +46 -0
  181. package/docs/skill-candidates/v0.0.10/terminal-menu-operations/SKILL.md +30 -0
  182. package/docs/skill-candidates/v0.0.10/terminal-pixel-art-tui/SKILL.md +43 -0
  183. package/docs/skill-candidates/v0.0.10/webapp-testing/LICENSE.txt +202 -0
  184. package/docs/skill-candidates/v0.0.10/webapp-testing/SKILL.md +96 -0
  185. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/console_logging.py +35 -0
  186. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/element_discovery.py +40 -0
  187. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/static_html_automation.py +33 -0
  188. package/docs/skill-candidates/v0.0.10/webapp-testing/scripts/with_server.py +106 -0
  189. package/docs/skill-candidates/v0.0.10/winui-app/LICENSE.txt +202 -0
  190. package/docs/skill-candidates/v0.0.10/winui-app/SKILL.md +94 -0
  191. package/docs/skill-candidates/v0.0.10/winui-app/agents/openai.yaml +5 -0
  192. package/docs/skill-candidates/v0.0.10/winui-app/assets/winui.png +0 -0
  193. package/docs/skill-candidates/v0.0.10/winui-app/config.yaml +50 -0
  194. package/docs/skill-candidates/v0.0.10/winui-app/references/_sections.md +96 -0
  195. package/docs/skill-candidates/v0.0.10/winui-app/references/accessibility-input-and-localization.md +51 -0
  196. package/docs/skill-candidates/v0.0.10/winui-app/references/build-run-and-launch-verification.md +72 -0
  197. package/docs/skill-candidates/v0.0.10/winui-app/references/community-toolkit-controls-and-helpers.md +57 -0
  198. package/docs/skill-candidates/v0.0.10/winui-app/references/controls-layout-and-adaptive-ui.md +84 -0
  199. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-environment-audit-and-remediation.md +82 -0
  200. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-setup-and-project-selection.md +67 -0
  201. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-template-first-recovery.md +62 -0
  202. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-winui-app-structure.md +62 -0
  203. package/docs/skill-candidates/v0.0.10/winui-app/references/motion-animations-and-polish.md +45 -0
  204. package/docs/skill-candidates/v0.0.10/winui-app/references/performance-diagnostics-and-responsiveness.md +46 -0
  205. package/docs/skill-candidates/v0.0.10/winui-app/references/sample-source-map.md +37 -0
  206. package/docs/skill-candidates/v0.0.10/winui-app/references/shell-navigation-and-windowing.md +67 -0
  207. package/docs/skill-candidates/v0.0.10/winui-app/references/styling-theming-materials-and-icons.md +71 -0
  208. package/docs/skill-candidates/v0.0.10/winui-app/references/testing-debugging-and-review-checklists.md +77 -0
  209. package/docs/skill-candidates/v0.0.10/winui-app/references/windows-app-sdk-lifecycle-notifications-and-deployment.md +52 -0
  210. package/docs/skill-candidates/v0.0.9/ai-ethics-human-dignity/SKILL.md +32 -0
  211. package/docs/skill-candidates/v0.0.9/broad-domain-router/SKILL.md +41 -0
  212. package/docs/skill-candidates/v0.0.9/catholic-moral-discernment/SKILL.md +31 -0
  213. package/docs/skill-candidates/v0.0.9/engineering-systems-master/SKILL.md +31 -0
  214. package/docs/skill-candidates/v0.0.9/language-quality-pt-en-fr/SKILL.md +28 -0
  215. package/docs/skill-candidates/v0.0.9/math-science-reasoning/SKILL.md +29 -0
  216. package/docs/skill-candidates/v0.0.9/philosophy-sociology-discernment/SKILL.md +28 -0
  217. package/docs/skill-candidates/v0.0.9/professional-boundary-triage/SKILL.md +40 -0
  218. package/docs/skill-candidates/v0.0.9/release-ethics-gate/SKILL.md +32 -0
  219. package/docs/skill-candidates/v0.0.9/source-authority-reviewer/SKILL.md +31 -0
  220. package/manifests/channels/beta.json +7 -7
  221. package/manifests/channels/stable.json +8 -8
  222. package/network/unapproved-skill-candidates.json +34 -1
  223. package/package.json +7 -1
@@ -0,0 +1,314 @@
1
+ ---
2
+ name: figma-generate-library
3
+ description: "Build or update a professional-grade design system in Figma from a codebase. Use when the user wants to create variables/tokens, build component libraries, set up theming (light/dark modes), document foundations, or reconcile gaps between code and Figma. This skill teaches WHAT to build and in WHAT ORDER — it complements the `figma-use` skill which teaches HOW to call the Plugin API. Both skills should be loaded together."
4
+ ---
5
+
6
+ # Design System Builder — Figma MCP Skill
7
+
8
+ Build professional-grade design systems in Figma that match code. This skill orchestrates multi-phase workflows across 20–100+ `use_figma` calls, enforcing quality patterns from real-world design systems (Material 3, Polaris, Figma UI3, Simple DS).
9
+
10
+ **Prerequisites**: The `figma-use` skill MUST also be loaded for every `use_figma` call. It provides Plugin API syntax rules (return pattern, page reset, ID return, font loading, color range). This skill provides design system domain knowledge and workflow orchestration.
11
+
12
+ **Always pass `skillNames: "figma-generate-library"` when calling `use_figma` as part of this skill.** This is a logging parameter — it does not affect execution.
13
+
14
+ ---
15
+
16
+ ## 1. The One Rule That Matters Most
17
+
18
+ **This is NEVER a one-shot task.** Building a design system requires 20–100+ `use_figma` calls across multiple phases, with mandatory user checkpoints between them. Any attempt to create everything in one call WILL produce broken, incomplete, or unrecoverable results. Break every operation to the smallest useful unit, validate, get feedback, proceed.
19
+
20
+ ---
21
+
22
+ ## 2. Mandatory Workflow
23
+
24
+ Every design system build follows this phase order. Skipping or reordering phases causes structural failures that are expensive to undo.
25
+
26
+ ```
27
+ Phase 0: DISCOVERY (always first — no use_figma writes yet)
28
+ 0a. Analyze codebase → extract tokens, components, naming conventions
29
+ 0b. Inspect Figma file → pages, variables, components, styles, existing conventions
30
+ 0c. Search subscribed libraries → use search_design_system for reusable assets
31
+ 0d. Lock v1 scope → agree on exact token set + component list before any creation
32
+ 0e. Map code → Figma → resolve conflicts (code and Figma disagree = ask user)
33
+ ✋ USER CHECKPOINT: present full plan, await explicit approval
34
+
35
+ Phase 1: FOUNDATIONS (tokens first — always before components)
36
+ 1a. Create variable collections and modes
37
+ 1b. Create primitive variables (raw values, 1 mode)
38
+ 1c. Create semantic variables (aliased to primitives, mode-aware)
39
+ 1d. Set scopes on ALL variables
40
+ 1e. Set code syntax on ALL variables
41
+ 1f. Create effect styles (shadows) and text styles (typography)
42
+ → Exit criteria: every token from the agreed plan exists, all scopes set, all code syntax set
43
+ ✋ USER CHECKPOINT: show variable summary, await approval
44
+
45
+ Phase 2: FILE STRUCTURE (before components)
46
+ 2a. Create page skeleton: Cover → Getting Started → Foundations → --- → Components → --- → Utilities
47
+ 2b. Create foundations documentation pages (color swatches, type specimens, spacing bars)
48
+ → Exit criteria: all planned pages exist, foundations docs are navigable
49
+ ✋ USER CHECKPOINT: show page list + screenshot, await approval
50
+
51
+ Phase 3: COMPONENTS (one at a time — never batch)
52
+ For EACH component (in dependency order: atoms before molecules):
53
+ 3a. Create dedicated page
54
+ 3b. Build base component with auto-layout + full variable bindings
55
+ 3c. Create all variant combinations (combineAsVariants + grid layout)
56
+ 3d. Add component properties (TEXT, BOOLEAN, INSTANCE_SWAP)
57
+ 3e. Link properties to child nodes
58
+ 3f. Add page documentation (title, description, usage notes)
59
+ 3g. Validate: get_metadata (structure) + get_screenshot (visual)
60
+ 3h. Optional: lightweight Code Connect mapping while context is fresh
61
+ → Exit criteria: variant count correct, all bindings verified, screenshot looks right
62
+ ✋ USER CHECKPOINT per component: show screenshot, await approval before next component
63
+
64
+ Phase 4: INTEGRATION + QA (final pass)
65
+ 4a. Finalize all Code Connect mappings
66
+ 4b. Accessibility audit (contrast, min touch targets, focus visibility)
67
+ 4c. Naming audit (no duplicates, no unnamed nodes, consistent casing)
68
+ 4d. Unresolved bindings audit (no hardcoded fills/strokes remaining)
69
+ 4e. Final review screenshots of every page
70
+ ✋ USER CHECKPOINT: complete sign-off
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 3. Critical Rules
76
+
77
+ **Plugin API basics** (from use_figma skill — enforced here too):
78
+ - Use `return` to send data back (auto-serialized). Do NOT wrap in IIFE or call closePlugin.
79
+ - Return ALL created/mutated node IDs in every return value
80
+ - Page context resets each call — always `await figma.setCurrentPageAsync(page)` at start
81
+ - `figma.notify()` throws — never use it
82
+ - Colors are 0–1 range, not 0–255
83
+ - Font MUST be loaded before any text write: `await figma.loadFontAsync({family, style})`
84
+
85
+ **Design system rules**:
86
+ 1. **Variables BEFORE components** — components bind to variables. No token = no component.
87
+ 2. **Inspect before creating** — run read-only `use_figma` to discover existing conventions. Match them.
88
+ 3. **One page per component** *(default)* — exception: tightly related families (e.g., Input + helpers) may share a page with clear section separation.
89
+ 4. **Bind visual properties to variables** *(default)* — fills, strokes, padding, radius, gap. Exceptions: intentionally fixed geometry (icon pixel-grid sizes, static dividers).
90
+ 5. **Scopes on every variable** — NEVER leave as `ALL_SCOPES`. Background: `FRAME_FILL, SHAPE_FILL`. Text: `TEXT_FILL`. Border: `STROKE_COLOR`. Spacing: `GAP`. Radii: `CORNER_RADIUS`. Primitives: `[]` (hidden).
91
+ 6. **Code syntax on every variable** — WEB syntax MUST use the `var()` wrapper: `var(--color-bg-primary)`, not `--color-bg-primary`. Use the actual CSS variable name from the codebase. ANDROID/iOS do NOT use a wrapper.
92
+ 7. **Alias semantics to primitives** — `{ type: 'VARIABLE_ALIAS', id: primitiveVar.id }`. Never duplicate raw values in semantic layer.
93
+ 8. **Position variants after combineAsVariants** — they stack at (0,0). Manually grid-layout + resize.
94
+ 9. **INSTANCE_SWAP for icons** — never create a variant per icon. Cap variant matrices: if Size × Style × State > 30 combinations, split into sub-component.
95
+ 10. **Deterministic naming** — use consistent, unique node names for idempotent cleanup and resumability. Track created node IDs via return values and the state ledger.
96
+ 11. **No destructive cleanup** — cleanup scripts identify nodes by name convention or returned IDs, not by guessing.
97
+ 12. **Validate before proceeding** — never build on unvalidated work. `get_metadata` after every create, `get_screenshot` after each component.
98
+ 13. **NEVER parallelize `use_figma` calls** — Figma state mutations must be strictly sequential. Even if your tool supports parallel calls, never run two use_figma calls simultaneously.
99
+ 14. **Never hallucinate Node IDs** — always read IDs from the state ledger returned by previous calls. Never reconstruct or guess an ID from memory.
100
+ 15. **Use the helper scripts** — embed scripts from `scripts/` into your use_figma calls. Don't write 200-line inline scripts from scratch.
101
+ 16. **Explicit phase approval** — at each checkpoint, name the next phase explicitly. "looks good" is not approval to proceed to Phase 3 if you asked about Phase 1.
102
+
103
+ ---
104
+
105
+ ## 4. State Management (Required for Long Workflows)
106
+
107
+ > **`getPluginData()` / `setPluginData()` are NOT supported in `use_figma`.** Use `getSharedPluginData()` / `setSharedPluginData()` instead (these ARE supported), or use name-based lookups and the state ledger (returned IDs).
108
+
109
+ | Entity type | Idempotency key | How to check existence |
110
+ |-------------|----------------|----------------------|
111
+ | Scene nodes (pages, frames, components) | `setSharedPluginData('dsb', 'key', value)` or unique name | `node.getSharedPluginData('dsb', 'key')` or `page.findOne(n => n.name === 'Button')` |
112
+ | Variables | Name within collection | `(await figma.variables.getLocalVariablesAsync()).find(v => v.name === name && v.variableCollectionId === collId)` |
113
+ | Styles | Name | `getLocalTextStyles().find(s => s.name === name)` |
114
+
115
+ Tag every created **scene node** immediately after creation:
116
+ ```javascript
117
+ node.setSharedPluginData('dsb', 'run_id', RUN_ID); // identifies this build run
118
+ node.setSharedPluginData('dsb', 'phase', 'phase3'); // which phase created it
119
+ node.setSharedPluginData('dsb', 'key', 'component/button');// unique logical key
120
+ ```
121
+
122
+ **State persistence**: Do NOT rely solely on conversation context for the state ledger. Write it to disk:
123
+ ```
124
+ /tmp/dsb-state-{RUN_ID}.json
125
+ ```
126
+ Re-read this file at the start of every turn. In long workflows, conversation context will be truncated — the file is the source of truth.
127
+
128
+ Maintain a state ledger tracking:
129
+ ```json
130
+ {
131
+ "runId": "ds-build-2024-001",
132
+ "phase": "phase3",
133
+ "step": "component-button",
134
+ "entities": {
135
+ "collections": { "primitives": "id:...", "color": "id:..." },
136
+ "variables": { "color/bg/primary": "id:...", "spacing/sm": "id:..." },
137
+ "pages": { "Cover": "id:...", "Button": "id:..." },
138
+ "components": { "Button": "id:..." }
139
+ },
140
+ "pendingValidations": ["Button:screenshot"],
141
+ "completedSteps": ["phase0", "phase1", "phase2", "component-avatar"]
142
+ }
143
+ ```
144
+
145
+ **Idempotency check** before every create: query by name + state ledger ID. If exists, skip or update — never duplicate.
146
+
147
+ **Resume protocol**: at session start or after context truncation, run a read-only `use_figma` to scan all pages, components, variables, and styles by name to reconstruct the `{key → id}` map. Then re-read the state file from disk if available.
148
+
149
+ **Continuation prompt** (give this to the user when resuming in a new chat):
150
+ > "I'm continuing a design system build. Run ID: {RUN_ID}. Load the figma-generate-library skill and resume from the last completed step."
151
+
152
+ ---
153
+
154
+ ## 5. search_design_system — Reuse Decision Matrix
155
+
156
+ Search FIRST in Phase 0, then again immediately before each component creation.
157
+
158
+ ```
159
+ search_design_system({ query, fileKey, includeComponents: true, includeVariables: true, includeStyles: true })
160
+ ```
161
+
162
+ **Reuse if** all of these are true:
163
+ - Component property API matches your needs (same variant axes, compatible types)
164
+ - Token binding model is compatible (uses same or aliasable variables)
165
+ - Naming conventions match the target file
166
+ - Component is editable (not locked in a remote library you don't own)
167
+
168
+ **Rebuild if** any of these:
169
+ - API incompatibility (different property names, wrong variant model)
170
+ - Token model incompatible (hardcoded values, different variable schema)
171
+ - Ownership issue (can't modify the library)
172
+
173
+ **Wrap if** visual match but API incompatible:
174
+ - Import the library component as a nested instance inside a new wrapper component
175
+ - Expose a clean API on the wrapper
176
+
177
+ **Three-way priority**: local existing → subscribed library import → create new.
178
+
179
+ ---
180
+
181
+ ## 6. User Checkpoints
182
+
183
+ Mandatory. Design decisions require human judgment.
184
+
185
+ | After | Required artifacts | Ask |
186
+ |-------|-------------------|-----|
187
+ | Discovery + scope lock | Token list, component list, gap analysis | "Here's my plan. Approve before I create anything?" |
188
+ | Foundations | Variable summary (N collections, M vars, K modes), style list | "All tokens created. Review before file structure?" |
189
+ | File structure | Page list + screenshot | "Pages set up. Review before components?" |
190
+ | Each component | get_screenshot of component page | "Here's [Component] with N variants. Correct?" |
191
+ | Each conflict (code ≠ Figma) | Show both versions | "Code says X, Figma has Y. Which wins?" |
192
+ | Final QA | Per-page screenshots + audit report | "Complete. Sign off?" |
193
+
194
+ **If user rejects**: fix before moving on. Never build on rejected work.
195
+
196
+ ---
197
+
198
+ ## 7. Naming Conventions
199
+
200
+ Match existing file conventions. If starting fresh:
201
+
202
+ **Variables** (slash-separated):
203
+ ```
204
+ color/bg/primary color/text/secondary color/border/default
205
+ spacing/xs spacing/sm spacing/md spacing/lg spacing/xl spacing/2xl
206
+ radius/none radius/sm radius/md radius/lg radius/full
207
+ typography/body/font-size typography/heading/line-height
208
+ ```
209
+
210
+ **Primitives**: `blue/50` → `blue/900`, `gray/50` → `gray/900`
211
+
212
+ **Component names**: `Button`, `Input`, `Card`, `Avatar`, `Badge`, `Checkbox`, `Toggle`
213
+
214
+ **Variant names**: `Property=Value, Property=Value` — e.g., `Size=Medium, Style=Primary, State=Default`
215
+
216
+ **Page separators**: `---` (most common) or `——— COMPONENTS ———`
217
+
218
+ > Full naming reference: [naming-conventions.md](references/naming-conventions.md)
219
+
220
+ ---
221
+
222
+ ## 8. Token Architecture
223
+
224
+ | Complexity | Pattern |
225
+ |-----------|---------|
226
+ | < 50 tokens | Single collection, 2 modes (Light/Dark) |
227
+ | 50–200 tokens | **Standard**: Primitives (1 mode) + Color semantic (Light/Dark) + Spacing (1 mode) + Typography (1 mode) |
228
+ | 200+ tokens | **Advanced**: Multiple semantic collections, 4–8 modes (Light/Dark × Contrast × Brand). See M3 pattern in [token-creation.md](references/token-creation.md) |
229
+
230
+ Standard pattern (recommended starting point):
231
+ ```
232
+ Collection: "Primitives" modes: ["Value"]
233
+ blue/500 = #3B82F6, gray/900 = #111827, ...
234
+
235
+ Collection: "Color" modes: ["Light", "Dark"]
236
+ color/bg/primary → Light: alias Primitives/white, Dark: alias Primitives/gray-900
237
+ color/text/primary → Light: alias Primitives/gray-900, Dark: alias Primitives/white
238
+
239
+ Collection: "Spacing" modes: ["Value"]
240
+ spacing/xs = 4, spacing/sm = 8, spacing/md = 16, ...
241
+ ```
242
+
243
+ ---
244
+
245
+ ## 9. Per-Phase Anti-Patterns
246
+
247
+ **Phase 0 anti-patterns:**
248
+ - ❌ Starting to create anything before scope is locked with user
249
+ - ❌ Ignoring existing file conventions and imposing new ones
250
+ - ❌ Skipping `search_design_system` before planning component creation
251
+
252
+ **Phase 1 anti-patterns:**
253
+ - ❌ Using `ALL_SCOPES` on any variable
254
+ - ❌ Duplicating raw values in semantic layer instead of aliasing
255
+ - ❌ Not setting code syntax (breaks Dev Mode and round-tripping)
256
+ - ❌ Creating component tokens before agreeing on token taxonomy
257
+
258
+ **Phase 2 anti-patterns:**
259
+ - ❌ Skipping the cover page or foundations docs
260
+ - ❌ Putting multiple unrelated components on one page
261
+
262
+ **Phase 3 anti-patterns:**
263
+ - ❌ Creating components before foundations exist
264
+ - ❌ Hardcoding any fill/stroke/spacing/radius value in a component
265
+ - ❌ Creating a variant per icon (use INSTANCE_SWAP instead)
266
+ - ❌ Not positioning variants after combineAsVariants (they all stack at 0,0)
267
+ - ❌ Building variant matrix > 30 without splitting (variant explosion)
268
+ - ❌ Importing remote components then immediately detaching them
269
+
270
+ **General anti-patterns:**
271
+ - ❌ Retrying a failed script without understanding the error first
272
+ - ❌ Using name-prefix matching for cleanup (deletes user-owned nodes)
273
+ - ❌ Building on unvalidated work from the previous step
274
+ - ❌ Skipping user checkpoints to "save time"
275
+ - ❌ Parallelizing use_figma calls (always sequential)
276
+ - ❌ Guessing/hallucinating node IDs from memory (always read from state ledger)
277
+ - ❌ Writing massive inline scripts instead of using the provided helper scripts
278
+ - ❌ Starting Phase 3 because the user said "build the button" without completing Phases 0-2
279
+
280
+ ---
281
+
282
+ ## 10. Reference Docs
283
+
284
+ Load on demand — each reference is authoritative for its phase:
285
+
286
+ Use your file reading tool to read these docs when needed. Do not assume their contents from the filename.
287
+
288
+ | Doc | Phase | Required / Optional | Load when |
289
+ |-----|-------|---------------------|-----------|
290
+ | [discovery-phase.md](references/discovery-phase.md) | 0 | **Required** | Starting any build — codebase analysis + Figma inspection |
291
+ | [token-creation.md](references/token-creation.md) | 1 | **Required** | Creating variables, collections, modes, styles |
292
+ | [documentation-creation.md](references/documentation-creation.md) | 2 | Required | Creating cover page, foundations docs, swatches |
293
+ | [component-creation.md](references/component-creation.md) | 3 | **Required** | Creating any component or variant |
294
+ | [code-connect-setup.md](references/code-connect-setup.md) | 3–4 | Required | Setting up Code Connect or variable code syntax |
295
+ | [naming-conventions.md](references/naming-conventions.md) | Any | Optional | Naming anything — variables, pages, variants, styles |
296
+ | [error-recovery.md](references/error-recovery.md) | Any | **Required on error** | Script fails, multi-step workflow recovery, cleanup of abandoned workflow state |
297
+
298
+ ---
299
+
300
+ ## 11. Scripts
301
+
302
+ Reusable Plugin API helper functions. Embed in `use_figma` calls:
303
+
304
+ | Script | Purpose |
305
+ |--------|---------|
306
+ | [inspectFileStructure.js](scripts/inspectFileStructure.js) | Discover all pages, components, variables, styles; returns full inventory |
307
+ | [createVariableCollection.js](scripts/createVariableCollection.js) | Create a named collection with modes; returns `{collectionId, modeIds}` |
308
+ | [createSemanticTokens.js](scripts/createSemanticTokens.js) | Create aliased semantic variables from a token map |
309
+ | [createComponentWithVariants.js](scripts/createComponentWithVariants.js) | Build a component set from a variant matrix; handles grid layout |
310
+ | [bindVariablesToComponent.js](scripts/bindVariablesToComponent.js) | Bind design tokens to all component visual properties |
311
+ | [createDocumentationPage.js](scripts/createDocumentationPage.js) | Create a page with title + description + section structure |
312
+ | [validateCreation.js](scripts/validateCreation.js) | Verify created nodes match expected counts, names, structure |
313
+ | [cleanupOrphans.js](scripts/cleanupOrphans.js) | Remove orphaned nodes by name convention or state ledger IDs |
314
+ | [rehydrateState.js](scripts/rehydrateState.js) | Scan file for all pages, components, variables by name; returns full `{key → nodeId}` map for state reconstruction |
@@ -0,0 +1,14 @@
1
+ interface:
2
+ display_name: "Generate Figma Library"
3
+ short_description: "Build or update a design system library in Figma"
4
+ icon_small: "./assets/figma-small.svg"
5
+ icon_large: "./assets/figma.png"
6
+ default_prompt: "Use $figma-generate-library to build or update a Figma design system library from the codebase, including tokens, components, and documentation."
7
+
8
+ dependencies:
9
+ tools:
10
+ - type: "mcp"
11
+ value: "figma"
12
+ description: "Figma MCP server"
13
+ transport: "streamable_http"
14
+ url: "https://mcp.figma.com/mcp"
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
2
+ <path fill="currentColor" fill-rule="evenodd" d="M4.994 5.986a2.014 2.014 0 1 0 0 4.028h2.069V5.986H4.994Zm5.063-.98h.055a2.014 2.014 0 1 0 0-4.026h-2.07v4.027h2.015Zm1.697.49A2.994 2.994 0 0 0 10.112 0H4.994a2.994 2.994 0 0 0-1.642 5.498A2.99 2.99 0 0 0 2 8a2.99 2.99 0 0 0 1.352 2.503A2.99 2.99 0 0 0 2 13.007C2 14.663 3.358 16 5.008 16c1.665 0 3.035-1.349 3.035-3.02v-2.765a2.984 2.984 0 0 0 2.014.778h.055a2.994 2.994 0 0 0 1.642-5.496Zm-1.642.49h-.055a2.014 2.014 0 1 0 0 4.028h.055a2.014 2.014 0 1 0 0-4.028Zm-7.132 7.02c0-1.111.902-2.013 2.014-2.013h2.069v1.987c0 1.123-.924 2.04-2.055 2.04a2.026 2.026 0 0 1-2.028-2.013Zm4.083-8H4.994a2.014 2.014 0 1 1 0-4.026h2.069v4.027Z" clip-rule="evenodd"/>
3
+ </svg>
@@ -0,0 +1,28 @@
1
+ <svg
2
+ width="400"
3
+ height="400"
4
+ viewBox="0 0 400 400"
5
+ fill="none"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <path
9
+ d="M97.5 302.5C97.5 274.195 120.445 251.25 148.75 251.25H200V302.5C200 330.805 177.055 353.75 148.75 353.75C120.445 353.75 97.5 330.805 97.5 302.5Z"
10
+ fill="#0ACF83"
11
+ />
12
+ <path
13
+ d="M200 200C200 171.696 222.945 148.75 251.25 148.75C279.554 148.75 302.5 171.695 302.5 200C302.5 228.305 279.554 251.25 251.25 251.25C222.945 251.25 200 228.304 200 200Z"
14
+ fill="#1ABCFE"
15
+ />
16
+ <path
17
+ d="M97.5 200C97.5 228.305 120.445 251.25 148.75 251.25H200V148.75H148.75C120.445 148.75 97.5 171.695 97.5 200Z"
18
+ fill="#A259FF"
19
+ />
20
+ <path
21
+ d="M200 46.25V148.75H251.25C279.555 148.75 302.5 125.805 302.5 97.5C302.5 69.1954 279.555 46.25 251.25 46.25H200Z"
22
+ fill="#FF7262"
23
+ />
24
+ <path
25
+ d="M97.5 97.5C97.5 125.805 120.445 148.75 148.75 148.75H200V46.25L148.75 46.25C120.445 46.25 97.5 69.1954 97.5 97.5Z"
26
+ fill="#F24E1E"
27
+ />
28
+ </svg>
@@ -0,0 +1,3 @@
1
+ SKILL.md: mcp_server
2
+ references: mcp_server
3
+ scripts: mcp_server
@@ -0,0 +1,260 @@
1
+ > Part of the [figma-generate-library skill](../SKILL.md).
2
+
3
+ # Code Connect Setup Reference
4
+
5
+ This reference covers all Code Connect tooling available to the figma-generate-library agent: the `add_code_connect_map` tool, `get_code_connect_map` for verification, `send_code_connect_mappings` for bulk application, variable code syntax, framework labels, and the decision of when to map per-component vs. in a final pass.
6
+
7
+ ---
8
+
9
+ ## 1. What Code Connect Does
10
+
11
+ Code Connect links a Figma component node to its code implementation so that:
12
+
13
+ - **Dev Mode** shows a real code snippet (from your codebase) instead of an auto-generated approximation when a developer inspects a component.
14
+ - **MCP `get_design_context`** returns `componentName`, `source`, and a rendered snippet alongside design tokens, enabling accurate AI-assisted code generation.
15
+ - **`search_design_system`** can return code references alongside Figma component metadata.
16
+
17
+ ---
18
+
19
+ ## 2. The Three MCP Tools
20
+
21
+ ### 2a. add_code_connect_map — single mapping
22
+
23
+ Maps one Figma node to one code component.
24
+
25
+ **Parameters:**
26
+
27
+ | Parameter | Type | Required | Notes |
28
+ |-----------|------|----------|-------|
29
+ | `nodeId` | string | Yes (remote) / Optional (desktop) | Format `123:456`. Must be a published component or component set. |
30
+ | `fileKey` | string | Yes (remote) | The Figma file key. |
31
+ | `source` | string | Yes | Path in the codebase (e.g. `src/components/Button.tsx`) or a URL. |
32
+ | `componentName` | string | Yes | The code component name (e.g. `Button`). |
33
+ | `label` | enum | Yes | Framework label — see Section 4 for valid values. |
34
+ | `template` | string | Optional | Executable JS template code. Providing this creates a **figmadoc** (template) mapping instead of a simple **component_browser** mapping. Requires the `pixie_mcp_enable_writing_code_connect_templates` feature flag. |
35
+ | `templateDataJson` | string | Optional | JSON string with optional fields: `isParserless`, `imports`, `nestable`, `props`. |
36
+
37
+ **Two mapping tiers:**
38
+
39
+ 1. **Simple mapping (component_browser):** Only `source`, `componentName`, and `label` provided. Associates the Figma component with a code path + name. Dev Mode generates a basic JSX snippet from Figma prop names. This is the default — use it first.
40
+
41
+ 2. **Template mapping (figmadoc):** `template` is also provided. The template is executed in a sandboxed QuickJS environment and dynamically renders the snippet based on the actual instance's property values. Use this when precise prop-level Code Connect is required by the user.
42
+
43
+ **Common error codes:**
44
+
45
+ | Error | Meaning | Fix |
46
+ |-------|---------|-----|
47
+ | `CODE_CONNECT_MAPPING_ALREADY_EXISTS` | Component is already mapped | Disconnect existing mapping in Figma UI first |
48
+ | `CODE_CONNECT_ASSET_NOT_FOUND` | Published component not found | Ensure the component is published to the library |
49
+ | `CODE_CONNECT_INSUFFICIENT_PERMISSIONS` | No edit access | Request edit permission on the file |
50
+ | `CODE_CONNECT_NO_LIBRARY_FOUND` | File is not published as a library | Publish the file as a Figma library first |
51
+
52
+ **Usage example:**
53
+
54
+ ```
55
+ Tool: add_code_connect_map
56
+ Args: {
57
+ nodeId: "123:456",
58
+ fileKey: "abc123",
59
+ source: "src/components/Button.tsx",
60
+ componentName: "Button",
61
+ label: "React"
62
+ }
63
+ ```
64
+
65
+ ---
66
+
67
+ ### 2b. get_code_connect_map — verification
68
+
69
+ Retrieves the current Code Connect mapping for a node. Use this immediately after `add_code_connect_map` to confirm the mapping was saved, and before `send_code_connect_mappings` to audit existing state.
70
+
71
+ **Parameters:**
72
+
73
+ | Parameter | Type | Required | Notes |
74
+ |-----------|------|----------|-------|
75
+ | `nodeId` | string | Optional | The node to check. Omit to get all mappings in the file. |
76
+ | `fileKey` | string | Yes (remote) | The Figma file key. |
77
+ | `codeConnectLabel` | string | Optional | Filter results to a specific framework label. |
78
+
79
+ **Returns:** A map of `nodeId -> { componentName, source, label, snippet, snippetImports }`.
80
+
81
+ **How to verify:**
82
+
83
+ ```
84
+ 1. Call add_code_connect_map with the node.
85
+ 2. Immediately call get_code_connect_map(nodeId, fileKey).
86
+ 3. Confirm the returned object has the expected componentName and source.
87
+ 4. If the mapping is missing, check for error codes from step 1.
88
+ ```
89
+
90
+ ---
91
+
92
+ ### 2c. send_code_connect_mappings — bulk application
93
+
94
+ Applies multiple Code Connect mappings in one call. Use after `get_code_connect_suggestions` returns a batch of unmapped components, or when doing a final-pass bulk mapping at the end of Phase 4.
95
+
96
+ **Parameters:**
97
+
98
+ | Parameter | Type | Required | Notes |
99
+ |-----------|------|----------|-------|
100
+ | `nodeId` | string | Optional | Context node for design fallback if mappings array is empty. |
101
+ | `fileKey` | string | Yes (remote) | The Figma file key. |
102
+ | `mappings` | array | Yes | Array of mapping objects. |
103
+
104
+ **Each mapping object:**
105
+
106
+ | Field | Type | Required | Notes |
107
+ |-------|------|----------|-------|
108
+ | `nodeId` | string | Yes | The Figma node identifier. |
109
+ | `componentName` | string | Yes | Code component name. |
110
+ | `source` | string | Yes | Path in the codebase. |
111
+ | `label` | enum | Yes | Framework label. |
112
+ | `template` | string | Optional | JS template code for figmadoc mapping. |
113
+ | `templateDataJson` | string | Optional | JSON template metadata. |
114
+
115
+ **Behavior:**
116
+
117
+ - All mappings are processed in parallel via POSTs to the backend.
118
+ - If any mapping fails, errors are reported per mapping — the rest succeed.
119
+ - On full success, `get_design_context` is called for the nodes and fresh design context is returned.
120
+
121
+ **Bulk workflow:**
122
+
123
+ ```
124
+ 1. Collect all {nodeId, componentName, source, label} pairs.
125
+ 2. Call send_code_connect_mappings({ fileKey, mappings: [...all pairs...] }).
126
+ 3. Review reported errors and call add_code_connect_map individually for any failures.
127
+ 4. Call get_code_connect_map on a sample of nodes to spot-check.
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 3. Variable Code Syntax (Token Round-Tripping)
133
+
134
+ Setting code syntax on variables creates the bidirectional link between Figma tokens and the codebase token system. This is what enables Dev Mode to show `var(--color-bg-primary)` next to a design value instead of a raw hex.
135
+
136
+ **The three platforms:**
137
+
138
+ ```javascript
139
+ // In use_figma:
140
+ variable.setVariableCodeSyntax('WEB', 'var(--color-bg-primary)');
141
+ variable.setVariableCodeSyntax('ANDROID', 'Theme.colorBgPrimary');
142
+ variable.setVariableCodeSyntax('iOS', 'Color.bgPrimary');
143
+ ```
144
+
145
+ - `WEB` — used for CSS custom properties, design token JSON, and any web framework.
146
+ - `ANDROID` — used for Jetpack Compose theme references and Android resource names.
147
+ - `iOS` — used for SwiftUI Color extensions and UIKit color methods.
148
+
149
+ **Derivation rules (in priority order):**
150
+
151
+ 1. **Best:** Use the exact token name from the codebase. Search the codebase for CSS custom properties (`--`), Swift color extensions, or Kotlin theme references and use those exact strings.
152
+ 2. **Good:** Derive from the Figma variable name with a consistent transformation: replace `/` and spaces with `-`, prefix with `var(--` and suffix with `)`.
153
+ - Example: `color/bg/primary` → `var(--color-bg-primary)`
154
+ 3. **Avoid:** Guessing or inventing names that don't exist in the codebase.
155
+
156
+ **Consistency rule:** The transformation must be uniform. If you use `var(--color-bg-primary)` for one variable, use the same `var(--{path-with-hyphens})` pattern for all variables in that collection.
157
+
158
+ **WEB syntax bulk example:**
159
+
160
+ ```javascript
161
+ // In use_figma — set WEB code syntax on all variables in a collection
162
+ const collections = figma.variables.getLocalVariableCollections();
163
+ for (const coll of collections) {
164
+ if (coll.name !== 'Color') continue;
165
+ for (const varId of coll.variableIds) {
166
+ const v = figma.variables.getVariableById(varId);
167
+ if (!v) continue;
168
+ // Derive: "color/bg/primary" → "var(--color-bg-primary)"
169
+ const cssName = 'var(--' + v.name.toLowerCase().replace(/\//g, '-').replace(/\s+/g, '-') + ')';
170
+ v.setVariableCodeSyntax('WEB', cssName);
171
+ }
172
+ }
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 4. Framework Labels
178
+
179
+ The following labels are valid for all Code Connect MCP operations. Use the label that matches your codebase framework.
180
+
181
+ | Label | Use for |
182
+ |-------|---------|
183
+ | `React` | React / JSX / TSX components |
184
+ | `Web Components` | Native Web Components, Lit, FAST |
185
+ | `Vue` | Vue 2 and Vue 3 SFCs |
186
+ | `Svelte` | Svelte components |
187
+ | `Storybook` | Storybook stories with Code Connect integration |
188
+ | `Javascript` | Plain JavaScript, framework-agnostic |
189
+ | `Swift` | Swift / UIKit |
190
+ | `Swift UIKit` | UIKit specifically |
191
+ | `Objective-C UIKit` | Objective-C with UIKit |
192
+ | `SwiftUI` | SwiftUI view components |
193
+ | `Compose` | Jetpack Compose (Android) |
194
+ | `Java` | Java Android components |
195
+ | `Kotlin` | Kotlin Android (non-Compose) |
196
+ | `Android XML Layout` | Android XML layout files |
197
+ | `Flutter` | Flutter / Dart widgets |
198
+ | `Markdown` | Documentation or MDX components |
199
+
200
+ **HTML note:** The label `HTML` is used by the Code Connect CLI's HTML parser (for Angular, Vue, and Web Components without a framework-specific parser), but the MCP tools use `Web Components` or `Vue` directly. Check the codebase framework before selecting.
201
+
202
+ ---
203
+
204
+ ## 5. Per-Component vs. Final-Pass Strategy
205
+
206
+ ### Per-component (preferred for new builds)
207
+
208
+ Map Code Connect immediately after creating a component, while the context is fresh (Phase 3, step 3h in the SKILL.md workflow):
209
+
210
+ **Advantages:**
211
+ - The node ID is already in hand from the creation script.
212
+ - You know exactly which code component this Figma component corresponds to (you just designed it to match).
213
+ - Errors surface early, before building dependent components.
214
+
215
+ **When to use:** Any time you create a Figma component that has a clear 1:1 match with an existing code component.
216
+
217
+ ### Final pass (for bulk mapping at Phase 4)
218
+
219
+ Collect all unmapped components and map them in one `send_code_connect_mappings` call:
220
+
221
+ **Advantages:**
222
+ - One bulk call instead of N individual calls.
223
+ - Can use `get_code_connect_suggestions` to discover unmapped components automatically.
224
+ - Better for importing existing Figma files where you didn't control creation.
225
+
226
+ **When to use:** Retrofitting Code Connect onto an existing file, or when the codebase mapping requires research that is better done after all components are created.
227
+
228
+ ### Hybrid (recommended for large systems)
229
+
230
+ - Map atoms (Button, Input, Badge, Avatar) **per-component** during Phase 3.
231
+ - Map molecules and organisms in a **final pass** during Phase 4 after all atoms are mapped, since molecule snippets reference atom Code Connect IDs.
232
+
233
+ ---
234
+
235
+ ## 6. Verification in Dev Mode
236
+
237
+ After mapping:
238
+
239
+ 1. Open the Figma file in the browser or desktop app.
240
+ 2. Switch to Dev Mode (the `</>` icon in the toolbar).
241
+ 3. Select a component instance (not the main component — an instance placed on a page).
242
+ 4. In the Inspect panel, the code snippet should show the Code Connect output instead of auto-generated code.
243
+ 5. If the snippet is missing or shows `[auto-generated]`, run `get_code_connect_map` via MCP to confirm the mapping exists, then check that the component is published.
244
+
245
+ **Via MCP (faster during agent workflows):**
246
+
247
+ ```
248
+ get_code_connect_map(nodeId: "<the component set node ID>", fileKey: "<file key>")
249
+ ```
250
+
251
+ The response should include `componentName`, `source`, `label`, and a non-empty `snippet`.
252
+
253
+ ---
254
+
255
+ ## 7. Important Constraints
256
+
257
+ - **Published components only:** `add_code_connect_map` requires the component to be published to a library. If the file is not yet published, the mapping will fail with `CODE_CONNECT_NO_LIBRARY_FOUND`.
258
+ - **One mapping per label per node:** A node can have multiple mappings (one per framework label), but only one per label. Attempting to add a second React mapping to the same node returns `CODE_CONNECT_MAPPING_ALREADY_EXISTS`.
259
+ - **Template mappings are gated:** The `template` parameter requires the `pixie_mcp_enable_writing_code_connect_templates` feature flag. Use simple mappings unless the user explicitly requests template-level Code Connect.
260
+ - **Start simple, escalate:** Always begin with simple mappings (`source` + `componentName` + `label`). Add `template` only if the user needs precise prop-level snippet rendering.