@fprad0/skill-master-mcp 0.0.11 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/CHANGELOG.md +96 -83
  2. package/README.md +472 -443
  3. package/VERSION.md +9 -9
  4. package/bin/lib/bootstrap-global-core.mjs +34 -0
  5. package/bin/lib/client-config.mjs +293 -268
  6. package/bin/lib/doctor-core.mjs +202 -0
  7. package/bin/lib/menu-core.mjs +1629 -1154
  8. package/bin/lib/operation-result.mjs +59 -0
  9. package/bin/lib/register-clients-core.mjs +247 -0
  10. package/bin/lib/skill-installation.mjs +215 -0
  11. package/bin/lib/update-cli-core.mjs +117 -0
  12. package/bin/skill-master-activation.mjs +163 -163
  13. package/bin/skill-master-bootstrap-global.mjs +61 -49
  14. package/bin/skill-master-configure-private-registry.mjs +3 -3
  15. package/bin/skill-master-doctor.mjs +239 -181
  16. package/bin/skill-master-eval-activation.mjs +32 -32
  17. package/bin/skill-master-install-global-skills.mjs +59 -97
  18. package/bin/skill-master-install-project-skills.mjs +97 -0
  19. package/bin/skill-master-menu.mjs +406 -320
  20. package/bin/skill-master-register-clients.mjs +232 -98
  21. package/bin/skill-master-success-skills.mjs +307 -307
  22. package/bin/skill-master-update.mjs +121 -72
  23. package/bin/skill-master.mjs +3 -3
  24. package/dist/activation.d.ts.map +1 -1
  25. package/dist/activation.js +12 -0
  26. package/dist/activation.js.map +1 -1
  27. package/dist/prompt-router.d.ts.map +1 -1
  28. package/dist/prompt-router.js +19 -0
  29. package/dist/prompt-router.js.map +1 -1
  30. package/dist/recommender.d.ts.map +1 -1
  31. package/dist/recommender.js +4 -1
  32. package/dist/recommender.js.map +1 -1
  33. package/docs/architecture/APRENDIZADO_DE_IMPLEMENTACOES_BEM_SUCEDIDAS.md +125 -125
  34. package/docs/architecture/ARQUITETURA_AUTO_UPDATE.md +9 -9
  35. package/docs/architecture/PLANO_MASTER_ACIONAMENTO_AUTOMATICO_E_APRENDIZADO.md +341 -341
  36. package/docs/architecture/REDE_SEGURA_DE_SKILLS.md +148 -148
  37. package/docs/operations/GUIA_MULTI_COMPUTADOR.md +262 -255
  38. package/docs/operations/GUIA_NPM_PRIVADO.md +294 -294
  39. package/docs/operations/GUIA_NPM_PUBLICO.md +147 -147
  40. package/docs/operations/MENU_VISUAL_EVIDENCE_2026-06-28.md +66 -0
  41. package/docs/operations/assets/menu-frame-compact.html +76 -0
  42. package/docs/operations/assets/menu-frame-compact.png +0 -0
  43. package/docs/operations/assets/menu-frame-large.html +84 -0
  44. package/docs/operations/assets/menu-frame-large.png +0 -0
  45. package/docs/operations/assets/menu-frame-running.html +80 -0
  46. package/docs/operations/assets/menu-frame-running.png +0 -0
  47. package/docs/operations/cross-platform-auth-transfer/ANALISE_COMPATIBILIDADE_MCP_2026-06-28.md +140 -0
  48. package/docs/operations/cross-platform-auth-transfer/README_TRANSFERENCIA.md +85 -0
  49. package/docs/operations/reborn-menu-cyberpunk-transfer/ANALISE_MENU_REBORN_CYBERPUNK_2026-06-28.md +174 -0
  50. package/docs/operations/reborn-menu-cyberpunk-transfer/HANDOFF_IMPLEMENTACAO_REBORN_CYBERPUNK_2026-06-28.md +119 -0
  51. package/docs/operations/reborn-menu-cyberpunk-transfer/ORDEM_DE_EXECUCAO_MENU_REBORN_CYBERPUNK.md +134 -0
  52. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA.md +84 -0
  53. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA_REBORN_PACKAGE.md +56 -0
  54. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyan-hud-frame-sheet.jpg +0 -0
  55. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyberpunk-pattern-sheet.jpg +0 -0
  56. package/docs/operations/reborn-menu-cyberpunk-transfer/references/fluid-workflow-windows.gif +0 -0
  57. package/docs/operations/token-economy-transfer/ANALISE_AVANCADA_ECONOMIA_TOKENS_2026-06-30.md +141 -0
  58. package/docs/operations/token-economy-transfer/PLANO_DEV_SENIOR_MASTER_TOKEN_ECONOMY_2026-06-30.md +171 -0
  59. package/docs/operations/token-economy-transfer/README_TRANSFERENCIA_TOKEN_ECONOMY.md +31 -0
  60. package/docs/planning/MENU_RUNTIME_CORRECTION_PLAN_2026-06-30.md +551 -0
  61. package/docs/planning/V0_0_9_APROVACAO_CRITICA_MENSAGENS_DE_VENDA.md +85 -85
  62. package/docs/planning/V0_0_9_FONTES_E_CRITERIOS_DE_AUTORIDADE.md +139 -139
  63. package/docs/planning/V0_0_9_MATRIZ_SKILLS_MULTIDISCIPLINARES.md +105 -105
  64. package/docs/planning/V0_0_9_POLITICA_MORAL_CATOLICA_PARA_IA.md +181 -181
  65. package/docs/planning/V0_0_9_PROMPTS_EXECUCAO.md +59 -59
  66. package/docs/planning/V0_0_9_ROADMAP_DISCERNIMENTO_E_CONHECIMENTO_AMPLO.md +181 -181
  67. package/docs/prompt-tasks/PROMPT_TASK_001_BOOTSTRAP_SKILL_MASTER_MCP.md +6 -0
  68. package/docs/prompt-tasks/PROMPT_TASK_002_AUTO_UPDATE_LAUNCHER.md +6 -0
  69. package/docs/prompt-tasks/PROMPT_TASK_003_REMOTE_MANIFEST_AND_RELEASES.md +6 -0
  70. package/docs/prompt-tasks/PROMPT_TASK_004_MULTI_USER_DISTRIBUTION.md +6 -0
  71. package/docs/prompt-tasks/PROMPT_TASK_005_SECURITY_AND_QUALITY_GATE.md +6 -0
  72. package/docs/prompt-tasks/PROMPT_TASK_006_MASTER_ACIONAMENTO_APRENDIZADO.md +83 -0
  73. package/docs/prompt-tasks/PROMPT_TASK_007_PERSONA_ORQUESTRADORA.md +88 -0
  74. package/docs/prompt-tasks/PROMPT_TASK_008_PROMPT_ROUTER_MODOS_ATIVACAO.md +156 -0
  75. package/docs/prompt-tasks/PROMPT_TASK_009_PIPELINE_APRENDIZADO_SUCESSO.md +105 -0
  76. package/docs/prompt-tasks/PROMPT_TASK_010_EVALS_GOVERNANCA_ATIVACAO.md +119 -0
  77. package/docs/prompt-tasks/PROMPT_TASK_011_MENU_NOTIFICACOES_NOTION.md +120 -0
  78. package/docs/prompt-tasks/PROMPT_TASK_012_MENU_CYBERPUNK_PIXEL_FRAME.md +123 -0
  79. package/docs/prompt-tasks/PROMPT_TASK_013_MENU_FLUID_DNA_ANIMATION.md +114 -0
  80. package/docs/prompt-tasks/PROMPT_TASK_014_MENU_FUNCTIONAL_PARITY_QA.md +157 -0
  81. package/docs/prompt-tasks/PROMPT_TASK_015_TRANSFER_RELEASE_HANDOFF.md +127 -0
  82. package/docs/prompt-tasks/PROMPT_TASK_016_CROSS_PLATFORM_MCP_AUTH_REGISTRATION.md +107 -0
  83. package/docs/prompt-tasks/PROMPT_TASK_018_NPM_PUBLISH_2FA_SETUP.md +80 -0
  84. package/docs/prompt-tasks/PROMPT_TASK_019_TOKEN_ECONOMY_GLOBAL_SKILLS.md +56 -0
  85. package/docs/prompt-tasks/PROMPT_TASK_MASTER_EXECUTOR.md +6 -0
  86. package/docs/skill-candidates/v0.0.10/cli-creator/LICENSE.txt +201 -201
  87. package/docs/skill-candidates/v0.0.10/cli-creator/SKILL.md +160 -160
  88. package/docs/skill-candidates/v0.0.10/cli-creator/agents/openai.yaml +4 -4
  89. package/docs/skill-candidates/v0.0.10/cli-creator/references/agent-cli-patterns.md +154 -154
  90. package/docs/skill-candidates/v0.0.10/developer-workstation-ops/SKILL.md +32 -32
  91. package/docs/skill-candidates/v0.0.10/figma/LICENSE.txt +1 -1
  92. package/docs/skill-candidates/v0.0.10/figma/SKILL.md +42 -42
  93. package/docs/skill-candidates/v0.0.10/figma/agents/openai.yaml +14 -14
  94. package/docs/skill-candidates/v0.0.10/figma/assets/figma-small.svg +3 -3
  95. package/docs/skill-candidates/v0.0.10/figma/assets/icon.svg +28 -28
  96. package/docs/skill-candidates/v0.0.10/figma/references/figma-mcp-config.md +35 -35
  97. package/docs/skill-candidates/v0.0.10/figma/references/figma-tools-and-prompts.md +34 -34
  98. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/LICENSE.TXT +1 -1
  99. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/SKILL.md +349 -349
  100. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/agents/openai.yaml +14 -14
  101. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/figma-small.svg +3 -3
  102. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/icon.svg +28 -28
  103. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/references/mapping-checklist.md +7 -7
  104. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/scripts/normalize_node_id.py +25 -25
  105. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/LICENSE.TXT +1 -1
  106. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/SKILL.md +537 -537
  107. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/agents/openai.yaml +14 -14
  108. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/figma-small.svg +3 -3
  109. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/icon.svg +28 -28
  110. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/references/rule-template.md +15 -15
  111. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -9
  112. package/docs/skill-candidates/v0.0.10/figma-generate-design/LICENSE.TXT +1 -1
  113. package/docs/skill-candidates/v0.0.10/figma-generate-design/SKILL.md +341 -341
  114. package/docs/skill-candidates/v0.0.10/figma-generate-design/agents/openai.yaml +14 -14
  115. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/figma-small.svg +3 -3
  116. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/icon.svg +28 -28
  117. package/docs/skill-candidates/v0.0.10/figma-generate-design/maintainers.yml +1 -1
  118. package/docs/skill-candidates/v0.0.10/figma-generate-library/LICENSE.TXT +1 -1
  119. package/docs/skill-candidates/v0.0.10/figma-generate-library/SKILL.md +314 -314
  120. package/docs/skill-candidates/v0.0.10/figma-generate-library/agents/openai.yaml +14 -14
  121. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/figma-small.svg +3 -3
  122. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/icon.svg +28 -28
  123. package/docs/skill-candidates/v0.0.10/figma-generate-library/maintainers.yml +3 -3
  124. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/code-connect-setup.md +260 -260
  125. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/component-creation.md +1014 -1014
  126. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/discovery-phase.md +518 -518
  127. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/documentation-creation.md +834 -834
  128. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/error-recovery.md +540 -540
  129. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/naming-conventions.md +527 -527
  130. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/token-creation.md +962 -962
  131. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/bindVariablesToComponent.js +110 -110
  132. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/cleanupOrphans.js +127 -127
  133. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createComponentWithVariants.js +148 -148
  134. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createDocumentationPage.js +139 -139
  135. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createSemanticTokens.js +108 -108
  136. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createVariableCollection.js +49 -49
  137. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/inspectFileStructure.js +121 -121
  138. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/rehydrateState.js +92 -92
  139. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/validateCreation.js +83 -83
  140. package/docs/skill-candidates/v0.0.10/figma-implement-design/LICENSE.txt +1 -1
  141. package/docs/skill-candidates/v0.0.10/figma-implement-design/SKILL.md +258 -258
  142. package/docs/skill-candidates/v0.0.10/figma-implement-design/agents/openai.yaml +14 -14
  143. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/figma-small.svg +3 -3
  144. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/icon.svg +28 -28
  145. package/docs/skill-candidates/v0.0.10/figma-use/LICENSE.TXT +1 -1
  146. package/docs/skill-candidates/v0.0.10/figma-use/SKILL.md +233 -233
  147. package/docs/skill-candidates/v0.0.10/figma-use/agents/openai.yaml +14 -14
  148. package/docs/skill-candidates/v0.0.10/figma-use/assets/figma-small.svg +3 -3
  149. package/docs/skill-candidates/v0.0.10/figma-use/assets/icon.svg +28 -28
  150. package/docs/skill-candidates/v0.0.10/figma-use/maintainers.yml +1 -1
  151. package/docs/skill-candidates/v0.0.10/figma-use/references/api-reference.md +301 -301
  152. package/docs/skill-candidates/v0.0.10/figma-use/references/common-patterns.md +512 -512
  153. package/docs/skill-candidates/v0.0.10/figma-use/references/component-patterns.md +488 -488
  154. package/docs/skill-candidates/v0.0.10/figma-use/references/effect-style-patterns.md +123 -123
  155. package/docs/skill-candidates/v0.0.10/figma-use/references/gotchas.md +599 -599
  156. package/docs/skill-candidates/v0.0.10/figma-use/references/maintainers.yml +12 -12
  157. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-patterns.md +513 -513
  158. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.d.ts +11293 -11293
  159. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.index.md +441 -441
  160. package/docs/skill-candidates/v0.0.10/figma-use/references/text-style-patterns.md +203 -203
  161. package/docs/skill-candidates/v0.0.10/figma-use/references/validation-and-recovery.md +109 -109
  162. package/docs/skill-candidates/v0.0.10/figma-use/references/variable-patterns.md +354 -354
  163. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/maintainers.yml +9 -9
  164. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--creating.md +17 -17
  165. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--using.md +17 -17
  166. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components.md +50 -50
  167. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-effect-styles.md +52 -52
  168. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-text-styles.md +90 -90
  169. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--creating.md +13 -13
  170. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--using.md +13 -13
  171. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables.md +64 -64
  172. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds.md +41 -41
  173. package/docs/skill-candidates/v0.0.10/frontend-design/LICENSE.txt +177 -177
  174. package/docs/skill-candidates/v0.0.10/frontend-design/SKILL.md +55 -55
  175. package/docs/skill-candidates/v0.0.10/frontend-ui-ux-systems/SKILL.md +32 -32
  176. package/docs/skill-candidates/v0.0.10/github/SKILL.md +74 -74
  177. package/docs/skill-candidates/v0.0.10/github/agents/openai.yaml +6 -6
  178. package/docs/skill-candidates/v0.0.10/github/assets/github-small.svg +3 -3
  179. package/docs/skill-candidates/v0.0.10/image-graphic-design-rendering/SKILL.md +28 -28
  180. package/docs/skill-candidates/v0.0.10/language-quality-pt-en-fr-it-ru/SKILL.md +28 -28
  181. package/docs/skill-candidates/v0.0.10/math-physics-reasoning/SKILL.md +28 -28
  182. package/docs/skill-candidates/v0.0.10/mcp-builder/LICENSE.txt +201 -201
  183. package/docs/skill-candidates/v0.0.10/mcp-builder/SKILL.md +236 -236
  184. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/evaluation.md +601 -601
  185. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/mcp_best_practices.md +249 -249
  186. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/node_mcp_server.md +969 -969
  187. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/python_mcp_server.md +718 -718
  188. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/connections.py +151 -151
  189. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/evaluation.py +373 -373
  190. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/example_evaluation.xml +22 -22
  191. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/requirements.txt +2 -2
  192. package/docs/skill-candidates/v0.0.10/mcp-client-readiness/SKILL.md +31 -31
  193. package/docs/skill-candidates/v0.0.10/openai-docs/LICENSE.txt +201 -201
  194. package/docs/skill-candidates/v0.0.10/openai-docs/SKILL.md +161 -161
  195. package/docs/skill-candidates/v0.0.10/openai-docs/agents/openai.yaml +14 -14
  196. package/docs/skill-candidates/v0.0.10/openai-docs/assets/openai-small.svg +3 -3
  197. package/docs/skill-candidates/v0.0.10/openai-docs/references/latest-model.md +37 -37
  198. package/docs/skill-candidates/v0.0.10/openai-docs/references/prompting-guide.md +244 -244
  199. package/docs/skill-candidates/v0.0.10/openai-docs/references/upgrade-guide.md +181 -181
  200. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/fetch-codex-manual.mjs +598 -598
  201. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/resolve-latest-model-info.js +147 -147
  202. package/docs/skill-candidates/v0.0.10/playwright/NOTICE.txt +14 -14
  203. package/docs/skill-candidates/v0.0.10/playwright/SKILL.md +147 -147
  204. package/docs/skill-candidates/v0.0.10/playwright/agents/openai.yaml +6 -6
  205. package/docs/skill-candidates/v0.0.10/playwright/assets/playwright-small.svg +3 -3
  206. package/docs/skill-candidates/v0.0.10/playwright/references/cli.md +116 -116
  207. package/docs/skill-candidates/v0.0.10/playwright/references/workflows.md +95 -95
  208. package/docs/skill-candidates/v0.0.10/playwright/scripts/playwright_cli.sh +25 -25
  209. package/docs/skill-candidates/v0.0.10/polyglot-backend-engineering/SKILL.md +32 -32
  210. package/docs/skill-candidates/v0.0.10/screenshot/LICENSE.txt +201 -201
  211. package/docs/skill-candidates/v0.0.10/screenshot/SKILL.md +267 -267
  212. package/docs/skill-candidates/v0.0.10/screenshot/agents/openai.yaml +6 -6
  213. package/docs/skill-candidates/v0.0.10/screenshot/assets/screenshot-small.svg +5 -5
  214. package/docs/skill-candidates/v0.0.10/screenshot/scripts/ensure_macos_permissions.sh +54 -54
  215. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_display_info.swift +22 -22
  216. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_permissions.swift +40 -40
  217. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_window_info.swift +126 -126
  218. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.ps1 +163 -163
  219. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.py +585 -585
  220. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/SKILL.md +62 -62
  221. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/agents/openai.yaml +4 -4
  222. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/activation-policy.md +77 -77
  223. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/human-approval-policy.md +83 -83
  224. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/persona-dev-senior-master.md +46 -46
  225. package/docs/skill-candidates/v0.0.10/terminal-menu-operations/SKILL.md +30 -30
  226. package/docs/skill-candidates/v0.0.10/terminal-pixel-art-tui/SKILL.md +43 -43
  227. package/docs/skill-candidates/v0.0.10/webapp-testing/LICENSE.txt +201 -201
  228. package/docs/skill-candidates/v0.0.10/webapp-testing/SKILL.md +95 -95
  229. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/console_logging.py +34 -34
  230. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/element_discovery.py +39 -39
  231. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/static_html_automation.py +32 -32
  232. package/docs/skill-candidates/v0.0.10/webapp-testing/scripts/with_server.py +105 -105
  233. package/docs/skill-candidates/v0.0.10/winui-app/LICENSE.txt +201 -201
  234. package/docs/skill-candidates/v0.0.10/winui-app/SKILL.md +94 -94
  235. package/docs/skill-candidates/v0.0.10/winui-app/agents/openai.yaml +5 -5
  236. package/docs/skill-candidates/v0.0.10/winui-app/config.yaml +50 -50
  237. package/docs/skill-candidates/v0.0.10/winui-app/references/_sections.md +96 -96
  238. package/docs/skill-candidates/v0.0.10/winui-app/references/accessibility-input-and-localization.md +51 -51
  239. package/docs/skill-candidates/v0.0.10/winui-app/references/build-run-and-launch-verification.md +72 -72
  240. package/docs/skill-candidates/v0.0.10/winui-app/references/community-toolkit-controls-and-helpers.md +57 -57
  241. package/docs/skill-candidates/v0.0.10/winui-app/references/controls-layout-and-adaptive-ui.md +84 -84
  242. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-environment-audit-and-remediation.md +82 -82
  243. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-setup-and-project-selection.md +67 -67
  244. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-template-first-recovery.md +62 -62
  245. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-winui-app-structure.md +62 -62
  246. package/docs/skill-candidates/v0.0.10/winui-app/references/motion-animations-and-polish.md +45 -45
  247. package/docs/skill-candidates/v0.0.10/winui-app/references/performance-diagnostics-and-responsiveness.md +46 -46
  248. package/docs/skill-candidates/v0.0.10/winui-app/references/sample-source-map.md +37 -37
  249. package/docs/skill-candidates/v0.0.10/winui-app/references/shell-navigation-and-windowing.md +67 -67
  250. package/docs/skill-candidates/v0.0.10/winui-app/references/styling-theming-materials-and-icons.md +71 -71
  251. package/docs/skill-candidates/v0.0.10/winui-app/references/testing-debugging-and-review-checklists.md +77 -77
  252. package/docs/skill-candidates/v0.0.10/winui-app/references/windows-app-sdk-lifecycle-notifications-and-deployment.md +52 -52
  253. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/SKILL.md +398 -398
  254. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/common-patterns.md +330 -330
  255. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/complete-examples.md +871 -871
  256. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/component-patterns.md +501 -501
  257. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/data-fetching.md +766 -766
  258. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/file-organization.md +501 -501
  259. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/loading-and-error-states.md +500 -500
  260. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/performance.md +405 -405
  261. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/routing-guide.md +363 -363
  262. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/styling-guide.md +427 -427
  263. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/typescript-standards.md +417 -417
  264. package/docs/skill-candidates/v0.0.11/git-version-control-ops/SKILL.md +34 -34
  265. package/docs/skill-candidates/v0.0.11/go-engineering/SKILL.md +34 -34
  266. package/docs/skill-candidates/v0.0.11/java-engineering/SKILL.md +34 -34
  267. package/docs/skill-candidates/v0.0.11/javascript-engineering/SKILL.md +34 -34
  268. package/docs/skill-candidates/v0.0.11/json-contract-design/SKILL.md +34 -34
  269. package/docs/skill-candidates/v0.0.11/multi-client-mcp-ops/SKILL.md +36 -36
  270. package/docs/skill-candidates/v0.0.11/nextjs/SKILL.md +745 -745
  271. package/docs/skill-candidates/v0.0.11/nextjs/agents/openai.yaml +3 -3
  272. package/docs/skill-candidates/v0.0.11/nextjs/references/app-router-files.md +94 -94
  273. package/docs/skill-candidates/v0.0.11/python-engineering/SKILL.md +34 -34
  274. package/docs/skill-candidates/v0.0.11/ruby-engineering/SKILL.md +34 -34
  275. package/docs/skill-candidates/v0.0.11/senior-fullstack/SKILL.md +209 -209
  276. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/architecture_patterns.md +103 -103
  277. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/development_workflows.md +103 -103
  278. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/tech_stack_guide.md +103 -103
  279. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/code_quality_analyzer.py +114 -114
  280. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/fullstack_scaffolder.py +114 -114
  281. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/project_scaffolder.py +114 -114
  282. package/docs/skill-candidates/v0.0.11/shadcn/SKILL.md +573 -573
  283. package/docs/skill-candidates/v0.0.11/shadcn/agents/openai.yaml +3 -3
  284. package/docs/skill-candidates/v0.0.11/sql-postgresql-engineering/SKILL.md +34 -34
  285. package/docs/skill-candidates/v0.0.11/terminal-shell-ops/SKILL.md +34 -34
  286. package/docs/skill-candidates/v0.0.11/typescript-expert/SKILL.md +429 -429
  287. package/docs/skill-candidates/v0.0.11/typescript-expert/references/tsconfig-strict.json +91 -91
  288. package/docs/skill-candidates/v0.0.11/typescript-expert/references/typescript-cheatsheet.md +383 -383
  289. package/docs/skill-candidates/v0.0.11/typescript-expert/references/utility-types.ts +335 -335
  290. package/docs/skill-candidates/v0.0.11/typescript-expert/scripts/ts_diagnostic.py +203 -203
  291. package/docs/skill-candidates/v0.0.11/ui-component-primitives/SKILL.md +34 -34
  292. package/docs/skill-candidates/v0.0.11/web-mobile-design-systems/SKILL.md +34 -34
  293. package/docs/skill-candidates/v0.0.11/windows-linux-platform-ops/SKILL.md +34 -34
  294. package/docs/skill-candidates/v0.0.12/context-compression-handoff/SKILL.md +47 -0
  295. package/docs/skill-candidates/v0.0.12/csharp-senior-master-engineering/SKILL.md +32 -0
  296. package/docs/skill-candidates/v0.0.12/css-senior-master-engineering/SKILL.md +32 -0
  297. package/docs/skill-candidates/v0.0.12/go-senior-master-engineering/SKILL.md +32 -0
  298. package/docs/skill-candidates/v0.0.12/html-senior-master-engineering/SKILL.md +32 -0
  299. package/docs/skill-candidates/v0.0.12/javascript-senior-master-engineering/SKILL.md +32 -0
  300. package/docs/skill-candidates/v0.0.12/json-senior-master-engineering/SKILL.md +32 -0
  301. package/docs/skill-candidates/v0.0.12/prompt-budget-gate/SKILL.md +46 -0
  302. package/docs/skill-candidates/v0.0.12/python-senior-master-engineering/SKILL.md +32 -0
  303. package/docs/skill-candidates/v0.0.12/react-senior-master-engineering/SKILL.md +32 -0
  304. package/docs/skill-candidates/v0.0.12/ruby-senior-master-engineering/SKILL.md +32 -0
  305. package/docs/skill-candidates/v0.0.12/senior-master-code-optimizer/SKILL.md +48 -0
  306. package/docs/skill-candidates/v0.0.12/sql-senior-master-engineering/SKILL.md +31 -0
  307. package/docs/skill-candidates/v0.0.12/token-economy-orchestrator/SKILL.md +38 -0
  308. package/docs/skill-candidates/v0.0.12/typescript-senior-master-engineering/SKILL.md +35 -0
  309. package/docs/skill-candidates/v0.0.9/ai-ethics-human-dignity/SKILL.md +32 -32
  310. package/docs/skill-candidates/v0.0.9/broad-domain-router/SKILL.md +41 -41
  311. package/docs/skill-candidates/v0.0.9/catholic-moral-discernment/SKILL.md +31 -31
  312. package/docs/skill-candidates/v0.0.9/engineering-systems-master/SKILL.md +31 -31
  313. package/docs/skill-candidates/v0.0.9/language-quality-pt-en-fr/SKILL.md +28 -28
  314. package/docs/skill-candidates/v0.0.9/math-science-reasoning/SKILL.md +29 -29
  315. package/docs/skill-candidates/v0.0.9/philosophy-sociology-discernment/SKILL.md +28 -28
  316. package/docs/skill-candidates/v0.0.9/professional-boundary-triage/SKILL.md +40 -40
  317. package/docs/skill-candidates/v0.0.9/release-ethics-gate/SKILL.md +32 -32
  318. package/docs/skill-candidates/v0.0.9/source-authority-reviewer/SKILL.md +31 -31
  319. package/examples/client-configs/claude-code.commands.md +21 -17
  320. package/examples/client-configs/claude-code.project.mcp.json +18 -18
  321. package/examples/client-configs/claude-desktop.macos.json +18 -18
  322. package/examples/client-configs/claude-desktop.windows.json +20 -20
  323. package/examples/client-configs/codex.windows.toml +11 -11
  324. package/examples/client-configs/gemini-code-assist.intellij.mcp.json +18 -18
  325. package/examples/client-configs/gemini.linux.settings.json +21 -21
  326. package/examples/client-configs/gemini.windows.settings.json +23 -23
  327. package/examples/client-configs/generic-stdio.json +16 -16
  328. package/manifests/channels/beta.json +26 -26
  329. package/manifests/channels/stable.json +27 -27
  330. package/network/approved-skills.json +54 -54
  331. package/network/unapproved-skill-candidates.json +110 -110
  332. package/package.json +87 -78
  333. package/scripts/configure-private-registry.mjs +208 -208
  334. package/scripts/lib/private-registry.mjs +97 -97
  335. package/scripts/render-menu-evidence.mjs +130 -0
  336. package/scripts/verify-menu-actions.mjs +117 -115
  337. package/sources.json +11 -11
@@ -1,301 +1,301 @@
1
- # Figma Plugin API Reference
2
-
3
- > Part of the [use_figma skill](../SKILL.md). What works and what doesn't in the `use_figma` environment.
4
-
5
- ## Contents
6
-
7
- - Node Creation
8
- - Grouping and Boolean Operations
9
- - Library Imports
10
- - Variables API
11
- - Core Properties
12
- - Node Manipulation
13
- - Descriptions and Documentation Links
14
- - SVG and Images
15
- - Utilities and Plugin Lifecycle
16
- - Node Traversal
17
- - Unsupported APIs
18
-
19
-
20
- ## Node Creation (Design Mode)
21
-
22
- ```js
23
- figma.createRectangle()
24
- figma.createFrame()
25
- figma.createComponent() // Creates a ComponentNode
26
- figma.createText()
27
- figma.createEllipse()
28
- figma.createStar()
29
- figma.createLine()
30
- figma.createVector()
31
- figma.createPolygon()
32
- figma.createBooleanOperation()
33
- figma.createSlice()
34
- figma.createPage() // Page node can be created, but child persistence is limited in headless mode
35
- figma.createSection()
36
- figma.createTextPath()
37
- ```
38
-
39
- ## Grouping & Boolean Operations
40
-
41
- ```js
42
- figma.group(nodes, parent, index?) // Group nodes
43
- figma.flatten(nodes, parent?, index?) // Flatten to vector
44
- figma.union(nodes, parent?, index?) // Boolean union
45
- figma.subtract(nodes, parent?, index?) // Boolean subtract
46
- figma.intersect(nodes, parent?, index?) // Boolean intersect
47
- figma.exclude(nodes, parent?, index?) // Boolean exclude
48
- figma.combineAsVariants(components, parent?) // Combine ComponentNodes into ComponentSet (Design/Sites only)
49
- ```
50
-
51
- ## Library Component Import
52
-
53
- These methods import components from **team libraries** (not the same file you're working in). For components in the current file, use `use_figma` with `figma.getNodeByIdAsync()` or `findOne()`/`findAll()` to locate them directly.
54
-
55
- ```js
56
- // Import a published component from a team library by key
57
- const comp = await figma.importComponentByKeyAsync("COMPONENT_KEY")
58
- const instance = comp.createInstance()
59
-
60
- // Import a published component set from a team library by key
61
- const compSet = await figma.importComponentSetByKeyAsync("COMPONENT_SET_KEY")
62
- const variant =
63
- compSet.children.find((c) => c.type === "COMPONENT" && c.name.includes("size=md")) ||
64
- compSet.defaultVariant
65
- const variantInstance = variant.createInstance()
66
- ```
67
-
68
- ## Library Style Import (Team Libraries)
69
-
70
- These methods import styles from **team libraries** (not the same file). For styles in the current file, use `figma.getLocalPaintStyles()`, `figma.getLocalTextStyles()`, etc.
71
-
72
- ```js
73
- // Import a published style from a team library by key
74
- const style = await figma.importStyleByKeyAsync("STYLE_KEY")
75
-
76
- // Apply the imported style to a node
77
- await node.setFillStyleIdAsync(style.id) // for PaintStyle as fill
78
- await node.setStrokeStyleIdAsync(style.id) // for PaintStyle as stroke
79
- await node.setTextStyleIdAsync(style.id) // for TextStyle
80
- await node.setEffectStyleIdAsync(style.id) // for EffectStyle
81
- await node.setGridStyleIdAsync(style.id) // for GridStyle
82
- ```
83
-
84
- ## Library Variable Import (Team Libraries)
85
-
86
- This imports variables from **team libraries** (not the same file). For variables in the current file, use `figma.variables.getLocalVariables()` or `figma.variables.getVariableById()`.
87
-
88
- ```js
89
- // Import a published variable from a team library by key
90
- const variable = await figma.variables.importVariableByKeyAsync("VARIABLE_KEY")
91
-
92
- // Bind the imported variable to node properties
93
- node.setBoundVariable("width", variable) // FLOAT variable
94
-
95
- // Bind to fills/strokes (COLOR variable) — returns a NEW paint, must capture it
96
- const newPaint = figma.variables.setBoundVariableForPaint(paintCopy, "color", variable)
97
- node.fills = [newPaint]
98
- ```
99
-
100
- ## Variables API
101
-
102
- ```js
103
- // Collections
104
- const collection = figma.variables.createVariableCollection("Name")
105
- collection.name // Get/set name
106
- collection.modes // Array of {modeId, name} — starts with 1 mode
107
- collection.addMode("Dark") // Returns new modeId string
108
- collection.renameMode(modeId, "Light")
109
-
110
- // Variables
111
- const variable = figma.variables.createVariable("name", collection, "COLOR")
112
- // ^ object or ID string
113
- // resolvedType: "COLOR" | "FLOAT" | "STRING" | "BOOLEAN"
114
- variable.setValueForMode(modeId, value)
115
-
116
- // Scopes — controls where variable appears in property pickers
117
- variable.scopes = ["FRAME_FILL", "SHAPE_FILL"] // only fill pickers
118
- variable.scopes = ["TEXT_FILL"] // only text color picker
119
- variable.scopes = ["STROKE_COLOR"] // only stroke picker
120
- variable.scopes = [] // hidden from all pickers (use for primitives)
121
- // All valid scope values:
122
- // ALL_SCOPES, TEXT_CONTENT, CORNER_RADIUS, WIDTH_HEIGHT, GAP,
123
- // ALL_FILLS, FRAME_FILL, SHAPE_FILL, TEXT_FILL,
124
- // STROKE_COLOR, STROKE_FLOAT, EFFECT_FLOAT, EFFECT_COLOR,
125
- // OPACITY, FONT_FAMILY, FONT_STYLE, FONT_WEIGHT, FONT_SIZE,
126
- // LINE_HEIGHT, LETTER_SPACING, PARAGRAPH_SPACING, PARAGRAPH_INDENT
127
-
128
- // Querying
129
- figma.variables.getVariableById(id)
130
- figma.variables.getLocalVariables(resolvedType?)
131
- figma.variables.getVariableCollectionById(id)
132
- figma.variables.getLocalVariableCollections()
133
-
134
- // Binding variables to paints (COLOR variables)
135
- const newPaint = figma.variables.setBoundVariableForPaint(paintCopy, "color", variable)
136
- // ⚠️ Returns a NEW paint — must capture return value!
137
- node.fills = [newPaint]
138
-
139
- // Binding variables to effects (COLOR/FLOAT variables)
140
- const newEffect = figma.variables.setBoundVariableForEffect(effectCopy, field, variable)
141
- // field for shadows: "color" (COLOR), "radius" | "spread" | "offsetX" | "offsetY" (FLOAT)
142
- // field for blurs: "radius" (FLOAT)
143
- // ⚠️ Returns a NEW effect — must capture return value!
144
- node.effects = [newEffect]
145
-
146
- // Binding variables to layout grids (FLOAT variables)
147
- const newGrid = figma.variables.setBoundVariableForLayoutGrid(gridCopy, field, variable)
148
- // field: "sectionSize" | "offset" | "count" | "gutterSize"
149
- // ⚠️ Returns a NEW layout grid — must capture return value!
150
- node.layoutGrids = [newGrid]
151
-
152
- // Binding variables to node properties (FLOAT/STRING/BOOLEAN)
153
- // Layout & sizing (FLOAT):
154
- node.setBoundVariable("width", variable)
155
- node.setBoundVariable("height", variable)
156
- node.setBoundVariable("minWidth", variable)
157
- node.setBoundVariable("maxWidth", variable)
158
- node.setBoundVariable("minHeight", variable)
159
- node.setBoundVariable("maxHeight", variable)
160
- node.setBoundVariable("paddingLeft", variable)
161
- node.setBoundVariable("paddingRight", variable)
162
- node.setBoundVariable("paddingTop", variable)
163
- node.setBoundVariable("paddingBottom", variable)
164
- node.setBoundVariable("itemSpacing", variable)
165
- node.setBoundVariable("counterAxisSpacing", variable)
166
- // Corner radii (FLOAT) — use individual corners, NOT cornerRadius:
167
- node.setBoundVariable("topLeftRadius", variable)
168
- node.setBoundVariable("topRightRadius", variable)
169
- node.setBoundVariable("bottomLeftRadius", variable)
170
- node.setBoundVariable("bottomRightRadius", variable)
171
- // Other (FLOAT):
172
- node.setBoundVariable("opacity", variable)
173
- node.setBoundVariable("strokeWeight", variable)
174
- // ⚠️ fontSize, fontWeight, lineHeight are NOT bindable via setBoundVariable
175
- // — set these directly as values on text nodes
176
-
177
- // Aliases
178
- figma.variables.createVariableAlias(variable)
179
-
180
- // Explicit modes — CRITICAL for variant components
181
- node.setExplicitVariableModeForCollection(collectionId, modeId)
182
- // Without this, all nodes use the default (first) mode of the collection
183
- ```
184
-
185
- ## Core Properties
186
-
187
- ```js
188
- figma.root // DocumentNode
189
- figma.currentPage // Current page (read-only in use_figma; sync setter throws)
190
- figma.setCurrentPageAsync(page) // Switch page and load its content (MUST await)
191
- figma.fileKey // File key string
192
- figma.mixed // Mixed sentinel value
193
- ```
194
-
195
- ## Node Manipulation
196
-
197
- ```js
198
- // Fills & Strokes (read-only arrays — must clone)
199
- node.fills = [{ type: 'SOLID', color: { r: 1, g: 0, b: 0 } }]
200
- node.strokes = [{ type: 'SOLID', color: { r: 0, g: 0, b: 0 } }]
201
- node.strokeWeight = 1
202
- node.strokeAlign = 'INSIDE' // 'INSIDE' | 'CENTER' | 'OUTSIDE'
203
-
204
- // Effects
205
- node.effects = [{ type: 'DROP_SHADOW', color: {r:0,g:0,b:0,a:0.25}, offset:{x:0,y:4}, radius:4, visible:true }]
206
-
207
- // Layout
208
- node.layoutMode = 'HORIZONTAL' // 'NONE' | 'HORIZONTAL' | 'VERTICAL'
209
- node.primaryAxisAlignItems = 'CENTER' // 'MIN' | 'CENTER' | 'MAX' | 'SPACE_BETWEEN'
210
- node.counterAxisAlignItems = 'CENTER' // 'MIN' | 'CENTER' | 'MAX' | 'BASELINE'
211
- node.paddingLeft = 8
212
- node.paddingRight = 8
213
- node.paddingTop = 4
214
- node.paddingBottom = 4
215
- node.itemSpacing = 4
216
- node.layoutSizingHorizontal = 'HUG' // 'FIXED' | 'HUG' | 'FILL'
217
- node.layoutSizingVertical = 'HUG' // 'FIXED' | 'HUG' | 'FILL'
218
-
219
- // Sizing
220
- node.resize(width, height) // ⚠️ Resets sizing modes to FIXED
221
- node.resizeWithoutConstraints(width, height) // Doesn't affect constraints
222
-
223
- // Corner radius
224
- node.cornerRadius = 8
225
-
226
- // Visibility & Opacity
227
- node.visible = true
228
- node.opacity = 0.5
229
-
230
- // Naming & Hierarchy
231
- node.name = "My Node"
232
- parent.appendChild(child)
233
- parent.insertChild(index, child)
234
- node.remove()
235
- ```
236
-
237
- ## Descriptions & Documentation Links
238
-
239
- ```js
240
- // Description — plain text, shown in Figma's component panel
241
- node.description = "A short summary of this component's purpose and usage."
242
-
243
- // Documentation links — array of {uri, label} shown as clickable links
244
- componentSet.documentationLinks = [
245
- { uri: "https://example.com/docs", label: "Component Docs" }
246
- ]
247
- // ⚠️ uri MUST be a valid URL (https://...) — relative paths will throw
248
- ```
249
-
250
- ## SVG Import
251
-
252
- ```js
253
- const svgNode = figma.createNodeFromSvg('<svg>...</svg>')
254
- ```
255
-
256
- ## Images
257
-
258
- ```js
259
- const image = figma.createImage(uint8Array)
260
- node.fills = [{ type: 'IMAGE', scaleMode: 'FILL', imageHash: image.hash }]
261
- ```
262
-
263
- ## Utilities
264
-
265
- ```js
266
- figma.base64Encode(uint8Array) // Uint8Array → base64 string
267
- figma.base64Decode(base64String) // base64 string → Uint8Array
268
- figma.createComponentFromNode(node) // Convert existing node to component (Design/Sites only)
269
- ```
270
-
271
- ## Plugin Lifecycle
272
-
273
- ```js
274
- figma.closePlugin("message") // Close and return a message to the agent (success)
275
- figma.closePluginWithFailure("error msg") // Close with error — ALWAYS use in catch blocks
276
- ```
277
-
278
- ## Node Traversal
279
-
280
- ```js
281
- node.findAll(pred?) // Find all descendants matching predicate
282
- node.findOne(pred?) // Find first descendant matching predicate
283
- node.findChildren(pred?) // Find direct children matching predicate
284
- node.findChild(pred?) // Find first direct child matching predicate
285
- node.children // Direct children array
286
- node.parent // Parent node
287
- ```
288
-
289
- ---
290
-
291
- ## What Does NOT Work
292
-
293
- | API | Status |
294
- |-----|--------|
295
- | `figma.notify()` | **Throws "not implemented"** — most common mistake |
296
- | `figma.showUI()` | No-op (silently ignored) |
297
- | `figma.openExternal()` | No-op (silently ignored) |
298
- | `figma.listAvailableFontsAsync()` | Not implemented |
299
- | `figma.loadAllPagesAsync()` | Not implemented |
300
- | `figma.variables.extendLibraryCollectionByKeyAsync()` | Not implemented |
301
- | `figma.teamLibrary.*` | Not implemented (requires LiveGraph) |
1
+ # Figma Plugin API Reference
2
+
3
+ > Part of the [use_figma skill](../SKILL.md). What works and what doesn't in the `use_figma` environment.
4
+
5
+ ## Contents
6
+
7
+ - Node Creation
8
+ - Grouping and Boolean Operations
9
+ - Library Imports
10
+ - Variables API
11
+ - Core Properties
12
+ - Node Manipulation
13
+ - Descriptions and Documentation Links
14
+ - SVG and Images
15
+ - Utilities and Plugin Lifecycle
16
+ - Node Traversal
17
+ - Unsupported APIs
18
+
19
+
20
+ ## Node Creation (Design Mode)
21
+
22
+ ```js
23
+ figma.createRectangle()
24
+ figma.createFrame()
25
+ figma.createComponent() // Creates a ComponentNode
26
+ figma.createText()
27
+ figma.createEllipse()
28
+ figma.createStar()
29
+ figma.createLine()
30
+ figma.createVector()
31
+ figma.createPolygon()
32
+ figma.createBooleanOperation()
33
+ figma.createSlice()
34
+ figma.createPage() // Page node can be created, but child persistence is limited in headless mode
35
+ figma.createSection()
36
+ figma.createTextPath()
37
+ ```
38
+
39
+ ## Grouping & Boolean Operations
40
+
41
+ ```js
42
+ figma.group(nodes, parent, index?) // Group nodes
43
+ figma.flatten(nodes, parent?, index?) // Flatten to vector
44
+ figma.union(nodes, parent?, index?) // Boolean union
45
+ figma.subtract(nodes, parent?, index?) // Boolean subtract
46
+ figma.intersect(nodes, parent?, index?) // Boolean intersect
47
+ figma.exclude(nodes, parent?, index?) // Boolean exclude
48
+ figma.combineAsVariants(components, parent?) // Combine ComponentNodes into ComponentSet (Design/Sites only)
49
+ ```
50
+
51
+ ## Library Component Import
52
+
53
+ These methods import components from **team libraries** (not the same file you're working in). For components in the current file, use `use_figma` with `figma.getNodeByIdAsync()` or `findOne()`/`findAll()` to locate them directly.
54
+
55
+ ```js
56
+ // Import a published component from a team library by key
57
+ const comp = await figma.importComponentByKeyAsync("COMPONENT_KEY")
58
+ const instance = comp.createInstance()
59
+
60
+ // Import a published component set from a team library by key
61
+ const compSet = await figma.importComponentSetByKeyAsync("COMPONENT_SET_KEY")
62
+ const variant =
63
+ compSet.children.find((c) => c.type === "COMPONENT" && c.name.includes("size=md")) ||
64
+ compSet.defaultVariant
65
+ const variantInstance = variant.createInstance()
66
+ ```
67
+
68
+ ## Library Style Import (Team Libraries)
69
+
70
+ These methods import styles from **team libraries** (not the same file). For styles in the current file, use `figma.getLocalPaintStyles()`, `figma.getLocalTextStyles()`, etc.
71
+
72
+ ```js
73
+ // Import a published style from a team library by key
74
+ const style = await figma.importStyleByKeyAsync("STYLE_KEY")
75
+
76
+ // Apply the imported style to a node
77
+ await node.setFillStyleIdAsync(style.id) // for PaintStyle as fill
78
+ await node.setStrokeStyleIdAsync(style.id) // for PaintStyle as stroke
79
+ await node.setTextStyleIdAsync(style.id) // for TextStyle
80
+ await node.setEffectStyleIdAsync(style.id) // for EffectStyle
81
+ await node.setGridStyleIdAsync(style.id) // for GridStyle
82
+ ```
83
+
84
+ ## Library Variable Import (Team Libraries)
85
+
86
+ This imports variables from **team libraries** (not the same file). For variables in the current file, use `figma.variables.getLocalVariables()` or `figma.variables.getVariableById()`.
87
+
88
+ ```js
89
+ // Import a published variable from a team library by key
90
+ const variable = await figma.variables.importVariableByKeyAsync("VARIABLE_KEY")
91
+
92
+ // Bind the imported variable to node properties
93
+ node.setBoundVariable("width", variable) // FLOAT variable
94
+
95
+ // Bind to fills/strokes (COLOR variable) — returns a NEW paint, must capture it
96
+ const newPaint = figma.variables.setBoundVariableForPaint(paintCopy, "color", variable)
97
+ node.fills = [newPaint]
98
+ ```
99
+
100
+ ## Variables API
101
+
102
+ ```js
103
+ // Collections
104
+ const collection = figma.variables.createVariableCollection("Name")
105
+ collection.name // Get/set name
106
+ collection.modes // Array of {modeId, name} — starts with 1 mode
107
+ collection.addMode("Dark") // Returns new modeId string
108
+ collection.renameMode(modeId, "Light")
109
+
110
+ // Variables
111
+ const variable = figma.variables.createVariable("name", collection, "COLOR")
112
+ // ^ object or ID string
113
+ // resolvedType: "COLOR" | "FLOAT" | "STRING" | "BOOLEAN"
114
+ variable.setValueForMode(modeId, value)
115
+
116
+ // Scopes — controls where variable appears in property pickers
117
+ variable.scopes = ["FRAME_FILL", "SHAPE_FILL"] // only fill pickers
118
+ variable.scopes = ["TEXT_FILL"] // only text color picker
119
+ variable.scopes = ["STROKE_COLOR"] // only stroke picker
120
+ variable.scopes = [] // hidden from all pickers (use for primitives)
121
+ // All valid scope values:
122
+ // ALL_SCOPES, TEXT_CONTENT, CORNER_RADIUS, WIDTH_HEIGHT, GAP,
123
+ // ALL_FILLS, FRAME_FILL, SHAPE_FILL, TEXT_FILL,
124
+ // STROKE_COLOR, STROKE_FLOAT, EFFECT_FLOAT, EFFECT_COLOR,
125
+ // OPACITY, FONT_FAMILY, FONT_STYLE, FONT_WEIGHT, FONT_SIZE,
126
+ // LINE_HEIGHT, LETTER_SPACING, PARAGRAPH_SPACING, PARAGRAPH_INDENT
127
+
128
+ // Querying
129
+ figma.variables.getVariableById(id)
130
+ figma.variables.getLocalVariables(resolvedType?)
131
+ figma.variables.getVariableCollectionById(id)
132
+ figma.variables.getLocalVariableCollections()
133
+
134
+ // Binding variables to paints (COLOR variables)
135
+ const newPaint = figma.variables.setBoundVariableForPaint(paintCopy, "color", variable)
136
+ // ⚠️ Returns a NEW paint — must capture return value!
137
+ node.fills = [newPaint]
138
+
139
+ // Binding variables to effects (COLOR/FLOAT variables)
140
+ const newEffect = figma.variables.setBoundVariableForEffect(effectCopy, field, variable)
141
+ // field for shadows: "color" (COLOR), "radius" | "spread" | "offsetX" | "offsetY" (FLOAT)
142
+ // field for blurs: "radius" (FLOAT)
143
+ // ⚠️ Returns a NEW effect — must capture return value!
144
+ node.effects = [newEffect]
145
+
146
+ // Binding variables to layout grids (FLOAT variables)
147
+ const newGrid = figma.variables.setBoundVariableForLayoutGrid(gridCopy, field, variable)
148
+ // field: "sectionSize" | "offset" | "count" | "gutterSize"
149
+ // ⚠️ Returns a NEW layout grid — must capture return value!
150
+ node.layoutGrids = [newGrid]
151
+
152
+ // Binding variables to node properties (FLOAT/STRING/BOOLEAN)
153
+ // Layout & sizing (FLOAT):
154
+ node.setBoundVariable("width", variable)
155
+ node.setBoundVariable("height", variable)
156
+ node.setBoundVariable("minWidth", variable)
157
+ node.setBoundVariable("maxWidth", variable)
158
+ node.setBoundVariable("minHeight", variable)
159
+ node.setBoundVariable("maxHeight", variable)
160
+ node.setBoundVariable("paddingLeft", variable)
161
+ node.setBoundVariable("paddingRight", variable)
162
+ node.setBoundVariable("paddingTop", variable)
163
+ node.setBoundVariable("paddingBottom", variable)
164
+ node.setBoundVariable("itemSpacing", variable)
165
+ node.setBoundVariable("counterAxisSpacing", variable)
166
+ // Corner radii (FLOAT) — use individual corners, NOT cornerRadius:
167
+ node.setBoundVariable("topLeftRadius", variable)
168
+ node.setBoundVariable("topRightRadius", variable)
169
+ node.setBoundVariable("bottomLeftRadius", variable)
170
+ node.setBoundVariable("bottomRightRadius", variable)
171
+ // Other (FLOAT):
172
+ node.setBoundVariable("opacity", variable)
173
+ node.setBoundVariable("strokeWeight", variable)
174
+ // ⚠️ fontSize, fontWeight, lineHeight are NOT bindable via setBoundVariable
175
+ // — set these directly as values on text nodes
176
+
177
+ // Aliases
178
+ figma.variables.createVariableAlias(variable)
179
+
180
+ // Explicit modes — CRITICAL for variant components
181
+ node.setExplicitVariableModeForCollection(collectionId, modeId)
182
+ // Without this, all nodes use the default (first) mode of the collection
183
+ ```
184
+
185
+ ## Core Properties
186
+
187
+ ```js
188
+ figma.root // DocumentNode
189
+ figma.currentPage // Current page (read-only in use_figma; sync setter throws)
190
+ figma.setCurrentPageAsync(page) // Switch page and load its content (MUST await)
191
+ figma.fileKey // File key string
192
+ figma.mixed // Mixed sentinel value
193
+ ```
194
+
195
+ ## Node Manipulation
196
+
197
+ ```js
198
+ // Fills & Strokes (read-only arrays — must clone)
199
+ node.fills = [{ type: 'SOLID', color: { r: 1, g: 0, b: 0 } }]
200
+ node.strokes = [{ type: 'SOLID', color: { r: 0, g: 0, b: 0 } }]
201
+ node.strokeWeight = 1
202
+ node.strokeAlign = 'INSIDE' // 'INSIDE' | 'CENTER' | 'OUTSIDE'
203
+
204
+ // Effects
205
+ node.effects = [{ type: 'DROP_SHADOW', color: {r:0,g:0,b:0,a:0.25}, offset:{x:0,y:4}, radius:4, visible:true }]
206
+
207
+ // Layout
208
+ node.layoutMode = 'HORIZONTAL' // 'NONE' | 'HORIZONTAL' | 'VERTICAL'
209
+ node.primaryAxisAlignItems = 'CENTER' // 'MIN' | 'CENTER' | 'MAX' | 'SPACE_BETWEEN'
210
+ node.counterAxisAlignItems = 'CENTER' // 'MIN' | 'CENTER' | 'MAX' | 'BASELINE'
211
+ node.paddingLeft = 8
212
+ node.paddingRight = 8
213
+ node.paddingTop = 4
214
+ node.paddingBottom = 4
215
+ node.itemSpacing = 4
216
+ node.layoutSizingHorizontal = 'HUG' // 'FIXED' | 'HUG' | 'FILL'
217
+ node.layoutSizingVertical = 'HUG' // 'FIXED' | 'HUG' | 'FILL'
218
+
219
+ // Sizing
220
+ node.resize(width, height) // ⚠️ Resets sizing modes to FIXED
221
+ node.resizeWithoutConstraints(width, height) // Doesn't affect constraints
222
+
223
+ // Corner radius
224
+ node.cornerRadius = 8
225
+
226
+ // Visibility & Opacity
227
+ node.visible = true
228
+ node.opacity = 0.5
229
+
230
+ // Naming & Hierarchy
231
+ node.name = "My Node"
232
+ parent.appendChild(child)
233
+ parent.insertChild(index, child)
234
+ node.remove()
235
+ ```
236
+
237
+ ## Descriptions & Documentation Links
238
+
239
+ ```js
240
+ // Description — plain text, shown in Figma's component panel
241
+ node.description = "A short summary of this component's purpose and usage."
242
+
243
+ // Documentation links — array of {uri, label} shown as clickable links
244
+ componentSet.documentationLinks = [
245
+ { uri: "https://example.com/docs", label: "Component Docs" }
246
+ ]
247
+ // ⚠️ uri MUST be a valid URL (https://...) — relative paths will throw
248
+ ```
249
+
250
+ ## SVG Import
251
+
252
+ ```js
253
+ const svgNode = figma.createNodeFromSvg('<svg>...</svg>')
254
+ ```
255
+
256
+ ## Images
257
+
258
+ ```js
259
+ const image = figma.createImage(uint8Array)
260
+ node.fills = [{ type: 'IMAGE', scaleMode: 'FILL', imageHash: image.hash }]
261
+ ```
262
+
263
+ ## Utilities
264
+
265
+ ```js
266
+ figma.base64Encode(uint8Array) // Uint8Array → base64 string
267
+ figma.base64Decode(base64String) // base64 string → Uint8Array
268
+ figma.createComponentFromNode(node) // Convert existing node to component (Design/Sites only)
269
+ ```
270
+
271
+ ## Plugin Lifecycle
272
+
273
+ ```js
274
+ figma.closePlugin("message") // Close and return a message to the agent (success)
275
+ figma.closePluginWithFailure("error msg") // Close with error — ALWAYS use in catch blocks
276
+ ```
277
+
278
+ ## Node Traversal
279
+
280
+ ```js
281
+ node.findAll(pred?) // Find all descendants matching predicate
282
+ node.findOne(pred?) // Find first descendant matching predicate
283
+ node.findChildren(pred?) // Find direct children matching predicate
284
+ node.findChild(pred?) // Find first direct child matching predicate
285
+ node.children // Direct children array
286
+ node.parent // Parent node
287
+ ```
288
+
289
+ ---
290
+
291
+ ## What Does NOT Work
292
+
293
+ | API | Status |
294
+ |-----|--------|
295
+ | `figma.notify()` | **Throws "not implemented"** — most common mistake |
296
+ | `figma.showUI()` | No-op (silently ignored) |
297
+ | `figma.openExternal()` | No-op (silently ignored) |
298
+ | `figma.listAvailableFontsAsync()` | Not implemented |
299
+ | `figma.loadAllPagesAsync()` | Not implemented |
300
+ | `figma.variables.extendLibraryCollectionByKeyAsync()` | Not implemented |
301
+ | `figma.teamLibrary.*` | Not implemented (requires LiveGraph) |