@fprad0/skill-master-mcp 0.0.12 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/CHANGELOG.md +100 -88
  2. package/README.md +472 -472
  3. package/VERSION.md +9 -9
  4. package/bin/lib/bootstrap-global-core.mjs +34 -0
  5. package/bin/lib/client-config.mjs +287 -285
  6. package/bin/lib/doctor-core.mjs +202 -0
  7. package/bin/lib/menu-core.mjs +1792 -1514
  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 -215
  11. package/bin/lib/update-cli-core.mjs +117 -0
  12. package/bin/skill-master-activation.mjs +165 -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 -228
  16. package/bin/skill-master-eval-activation.mjs +32 -32
  17. package/bin/skill-master-install-global-skills.mjs +59 -59
  18. package/bin/skill-master-install-project-skills.mjs +97 -97
  19. package/bin/skill-master-menu.mjs +489 -378
  20. package/bin/skill-master-register-clients.mjs +232 -153
  21. package/bin/skill-master-success-skills.mjs +357 -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 -262
  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 -66
  41. package/docs/operations/assets/menu-frame-compact.html +36 -33
  42. package/docs/operations/assets/menu-frame-dna-hero.html +87 -0
  43. package/docs/operations/assets/menu-frame-fine-helix.html +89 -0
  44. package/docs/operations/assets/menu-frame-large.html +44 -41
  45. package/docs/operations/assets/menu-frame-running.html +41 -38
  46. package/docs/operations/assets/menu-frame-score-10-contact-sheet.html +184 -0
  47. package/docs/operations/cross-platform-auth-transfer/ANALISE_COMPATIBILIDADE_MCP_2026-06-28.md +140 -140
  48. package/docs/operations/cross-platform-auth-transfer/README_TRANSFERENCIA.md +85 -85
  49. package/docs/operations/reborn-menu-cyberpunk-transfer/ANALISE_MENU_REBORN_CYBERPUNK_2026-06-28.md +174 -174
  50. package/docs/operations/reborn-menu-cyberpunk-transfer/HANDOFF_IMPLEMENTACAO_REBORN_CYBERPUNK_2026-06-28.md +119 -119
  51. package/docs/operations/reborn-menu-cyberpunk-transfer/ORDEM_DE_EXECUCAO_MENU_REBORN_CYBERPUNK.md +134 -134
  52. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA.md +84 -84
  53. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA_REBORN_PACKAGE.md +56 -56
  54. package/docs/operations/token-economy-transfer/ANALISE_AVANCADA_ECONOMIA_TOKENS_2026-06-30.md +141 -0
  55. package/docs/operations/token-economy-transfer/PLANO_DEV_SENIOR_MASTER_TOKEN_ECONOMY_2026-06-30.md +171 -0
  56. package/docs/operations/token-economy-transfer/README_TRANSFERENCIA_TOKEN_ECONOMY.md +31 -0
  57. package/docs/planning/MENU_RUNTIME_CORRECTION_PLAN_2026-06-30.md +551 -0
  58. package/docs/planning/V0_0_9_APROVACAO_CRITICA_MENSAGENS_DE_VENDA.md +85 -85
  59. package/docs/planning/V0_0_9_FONTES_E_CRITERIOS_DE_AUTORIDADE.md +139 -139
  60. package/docs/planning/V0_0_9_MATRIZ_SKILLS_MULTIDISCIPLINARES.md +105 -105
  61. package/docs/planning/V0_0_9_POLITICA_MORAL_CATOLICA_PARA_IA.md +181 -181
  62. package/docs/planning/V0_0_9_PROMPTS_EXECUCAO.md +59 -59
  63. package/docs/planning/V0_0_9_ROADMAP_DISCERNIMENTO_E_CONHECIMENTO_AMPLO.md +181 -181
  64. package/docs/planning/mcp-1.0.0/00_RESUMO_EXECUTIVO_AUDITORIA_MENU.md +118 -0
  65. package/docs/planning/mcp-1.0.0/01_MATRIZ_TESTES_MENU_E_RESULTADOS.md +250 -0
  66. package/docs/planning/mcp-1.0.0/02_PLANO_CORRECAO_ATIVAR_SKILL_APRENDIDA.md +200 -0
  67. package/docs/planning/mcp-1.0.0/03_PLANO_COMPATIBILIDADE_WINDOWS_LINUX_MACOS.md +167 -0
  68. package/docs/planning/mcp-1.0.0/04_PLANO_UI_CYBERPUNK_PIXEL_ART_E_PERFORMANCE.md +165 -0
  69. package/docs/planning/mcp-1.0.0/05_PROMPT_TASK_EXECUCAO_CORRECOES.md +151 -0
  70. package/docs/planning/mcp-1.0.0/06_CHECKLIST_REGRESSAO_PRE_RELEASE.md +159 -0
  71. package/docs/planning/mcp-1.0.0/07_RELATORIO_APLICACAO_CORRECOES_MENU_SKILL_MASTER.md +136 -0
  72. package/docs/planning/mcp-1.0.0/08_AUDITORIA_CRITICA_MENU_NOTA_E_DNA_REFINADO.md +184 -0
  73. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/00_PROMPT_TASK_MASTER_NOTA_10_10.md +103 -0
  74. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/01_PROMPT_TASK_FINE_HELIX_DNA.md +116 -0
  75. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/02_PROMPT_TASK_DNA_HERO_BOOT_AND_MOTION.md +109 -0
  76. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/03_PROMPT_TASK_MENU_UX_HELP_ERROR_COPY.md +99 -0
  77. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/04_PROMPT_TASK_EVIDENCE_RENDERER_1_0_0.md +97 -0
  78. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/05_PROMPT_TASK_CROSS_PLATFORM_UTF8_MOJIBAKE.md +99 -0
  79. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/06_PROMPT_TASK_VISUAL_REGRESSION_QA.md +105 -0
  80. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/07_PROMPT_TASK_PRE_RELEASE_SCORE_GATE_10_10.md +104 -0
  81. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/README_ORDEM_EXECUCAO_NOTA_10_10.md +77 -0
  82. package/docs/prompt-tasks/PROMPT_TASK_001_BOOTSTRAP_SKILL_MASTER_MCP.md +6 -6
  83. package/docs/prompt-tasks/PROMPT_TASK_002_AUTO_UPDATE_LAUNCHER.md +6 -6
  84. package/docs/prompt-tasks/PROMPT_TASK_003_REMOTE_MANIFEST_AND_RELEASES.md +6 -6
  85. package/docs/prompt-tasks/PROMPT_TASK_004_MULTI_USER_DISTRIBUTION.md +6 -6
  86. package/docs/prompt-tasks/PROMPT_TASK_005_SECURITY_AND_QUALITY_GATE.md +6 -6
  87. package/docs/prompt-tasks/PROMPT_TASK_006_MASTER_ACIONAMENTO_APRENDIZADO.md +83 -83
  88. package/docs/prompt-tasks/PROMPT_TASK_007_PERSONA_ORQUESTRADORA.md +88 -88
  89. package/docs/prompt-tasks/PROMPT_TASK_008_PROMPT_ROUTER_MODOS_ATIVACAO.md +156 -156
  90. package/docs/prompt-tasks/PROMPT_TASK_009_PIPELINE_APRENDIZADO_SUCESSO.md +105 -105
  91. package/docs/prompt-tasks/PROMPT_TASK_010_EVALS_GOVERNANCA_ATIVACAO.md +119 -119
  92. package/docs/prompt-tasks/PROMPT_TASK_011_MENU_NOTIFICACOES_NOTION.md +120 -120
  93. package/docs/prompt-tasks/PROMPT_TASK_012_MENU_CYBERPUNK_PIXEL_FRAME.md +123 -123
  94. package/docs/prompt-tasks/PROMPT_TASK_013_MENU_FLUID_DNA_ANIMATION.md +114 -114
  95. package/docs/prompt-tasks/PROMPT_TASK_014_MENU_FUNCTIONAL_PARITY_QA.md +157 -157
  96. package/docs/prompt-tasks/PROMPT_TASK_015_TRANSFER_RELEASE_HANDOFF.md +127 -127
  97. package/docs/prompt-tasks/PROMPT_TASK_016_CROSS_PLATFORM_MCP_AUTH_REGISTRATION.md +107 -107
  98. package/docs/prompt-tasks/PROMPT_TASK_018_NPM_PUBLISH_2FA_SETUP.md +80 -80
  99. package/docs/prompt-tasks/PROMPT_TASK_019_TOKEN_ECONOMY_GLOBAL_SKILLS.md +56 -0
  100. package/docs/prompt-tasks/PROMPT_TASK_MASTER_EXECUTOR.md +6 -6
  101. package/docs/skill-candidates/v0.0.10/cli-creator/LICENSE.txt +201 -201
  102. package/docs/skill-candidates/v0.0.10/cli-creator/SKILL.md +160 -160
  103. package/docs/skill-candidates/v0.0.10/cli-creator/agents/openai.yaml +4 -4
  104. package/docs/skill-candidates/v0.0.10/cli-creator/references/agent-cli-patterns.md +154 -154
  105. package/docs/skill-candidates/v0.0.10/developer-workstation-ops/SKILL.md +32 -32
  106. package/docs/skill-candidates/v0.0.10/figma/LICENSE.txt +1 -1
  107. package/docs/skill-candidates/v0.0.10/figma/SKILL.md +42 -42
  108. package/docs/skill-candidates/v0.0.10/figma/agents/openai.yaml +14 -14
  109. package/docs/skill-candidates/v0.0.10/figma/assets/figma-small.svg +3 -3
  110. package/docs/skill-candidates/v0.0.10/figma/assets/icon.svg +28 -28
  111. package/docs/skill-candidates/v0.0.10/figma/references/figma-mcp-config.md +35 -35
  112. package/docs/skill-candidates/v0.0.10/figma/references/figma-tools-and-prompts.md +34 -34
  113. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/LICENSE.TXT +1 -1
  114. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/SKILL.md +349 -349
  115. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/agents/openai.yaml +14 -14
  116. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/figma-small.svg +3 -3
  117. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/icon.svg +28 -28
  118. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/references/mapping-checklist.md +7 -7
  119. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/scripts/normalize_node_id.py +25 -25
  120. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/LICENSE.TXT +1 -1
  121. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/SKILL.md +537 -537
  122. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/agents/openai.yaml +14 -14
  123. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/figma-small.svg +3 -3
  124. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/icon.svg +28 -28
  125. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/references/rule-template.md +15 -15
  126. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -9
  127. package/docs/skill-candidates/v0.0.10/figma-generate-design/LICENSE.TXT +1 -1
  128. package/docs/skill-candidates/v0.0.10/figma-generate-design/SKILL.md +341 -341
  129. package/docs/skill-candidates/v0.0.10/figma-generate-design/agents/openai.yaml +14 -14
  130. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/figma-small.svg +3 -3
  131. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/icon.svg +28 -28
  132. package/docs/skill-candidates/v0.0.10/figma-generate-design/maintainers.yml +1 -1
  133. package/docs/skill-candidates/v0.0.10/figma-generate-library/LICENSE.TXT +1 -1
  134. package/docs/skill-candidates/v0.0.10/figma-generate-library/SKILL.md +314 -314
  135. package/docs/skill-candidates/v0.0.10/figma-generate-library/agents/openai.yaml +14 -14
  136. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/figma-small.svg +3 -3
  137. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/icon.svg +28 -28
  138. package/docs/skill-candidates/v0.0.10/figma-generate-library/maintainers.yml +3 -3
  139. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/code-connect-setup.md +260 -260
  140. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/component-creation.md +1014 -1014
  141. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/discovery-phase.md +518 -518
  142. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/documentation-creation.md +834 -834
  143. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/error-recovery.md +540 -540
  144. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/naming-conventions.md +527 -527
  145. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/token-creation.md +962 -962
  146. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/bindVariablesToComponent.js +110 -110
  147. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/cleanupOrphans.js +127 -127
  148. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createComponentWithVariants.js +148 -148
  149. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createDocumentationPage.js +139 -139
  150. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createSemanticTokens.js +108 -108
  151. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createVariableCollection.js +49 -49
  152. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/inspectFileStructure.js +121 -121
  153. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/rehydrateState.js +92 -92
  154. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/validateCreation.js +83 -83
  155. package/docs/skill-candidates/v0.0.10/figma-implement-design/LICENSE.txt +1 -1
  156. package/docs/skill-candidates/v0.0.10/figma-implement-design/SKILL.md +258 -258
  157. package/docs/skill-candidates/v0.0.10/figma-implement-design/agents/openai.yaml +14 -14
  158. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/figma-small.svg +3 -3
  159. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/icon.svg +28 -28
  160. package/docs/skill-candidates/v0.0.10/figma-use/LICENSE.TXT +1 -1
  161. package/docs/skill-candidates/v0.0.10/figma-use/SKILL.md +233 -233
  162. package/docs/skill-candidates/v0.0.10/figma-use/agents/openai.yaml +14 -14
  163. package/docs/skill-candidates/v0.0.10/figma-use/assets/figma-small.svg +3 -3
  164. package/docs/skill-candidates/v0.0.10/figma-use/assets/icon.svg +28 -28
  165. package/docs/skill-candidates/v0.0.10/figma-use/maintainers.yml +1 -1
  166. package/docs/skill-candidates/v0.0.10/figma-use/references/api-reference.md +301 -301
  167. package/docs/skill-candidates/v0.0.10/figma-use/references/common-patterns.md +512 -512
  168. package/docs/skill-candidates/v0.0.10/figma-use/references/component-patterns.md +488 -488
  169. package/docs/skill-candidates/v0.0.10/figma-use/references/effect-style-patterns.md +123 -123
  170. package/docs/skill-candidates/v0.0.10/figma-use/references/gotchas.md +599 -599
  171. package/docs/skill-candidates/v0.0.10/figma-use/references/maintainers.yml +12 -12
  172. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-patterns.md +513 -513
  173. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.d.ts +11293 -11293
  174. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.index.md +441 -441
  175. package/docs/skill-candidates/v0.0.10/figma-use/references/text-style-patterns.md +203 -203
  176. package/docs/skill-candidates/v0.0.10/figma-use/references/validation-and-recovery.md +109 -109
  177. package/docs/skill-candidates/v0.0.10/figma-use/references/variable-patterns.md +354 -354
  178. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/maintainers.yml +9 -9
  179. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--creating.md +17 -17
  180. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--using.md +17 -17
  181. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components.md +50 -50
  182. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-effect-styles.md +52 -52
  183. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-text-styles.md +90 -90
  184. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--creating.md +13 -13
  185. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--using.md +13 -13
  186. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables.md +64 -64
  187. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds.md +41 -41
  188. package/docs/skill-candidates/v0.0.10/frontend-design/LICENSE.txt +177 -177
  189. package/docs/skill-candidates/v0.0.10/frontend-design/SKILL.md +55 -55
  190. package/docs/skill-candidates/v0.0.10/frontend-ui-ux-systems/SKILL.md +32 -32
  191. package/docs/skill-candidates/v0.0.10/github/SKILL.md +74 -74
  192. package/docs/skill-candidates/v0.0.10/github/agents/openai.yaml +6 -6
  193. package/docs/skill-candidates/v0.0.10/github/assets/github-small.svg +3 -3
  194. package/docs/skill-candidates/v0.0.10/image-graphic-design-rendering/SKILL.md +28 -28
  195. package/docs/skill-candidates/v0.0.10/language-quality-pt-en-fr-it-ru/SKILL.md +28 -28
  196. package/docs/skill-candidates/v0.0.10/math-physics-reasoning/SKILL.md +28 -28
  197. package/docs/skill-candidates/v0.0.10/mcp-builder/LICENSE.txt +201 -201
  198. package/docs/skill-candidates/v0.0.10/mcp-builder/SKILL.md +236 -236
  199. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/evaluation.md +601 -601
  200. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/mcp_best_practices.md +249 -249
  201. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/node_mcp_server.md +969 -969
  202. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/python_mcp_server.md +718 -718
  203. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/connections.py +151 -151
  204. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/evaluation.py +373 -373
  205. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/example_evaluation.xml +22 -22
  206. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/requirements.txt +2 -2
  207. package/docs/skill-candidates/v0.0.10/mcp-client-readiness/SKILL.md +31 -31
  208. package/docs/skill-candidates/v0.0.10/openai-docs/LICENSE.txt +201 -201
  209. package/docs/skill-candidates/v0.0.10/openai-docs/SKILL.md +161 -161
  210. package/docs/skill-candidates/v0.0.10/openai-docs/agents/openai.yaml +14 -14
  211. package/docs/skill-candidates/v0.0.10/openai-docs/assets/openai-small.svg +3 -3
  212. package/docs/skill-candidates/v0.0.10/openai-docs/references/latest-model.md +37 -37
  213. package/docs/skill-candidates/v0.0.10/openai-docs/references/prompting-guide.md +244 -244
  214. package/docs/skill-candidates/v0.0.10/openai-docs/references/upgrade-guide.md +181 -181
  215. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/fetch-codex-manual.mjs +598 -598
  216. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/resolve-latest-model-info.js +147 -147
  217. package/docs/skill-candidates/v0.0.10/playwright/NOTICE.txt +14 -14
  218. package/docs/skill-candidates/v0.0.10/playwright/SKILL.md +147 -147
  219. package/docs/skill-candidates/v0.0.10/playwright/agents/openai.yaml +6 -6
  220. package/docs/skill-candidates/v0.0.10/playwright/assets/playwright-small.svg +3 -3
  221. package/docs/skill-candidates/v0.0.10/playwright/references/cli.md +116 -116
  222. package/docs/skill-candidates/v0.0.10/playwright/references/workflows.md +95 -95
  223. package/docs/skill-candidates/v0.0.10/playwright/scripts/playwright_cli.sh +25 -25
  224. package/docs/skill-candidates/v0.0.10/polyglot-backend-engineering/SKILL.md +32 -32
  225. package/docs/skill-candidates/v0.0.10/screenshot/LICENSE.txt +201 -201
  226. package/docs/skill-candidates/v0.0.10/screenshot/SKILL.md +267 -267
  227. package/docs/skill-candidates/v0.0.10/screenshot/agents/openai.yaml +6 -6
  228. package/docs/skill-candidates/v0.0.10/screenshot/assets/screenshot-small.svg +5 -5
  229. package/docs/skill-candidates/v0.0.10/screenshot/scripts/ensure_macos_permissions.sh +54 -54
  230. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_display_info.swift +22 -22
  231. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_permissions.swift +40 -40
  232. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_window_info.swift +126 -126
  233. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.ps1 +163 -163
  234. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.py +585 -585
  235. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/SKILL.md +62 -62
  236. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/agents/openai.yaml +4 -4
  237. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/activation-policy.md +77 -77
  238. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/human-approval-policy.md +83 -83
  239. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/persona-dev-senior-master.md +46 -46
  240. package/docs/skill-candidates/v0.0.10/terminal-menu-operations/SKILL.md +30 -30
  241. package/docs/skill-candidates/v0.0.10/terminal-pixel-art-tui/SKILL.md +43 -43
  242. package/docs/skill-candidates/v0.0.10/webapp-testing/LICENSE.txt +201 -201
  243. package/docs/skill-candidates/v0.0.10/webapp-testing/SKILL.md +95 -95
  244. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/console_logging.py +34 -34
  245. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/element_discovery.py +39 -39
  246. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/static_html_automation.py +32 -32
  247. package/docs/skill-candidates/v0.0.10/webapp-testing/scripts/with_server.py +105 -105
  248. package/docs/skill-candidates/v0.0.10/winui-app/LICENSE.txt +201 -201
  249. package/docs/skill-candidates/v0.0.10/winui-app/SKILL.md +94 -94
  250. package/docs/skill-candidates/v0.0.10/winui-app/agents/openai.yaml +5 -5
  251. package/docs/skill-candidates/v0.0.10/winui-app/config.yaml +50 -50
  252. package/docs/skill-candidates/v0.0.10/winui-app/references/_sections.md +96 -96
  253. package/docs/skill-candidates/v0.0.10/winui-app/references/accessibility-input-and-localization.md +51 -51
  254. package/docs/skill-candidates/v0.0.10/winui-app/references/build-run-and-launch-verification.md +72 -72
  255. package/docs/skill-candidates/v0.0.10/winui-app/references/community-toolkit-controls-and-helpers.md +57 -57
  256. package/docs/skill-candidates/v0.0.10/winui-app/references/controls-layout-and-adaptive-ui.md +84 -84
  257. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-environment-audit-and-remediation.md +82 -82
  258. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-setup-and-project-selection.md +67 -67
  259. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-template-first-recovery.md +62 -62
  260. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-winui-app-structure.md +62 -62
  261. package/docs/skill-candidates/v0.0.10/winui-app/references/motion-animations-and-polish.md +45 -45
  262. package/docs/skill-candidates/v0.0.10/winui-app/references/performance-diagnostics-and-responsiveness.md +46 -46
  263. package/docs/skill-candidates/v0.0.10/winui-app/references/sample-source-map.md +37 -37
  264. package/docs/skill-candidates/v0.0.10/winui-app/references/shell-navigation-and-windowing.md +67 -67
  265. package/docs/skill-candidates/v0.0.10/winui-app/references/styling-theming-materials-and-icons.md +71 -71
  266. package/docs/skill-candidates/v0.0.10/winui-app/references/testing-debugging-and-review-checklists.md +77 -77
  267. package/docs/skill-candidates/v0.0.10/winui-app/references/windows-app-sdk-lifecycle-notifications-and-deployment.md +52 -52
  268. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/SKILL.md +398 -398
  269. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/common-patterns.md +330 -330
  270. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/complete-examples.md +871 -871
  271. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/component-patterns.md +501 -501
  272. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/data-fetching.md +766 -766
  273. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/file-organization.md +501 -501
  274. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/loading-and-error-states.md +500 -500
  275. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/performance.md +405 -405
  276. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/routing-guide.md +363 -363
  277. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/styling-guide.md +427 -427
  278. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/typescript-standards.md +417 -417
  279. package/docs/skill-candidates/v0.0.11/git-version-control-ops/SKILL.md +34 -34
  280. package/docs/skill-candidates/v0.0.11/go-engineering/SKILL.md +34 -34
  281. package/docs/skill-candidates/v0.0.11/java-engineering/SKILL.md +34 -34
  282. package/docs/skill-candidates/v0.0.11/javascript-engineering/SKILL.md +34 -34
  283. package/docs/skill-candidates/v0.0.11/json-contract-design/SKILL.md +34 -34
  284. package/docs/skill-candidates/v0.0.11/multi-client-mcp-ops/SKILL.md +36 -36
  285. package/docs/skill-candidates/v0.0.11/nextjs/SKILL.md +745 -745
  286. package/docs/skill-candidates/v0.0.11/nextjs/agents/openai.yaml +3 -3
  287. package/docs/skill-candidates/v0.0.11/nextjs/references/app-router-files.md +94 -94
  288. package/docs/skill-candidates/v0.0.11/python-engineering/SKILL.md +34 -34
  289. package/docs/skill-candidates/v0.0.11/ruby-engineering/SKILL.md +34 -34
  290. package/docs/skill-candidates/v0.0.11/senior-fullstack/SKILL.md +209 -209
  291. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/architecture_patterns.md +103 -103
  292. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/development_workflows.md +103 -103
  293. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/tech_stack_guide.md +103 -103
  294. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/code_quality_analyzer.py +114 -114
  295. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/fullstack_scaffolder.py +114 -114
  296. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/project_scaffolder.py +114 -114
  297. package/docs/skill-candidates/v0.0.11/shadcn/SKILL.md +573 -573
  298. package/docs/skill-candidates/v0.0.11/shadcn/agents/openai.yaml +3 -3
  299. package/docs/skill-candidates/v0.0.11/sql-postgresql-engineering/SKILL.md +34 -34
  300. package/docs/skill-candidates/v0.0.11/terminal-shell-ops/SKILL.md +34 -34
  301. package/docs/skill-candidates/v0.0.11/typescript-expert/SKILL.md +429 -429
  302. package/docs/skill-candidates/v0.0.11/typescript-expert/references/tsconfig-strict.json +91 -91
  303. package/docs/skill-candidates/v0.0.11/typescript-expert/references/typescript-cheatsheet.md +383 -383
  304. package/docs/skill-candidates/v0.0.11/typescript-expert/references/utility-types.ts +335 -335
  305. package/docs/skill-candidates/v0.0.11/typescript-expert/scripts/ts_diagnostic.py +203 -203
  306. package/docs/skill-candidates/v0.0.11/ui-component-primitives/SKILL.md +34 -34
  307. package/docs/skill-candidates/v0.0.11/web-mobile-design-systems/SKILL.md +34 -34
  308. package/docs/skill-candidates/v0.0.11/windows-linux-platform-ops/SKILL.md +34 -34
  309. package/docs/skill-candidates/v0.0.12/context-compression-handoff/SKILL.md +47 -0
  310. package/docs/skill-candidates/v0.0.12/csharp-senior-master-engineering/SKILL.md +32 -32
  311. package/docs/skill-candidates/v0.0.12/css-senior-master-engineering/SKILL.md +32 -32
  312. package/docs/skill-candidates/v0.0.12/go-senior-master-engineering/SKILL.md +32 -32
  313. package/docs/skill-candidates/v0.0.12/html-senior-master-engineering/SKILL.md +32 -32
  314. package/docs/skill-candidates/v0.0.12/javascript-senior-master-engineering/SKILL.md +32 -32
  315. package/docs/skill-candidates/v0.0.12/json-senior-master-engineering/SKILL.md +32 -32
  316. package/docs/skill-candidates/v0.0.12/prompt-budget-gate/SKILL.md +46 -0
  317. package/docs/skill-candidates/v0.0.12/python-senior-master-engineering/SKILL.md +32 -32
  318. package/docs/skill-candidates/v0.0.12/react-senior-master-engineering/SKILL.md +32 -32
  319. package/docs/skill-candidates/v0.0.12/ruby-senior-master-engineering/SKILL.md +32 -32
  320. package/docs/skill-candidates/v0.0.12/senior-master-code-optimizer/SKILL.md +48 -48
  321. package/docs/skill-candidates/v0.0.12/sql-senior-master-engineering/SKILL.md +31 -31
  322. package/docs/skill-candidates/v0.0.12/token-economy-orchestrator/SKILL.md +38 -0
  323. package/docs/skill-candidates/v0.0.12/typescript-senior-master-engineering/SKILL.md +35 -35
  324. package/docs/skill-candidates/v0.0.9/ai-ethics-human-dignity/SKILL.md +32 -32
  325. package/docs/skill-candidates/v0.0.9/broad-domain-router/SKILL.md +41 -41
  326. package/docs/skill-candidates/v0.0.9/catholic-moral-discernment/SKILL.md +31 -31
  327. package/docs/skill-candidates/v0.0.9/engineering-systems-master/SKILL.md +31 -31
  328. package/docs/skill-candidates/v0.0.9/language-quality-pt-en-fr/SKILL.md +28 -28
  329. package/docs/skill-candidates/v0.0.9/math-science-reasoning/SKILL.md +29 -29
  330. package/docs/skill-candidates/v0.0.9/philosophy-sociology-discernment/SKILL.md +28 -28
  331. package/docs/skill-candidates/v0.0.9/professional-boundary-triage/SKILL.md +40 -40
  332. package/docs/skill-candidates/v0.0.9/release-ethics-gate/SKILL.md +32 -32
  333. package/docs/skill-candidates/v0.0.9/source-authority-reviewer/SKILL.md +31 -31
  334. package/examples/client-configs/claude-code.commands.md +21 -21
  335. package/examples/client-configs/claude-code.project.mcp.json +18 -18
  336. package/examples/client-configs/claude-desktop.macos.json +18 -18
  337. package/examples/client-configs/claude-desktop.windows.json +20 -20
  338. package/examples/client-configs/codex.windows.toml +11 -11
  339. package/examples/client-configs/gemini-code-assist.intellij.mcp.json +18 -18
  340. package/examples/client-configs/gemini.linux.settings.json +21 -21
  341. package/examples/client-configs/gemini.windows.settings.json +23 -23
  342. package/examples/client-configs/generic-stdio.json +16 -16
  343. package/manifests/channels/beta.json +24 -24
  344. package/manifests/channels/stable.json +25 -25
  345. package/network/approved-skills.json +54 -54
  346. package/network/unapproved-skill-candidates.json +110 -110
  347. package/package.json +89 -86
  348. package/scripts/configure-private-registry.mjs +208 -208
  349. package/scripts/lib/private-registry.mjs +97 -97
  350. package/scripts/render-menu-evidence.mjs +196 -130
  351. package/scripts/verify-menu-actions.mjs +112 -107
  352. package/scripts/verify-menu-visual.mjs +90 -0
  353. 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) |