关于 compound-ui
compound-ui 是一项用于构建自有源码 React 组件的技能,强调可组合部件与无障碍原语。它引导开发者先检查项目约定,再设计组件 API、实现并审查行为。
主要功能
- 01检查现有 UI 技术栈与约定
- 02编码前定义组件契约
- 03通过命名部件与 children 组合
- 04使用无障碍原语和样式钩子
- 05检查类型、键盘交互与响应式状态
适用场景
- 01在现有项目中添加复合 React 组件
- 02让组件组合方式匹配项目的原语库
- 03完成 UI 前检查无障碍性与行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill compound-ui安装后在 Claude Code 中输入/compound-ui确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/authoring-patterns.mdcomponent-contract.mdreview-checklist.mdsource-map.md详细介绍
Compound UI
使用此技能创建由源代码拥有的 React 组件,使其组合方式类似 shadcn/ui:由小型命名部件、显式的子元素、无障碍原语、类名合并和稳定的样式钩子组成。
工作流
- 编写代码前检查本地 UI 技术栈:
- 阅读项目附近的指导文档、现有组件文件、软件包版本、样式工具、原语库以及测试/故事约定。
- 优先遵循项目现有的导出、文件、样式、图标和无障碍模式。
- 在精确 API 很重要时更新文档:
- 使用 references/source-map.md 获取当前源码链接和已收集的指导。
- 在修改与框架相关的代码前,优先查阅当前 React、shadcn/ui 和本地原语文档(Radix UI、Base UI 或 React Aria)。
- 首先确认项目使用的原语基础:
components.json中的style,或对radix-ui、@base-ui/react、react-aria-components的导入。遵循其组合 API,不要混用不同基础。
- 实现前设计公共 API:
- 阅读 references/component-contract.md。
- 定义根组件、命名子组件、合法嵌套方式、受控/非受控状态以及必需的无障碍部件。
- 按 shadcn 风格实现:
- 阅读 references/authoring-patterns.md。
- 导出由源代码拥有的命名部件,并提供
data-slot、className合并、属性/ref 透传以及最少的行为属性。
- 完成前进行检查:
- 使用 references/review-checklist.md。
- 在适用时验证类型检查、lint、故事/浏览器行为、键盘支持、焦点、无障碍名称和响应式状态。
强制规则
- 优先使用复合部件和
children,而非属性繁多的包装器 API。如果命名子组件能更好地表达相同结构,就不要创建title、description、actions、icon、isLoading或布局属性。 - 将可接受的属性范围限定为:DOM 属性、
className、children、项目原语基础的元素替换属性(Radix 使用asChild,Base UI 使用render)、受控状态、事件处理程序、无障碍属性,以及有意设置的变体(例如variant或size)。 - 对话框、菜单、弹出层、标签页、选择器、工具提示、组合框、手风琴和焦点循环等复杂行为,应使用现有的无障碍原语。
- 保留原语契约。自定义插槽子元素必须展开传入的属性,并根据项目使用的 React 版本支持 ref。
- 为每个导出的部件添加
data-slot,并在有助于样式设置和测试时添加状态/变体数据属性。 - 除非部件之间必须协调,否则让状态保持在本地。仅在复合协调时使用作用域上下文;必需部件在根组件之外使用时,应明确报错。
- 仅当组件使用钩子、事件、浏览器 API 或仅限客户端的原语时,才添加
"use client"。 - 不要通过调用方无法检查或覆盖的便捷默认值,隐藏必需的无障碍支持。
评论
支持 Markdown