@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,573 +1,573 @@
1
- ---
2
- name: shadcn
3
- description: shadcn/ui expert guidance — CLI, component installation, composition patterns, custom registries, theming, Tailwind CSS integration, and high-quality interface design. Use when initializing shadcn, adding components, composing product UI, building custom registries, configuring themes, or troubleshooting component issues.
4
- metadata:
5
- priority: 6
6
- docs:
7
- - "https://ui.shadcn.com/docs"
8
- - "https://ui.shadcn.com/docs/components"
9
- pathPatterns:
10
- - 'components.json'
11
- - 'components/ui/**'
12
- - 'src/components/ui/**'
13
- - 'apps/*/components/ui/**'
14
- - 'apps/*/src/components/ui/**'
15
- - 'packages/*/components/ui/**'
16
- - 'packages/*/src/components/ui/**'
17
- bashPatterns:
18
- - '\bnpx\s+shadcn\b'
19
- - '\bnpx\s+shadcn@latest\s+(init|add|build|search|list|migrate|info|docs|view)\b'
20
- - '\bnpx\s+create-next-app\b'
21
- - '\bbunx\s+create-next-app\b'
22
- - '\bpnpm\s+create\s+next-app\b'
23
- - '\bnpm\s+create\s+next-app\b'
24
- ---
25
-
26
- # shadcn/ui
27
-
28
- You are an expert in shadcn/ui — a collection of beautifully designed, accessible, and customizable React components built on Radix UI primitives and Tailwind CSS. Components are added directly to your codebase as source code, not installed as a dependency.
29
-
30
- ## Key Concept
31
-
32
- shadcn/ui is **not a component library** in the traditional sense. You don't install it as a package. Instead, the CLI copies component source code into your project, giving you full ownership and customization ability.
33
-
34
- ## CLI Commands
35
-
36
- ### Initialize (non-interactive — ALWAYS use this)
37
-
38
- **IMPORTANT**: `shadcn init` is interactive by default. Always use `-d` (defaults) for non-interactive initialization:
39
-
40
- ```bash
41
- # Non-interactive init with defaults — USE THIS
42
- npx shadcn@latest init -d
43
-
44
- # Non-interactive with a preset (recommended for consistent design systems)
45
- npx shadcn@latest init --preset <code> -f
46
-
47
- # Non-interactive with explicit base library choice
48
- npx shadcn@latest init -d --base radix
49
- npx shadcn@latest init -d --base base-ui
50
-
51
- # Scaffold a full project template (CLI v4)
52
- ```
53
-
54
- > **AI Elements compatibility**: Always use `--base radix` (the default) when the project uses or may use AI Elements. AI Elements components rely on Radix APIs and have type errors with Base UI.
55
-
56
- ```bash
57
- npx shadcn@latest init --template next -d
58
- npx shadcn@latest init --template vite -d
59
- ```
60
-
61
- Options:
62
- - `-d, --defaults` — **Use default configuration, skip all interactive prompts** (REQUIRED for CI/agent use)
63
- - `-y, --yes` — Skip confirmation prompts (does NOT skip library selection — use `-d` instead)
64
- - `-f, --force` — Force overwrite existing configuration
65
- - `-t, --template` — Scaffold full project template (`next`, `vite`, `react-router`, `astro`, `laravel`, `tanstack-start`)
66
- - `--preset` — Apply a design system preset (colors, theme, icons, fonts, radius) as a single shareable code
67
- - `--base` — Choose primitive library: `radix` (default) or `base-ui`
68
- - `--monorepo` — Set up a monorepo structure
69
-
70
- > **WARNING**: `-y`/`--yes` alone does NOT make init fully non-interactive — it still prompts for component library selection. Always use `-d` to skip ALL prompts.
71
-
72
- > **Deprecated in CLI v4**: `--style`, `--base-color`, `--src-dir`, `--no-base-style`, and `--css-variables` flags are removed and will error. The `registry:build` and `registry:mcp` registry types are also deprecated. Use `registry:base` and `registry:font` instead.
73
-
74
- The init command:
75
- 1. Detects your framework (Next.js, Vite, React Router, Astro, Laravel, TanStack Start)
76
- 2. Installs required dependencies (Radix UI, tailwind-merge, class-variance-authority)
77
- 3. Creates `components.json` configuration
78
- 4. Sets up the `cn()` utility function
79
- 5. Configures CSS variables for theming
80
-
81
- ### Add Components
82
-
83
- ```bash
84
- # Add specific components
85
- npx shadcn@latest add button dialog card
86
-
87
- # Add all available components
88
- npx shadcn@latest add --all
89
-
90
- # Add from a custom registry
91
- npx shadcn@latest add @v0/dashboard
92
- npx shadcn@latest add @acme/custom-button
93
-
94
- # Add from AI Elements registry
95
- npx shadcn@latest add https://elements.ai-sdk.dev/api/registry/all.json
96
- ```
97
-
98
- Options:
99
- - `-o, --overwrite` — Overwrite existing files
100
- - `-p, --path` — Custom install path
101
- - `-a, --all` — Install all components
102
- - `--dry-run` — Preview what will be added without writing files
103
- - `--diff` — Show diff of changes when updating existing components
104
- - `--view` — Display a registry item's source code inline
105
-
106
- ### Search & List
107
-
108
- ```bash
109
- npx shadcn@latest search button
110
- npx shadcn@latest list @v0
111
- ```
112
-
113
- ### Build (Custom Registry)
114
-
115
- ```bash
116
- npx shadcn@latest build
117
- npx shadcn@latest build ./registry.json -o ./public/r
118
- ```
119
-
120
- ### View, Info & Docs (CLI v4)
121
-
122
- ```bash
123
- # View a registry item's source before installing
124
- npx shadcn@latest view button
125
-
126
- # Show project diagnostics — config, installed components, dependencies
127
- npx shadcn@latest info
128
-
129
- # Get docs, code, and examples for any component (agent-friendly output)
130
- npx shadcn@latest docs button
131
- npx shadcn@latest docs dialog
132
- ```
133
-
134
- > **`shadcn docs`** gives coding agents the context to use primitives correctly — returns code examples, API reference, and usage patterns inline.
135
-
136
- ### Migrate
137
-
138
- ```bash
139
- npx shadcn@latest migrate rtl # RTL support migration
140
- npx shadcn@latest migrate radix # Migrate to unified radix-ui package
141
- npx shadcn@latest migrate icons # Icon library changes
142
-
143
- # Migrate components outside the default ui directory
144
- npx shadcn@latest migrate radix src/components/custom
145
- ```
146
-
147
- ## shadcn/skills (CLI v4)
148
-
149
- shadcn/skills gives coding agents the context they need to work with components and registries correctly. It covers both Radix and Base UI primitives, updated APIs, component patterns, and registry workflows. The skill knows how to use the CLI, when to invoke it, and which flags to pass — so agents produce code that matches your design system.
150
-
151
- Install: `pnpm dlx skills add shadcn/ui`
152
-
153
- ## Unified Radix UI Package (February 2026)
154
-
155
- The `new-york` style now uses a single `radix-ui` package instead of individual `@radix-ui/react-*` packages:
156
-
157
- ```tsx
158
- // OLD — individual packages
159
- import * as DialogPrimitive from "@radix-ui/react-dialog"
160
-
161
- // NEW — unified package
162
- import { Dialog as DialogPrimitive } from "radix-ui"
163
- ```
164
-
165
- To migrate existing projects: `npx shadcn@latest migrate radix`. After migration, remove unused `@radix-ui/react-*` packages from `package.json`.
166
-
167
- ## Base UI Support (January 2026)
168
-
169
- shadcn/ui now supports **Base UI** as an alternative to Radix UI for the underlying primitive library. Components look and behave the same way regardless of which library you choose — only the underlying implementation changes.
170
-
171
- Choose during init: `npx shadcn@latest init --base base-ui`
172
-
173
- The CLI pulls the correct component variant based on your project configuration automatically.
174
-
175
- ## Configuration (components.json)
176
-
177
- The `components.json` file configures how shadcn/ui works in your project:
178
-
179
- ```json
180
- {
181
- "$schema": "https://ui.shadcn.com/schema.json",
182
- "style": "new-york",
183
- "rsc": true,
184
- "tsx": true,
185
- "tailwind": {
186
- "config": "tailwind.config.ts",
187
- "css": "src/app/globals.css",
188
- "baseColor": "zinc", // Options: gray, neutral, slate, stone, zinc, mauve, olive, mist, taupe
189
- "cssVariables": true
190
- },
191
- "aliases": {
192
- "components": "@/components",
193
- "utils": "@/lib/utils",
194
- "ui": "@/components/ui",
195
- "lib": "@/lib",
196
- "hooks": "@/hooks"
197
- },
198
- "registries": {
199
- "v0": {
200
- "url": "https://v0.dev/chat/api/registry"
201
- },
202
- "ai-elements": {
203
- "url": "https://elements.ai-sdk.dev/api/registry"
204
- }
205
- }
206
- }
207
- ```
208
-
209
- ### Namespaced Registries
210
-
211
- Configure multiple registries for your project:
212
-
213
- ```json
214
- {
215
- "registries": {
216
- "acme": {
217
- "url": "https://acme.com/registry/{name}.json"
218
- },
219
- "private": {
220
- "url": "https://internal.company.com/registry/{name}.json",
221
- "headers": {
222
- "Authorization": "Bearer ${REGISTRY_TOKEN}"
223
- }
224
- }
225
- }
226
- }
227
- ```
228
-
229
- Install using namespace syntax:
230
-
231
- ```bash
232
- npx shadcn@latest add @acme/header @private/auth-form
233
- ```
234
-
235
- ## Theming
236
-
237
- ### CSS Variables
238
-
239
- shadcn/ui uses CSS custom properties for theming, defined in `globals.css`:
240
-
241
- ```css
242
- @theme inline {
243
- --color-background: oklch(0.145 0 0);
244
- --color-foreground: oklch(0.985 0 0);
245
- --color-card: oklch(0.205 0 0);
246
- --color-card-foreground: oklch(0.985 0 0);
247
- --color-primary: oklch(0.488 0.243 264.376);
248
- --color-primary-foreground: oklch(0.985 0 0);
249
- --color-secondary: oklch(0.269 0 0);
250
- --color-secondary-foreground: oklch(0.985 0 0);
251
- --color-muted: oklch(0.269 0 0);
252
- --color-muted-foreground: oklch(0.708 0 0);
253
- --color-accent: oklch(0.269 0 0);
254
- --color-accent-foreground: oklch(0.985 0 0);
255
- --color-destructive: oklch(0.396 0.141 25.723);
256
- --color-border: oklch(0.269 0 0);
257
- --color-input: oklch(0.269 0 0);
258
- --color-ring: oklch(0.488 0.243 264.376);
259
- --radius: 0.625rem;
260
- /* CLI v4: radius tokens use multiplicative calc instead of additive */
261
- --radius-xs: calc(var(--radius) * 0.5);
262
- --radius-sm: calc(var(--radius) * 0.75);
263
- --radius-md: calc(var(--radius) * 0.875);
264
- --radius-lg: var(--radius);
265
- --radius-xl: calc(var(--radius) * 1.5);
266
- }
267
- ```
268
-
269
- ### Dark Mode
270
-
271
- For dark mode, use the `dark` class on `<html>`:
272
-
273
- ```tsx
274
- // app/layout.tsx
275
- <html lang="en" className="dark">
276
- ```
277
-
278
- Or use next-themes for toggling:
279
-
280
- ```tsx
281
- import { ThemeProvider } from 'next-themes'
282
-
283
- <ThemeProvider attribute="class" defaultTheme="dark">
284
- {children}
285
- </ThemeProvider>
286
- ```
287
-
288
- ### Custom Colors
289
-
290
- Add application-specific colors alongside shadcn defaults:
291
-
292
- ```css
293
- @theme inline {
294
- /* shadcn defaults above... */
295
-
296
- /* Custom app colors */
297
- --color-priority-urgent: oklch(0.637 0.237 15.163);
298
- --color-priority-high: oklch(0.705 0.213 47.604);
299
- --color-status-done: oklch(0.723 0.219 149.579);
300
- }
301
- ```
302
-
303
- Use in components:
304
-
305
- ```tsx
306
- <span className="text-[var(--color-priority-urgent)]">Urgent</span>
307
- // Or with Tailwind v4 theme():
308
- <span className="text-priority-urgent">Urgent</span>
309
- ```
310
-
311
- ## Most Common Components
312
-
313
- | Component | Use Case |
314
- |-----------|----------|
315
- | `button` | Actions, form submission |
316
- | `card` | Content containers |
317
- | `dialog` | Modals, confirmation prompts |
318
- | `input` / `textarea` | Form fields |
319
- | `select` | Dropdowns |
320
- | `table` | Data display |
321
- | `tabs` | View switching |
322
- | `command` | Command palette (Cmd+K) |
323
- | `dropdown-menu` | Context menus |
324
- | `popover` | Floating content |
325
- | `tooltip` | Hover hints |
326
- | `badge` | Status indicators |
327
- | `avatar` | User profile images |
328
- | `scroll-area` | Scrollable containers |
329
- | `separator` | Visual dividers |
330
- | `label` | Form labels |
331
- | `sheet` | Slide-out panels |
332
- | `skeleton` | Loading placeholders |
333
-
334
- ## Design Direction for shadcn on Vercel
335
-
336
- shadcn/ui is not only a component source generator. In the Vercel stack it is the default interface language. Do not stop at "the component works." Compose pages that feel deliberate, high-signal, and consistent.
337
-
338
- ### Default aesthetic for product UI
339
-
340
- - Prefer style: `new-york` for product, dashboard, AI, and admin surfaces.
341
- - Default to dark mode for dashboards, AI apps, internal tools, settings, and developer-facing products. Use light mode only when the product is clearly content-first or editorial.
342
- - Use Geist Sans for interface text and Geist Mono for code, metrics, IDs, timestamps, commands.
343
- - Prefer zinc, neutral, or slate as the base palette. Use one accent color through `--color-primary`.
344
- - Build core surfaces from tokens: `bg-background`, `bg-card`, `text-foreground`, `text-muted-foreground`, `border-border`, `ring-ring`. Avoid ad-hoc hex values.
345
- - Keep radius consistent. The default `--radius: 0.625rem` is a strong baseline.
346
- - Use one density system per page: comfortable (`gap-6` / `p-6` / `text-sm`) or compact (`gap-4` / `p-4` / `text-sm`).
347
- - Keep icons quiet and consistent. Lucide icons at `h-4 w-4` or `h-5 w-5`.
348
-
349
- ### Reach for this first
350
-
351
- | Use case | Reach for this first | Why |
352
- |----------|----------------------|-----|
353
- | Settings page | `Tabs` + `Card` + `Form` | Clear information grouping with predictable save flows |
354
- | Data dashboard | `Card` + `Badge` + `Table` + `DropdownMenu` | Covers summary, status, dense data, and row actions without custom shells |
355
- | CRUD table | `Table` + `DropdownMenu` + `Sheet` + `AlertDialog` | Supports browse, act, edit, and destructive confirmation in a standard pattern |
356
- | Auth screen | `Card` + `Label` + `Input` + `Button` + `Alert` | Keeps entry flows focused and gives errors a proper treatment |
357
- | Global search | `Command` + `Dialog` | Fast keyboard-first discovery with an established interaction model |
358
- | Mobile nav | `Sheet` + `Button` + `Separator` | Provides a compact navigation shell that adapts cleanly to small screens |
359
- | Detail page | header + `Badge` + `Separator` + `Card` | Balances hierarchy, metadata, and supporting content without over-nesting |
360
- | Filters | `Card` sidebar + `Sheet` + `Select` | Works for persistent desktop filters and collapsible mobile controls |
361
- | Empty/loading/error states | `Card` + `Skeleton` + `Alert` | Gives non-happy paths a designed surface instead of placeholder text |
362
-
363
- ### Composition recipes
364
-
365
- - Settings page: `Tabs` + `Card` per group + `Separator` + save action
366
- - Admin dashboard: summary `Card`s + filter bar + `Table`
367
- - Entity detail: header + status `Badge` + main `Card` + side `Card` + `AlertDialog` for destructive
368
- - Search-heavy: `Command` for quick find, `Popover` for pickers, `Sheet` for mobile filters
369
- - Auth/onboarding: centered `Card` + social `Separator` + inline `Alert` for errors
370
- - Destructive flows: `AlertDialog` (not `Dialog`) for confirmation
371
-
372
- ### Anti-patterns to avoid
373
-
374
- - Raw `button` / `input` / `select` / `div` when shadcn primitives exist
375
- - Repeated `div rounded-xl border p-6` instead of `Tabs` / `Table` / `Sheet` / `Dialog`
376
- - Multiple accent colors fighting each other
377
- - Nested cards inside cards inside cards
378
- - Large gradient backgrounds and glassmorphism on every surface
379
- - Mixing arbitrary spacing and radius values
380
- - Using `Dialog` for destructive confirmation instead of `AlertDialog`
381
- - Shipping empty/loading/error states without design treatment
382
- - Using ad-hoc Tailwind palette classes for foundational surfaces instead of theme tokens
383
-
384
- ## Building a Custom Registry
385
-
386
- Create your own component registry to share across projects:
387
-
388
- ### Registry Types (CLI v4)
389
-
390
- | Type | Purpose |
391
- |------|---------|
392
- | `registry:ui` | Individual UI components |
393
- | `registry:base` | Full design system payload — components, deps, CSS vars, fonts, config |
394
- | `registry:font` | Font configuration as a first-class registry item |
395
-
396
- ### 1. Define registry.json
397
-
398
- ```json
399
- [
400
- {
401
- "name": "my-component",
402
- "type": "registry:ui",
403
- "title": "My Component",
404
- "description": "A custom component",
405
- "files": [
406
- {
407
- "path": "components/my-component.tsx",
408
- "type": "registry:ui"
409
- }
410
- ],
411
- "dependencies": ["lucide-react"]
412
- }
413
- ]
414
- ```
415
-
416
- ### 2. Build
417
-
418
- ```bash
419
- npx shadcn@latest build
420
- # Outputs to public/r/my-component.json
421
- ```
422
-
423
- ### 3. Consume
424
-
425
- ```bash
426
- npx shadcn@latest add https://your-domain.com/r/my-component.json
427
- ```
428
-
429
- ## Component Gotchas
430
-
431
- ### `shadcn init` Breaks Geist Font in Next.js (Tailwind v4)
432
-
433
- `shadcn init` rewrites `globals.css` and may introduce `--font-sans: var(--font-sans)` — a circular self-reference that breaks font loading. Tailwind v4's `@theme inline` resolves CSS custom properties at **parse time**, not runtime — so even `var(--font-geist-sans)` won't work because Next.js injects that variable via className at runtime.
434
-
435
- **The fix**: Use literal font family names in `@theme inline`:
436
-
437
- ```css
438
- /* In @theme inline — CORRECT (literal names) */
439
- --font-sans: "Geist", "Geist Fallback", ui-sans-serif, system-ui, sans-serif;
440
- --font-mono: "Geist Mono", "Geist Mono Fallback", ui-monospace, monospace;
441
-
442
- /* WRONG — circular, resolves to nothing */
443
- --font-sans: var(--font-sans);
444
-
445
- /* ALSO WRONG — @theme inline can't resolve runtime CSS variables */
446
- --font-sans: var(--font-geist-sans);
447
- ```
448
-
449
- **After running `shadcn init`**, always:
450
- 1. Replace font declarations in `@theme inline` with literal Geist font names (as shown above)
451
- 2. Move the font variable classNames from `<body>` to `<html>` in `layout.tsx`:
452
-
453
- ```tsx
454
- // layout.tsx — font variables on <html>, not <body>
455
- <html lang="en" className={`${geistSans.variable} ${geistMono.variable}`}>
456
- <body className="antialiased">
457
- ```
458
-
459
- ### Avatar Has No `size` Prop
460
-
461
- The shadcn Avatar component does **not** accept a `size` variant prop. Control size with Tailwind classes:
462
-
463
- ```tsx
464
- // WRONG — no size variant exists
465
- <Avatar size="lg" /> // ❌ TypeScript error / silently ignored
466
-
467
- // CORRECT — use Tailwind
468
- <Avatar className="h-12 w-12">
469
- <AvatarImage src={user.image} />
470
- <AvatarFallback>JD</AvatarFallback>
471
- </Avatar>
472
-
473
- // Small avatar
474
- <Avatar className="h-6 w-6"> ... </Avatar>
475
- ```
476
-
477
- This applies to most shadcn components — they use Tailwind classes for sizing, not variant props. If you need reusable size variants, add them yourself via `cva` in the component source.
478
-
479
- ## Common Patterns
480
-
481
- ### cn() Utility
482
-
483
- All shadcn components use the `cn()` utility for conditional class merging:
484
-
485
- ```ts
486
- import { clsx, type ClassValue } from 'clsx'
487
- import { twMerge } from 'tailwind-merge'
488
-
489
- export function cn(...inputs: ClassValue[]) {
490
- return twMerge(clsx(inputs))
491
- }
492
- ```
493
-
494
- ### Extending Components
495
-
496
- Since you own the source code, extend components directly:
497
-
498
- ```tsx
499
- // components/ui/button.tsx — add your custom variant
500
- const buttonVariants = cva('...', {
501
- variants: {
502
- variant: {
503
- default: '...',
504
- destructive: '...',
505
- // Add custom variants
506
- success: 'bg-green-600 text-white hover:bg-green-700',
507
- premium: 'bg-gradient-to-r from-purple-500 to-pink-500 text-white',
508
- },
509
- },
510
- })
511
- ```
512
-
513
- ### Wrapping with TooltipProvider
514
-
515
- Many components require `TooltipProvider` at the root:
516
-
517
- ```tsx
518
- // app/layout.tsx
519
- import { TooltipProvider } from '@/components/ui/tooltip'
520
-
521
- export default function RootLayout({ children }) {
522
- return (
523
- <html lang="en" className="dark">
524
- <body>
525
- <TooltipProvider>{children}</TooltipProvider>
526
- </body>
527
- </html>
528
- )
529
- }
530
- ```
531
-
532
- ## Framework Support
533
-
534
- - **Next.js** — Full support (App Router + Pages Router)
535
- - **Vite** — Full support
536
- - **React Router** — Full support
537
- - **Astro** — Full support
538
- - **Laravel** — Full support (via Inertia)
539
- - **TanStack Start** — Full support
540
-
541
- ## Presets (CLI v4)
542
-
543
- Presets bundle your entire design system config (colors, theme, icon library, fonts, radius) into a single shareable code. One string configures everything:
544
-
545
- ```bash
546
- # Apply a preset during init
547
- npx shadcn@latest init --preset <code>
548
-
549
- # Switch presets in an existing project (reconfigures everything including components)
550
- npx shadcn@latest init --preset <code>
551
- ```
552
-
553
- Build custom presets on `shadcn/create` — preview how colors, fonts, and radius apply to real components before publishing.
554
-
555
- ## RTL Support (2026)
556
-
557
- The CLI handles RTL transformation at install time:
558
-
559
- ```bash
560
- npx shadcn@latest migrate rtl
561
- ```
562
-
563
- Converts directional classes (`ml-4`, `left-2`) to logical properties (`ms-4`, `start-2`) automatically.
564
-
565
- ## Official Documentation
566
-
567
- - [shadcn/ui](https://ui.shadcn.com)
568
- - [Components](https://ui.shadcn.com/docs/components)
569
- - [CLI](https://ui.shadcn.com/docs/cli)
570
- - [Theming](https://ui.shadcn.com/docs/theming)
571
- - [Custom Registry](https://ui.shadcn.com/docs/registry)
572
- - [Registry Directory](https://ui.shadcn.com/docs/directory)
573
- - [GitHub: shadcn/ui](https://github.com/shadcn-ui/ui)
1
+ ---
2
+ name: shadcn
3
+ description: shadcn/ui expert guidance — CLI, component installation, composition patterns, custom registries, theming, Tailwind CSS integration, and high-quality interface design. Use when initializing shadcn, adding components, composing product UI, building custom registries, configuring themes, or troubleshooting component issues.
4
+ metadata:
5
+ priority: 6
6
+ docs:
7
+ - "https://ui.shadcn.com/docs"
8
+ - "https://ui.shadcn.com/docs/components"
9
+ pathPatterns:
10
+ - 'components.json'
11
+ - 'components/ui/**'
12
+ - 'src/components/ui/**'
13
+ - 'apps/*/components/ui/**'
14
+ - 'apps/*/src/components/ui/**'
15
+ - 'packages/*/components/ui/**'
16
+ - 'packages/*/src/components/ui/**'
17
+ bashPatterns:
18
+ - '\bnpx\s+shadcn\b'
19
+ - '\bnpx\s+shadcn@latest\s+(init|add|build|search|list|migrate|info|docs|view)\b'
20
+ - '\bnpx\s+create-next-app\b'
21
+ - '\bbunx\s+create-next-app\b'
22
+ - '\bpnpm\s+create\s+next-app\b'
23
+ - '\bnpm\s+create\s+next-app\b'
24
+ ---
25
+
26
+ # shadcn/ui
27
+
28
+ You are an expert in shadcn/ui — a collection of beautifully designed, accessible, and customizable React components built on Radix UI primitives and Tailwind CSS. Components are added directly to your codebase as source code, not installed as a dependency.
29
+
30
+ ## Key Concept
31
+
32
+ shadcn/ui is **not a component library** in the traditional sense. You don't install it as a package. Instead, the CLI copies component source code into your project, giving you full ownership and customization ability.
33
+
34
+ ## CLI Commands
35
+
36
+ ### Initialize (non-interactive — ALWAYS use this)
37
+
38
+ **IMPORTANT**: `shadcn init` is interactive by default. Always use `-d` (defaults) for non-interactive initialization:
39
+
40
+ ```bash
41
+ # Non-interactive init with defaults — USE THIS
42
+ npx shadcn@latest init -d
43
+
44
+ # Non-interactive with a preset (recommended for consistent design systems)
45
+ npx shadcn@latest init --preset <code> -f
46
+
47
+ # Non-interactive with explicit base library choice
48
+ npx shadcn@latest init -d --base radix
49
+ npx shadcn@latest init -d --base base-ui
50
+
51
+ # Scaffold a full project template (CLI v4)
52
+ ```
53
+
54
+ > **AI Elements compatibility**: Always use `--base radix` (the default) when the project uses or may use AI Elements. AI Elements components rely on Radix APIs and have type errors with Base UI.
55
+
56
+ ```bash
57
+ npx shadcn@latest init --template next -d
58
+ npx shadcn@latest init --template vite -d
59
+ ```
60
+
61
+ Options:
62
+ - `-d, --defaults` — **Use default configuration, skip all interactive prompts** (REQUIRED for CI/agent use)
63
+ - `-y, --yes` — Skip confirmation prompts (does NOT skip library selection — use `-d` instead)
64
+ - `-f, --force` — Force overwrite existing configuration
65
+ - `-t, --template` — Scaffold full project template (`next`, `vite`, `react-router`, `astro`, `laravel`, `tanstack-start`)
66
+ - `--preset` — Apply a design system preset (colors, theme, icons, fonts, radius) as a single shareable code
67
+ - `--base` — Choose primitive library: `radix` (default) or `base-ui`
68
+ - `--monorepo` — Set up a monorepo structure
69
+
70
+ > **WARNING**: `-y`/`--yes` alone does NOT make init fully non-interactive — it still prompts for component library selection. Always use `-d` to skip ALL prompts.
71
+
72
+ > **Deprecated in CLI v4**: `--style`, `--base-color`, `--src-dir`, `--no-base-style`, and `--css-variables` flags are removed and will error. The `registry:build` and `registry:mcp` registry types are also deprecated. Use `registry:base` and `registry:font` instead.
73
+
74
+ The init command:
75
+ 1. Detects your framework (Next.js, Vite, React Router, Astro, Laravel, TanStack Start)
76
+ 2. Installs required dependencies (Radix UI, tailwind-merge, class-variance-authority)
77
+ 3. Creates `components.json` configuration
78
+ 4. Sets up the `cn()` utility function
79
+ 5. Configures CSS variables for theming
80
+
81
+ ### Add Components
82
+
83
+ ```bash
84
+ # Add specific components
85
+ npx shadcn@latest add button dialog card
86
+
87
+ # Add all available components
88
+ npx shadcn@latest add --all
89
+
90
+ # Add from a custom registry
91
+ npx shadcn@latest add @v0/dashboard
92
+ npx shadcn@latest add @acme/custom-button
93
+
94
+ # Add from AI Elements registry
95
+ npx shadcn@latest add https://elements.ai-sdk.dev/api/registry/all.json
96
+ ```
97
+
98
+ Options:
99
+ - `-o, --overwrite` — Overwrite existing files
100
+ - `-p, --path` — Custom install path
101
+ - `-a, --all` — Install all components
102
+ - `--dry-run` — Preview what will be added without writing files
103
+ - `--diff` — Show diff of changes when updating existing components
104
+ - `--view` — Display a registry item's source code inline
105
+
106
+ ### Search & List
107
+
108
+ ```bash
109
+ npx shadcn@latest search button
110
+ npx shadcn@latest list @v0
111
+ ```
112
+
113
+ ### Build (Custom Registry)
114
+
115
+ ```bash
116
+ npx shadcn@latest build
117
+ npx shadcn@latest build ./registry.json -o ./public/r
118
+ ```
119
+
120
+ ### View, Info & Docs (CLI v4)
121
+
122
+ ```bash
123
+ # View a registry item's source before installing
124
+ npx shadcn@latest view button
125
+
126
+ # Show project diagnostics — config, installed components, dependencies
127
+ npx shadcn@latest info
128
+
129
+ # Get docs, code, and examples for any component (agent-friendly output)
130
+ npx shadcn@latest docs button
131
+ npx shadcn@latest docs dialog
132
+ ```
133
+
134
+ > **`shadcn docs`** gives coding agents the context to use primitives correctly — returns code examples, API reference, and usage patterns inline.
135
+
136
+ ### Migrate
137
+
138
+ ```bash
139
+ npx shadcn@latest migrate rtl # RTL support migration
140
+ npx shadcn@latest migrate radix # Migrate to unified radix-ui package
141
+ npx shadcn@latest migrate icons # Icon library changes
142
+
143
+ # Migrate components outside the default ui directory
144
+ npx shadcn@latest migrate radix src/components/custom
145
+ ```
146
+
147
+ ## shadcn/skills (CLI v4)
148
+
149
+ shadcn/skills gives coding agents the context they need to work with components and registries correctly. It covers both Radix and Base UI primitives, updated APIs, component patterns, and registry workflows. The skill knows how to use the CLI, when to invoke it, and which flags to pass — so agents produce code that matches your design system.
150
+
151
+ Install: `pnpm dlx skills add shadcn/ui`
152
+
153
+ ## Unified Radix UI Package (February 2026)
154
+
155
+ The `new-york` style now uses a single `radix-ui` package instead of individual `@radix-ui/react-*` packages:
156
+
157
+ ```tsx
158
+ // OLD — individual packages
159
+ import * as DialogPrimitive from "@radix-ui/react-dialog"
160
+
161
+ // NEW — unified package
162
+ import { Dialog as DialogPrimitive } from "radix-ui"
163
+ ```
164
+
165
+ To migrate existing projects: `npx shadcn@latest migrate radix`. After migration, remove unused `@radix-ui/react-*` packages from `package.json`.
166
+
167
+ ## Base UI Support (January 2026)
168
+
169
+ shadcn/ui now supports **Base UI** as an alternative to Radix UI for the underlying primitive library. Components look and behave the same way regardless of which library you choose — only the underlying implementation changes.
170
+
171
+ Choose during init: `npx shadcn@latest init --base base-ui`
172
+
173
+ The CLI pulls the correct component variant based on your project configuration automatically.
174
+
175
+ ## Configuration (components.json)
176
+
177
+ The `components.json` file configures how shadcn/ui works in your project:
178
+
179
+ ```json
180
+ {
181
+ "$schema": "https://ui.shadcn.com/schema.json",
182
+ "style": "new-york",
183
+ "rsc": true,
184
+ "tsx": true,
185
+ "tailwind": {
186
+ "config": "tailwind.config.ts",
187
+ "css": "src/app/globals.css",
188
+ "baseColor": "zinc", // Options: gray, neutral, slate, stone, zinc, mauve, olive, mist, taupe
189
+ "cssVariables": true
190
+ },
191
+ "aliases": {
192
+ "components": "@/components",
193
+ "utils": "@/lib/utils",
194
+ "ui": "@/components/ui",
195
+ "lib": "@/lib",
196
+ "hooks": "@/hooks"
197
+ },
198
+ "registries": {
199
+ "v0": {
200
+ "url": "https://v0.dev/chat/api/registry"
201
+ },
202
+ "ai-elements": {
203
+ "url": "https://elements.ai-sdk.dev/api/registry"
204
+ }
205
+ }
206
+ }
207
+ ```
208
+
209
+ ### Namespaced Registries
210
+
211
+ Configure multiple registries for your project:
212
+
213
+ ```json
214
+ {
215
+ "registries": {
216
+ "acme": {
217
+ "url": "https://acme.com/registry/{name}.json"
218
+ },
219
+ "private": {
220
+ "url": "https://internal.company.com/registry/{name}.json",
221
+ "headers": {
222
+ "Authorization": "Bearer ${REGISTRY_TOKEN}"
223
+ }
224
+ }
225
+ }
226
+ }
227
+ ```
228
+
229
+ Install using namespace syntax:
230
+
231
+ ```bash
232
+ npx shadcn@latest add @acme/header @private/auth-form
233
+ ```
234
+
235
+ ## Theming
236
+
237
+ ### CSS Variables
238
+
239
+ shadcn/ui uses CSS custom properties for theming, defined in `globals.css`:
240
+
241
+ ```css
242
+ @theme inline {
243
+ --color-background: oklch(0.145 0 0);
244
+ --color-foreground: oklch(0.985 0 0);
245
+ --color-card: oklch(0.205 0 0);
246
+ --color-card-foreground: oklch(0.985 0 0);
247
+ --color-primary: oklch(0.488 0.243 264.376);
248
+ --color-primary-foreground: oklch(0.985 0 0);
249
+ --color-secondary: oklch(0.269 0 0);
250
+ --color-secondary-foreground: oklch(0.985 0 0);
251
+ --color-muted: oklch(0.269 0 0);
252
+ --color-muted-foreground: oklch(0.708 0 0);
253
+ --color-accent: oklch(0.269 0 0);
254
+ --color-accent-foreground: oklch(0.985 0 0);
255
+ --color-destructive: oklch(0.396 0.141 25.723);
256
+ --color-border: oklch(0.269 0 0);
257
+ --color-input: oklch(0.269 0 0);
258
+ --color-ring: oklch(0.488 0.243 264.376);
259
+ --radius: 0.625rem;
260
+ /* CLI v4: radius tokens use multiplicative calc instead of additive */
261
+ --radius-xs: calc(var(--radius) * 0.5);
262
+ --radius-sm: calc(var(--radius) * 0.75);
263
+ --radius-md: calc(var(--radius) * 0.875);
264
+ --radius-lg: var(--radius);
265
+ --radius-xl: calc(var(--radius) * 1.5);
266
+ }
267
+ ```
268
+
269
+ ### Dark Mode
270
+
271
+ For dark mode, use the `dark` class on `<html>`:
272
+
273
+ ```tsx
274
+ // app/layout.tsx
275
+ <html lang="en" className="dark">
276
+ ```
277
+
278
+ Or use next-themes for toggling:
279
+
280
+ ```tsx
281
+ import { ThemeProvider } from 'next-themes'
282
+
283
+ <ThemeProvider attribute="class" defaultTheme="dark">
284
+ {children}
285
+ </ThemeProvider>
286
+ ```
287
+
288
+ ### Custom Colors
289
+
290
+ Add application-specific colors alongside shadcn defaults:
291
+
292
+ ```css
293
+ @theme inline {
294
+ /* shadcn defaults above... */
295
+
296
+ /* Custom app colors */
297
+ --color-priority-urgent: oklch(0.637 0.237 15.163);
298
+ --color-priority-high: oklch(0.705 0.213 47.604);
299
+ --color-status-done: oklch(0.723 0.219 149.579);
300
+ }
301
+ ```
302
+
303
+ Use in components:
304
+
305
+ ```tsx
306
+ <span className="text-[var(--color-priority-urgent)]">Urgent</span>
307
+ // Or with Tailwind v4 theme():
308
+ <span className="text-priority-urgent">Urgent</span>
309
+ ```
310
+
311
+ ## Most Common Components
312
+
313
+ | Component | Use Case |
314
+ |-----------|----------|
315
+ | `button` | Actions, form submission |
316
+ | `card` | Content containers |
317
+ | `dialog` | Modals, confirmation prompts |
318
+ | `input` / `textarea` | Form fields |
319
+ | `select` | Dropdowns |
320
+ | `table` | Data display |
321
+ | `tabs` | View switching |
322
+ | `command` | Command palette (Cmd+K) |
323
+ | `dropdown-menu` | Context menus |
324
+ | `popover` | Floating content |
325
+ | `tooltip` | Hover hints |
326
+ | `badge` | Status indicators |
327
+ | `avatar` | User profile images |
328
+ | `scroll-area` | Scrollable containers |
329
+ | `separator` | Visual dividers |
330
+ | `label` | Form labels |
331
+ | `sheet` | Slide-out panels |
332
+ | `skeleton` | Loading placeholders |
333
+
334
+ ## Design Direction for shadcn on Vercel
335
+
336
+ shadcn/ui is not only a component source generator. In the Vercel stack it is the default interface language. Do not stop at "the component works." Compose pages that feel deliberate, high-signal, and consistent.
337
+
338
+ ### Default aesthetic for product UI
339
+
340
+ - Prefer style: `new-york` for product, dashboard, AI, and admin surfaces.
341
+ - Default to dark mode for dashboards, AI apps, internal tools, settings, and developer-facing products. Use light mode only when the product is clearly content-first or editorial.
342
+ - Use Geist Sans for interface text and Geist Mono for code, metrics, IDs, timestamps, commands.
343
+ - Prefer zinc, neutral, or slate as the base palette. Use one accent color through `--color-primary`.
344
+ - Build core surfaces from tokens: `bg-background`, `bg-card`, `text-foreground`, `text-muted-foreground`, `border-border`, `ring-ring`. Avoid ad-hoc hex values.
345
+ - Keep radius consistent. The default `--radius: 0.625rem` is a strong baseline.
346
+ - Use one density system per page: comfortable (`gap-6` / `p-6` / `text-sm`) or compact (`gap-4` / `p-4` / `text-sm`).
347
+ - Keep icons quiet and consistent. Lucide icons at `h-4 w-4` or `h-5 w-5`.
348
+
349
+ ### Reach for this first
350
+
351
+ | Use case | Reach for this first | Why |
352
+ |----------|----------------------|-----|
353
+ | Settings page | `Tabs` + `Card` + `Form` | Clear information grouping with predictable save flows |
354
+ | Data dashboard | `Card` + `Badge` + `Table` + `DropdownMenu` | Covers summary, status, dense data, and row actions without custom shells |
355
+ | CRUD table | `Table` + `DropdownMenu` + `Sheet` + `AlertDialog` | Supports browse, act, edit, and destructive confirmation in a standard pattern |
356
+ | Auth screen | `Card` + `Label` + `Input` + `Button` + `Alert` | Keeps entry flows focused and gives errors a proper treatment |
357
+ | Global search | `Command` + `Dialog` | Fast keyboard-first discovery with an established interaction model |
358
+ | Mobile nav | `Sheet` + `Button` + `Separator` | Provides a compact navigation shell that adapts cleanly to small screens |
359
+ | Detail page | header + `Badge` + `Separator` + `Card` | Balances hierarchy, metadata, and supporting content without over-nesting |
360
+ | Filters | `Card` sidebar + `Sheet` + `Select` | Works for persistent desktop filters and collapsible mobile controls |
361
+ | Empty/loading/error states | `Card` + `Skeleton` + `Alert` | Gives non-happy paths a designed surface instead of placeholder text |
362
+
363
+ ### Composition recipes
364
+
365
+ - Settings page: `Tabs` + `Card` per group + `Separator` + save action
366
+ - Admin dashboard: summary `Card`s + filter bar + `Table`
367
+ - Entity detail: header + status `Badge` + main `Card` + side `Card` + `AlertDialog` for destructive
368
+ - Search-heavy: `Command` for quick find, `Popover` for pickers, `Sheet` for mobile filters
369
+ - Auth/onboarding: centered `Card` + social `Separator` + inline `Alert` for errors
370
+ - Destructive flows: `AlertDialog` (not `Dialog`) for confirmation
371
+
372
+ ### Anti-patterns to avoid
373
+
374
+ - Raw `button` / `input` / `select` / `div` when shadcn primitives exist
375
+ - Repeated `div rounded-xl border p-6` instead of `Tabs` / `Table` / `Sheet` / `Dialog`
376
+ - Multiple accent colors fighting each other
377
+ - Nested cards inside cards inside cards
378
+ - Large gradient backgrounds and glassmorphism on every surface
379
+ - Mixing arbitrary spacing and radius values
380
+ - Using `Dialog` for destructive confirmation instead of `AlertDialog`
381
+ - Shipping empty/loading/error states without design treatment
382
+ - Using ad-hoc Tailwind palette classes for foundational surfaces instead of theme tokens
383
+
384
+ ## Building a Custom Registry
385
+
386
+ Create your own component registry to share across projects:
387
+
388
+ ### Registry Types (CLI v4)
389
+
390
+ | Type | Purpose |
391
+ |------|---------|
392
+ | `registry:ui` | Individual UI components |
393
+ | `registry:base` | Full design system payload — components, deps, CSS vars, fonts, config |
394
+ | `registry:font` | Font configuration as a first-class registry item |
395
+
396
+ ### 1. Define registry.json
397
+
398
+ ```json
399
+ [
400
+ {
401
+ "name": "my-component",
402
+ "type": "registry:ui",
403
+ "title": "My Component",
404
+ "description": "A custom component",
405
+ "files": [
406
+ {
407
+ "path": "components/my-component.tsx",
408
+ "type": "registry:ui"
409
+ }
410
+ ],
411
+ "dependencies": ["lucide-react"]
412
+ }
413
+ ]
414
+ ```
415
+
416
+ ### 2. Build
417
+
418
+ ```bash
419
+ npx shadcn@latest build
420
+ # Outputs to public/r/my-component.json
421
+ ```
422
+
423
+ ### 3. Consume
424
+
425
+ ```bash
426
+ npx shadcn@latest add https://your-domain.com/r/my-component.json
427
+ ```
428
+
429
+ ## Component Gotchas
430
+
431
+ ### `shadcn init` Breaks Geist Font in Next.js (Tailwind v4)
432
+
433
+ `shadcn init` rewrites `globals.css` and may introduce `--font-sans: var(--font-sans)` — a circular self-reference that breaks font loading. Tailwind v4's `@theme inline` resolves CSS custom properties at **parse time**, not runtime — so even `var(--font-geist-sans)` won't work because Next.js injects that variable via className at runtime.
434
+
435
+ **The fix**: Use literal font family names in `@theme inline`:
436
+
437
+ ```css
438
+ /* In @theme inline — CORRECT (literal names) */
439
+ --font-sans: "Geist", "Geist Fallback", ui-sans-serif, system-ui, sans-serif;
440
+ --font-mono: "Geist Mono", "Geist Mono Fallback", ui-monospace, monospace;
441
+
442
+ /* WRONG — circular, resolves to nothing */
443
+ --font-sans: var(--font-sans);
444
+
445
+ /* ALSO WRONG — @theme inline can't resolve runtime CSS variables */
446
+ --font-sans: var(--font-geist-sans);
447
+ ```
448
+
449
+ **After running `shadcn init`**, always:
450
+ 1. Replace font declarations in `@theme inline` with literal Geist font names (as shown above)
451
+ 2. Move the font variable classNames from `<body>` to `<html>` in `layout.tsx`:
452
+
453
+ ```tsx
454
+ // layout.tsx — font variables on <html>, not <body>
455
+ <html lang="en" className={`${geistSans.variable} ${geistMono.variable}`}>
456
+ <body className="antialiased">
457
+ ```
458
+
459
+ ### Avatar Has No `size` Prop
460
+
461
+ The shadcn Avatar component does **not** accept a `size` variant prop. Control size with Tailwind classes:
462
+
463
+ ```tsx
464
+ // WRONG — no size variant exists
465
+ <Avatar size="lg" /> // ❌ TypeScript error / silently ignored
466
+
467
+ // CORRECT — use Tailwind
468
+ <Avatar className="h-12 w-12">
469
+ <AvatarImage src={user.image} />
470
+ <AvatarFallback>JD</AvatarFallback>
471
+ </Avatar>
472
+
473
+ // Small avatar
474
+ <Avatar className="h-6 w-6"> ... </Avatar>
475
+ ```
476
+
477
+ This applies to most shadcn components — they use Tailwind classes for sizing, not variant props. If you need reusable size variants, add them yourself via `cva` in the component source.
478
+
479
+ ## Common Patterns
480
+
481
+ ### cn() Utility
482
+
483
+ All shadcn components use the `cn()` utility for conditional class merging:
484
+
485
+ ```ts
486
+ import { clsx, type ClassValue } from 'clsx'
487
+ import { twMerge } from 'tailwind-merge'
488
+
489
+ export function cn(...inputs: ClassValue[]) {
490
+ return twMerge(clsx(inputs))
491
+ }
492
+ ```
493
+
494
+ ### Extending Components
495
+
496
+ Since you own the source code, extend components directly:
497
+
498
+ ```tsx
499
+ // components/ui/button.tsx — add your custom variant
500
+ const buttonVariants = cva('...', {
501
+ variants: {
502
+ variant: {
503
+ default: '...',
504
+ destructive: '...',
505
+ // Add custom variants
506
+ success: 'bg-green-600 text-white hover:bg-green-700',
507
+ premium: 'bg-gradient-to-r from-purple-500 to-pink-500 text-white',
508
+ },
509
+ },
510
+ })
511
+ ```
512
+
513
+ ### Wrapping with TooltipProvider
514
+
515
+ Many components require `TooltipProvider` at the root:
516
+
517
+ ```tsx
518
+ // app/layout.tsx
519
+ import { TooltipProvider } from '@/components/ui/tooltip'
520
+
521
+ export default function RootLayout({ children }) {
522
+ return (
523
+ <html lang="en" className="dark">
524
+ <body>
525
+ <TooltipProvider>{children}</TooltipProvider>
526
+ </body>
527
+ </html>
528
+ )
529
+ }
530
+ ```
531
+
532
+ ## Framework Support
533
+
534
+ - **Next.js** — Full support (App Router + Pages Router)
535
+ - **Vite** — Full support
536
+ - **React Router** — Full support
537
+ - **Astro** — Full support
538
+ - **Laravel** — Full support (via Inertia)
539
+ - **TanStack Start** — Full support
540
+
541
+ ## Presets (CLI v4)
542
+
543
+ Presets bundle your entire design system config (colors, theme, icon library, fonts, radius) into a single shareable code. One string configures everything:
544
+
545
+ ```bash
546
+ # Apply a preset during init
547
+ npx shadcn@latest init --preset <code>
548
+
549
+ # Switch presets in an existing project (reconfigures everything including components)
550
+ npx shadcn@latest init --preset <code>
551
+ ```
552
+
553
+ Build custom presets on `shadcn/create` — preview how colors, fonts, and radius apply to real components before publishing.
554
+
555
+ ## RTL Support (2026)
556
+
557
+ The CLI handles RTL transformation at install time:
558
+
559
+ ```bash
560
+ npx shadcn@latest migrate rtl
561
+ ```
562
+
563
+ Converts directional classes (`ml-4`, `left-2`) to logical properties (`ms-4`, `start-2`) automatically.
564
+
565
+ ## Official Documentation
566
+
567
+ - [shadcn/ui](https://ui.shadcn.com)
568
+ - [Components](https://ui.shadcn.com/docs/components)
569
+ - [CLI](https://ui.shadcn.com/docs/cli)
570
+ - [Theming](https://ui.shadcn.com/docs/theming)
571
+ - [Custom Registry](https://ui.shadcn.com/docs/registry)
572
+ - [Registry Directory](https://ui.shadcn.com/docs/directory)
573
+ - [GitHub: shadcn/ui](https://github.com/shadcn-ui/ui)