关于 clean-code
面向编码 Agent 的技能,通过简洁代码原则、依赖检查和完成前验证,引导其编写易维护的代码,适用于修改软件项目的任务。
主要功能
- 01单一职责与简洁原则
- 02命名和函数规范
- 03编辑前检查依赖
- 04完成前自检与测试
- 05按 Agent 分类的验证脚本
适用场景
- 01直接实现用户请求的功能
- 02修复问题并检查依赖影响
- 03完成任务前复核代码改动
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill clean-code安装后在 Claude Code 中输入/clean-code确认已加载。
详细介绍
Clean Code - 实用主义 AI 编码规范
关键技能 —— 务必做到简洁、直接、聚焦解决方案。
核心原则
| 原则 | 规则 |
|---|---|
| SRP | 单一职责——每个函数/类只做一件事 |
| DRY | 不要重复自己——提取重复内容并复用 |
| KISS | 保持简单——采用能解决问题的最简单方案 |
| YAGNI | 你不会需要它——不要构建用不到的功能 |
| Boy Scout | 让代码比你接手时更整洁 |
命名规则
| 元素 | 约定 |
|---|---|
| 变量 | 清楚表达意图:用 userCount,而不是 n |
| 函数 | 动词 + 名词:用 getUserById(),而不是 user() |
| 布尔值 | 采用疑问形式:isActive、hasPermission、canEdit |
| 常量 | SCREAMING_SNAKE:MAX_RETRY_COUNT |
规则: 如果需要注释来解释名称,就重命名它。
函数规则
| 规则 | 描述 |
|---|---|
| 简短 | 最多 20 行,理想情况下为 5–10 行 |
| 只做一件事 | 做好一件事 |
| 单一层级 | 每个函数只包含一个抽象层级 |
| 少参数 | 最多 3 个参数,最好为 0–2 个 |
| 无副作用 | 不要意外修改输入 |
代码结构
| 模式 | 应用方式 |
|---|---|
| 守卫子句 | 对边缘情况提前返回 |
| 扁平优于嵌套 | 避免深层嵌套(最多 2 层) |
| 组合 | 将小函数组合在一起 |
| 就近放置 | 让相关代码彼此靠近 |
AI 编码风格
| 情况 | 行动 |
|---|---|
| 用户提出功能需求 | 直接实现 |
| 用户报告 Bug | 修复它,不要解释 |
| 需求不明确 | 提问,不要假设 |
反模式(不要这样做)
| ❌ 模式 | ✅ 修正方式 |
|---|---|
| 每行都写注释 | 删除显而易见的注释 |
| 只有一行代码的辅助函数 | 直接内联代码 |
| 为 2 个对象创建工厂 | 直接实例化 |
| 只有 1 个函数的 utils.ts | 将代码放到使用它的地方 |
| “首先我们导入……” | 直接写代码 |
| 深层嵌套 | 使用守卫子句 |
| 魔法数字 | 使用命名常量 |
| 上帝函数 | 按职责拆分 |
🔴 编辑任何文件之前(先思考!)
更改文件之前,先问自己:
| 问题 | 原因 |
|---|---|
| 哪些文件导入了这个文件? | 它们可能会出问题 |
| 这个文件导入了什么? | 接口可能发生变化 |
| 哪些测试覆盖了这里? | 测试可能会失败 |
| 这是共享组件吗? | 可能影响多个地方 |
快速检查:
File to edit: UserService.ts
└── Who imports this? → UserController.ts, AuthController.ts
└── Do they need changes too? → Check function signatures
🔴 规则: 在同一任务中编辑该文件及其所有依赖文件。 🔴 绝不要留下损坏的导入或遗漏的更新。
总结
| 要做 | 不要做 |
|---|---|
| 直接编写代码 | 编写教程 |
| 让代码自我说明 | 添加显而易见的注释 |
| 立即修复 Bug | 先解释修复方法 |
| 内联小内容 | 创建不必要的文件 |
| 清楚地命名事物 | 使用缩写 |
| 保持函数简短 | 编写 100 行以上的函数 |
记住:用户想要的是可运行的代码,而不是编程课程。
🔴 完成前自检(必须执行)
在说“任务完成”之前,先确认:
| 检查项 | 问题 |
|---|---|
| ✅ 目标达成? | 我是否完全按照用户的要求执行? |
| ✅ 文件已编辑? | 我是否修改了所有必要的文件? |
| ✅ 代码可用? | 我是否测试/验证了这项更改? |
| ✅ 没有错误? | Lint 和 TypeScript 是否通过? |
| ✅ 没有遗漏? | 是否遗漏了任何边缘情况? |
🔴 规则: 如果任何一项检查未通过,必须先修复再完成。
验证脚本(必须执行)
🔴 关键: 每个 Agent 完成工作后,只运行自己技能对应的脚本。
Agent → 脚本映射
| Agent | 脚本 | 命令 |
|---|---|---|
| frontend-specialist | UX 审计 | python ~/.claude/skills/frontend-design/scripts/ux_audit.py . |
| frontend-specialist | 无障碍检查 | python ~/.claude/skills/frontend-design/scripts/accessibility_checker.py . |
| backend-specialist | API 验证器 | python ~/.claude/skills/api-patterns/scripts/api_validator.py . |
| mobile-developer | 移动端审计 | python ~/.claude/skills/mobile-design/scripts/mobile_audit.py . |
| database-architect | Schema 校验 | python ~/.claude/skills/database-design/scripts/schema_validator.py . |
| security-auditor | 安全扫描 | python ~/.claude/skills/vulnerability-scanner/scripts/security_scan.py . |
| seo-specialist | SEO 检查 | python ~/.claude/skills/seo-fundamentals/scripts/seo_checker.py . |
| seo-specialist | GEO 检查 | python ~/.claude/skills/geo-fundamentals/scripts/geo_checker.py . |
| performance-optimizer | Lighthouse | python ~/.claude/skills/performance-profiling/scripts/lighthouse_audit.py <url> |
| test-engineer | 测试运行器 | python ~/.claude/skills/testing-patterns/scripts/test_runner.py . |
| test-engineer | Playwright | python ~/.claude/skills/webapp-testing/scripts/playwright_runner.py <url> |
| Any agent | Lint 检查 | python ~/.claude/skills/lint-and-validate/scripts/lint_runner.py . |
| Any agent | 类型覆盖率 | python ~/.claude/skills/lint-and-validate/scripts/type_coverage.py . |
| Any agent | i18n 检查 | python ~/.claude/skills/i18n-localization/scripts/i18n_checker.py . |
❌ 错误:
test-engineer运行ux_audit.py✅ 正确:frontend-specialist运行ux_audit.py
🔴 脚本输出处理(读取 → 总结 → 询问)
运行校验脚本时,你必须:
- 运行脚本 并捕获所有输出
- 解析输出 — 识别错误、警告和通过项
- 按以下格式向用户总结:
## Script Results: [script_name.py]
### ❌ Errors Found (X items)
- [File:Line] Error description 1
- [File:Line] Error description 2
### ⚠️ Warnings (Y items)
- [File:Line] Warning description
### ✅ Passed (Z items)
- Check 1 passed
- Check 2 passed
**Should I fix the X errors?**
- 等待用户确认 后再修复
- 修复后 → 重新运行脚本以确认
🔴 违规: 运行脚本却忽略输出 = 任务失败。 🔴 违规: 未经询问就自动修复 = 不允许。 🔴 规则: 始终先读取输出 → 总结 → 询问 → 然后再修复。
评论
支持 Markdown