关于 components-build
面向 React 组件及组件库开发者的规范参考 skill,包含 16 类规则,覆盖组合、无障碍、状态、类型、样式、文档和分发。
主要功能
- 01涵盖 16 类组件规则
- 02提供可组合组件结构指导
- 03说明无障碍与键盘交互实践
- 04涵盖受控与非受控状态模式
- 05提供样式、主题和分发指导
适用场景
- 01规划 React 组件库的 API
- 02实现键盘与 ARIA 支持
- 03选择组件组合和状态模式
- 04准备组件文档与分发
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nolly-studio/ components-build-skill --skill components-build安装后在 Claude Code 中输入/components-build确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mdaccessibility.mdas-child.mdcomposition.mddata-attributes.mddefinitions.mddesign-tokens.mddocumentation.mdmarketplaces.mdnpm.mdoverview.mdpolymorphism.mdprinciples.mdregistry.mdstate.mdstyling.mdtypes.md详细介绍
Components.build 规范
构建现代、可组合且无障碍的 UI 组件的全面指南。包含 16 个规则类别,涵盖从核心原则到分发的所有内容,由 Hayden Bleasel 和 shadcn 合著。
适用场景
在以下情况下参考这些指南:
- 创建新的 React 组件或组件库
- 设计组件 API 和属性接口
- 实现无障碍功能(键盘、ARIA、焦点管理)
- 构建可组合的组件架构
- 使用 Tailwind CSS 和 CVA 为组件添加样式
- 将组件发布到注册表或 npm
按优先级划分的规则类别
| 优先级 | 类别 | 重点 | 前缀 |
|---|---|---|---|
| 1 | 概览 | 规范范围和目标 | overview |
| 2 | 原则 | 核心设计理念 | principles |
| 3 | 定义 | 常见术语 | definitions |
| 4 | 组合 | 拆分复杂组件 | composition |
| 5 | 无障碍 | 键盘、屏幕阅读器、ARIA | accessibility |
| 6 | 状态 | 受控/非受控模式 | state |
| 7 | 类型 | TypeScript 属性和接口 | types |
| 8 | 多态 | 使用 as 属性切换元素 | polymorphism |
| 9 | As-Child | Radix Slot 组合模式 | as-child |
| 10 | 数据属性 | data-state 和 data-slot | data-attributes |
| 11 | 样式 | Tailwind CSS、cn 工具、CVA | styling |
| 12 | 设计令牌 | CSS 变量和主题 | design-tokens |
| 13 | 文档 | 组件文档 | documentation |
| 14 | 注册表 | 组件注册表 | registry |
| 15 | NPM | 发布到 npm | npm |
| 16 | 市场 | 组件市场 | marketplaces |
快速参考
1. 概览
overview- 规范范围、目标和理念
2. 原则
principles- 可组合性、无障碍、可定制性、透明度
3. 定义
definitions- 常见术语(原始组件、复合组件、无头组件等)
4. 组合
composition-root- 使用 Context 共享状态的根组件composition-item- 项目包装组件composition-trigger- 交互式触发组件composition-content- 内容展示组件composition-export- 命名空间导出模式
5. 无障碍
accessibility-semantic-html- 使用恰当的 HTML 元素accessibility-keyboard- 完整支持键盘导航accessibility-aria- 正确使用 ARIA 角色、状态和属性accessibility-focus- 焦点管理与恢复accessibility-live-regions- 屏幕阅读器播报accessibility-contrast- 色彩对比度要求
6. 状态
state-uncontrolled- 内部状态管理state-controlled- 委托外部状态管理state-controllable- 使用 useControllableState 同时支持两种模式
7. 类型
types-extend-html- 扩展原生 HTML 属性types-export- 导出供使用者使用的属性类型types-single-element- 一个组件包装一个元素
8. 多态
polymorphism-as-prop- 更改渲染的元素类型polymorphism-typescript- 类型安全的多态组件polymorphism-defaults- 语义化元素默认值
9. As-Child
as-child-slot- 使用 Radix Slot 合并属性as-child-composition- 与子组件组合
10. 数据属性
data-attributes-state- 使用data-state设置状态样式data-attributes-slot- 使用data-slot定位子组件
11. 样式
styling-cn-utility- 结合使用 clsx 和 tailwind-mergestyling-order- 基础 → 变体 → 条件样式 → 用户覆盖styling-cva- 使用 Class Variance Authority 实现变体styling-css-variables- 使用 CSS 变量设置动态值
12. 设计令牌
design-tokens-css-variables- 将令牌定义为 CSS 变量design-tokens-theming- 支持浅色/深色模式和主题
13. 文档
documentation-props- 使用 JSDoc 记录所有 propsdocumentation-examples- 提供用法示例
14. 注册表
registry-structure- 注册表文件结构registry-schema- 组件元数据架构
15. NPM
npm-package-json- 包配置npm-exports- 模块导出
16. 市场
marketplaces-distribution- 组件分发策略
如何使用
阅读各个规则文件,了解详细说明和代码示例:
rules/composition/SKILL.md
rules/accessibility/SKILL.md
rules/styling/SKILL.md
每个规则文件包含:
- 简要说明其重要性
- 错误代码示例及说明
- 正确代码示例及说明
- 最佳实践和常见陷阱
完整汇编文档
如需查看包含所有展开规则的完整指南:AGENTS.md
核心原则
- 组合优于配置 - 将组件拆分为可组合的子组件
- 默认支持无障碍 - 这不是事后考虑的事项,而是一项要求
- 单元素包装 - 每个组件包装一个 HTML 元素
- 扩展 HTML 属性 - 始终扩展原生元素 props
- 导出类型 - 使消费者能够使用 props 类型
- 支持两种状态模式 - 受控和非受控
- 智能合并类名 - 使用
cn()工具和 tailwind-merge
作者
共同创作:
- Hayden Bleasel (@haydenbleasel)
- shadcn (@shadcn)
改编为 AI 技能:
- Jordan Gilliam (@nolansym)
基于 components.build 规范。
评论
支持 Markdown