Claude Code Skills 实战:把重复任务变成可复用的技能包
你每次让 Claude Code 生成 CRUD,都要重复差不多的 Prompt——“参照 UserController 风格,包含 Entity、Mapper、Service、Controller、DTO,做完跑测试”。这篇文章教你用 Skill 把这套流程固化下来——以后说"为 xx 表生成 CRUD"就够了。
Skill 是什么
Skill 是一个 Markdown 文件,放在项目的 .claude/skills/ 目录下。它定义了一类任务的执行流程——什么时候触发、按什么步骤做、有什么注意事项。
Claude Code 在对话启动时自动加载项目里的所有 Skill,遇到匹配的任务就按你定义的流程执行。
它本质上就是把你的 Prompt 模板 和 操作规范 打包成了一个可复用的文件。
创建你的第一个 Skill
假设你的 Java 项目经常要生成 CRUD 代码。创建一个标准化的 CRUD 生成 Skill。
第一步:建目录和文件
在项目根目录下创建:
.claude/skills/java-crud/SKILL.md
第二步:写 SKILL.md
---
name: java-crud-generator
description: 为 MyBatis-Plus 项目生成完整 Java CRUD 代码
---
# Java CRUD Generator
## 何时使用
- 用户说"生成 CRUD"、"创建新模块"、"新建实体"
- 用户提到具体表名并要求生成代码
## 执行步骤
1. 如果用户没提供表名和字段,先向用户确认
2. 读取 CLAUDE.md 了解技术栈和编码规范
3. 参照项目里已有的 Controller 确定代码风格
4. 按此顺序生成:
Entity → Mapper → Service + ServiceImpl →
Controller → SaveDTO、UpdateDTO、QueryDTO、VO
5. 所有代码必须符合 CLAUDE.md 里的规范
6. 生成完毕后提示用户运行测试验证
## 注意事项
- 使用构造器注入,禁止 @Autowired
- MyBatis-Plus 用 LambdaQueryWrapper
- 统一返回 Result<T>,分页返回 PageResult<T>
- 时间字段用 LocalDateTime,金额用 BigDecimal
文件分两部分:--- 包裹的元数据(name 和 description 必填),以及下面的执行指令。
description 决定了 Skill 何时被触发。Claude Code 根据 description 来判断当前任务是否匹配这个 Skill。description 要写清楚"用户说了什么才触发",而不是简单的分类标签。写得太模糊(比如只写"代码生成")可能导致 Skill 永远不会被自动激活。
第三步:验证 Skill 是否生效
保存文件后重启 Claude Code(或新开一个对话),输入:
> 你加载了哪些 Skill
如果看到 java-crud-generator 出现在列表中,说明 Skill 生效了。也可以直接说"为 xxx 表生成 CRUD",看它是否按你定义的流程执行。
效果对比
没有 Skill 的时候,每次都要写这样的 Prompt:
> 为 sys_product 表生成一套完整的 CRUD。
包括 Entity、Mapper、Service、ServiceImpl、Controller、
SaveDTO、UpdateDTO、QueryDTO、VO。
参照 DeptController 的代码风格。
用构造器注入不要 @Autowired,MyBatis-Plus 用 LambdaQueryWrapper。
统一返回 Result<T>,分页用 PageResult<T>。
时间用 LocalDateTime,金额用 BigDecimal。
做完跑 mvn test 验证。
有了 Skill 之后,只需要一句话:
> 为 sys_product 表生成 CRUD
Claude Code 自动读取 Skill,按你定义的步骤执行:确认表结构 → 读 CLAUDE.md 了解规范 → 参照已有代码确定风格 → 按顺序生成 → 提醒跑测试。
Skill 的目录结构
.claude/skills/
├── java-crud/
│ └── SKILL.md # CRUD 生成
├── code-review/
│ └── SKILL.md # 代码审查
└── write-tests/
└── SKILL.md # 单元测试生成
每个 Skill 一个子目录,里面一个 SKILL.md(文件名必须叫 SKILL.md)。项目级的 .claude/skills/ 可以随 Git 提交,团队成员共享。
用户级 Skills:如果你想让某个 Skill 在所有项目中生效,放到 ~/.claude/skills/ 下。比如通用的 Code Review 规范、通用的测试生成模板,可以放用户级。跟某个项目技术栈强相关的(比如 MyBatis-Plus CRUD)放项目级。
还能用 Skill 做什么
Code Review Skill:
---
name: java-code-review
description: 按团队标准审查 Java 代码变更
---
## 执行步骤
1. 用 git diff 查看未提交的变更
2. 重点检查:空指针风险、事务边界、SQL 注入、异常处理
3. 输出按严重程度分三级:高危(必须改)/ 建议 / 风格
4. 每个问题给出具体的修复代码
单元测试生成 Skill:
---
name: unit-test-generator
description: 为 Service 类生成完整单元测试
---
## 执行步骤
1. 先读取目标 Service 类,分析所有 public 方法
2. 为每个方法生成正常/异常/边界三类用例
3. 使用 Mockito,Mock 所有外部依赖
4. 使用 @ExtendWith(MockitoExtension.class)
5. 生成完后跑 mvn test -Dtest=xxxTest 验证
注意事项
- Skill 不是万能的:它定义的是流程,不是魔法。任务太复杂的话 Skill 也帮不了你——但它能让 90% 的重复任务变得简单。
- 保持简单:每个 Skill 专注一类任务,不要试图把整个项目文档塞进去。
- 随项目提交:
.claude/skills/放 Git 里,新人拉代码就能用。
总结
- Skill = Prompt 模板 + 操作规范,打包成可复用文件
- 放在
.claude/skills/<名称>/SKILL.md - 元数据写 name 和 description,正文写执行步骤
- 随 Git 提交,团队共享
- 一次写好,以后同类任务一句话触发
把最常重复的那几个任务(CRUD、测试、审查)做成 Skill,每天能省不少打字时间。
系列文章:
- 第一篇:用 CC Switch 接入 DeepSeek,API 费用降低 90%
- 第二篇:CLAUDE.md 写法详解
- 第三篇:10 个必学斜杠命令
- 第四篇:2026 安装教程(原生安装器)
- 第五篇:第一次对话——5 个实战场景
- 第六篇:Prompt 公式与模板
- 第七篇:权限系统配置实战
- 第八篇:Haiku / Sonnet / Opus 模型对比
- 第九篇(本文):Skills 实战——创建可复用技能包
- 下一篇:MCP 实战——连接数据库,AI 自动读表生成代码
更多推荐



所有评论(0)