文档

研发与贡献指南

整理自仓库根目录的 AGENTS.md。包管理器版本以 packageManager(pnpm 11.17.0)为准,命令均在仓库根目录执行。

开始任务

  1. 运行 git status --short,保留已有改动;读取 package.json、目标模块与测试。
  2. 确认目录职责,搜索真实定义、同类实现、调用方、类型与公开导出。
  3. 用简短说明明确目标、修改范围和验收场景。
  4. 按“实现 → 直接调用方 → 测试”展开。

修改边界

  • 行为优先复用 headless 的公开 API,不在主题组件重复状态机、焦点或浮层能力。
  • 复用已有 Token、CVA 变体和状态;样式限制在目标组件,不改全局样式,不引入旧的 --selrux-ui- 变量。
  • 不臆造包根聚合导出;公开子路径以 package.json 为准。

验证

bash
# 定向测试
pnpm exec vitest run --config vitest.config.ts src/components/button/button.test.tsx

# 行为变更
pnpm test
pnpm typecheck

# 导出、类型、CSS 或产物变化
pnpm build

按影响验证受控/非受控、禁用、加载、空态、错误态、键盘、焦点和可访问名称。测试放在 src/**/*.test.ts(x),tests/fixtures 只放夹具。

编码约定

  • 单一职责;入口编排、实现、类型与工具分离。
  • 新增函数、组件、类型同步职责注释;公开 API 使用 JSDoc/TSDoc。
  • 缺陷修复先复现,再补回归验证;重构保持公开行为不变。
  • 不新增无关依赖,生成物通过已有脚本生成。

依赖与发布

  • 本库独立维护版本与锁文件,消费已发布的产品包;不使用 workspace:、file: 或永久 link:。
  • 调试发布使用唯一预发布版本和 dev 标签,不覆盖版本、不更新 latest。
  • 正式发布和安装验收使用 https://registry.npmjs.org/。
  • 提交、推送、正式发布按授权分别执行。

提交信息

历史提交采用 feat: / fix: / refactor: / chore(scope): / docs(scope): 前缀,早期提交在括号中标注工作区版本号。问题与建议请提交到 GitHub Issues。