名称: clean-code
描述: 务实的编码标准 - 简洁、直接、不做过度设计、不写不必要的注释
允许工具: Read, Write, Edit
版本: 2.0
priority: CRITICAL
关键技能 - 保持简洁、直接,并专注于解决方案。
| 原则 | 规则 |
|---|---|
| SRP | 单一职责 - 每个函数/类只做一件事 |
| DRY | 不要重复自己 - 提取重复代码,实现复用 |
| KISS | 保持简单 - 采用可行的最简单方案 |
| YAGNI | 你不需要它 - 不要构建未使用的功能 |
| 童子军规则 | 让代码比你发现时更整洁 |
| 元素 | 约定 |
|---|---|
| 变量 | 揭示意图:用 userCount 而非 n |
| 函数 | 动词 + 名词:用 getUserById() 而非 user() |
| 布尔值 | 疑问形式:isActive, hasPermission, canEdit |
| 常量 | 全大写蛇形命名:MAX_RETRY_COUNT |
规则: 如果需要注释来解释一个名称,那就重命名它。
| 规则 | 描述 |
|---|---|
| 短小 | 最多 20 行,理想情况 5-10 行 |
| 单一职责 | 做好一件事 |
| 单一抽象层级 | 每个函数只包含一个抽象层级 |
| 参数要少 | 最多 3 个参数,最好 0-2 个 |
| 无副作用 | 不要意外地修改输入参数 |
| 模式 | 应用场景 |
|---|---|
| 卫语句 | 对边界情况使用提前返回 |
| 扁平化优于嵌套 | 避免深层嵌套(最多 2 层) |
| 组合 | 将小函数组合在一起 |
| 就近原则 | 将相关代码放在一起 |
| 场景 | 行动 |
|---|---|
| 用户要求功能 | 直接编写代码 |
| 用户报告错误 | 直接修复,无需解释 |
| 需求不明确 | 主动询问,不要假设 |
| ❌ 反模式 | ✅ 修正方案 |
|---|---|
| 每行都加注释 | 删除显而易见的注释 |
| 为单行代码创建辅助函数 | 内联该代码 |
| 仅为 2 个对象创建工厂 | 直接实例化 |
utils.ts 中只有一个函数 |
将代码放在使用它的地方 |
| "首先我们导入..." | 直接写代码 |
| 深层嵌套 | 使用卫语句 |
| 魔法数字 | 使用命名常量 |
| 上帝函数 | 按职责拆分 |
在修改文件前,问自己:
| 问题 | 原因 |
|---|---|
| 哪些文件导入了此文件? | 它们可能会出错 |
| 此文件导入了哪些文件? | 接口可能改变 |
| 有哪些测试覆盖了它? | 测试可能会失败 |
| 这是一个共享组件吗? | 会影响多个地方 |
快速检查:
要编辑的文件:UserService.ts
└── 谁导入了它? → UserController.ts, AuthController.ts
└── 它们也需要修改吗? → 检查函数签名
🔴 规则: 在同一任务中编辑文件及其所有依赖文件。
🔴 切勿留下损坏的导入或遗漏的更新。
| 要做 | 不要做 |
|---|---|
| 直接编写代码 | 写教程 |
| 让代码自文档化 | 添加显而易见的注释 |
| 立即修复错误 | 先解释如何修复 |
| 内联小东西 | 创建不必要的文件 |
| 命名清晰 | 使用缩写 |
| 保持函数短小 | 编写 100+ 行的函数 |
记住:用户想要的是能工作的代码,而不是编程课。
在说“任务完成”之前,请确认:
| 检查项 | 问题 |
|---|---|
| ✅ 目标达成? | 我是否准确完成了用户的要求? |
| ✅ 文件已编辑? | 我是否修改了所有必要的文件? |
| ✅ 代码能工作? | 我是否测试/验证了更改? |
| ✅ 没有错误? | 代码检查和 TypeScript 是否通过? |
| ✅ 没有遗漏? | 是否遗漏了任何边界情况? |
🔴 规则: 如果任何一项检查失败,请在完成前修复。
🔴 关键: 每个智能体在完成工作后只运行其自身技能的脚本。
| 智能体 | 脚本 | 命令 |
|---|---|---|
| 前端专家 | UX 审计 | python .agent/skills/frontend-design/scripts/ux_audit.py . |
| 前端专家 | 无障碍检查 | python .agent/skills/frontend-design/scripts/accessibility_checker.py . |
| 后端专家 | API 验证器 | python .agent/skills/api-patterns/scripts/api_validator.py . |
| 移动开发者 | 移动端审计 | python .agent/skills/mobile-design/scripts/mobile_audit.py . |
| 数据库架构师 | 模式验证 | python .agent/skills/database-design/scripts/schema_validator.py . |
| 安全审计员 | 安全扫描 | python .agent/skills/vulnerability-scanner/scripts/security_scan.py . |
| SEO 专家 | SEO 检查 | python .agent/skills/seo-fundamentals/scripts/seo_checker.py . |
| SEO 专家 | GEO 检查 | python .agent/skills/geo-fundamentals/scripts/geo_checker.py . |
| 性能优化师 | Lighthouse | python .agent/skills/performance-profiling/scripts/lighthouse_audit.py <url> |
| 测试工程师 | 测试运行器 | python .agent/skills/testing-patterns/scripts/test_runner.py . |
| 测试工程师 | Playwright | python .agent/skills/webapp-testing/scripts/playwright_runner.py <url> |
| 任何智能体 | 代码检查 | python .agent/skills/lint-and-validate/scripts/lint_runner.py . |
| 任何智能体 | 类型覆盖率 | python .agent/skills/lint-and-validate/scripts/type_coverage.py . |
| 任何智能体 | 国际化检查 | python .agent/skills/i18n-localization/scripts/i18n_checker.py . |
❌ 错误示例:
test-engineer运行ux_audit.py
✅ 正确示例:frontend-specialist运行ux_audit.py
运行验证脚本时,你必须:
## 脚本结果:[script_name.py]
### ❌ 发现的错误(X 项)
- [文件:行号] 错误描述 1
- [文件:行号] 错误描述 2
### ⚠️ 警告(Y 项)
- [文件:行号] 警告描述
### ✅ 通过(Z 项)
- 检查项 1 通过
- 检查项 2 通过
**需要我修复这 X 个错误吗?**
🔴 违规行为: 运行脚本但忽略输出 = 任务失败。
🔴 违规行为: 未经询问自动修复 = 不允许。
🔴 规则: 始终遵循:读取输出 → 总结 → 询问 → 然后修复。