diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..ceec0ff --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,216 @@ +# AGENTS.md · Aurora Admin 执行约定 + +> **给在此仓库工作的 AI 模型**:这个文件是硬约束,不是建议。开始任何任务前先读完。 +> 人类贡献者请看 [CONTRIBUTING.md](./CONTRIBUTING.md);任务清单看 [ROADMAP.md](./ROADMAP.md)。 + +--- + +## 一 · 这个仓库是什么 + +**Aurora Admin Design System** —— B 端中后台设计系统,**79 组件 × 5 端实现**(H5 / React / Vue 2 / Vue 3 / CSS),含完整文档站、设计契约、回归体系。 + +| 项 | 值 | +|---|---| +| 组件 | 79 | +| 端实现文件 | 395(`frameworks/`,79 × 5) | +| 契约 JSON | 79(`.design_library/aurora-admin/components/`) | +| 设计令牌 | 75(`colors_and_type.css`) | +| i18n 字典 | 330 条(`site/i18n.js`) | +| 测试断言 | 961(`tests/`,12.2/页) | +| 回归通过率 | **100%**(八次连跑一致) | + +--- + +## 二 · 六条铁律(违反即返工) + +### 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` + +### 3. 改结构要改模板 + +`tests/.html` × 79 是**生成物**。改它们没用 —— 下次重跑会被覆盖。 + +| 想改 | 改哪里 | +|---|---| +| 测试页结构 | `tests/_template.html` → 重跑 `run-tests.ps1` | +| 测试总览页 | `tests/_index_template.html` | +| 测试断言逻辑 | `tests/_runtime.js`(跨帧断言引擎) | +| 文档站 | `site/app.js` | + +### 4. 改样式要改内嵌层 + +**演示页的内嵌 `