# AGENTS.md · Kole UI 执行约定 > **给在此仓库工作的 AI 模型**:这个文件是硬约束,不是建议。开始任何任务前先读完。 > 人类贡献者请看 [CONTRIBUTING.md](./CONTRIBUTING.md);任务清单看 [ROADMAP.md](./ROADMAP.md)。 --- ## 一 · 这个仓库是什么 **Kole UI Design System** —— B 端中后台设计系统,**两个平台 × 六个端**(详见 [PLATFORMS.md](./PLATFORMS.md)): - **PC 平台**:103 个中后台组件 × 5 端(H5 原生 / React / Vue 2 / Vue 3 / CSS) - **移动端平台**:触屏优先组件 × 6 端(上述 5 端 + **uni-app**),与 PC 物理隔离 - **PC × uni-app 端**:把 PC 组件清单以 uni-app 实现(试点 3 / 103) | 项 | 值 | |---|---| | PC 组件 | 103 | | PC 端实现文件 | 515(`frameworks/`,103 × 5) | | PC 契约 JSON | 103(`.design_library/kole-ui/components/`) | | 设计令牌 | 75(`colors_and_type.css`)+ 移动端 15(`--kole-m-*`,@import PC 令牌) | | i18n 字典 | 330 条(`site/i18n.js`) | | PC 测试断言 | 1405 通过 / N/A 50(`tests/`,103 页) | | **移动端组件** | **47**(导航 6 · 反馈 12 · 通用 5 · 数据展示 8 · 数据录入 16) | | **移动端端实现文件** | **282**(`frameworks-mobile/`,47 × 6 端) | | **移动端测试断言** | **804 通过 / N/A 10**(`tests/mobile/`,47 页,含触控行为断言) | | **PC × uni-app 试点** | **3**(`frameworks-uniapp-pc/`,button / input / card) | | 回归通过率 | **PC 100%(八次连跑一致)· 移动端 100%** | **新增组件/端之前先读 [PLATFORMS.md](./PLATFORMS.md)** —— 那里有两轴模型、目录命名映射、新增流程与隔离规则。 --- ## 二 · 六条铁律(违反即返工) ### 1. 零运行时依赖 不引入 npm **运行时**依赖。 ```bash # 验收:这条必须在所有改动后通过 # 注意:P2 之前 package.json 不存在,此时应输出 "n/a (no package.json yet)" 而非报错 node -e " const fs=require('fs'); if(!fs.existsSync('package.json')) { console.log('n/a (no package.json yet)'); process.exit(0) } const p=require('./package.json'); const deps=Object.keys(p.dependencies||{}); if(deps.length) { console.error('FAIL: 运行时依赖 ' + deps.join(', ')); process.exit(1) } console.log('zero-dep OK'); " ``` `devDependencies` 可用(构建/测试工具),但要在 README 注明"CI 专用"。 ### 2. `build-site.ps1` 必须 ASCII-only PowerShell 5.1 按 ANSI 读无 BOM 文件 —— 脚本里出现非 ASCII 字面量会被**静默损坏**。 - 中文文案放 UTF-8 模板(`tests/_template.html` 等) - 输出用 `[System.IO.File]::WriteAllText($path, $content, [System.Text.UTF8Encoding]::new($false))` 写无 BOM - `build-site.ps1` 只能在 Windows 跑;CI 需要构建时改用 `runs-on: windows-latest` #### 构建链是两步,必须按序执行 ```bash npm run build:site # 等价于下面两步 # 1) powershell -NoProfile -ExecutionPolicy Bypass -File build-site.ps1 # 2) node tools/precompute.mjs ``` **第 2 步不能省** —— `build-site.ps1` 会把 `data.js` 重写回全量(2026-09-20 实测 1166 KB), `tools/precompute.mjs` 才做瘦身(同次实测 → 122 KB,把 css 源码移到 `site/sources//css.txt`)。 只跑第 1 步会导致:`data.js` 变大、且 `sourcesRef` 字段消失 → 详情页代码区缺 CSS tab。 单独重跑只需 `npm run precompute`。 ### 3. 改结构要改模板 `tests/.html` × 103 是**生成物**。改它们没用 —— 下次重跑会被覆盖。 | 想改 | 改哪里 | |---|---| | 测试页结构 | `tests/_template.html` → 重跑 `run-tests.ps1` | | 测试总览页 | `tests/_index_template.html` | | 测试断言逻辑 | `tests/_runtime.js`(跨帧断言引擎) | | 文档站 | `site/app.js` | ### 4. 改样式要改内嵌层 **演示页的内嵌 `