用途:在构建或编辑 shadcn/ui 组件时,先检测项目使用的底层原语,再按对应 API 与组合模式工作,避免混用不同原语。
主要能力:区分 Base UI(2026-07-02 起为新项目默认,base-* 样式,@base-ui/react,init --defaults 为 Next.js 模板加 nova 预设,base-nova)、Radix(2023 原始基础,radix-* 样式,统一 radix-ui 包,init -b radix)与 React Aria(2026-07-17 起第三基础,aria-* 样式,react-aria-components,init -b aria)。提供组件映射表(Dialog、Select、Tooltip、Accordion、Popover、Menu、Combobox 等在各原语下的部件名)、包装器调用点用法、事件与状态差异(onClick/disabled/open 对 onPress/isDisabled/isOpen)、data 属性差异,以及各基础下组件可用性(如 Toast、Sonner、Menubar、Navigation Menu、聊天组件、Blocks、Forms)。
使用方式:强制先运行 shadcn-detection 检测原语;通过 MCP 查询注册表(search_items_in_registries、view_items_in_registries、get_add_command_for_items)获取源码与安装命令;用 CLI 获取基础专属文档:{runner} shadcn@latest docs dialog --base aria(--base base|radix|aria)。组合模式:Radix 用 asChild,Base UI 用 render,React Aria 用 trigger 包装器。
限制:不得在同一组件混用三种原语 API;不得假设使用 Radix 或新默认 Base UI 而不检测;不得手写组件内部实现;添加组件前必须查注册表。部分组件在特定基础下不可用(如 Radix/React Aria 无 Toast,改用 Sonner;React Aria 无 Menubar、Navigation Menu)。