用途:该技能描述从空仓库到「已定制、已纳入版本控制」的组件文件的完整步骤顺序,并给出上游有变更时的安全重跑模式。原始 CLI 命令面(各标志与子命令)见 shadcn-core-cli,注册表编写与解析规则见 shadcn-core-registry,多文件页面脚手架见 shadcn-core-blocks。
主要能力与用法:安装组件始终按三步走——先执行 pnpm dlx shadcn@latest init(每项目一次,创建 components.json 与依赖),再执行 pnpm dlx shadcn@latest add <name>(按组件把源码复制到 components/ui/),最后就地编辑 components/ui/<name>.tsx 做变体、属性与默认样式定制并提交 git。第三步产物归你所有,npm 无升级路径,只能重新 add 并用 --diff 手工合并。选择路径时:shadcn 已有的基础组件用 add 后定制,不要手写重实现;不存在的单一原语应先组合现有原语,自定义代码放在 components/<name>.tsx;整页或大型界面用 block,如 pnpm dlx shadcn@latest add sidebar-07;第三方或私有设计系统需在 components.json 配置 registries 后以 @myorg/<name> 添加,密钥用 ${ENV_VAR} 插值,禁止硬编码。add 会读取 components.json、拉取注册表项、安装运行时依赖并改写导入路径;目标文件已存在时默认跳过,需 --overwrite 强制覆盖。更新前先 pnpm dlx shadcn@latest add button --diff 预览,再在提交快照后 --overwrite,并据提交记录重新套用本地变体。
适用场景:新项目首次初始化、向已有 shadcn 项目新增组件、定制组件与同步上游更新。
限制:init 后 style、baseColor、cssVariables 不宜手改,改主意需 init -f 再 add --overwrite --all;别名不要同时在 tsconfig paths 与 package.json#imports 中定义;Vite 项目需在 tsconfig.json、tsconfig.app.json 和 vite.config.ts 三处配置别名;components/ui/ 只放 CLI 生成文件;无 shadcn diff 子命令,也无 shadcn update,--diff 是 add 的标志,diff 加 overwrite 即更新流程。其余细节资料未提供。