Appearance
Claude Code Skills实战:从写第一个到避开所有坑
每次让Claude Code做代码审查都要重复说一遍规范?这些东西不应该每次都重复说,应该写下来让它自己记住。这就是Skills要解决的问题——把你的经验封装成Claude Code能调用的技能包,写一次,用无数次。
Skills是什么?
类比:MCP给了Claude一间专业厨房,锅碗瓢盆一应俱全;但光有厨房不够,你还得给它菜谱。Skills就是那份菜谱。
常见误解
Skills不是"只不过是一个markdown文件",而是文件夹——可以包含脚本、资源文件、参考文档、模板。
Skills完整结构
my-skill/
├── SKILL.md # 核心说明(必须有)
├── template.md # 模板,让Claude填充
├── references/
│ └── api.md # 参考文档(按需读取,不占常驻上下文)
└── scripts/
└── validate.sh # Claude可以执行的脚本与其他功能的边界
| 功能 | 作用 |
|---|---|
| MCP | 给Claude新的动作能力(连接浏览器、数据库) |
| Skills | 给Claude一套工作方法(怎么做一件事) |
| Hooks | 强制约束和审计(做完之后自动检查) |
| Subagent | 隔离执行环境(独立跑一个任务) |
💡 如果你之前用过
.claude/commands/下的自定义命令——它已经合并进Skills了。旧命令还能用,但新建建议用skills/目录。
内置Skills:开箱即用
/simplify — 自动代码审查+重构
每次写完代码就跑一遍。并行启动三个审查Agent:
- 代码复用审查(找重复代码)
- 代码质量审查(查逻辑错误和边界情况)
- 效率审查(找性能瓶颈)
bash
/simplify # 审查所有最近变更
/simplify focus on error handling # 聚焦错误处理相当于写完代码自动Code Review + 自动重构。
/batch — 大规模并行变更
把大任务拆成5-30个独立单元,每个在隔离的Git Worktree里并行执行。
适用场景:
- 框架迁移
- API版本升级
- 给整个项目加TypeScript类型
bash
/batch migrate src/ from Jest to Vitest
/batch add TypeScript types to all files/test — 生成测试
分析代码后生成vitest或jest测试,自动补充必要的mock。
bash
/test generate tests for utils.js自定义Skill编写教程
步骤一:创建Skill目录
bash
# 在项目skills目录下创建
mkdir -p .claude/skills/my-code-review步骤二:编写SKILL.md
markdown
# SKILL.md
## 名称
代码审查技能
## 触发条件
当用户要求代码审查时激活
## 工作流程
1. 读取代码文件
2. 检查命名规范
3. 检查硬编码密钥
4. 检查测试覆盖
5. 生成审查报告
## 输出格式
使用结构化报告格式步骤三:添加模板(可选)
markdown
# template.md
## 代码审查报告
### 项目:{{project_name}}
### 日期:{{date}}
### 发现的问题
{{issues}}
### 建议
{{recommendations}}步骤四:添加参考文档(可选)
markdown
# references/coding-standards.md
## 命名规范
- 变量:camelCase
- 常量:UPPER_SNAKE_CASE
- 类名:PascalCase避坑指南
| 坑 | 解决方案 |
|---|---|
| SKILL.md写太长 | 参考文档放references/,Claude按需读取 |
| 假设Claude会读所有文件 | 明确指定必须读取的文件 |
| 路径写死 | 使用相对路径或环境变量 |
| 缺少错误处理 | 预设常见错误的处理方式 |
最佳实践
- 从内置Skills开始:先用 /simplify、/batch、/test,理解Skill的工作方式
- 小步迭代:先写简单的Skill,不断完善
- 保持专注:一个Skill做一件事,不要贪多
- 善用模板:减少Claude的输出偏差
关键词:Claude Code, Skills, MCP, Hooks, Subagent, 自动化, 代码审查, 测试生成
