把常用 Prompt 做成 Skill 之后,我和 Claude Code 的配合效率直接翻了 3 倍

作者:技术探索家日期:2025/11/27

一个真实故事

去年10月,我手里有个React项目要重构,2000多行的上帝类,看着就头疼。每次让Claude Code帮我优化代码,我都要重复交代一遍:

  • "记得用TypeScript严格模式"
  • "API调用要加错误处理"
  • "组件要符合单一职责原则"

复制粘贴这些要求,少说也得两三分钟。更烦的是,聊了十几轮之后,Claude Code经常会"忘记"我最初的要求,又开始写出不符合规范的代码。

直到我在文档里翻到了Skill功能。

试了一周后,我把那些重复的要求全封装成了几个skill文件。现在只要一句@skill react-refactor,Claude Code立刻就知道该怎么做。那个2000行的类,原本估计要花三天时间重构,最后两个下午就搞定了。

Skill到底是什么

说白了,Skill就是给Claude Code装技能包。

你在.claude/skills/目录下创建一个markdown文件,把常用的提示词、工作流程、代码规范写进去。需要的时候,一句@skill 技能名就能调用。就像游戏里给角色装备不同技能,需要输出的时候装输出技能,需要坦克的时候装防御技能。

来看个最简单的例子:

1---
2title: "React代码审查专家"
3description: "专门审查React代码的质量、性能和最佳实践"
4---
5
6# React代码审查流程
7
8你是一位经验丰富的React代码审查专家。请按以下标准审查代码:
9
10## 审查重点
111. **组件设计**
12   - 单一职责原则
13   - Props类型定义的完整性
14   - 组件拆分的合理性
15
162. **性能优化**
17   - 不必要的重渲染
18   - useMemo/useCallback的使用
19   - 列表渲染的key值
20
213. **代码质量**
22   - TypeScript类型安全
23   - 错误边界处理
24   - 可访问性(a11y)
25
26## 输出格式
27- 问题列表(按严重程度排序)
28- 具体的代码建议
29- 优先级标注(P0/P1/P2)
30

把这个文件保存为.claude/skills/react-review.md,以后审查React代码时,直接@skill react-review就行。Claude Code会严格按照你定义的标准来审查。

为什么手写提示词撑不住了

我之前也是提示词工程师,Notion里存了几十条精心打磨的提示词模板。但用了几个月后,发现这玩法有硬伤:

重复劳动太多每次都要从Notion复制粘贴,有时候还要根据当前项目调整几个词。一天下来光是复制粘贴提示词,就要花半小时。

版本管理混乱今天用的提示词和上周的不一样,效果也不稳定。想回溯"上次那个好用的版本"?抱歉,找不到了。

团队协作是灾难我的好提示词,同事想用?手动发微信。同事改进了?又要手动同步回来。这效率跟石器时代没区别。

AI会遗忘长对话里,Claude Code很容易忘记你最初的要求。聊到第20轮,你发现它又在犯之前说过不要犯的错误。

Skill把这些问题一次性解决了:

  • 版本化:用Git管理,回溯随便
  • 可共享:团队仓库一拉,所有人同步
  • 始终生效:不会因为对话太长而失效

我的第一个Skill:API接口生成器

那个电商项目里,后端给我扔了个100多个接口的Swagger文档。手动对接的话,一个接口要写:

  1. TypeScript类型定义
  2. axios请求函数
  3. 错误处理逻辑
  4. loading状态管理

算了一下,100个接口差不多要30个小时。

我花了1个小时,写了个api-generator的skill:

1---
2title: "API接口代码生成器"
3description: "根据接口文档生成TS类型定义和axios封装"
4version: "1.3.0"
5---
6
7# API代码生成专家
8
9你是一位全栈工程师,擅长前后端接口对接。你的任务是根据API文档生成高质量的TypeScript代码。
10
11## 生成内容
12
13### 1. TypeScript类型定义
14```typescript
15// 请求参数类型
16interface GetUserRequest {
17  userId: string;
18  includeDetails?: boolean;
19}
20
21// 响应数据类型
22interface GetUserResponse {
23  id: string;
24  name: string;
25  email: string;
26  createdAt: string;
27}
28

2. Axios请求函数

1import request from '@/utils/request';
2
3export const getUserAPI = async (
4  params: GetUserRequest
5): Promise<GetUserResponse> => {
6  try {
7    const response = await request.get<GetUserResponse>('/api/user', { params });
8    return response.data;
9  } catch (error) {
10    console.error('获取用户信息失败:', error);
11    throw error;
12  }
13};
14

3. React Hook封装(可选)

1export const useGetUser = (userId: string) => {
2  const [data, setData] = useState<GetUserResponse | null>(null);
3  const [loading, setLoading] = useState(false);
4  const [error, setError] = useState<Error | null>(null);
5
6  useEffect(() => {
7    const fetchData = async () => {
8      setLoading(true);
9      try {
10        const result = await getUserAPI({ userId });
11        setData(result);
12      } catch (err) {
13        setError(err as Error);
14      } finally {
15        setLoading(false);
16      }
17    };
18    fetchData();
19  }, [userId]);
20
21  return { data, loading, error };
22};
23

代码规范

  • 命名遵循驼峰命名法
  • API函数以API结尾
  • Hook函数以use开头
  • 所有异步函数都要有错误处理
  • 导出的类型和函数都要加JSDoc注释

输出格式

  1. 先输出类型定义
  2. 再输出API函数
  3. 如果是常用接口,再生成Hook封装
  4. 最后给出使用示例
1
2有了这个skill,对接一个接口从30分钟缩短到了5分钟。100个接口,前后只花了两天时间就全部搞定。更关键的是,团队里的新人也能用同样的规范生成代码,整个项目的代码风格高度统一。
3
4## 高级玩法:让Skill配合起来干活
5
6用熟了之后,我发现单个skill还不够。真实的开发场景往往需要多个skill配合。
7
8比如我重构老代码时的标准流程:
9
10```bash
11# 第1步:分析代码问题
12@skill code-analyzer src/legacy/UserService.ts
13
14# 第2步:制定重构方案
15@skill refactor-planner
16
17# 第3步:生成测试用例(重构前必须有测试保底)
18@skill test-generator
19
20# 第4步:执行重构
21(手动重构或让Claude Code辅助)
22
23# 第5步:最终代码审查
24@skill code-reviewer
25

这四个skill依次调用,形成了完整的重构工作流。我甚至写了个shell脚本自动执行这个流程:

1#!/bin/bash
2# refactor-workflow.sh
3
4echo "🔍 步骤1/4: 分析代码问题..."
5claude-code @skill code-analyzer $1
6
7read -p "按回车继续..."
8
9echo "📋 步骤2/4: 制定重构方案..."
10claude-code @skill refactor-planner
11
12read -p "按回车继续..."
13
14echo "🧪 步骤3/4: 生成测试用例..."
15claude-code @skill test-generator
16
17read -p "执行测试并确认通过后,按回车继续..."
18
19echo "✅ 步骤4/4: 最终代码审查..."
20claude-code @skill code-reviewer
21

用这个脚本重构过一个2000行的上帝类,拆成了7个职责清晰的小类。测试覆盖率从40%提升到85%,整个过程比想象中顺利很多。

团队共享:把Skill当作基础设施

我们团队现在把skill当作基础设施来管理。创建了一个Git仓库专门存放team-skills:

1team-skills/
2├── frontend/
3   ├── react-review.md          # React代码审查
4   ├── vue-component-gen.md     # Vue组件生成
5   └── css-optimizer.md         # CSS性能优化
6├── backend/
7   ├── api-design.md            # API设计规范
8   ├── database-review.md       # 数据库审查
9   └── security-audit.md       # 安全审计
10└── common/
11    ├── code-cleaner.md          # 代码清理
12    ├── test-generator.md        # 测试生成
13    └── commit-msg.md            # Git提交信息生成
14

每个开发者在本地项目里软链接到这个仓库:

1# 一次性配置
2git clone git@github.com:your-team/team-skills.git ~/.team-skills
3ln -s ~/.team-skills/* .claude/skills/
4

好处立竿见影:

  • 新人友好:入职第一天就有完整的skill库,立刻就能按规范写代码
  • 自动同步:团队更新skill后,所有人git pull就能获取最新版本
  • 代码一致:不管谁写的代码,风格都高度统一

上个月来了个实习生,第二天就能写出符合团队规范的代码。要在以前,至少得培训一周。

Skill和CLAUDE.md是黄金搭档

Skill更强大的玩法,是配合项目根目录的CLAUDE.md一起用。

在CLAUDE.md里定义项目全局规则:

1# 项目上下文
2
3- 技术栈:React 18 + TypeScript 5.0 + Vite 4
4- 代码规范:Airbnb ESLint规则
5- 提交规范:Conventional Commits
6- 状态管理:Zustand(禁止使用Redux)
7
8## 重要约定
9- 所有组件必须有完整的TypeScript类型定义
10- API调用统一使用 src/utils/request.ts 封装
11- 组件文件名使用PascalCase(如UserProfile.tsx)
12- 工具函数文件名使用camelCase(如formatDate.ts)
13
14## 目录结构
15src/
16├── components/    # 公共组件
17├── pages/        # 页面组件
18├── hooks/        # 自定义Hooks
19├── utils/        # 工具函数
20├── services/     # API服务
21└── stores/       # Zustand状态管理
22

然后在skill里引用这些规则:

1---
2title: "React组件生成器"
3---
4
5# 组件生成指令
6
7严格按照CLAUDE.md中定义的技术栈、目录结构和命名规范生成React组件。
8
9生成的组件必须:
10- 使用TypeScript
11- 符合项目的ESLint规则
12- 放在正确的目录下
13- 使用项目约定的状态管理方案
14

这样skill会自动读取CLAUDE.md的配置,生成的代码完全符合项目规范。新项目克隆下来,skill也能立刻适配。

我的5个必备Skill

用了半年,我的skills目录里积累了20多个skill。挑几个最常用的分享一下:

1. 测试用例生成器(test-gen.md)

写完功能代码后最烦的就是补测试。这个skill能分析函数逻辑,自动生成单元测试,包括边界情况和异常场景。

效果:我的测试覆盖率从40%提升到85%,节省了至少一半的测试编写时间。

2. Git提交信息生成器(commit-msg.md)

每次提交都要想commit message,挺浪费脑细胞的。这个skill分析git diff内容,自动生成符合Conventional Commits规范的提交信息。

示例输出:

1feat(user-auth): 添加OAuth2.0登录功能
2
3- 集成Google和GitHub第三方登录
4- 添加JWT token刷新机制
5- 完善用户权限校验中间件
6
7Closes #123
8

虽然只有30行代码,但这是我每天都要用的skill。累计节省的时间已经好几个小时了。

3. 代码重构助手(refactor.md)

老代码需要优化但不知从何下手时,这个skill能:

  • 识别代码坏味道
  • 给出重构优先级排序
  • 提供step-by-step重构计划
  • 保证重构前后功能一致

那个2000行的上帝类就是靠这个skill搞定的。

4. 安全审查专家(security-audit.md)

专门检查代码安全问题:

  • SQL注入风险
  • XSS攻击防护
  • 敏感信息泄露
  • 权限校验完整性

有次准备上线前用这个skill扫了一遍,发现3个潜在的安全漏洞,吓出一身冷汗。

5. 文档生成器(doc-gen.md)

项目文档总是滞后于代码?这个skill能根据代码自动生成API文档,提取函数注释生成Markdown,还能维护更新日志。

文档更新时间从2小时缩短到10分钟,而且再也不会出现"代码改了文档没改"的情况。

写好Skill的5个技巧

半年下来,我总结了几个编写skill的经验:

1. Frontmatter要认真写

虽然看起来可有可无,但title和description会显示在skill列表里:

1---
2title: "全栈代码审查专家"
3description: "审查前后端代码,关注安全性、性能和可维护性"
4version: "2.1.0"
5tags: ["代码审查", "安全", "性能"]
6---
7

version字段方便版本管理,tags方便分类查找。

2. 角色定义要清晰

"你是一位...专家"这种开头很有用,能让Claude Code快速进入角色:

1你是一位拥有10年经验的全栈工程师,擅长代码审查和安全审计。
2

比直接说"请审查代码"效果好很多。

3. 用对比示例说明

用✅和❌对比好坏代码,Claude Code理解起来更准确:

1### SQL注入风险
2
3 危险写法:
4```javascript
5const query = [`SELECT * FROM users WHERE id = ${userId}`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md);
6

✅ 安全写法:

1const query = 'SELECT * FROM users WHERE id = ?';
2db.query(query, [userId]);
3
1
2### 4. 输出格式要具体
3
4别说"请给出建议",要说"按以下格式输出"
5
6```markdown
7## 输出格式
8
9### 🔴 严重问题(必须修复)
10- [文件名:行号] 问题描述
11- 风险说明
12- 修复建议(附代码示例)
13
14### 🟡 建议改进(推荐优化)
15- [文件名:行号] 问题描述
16- 改进理由
17- 优化方案
18

5. 加上错误处理规则

告诉AI遇到问题怎么办:

1## 错误处理
2
3如果遇到以下情况:
4- 代码语法错误:先指出错误位置,不继续审查
5- 文件无法访问:提示用户检查路径
6- 代码量过大(>5000行):建议分批审查
7

常见问题

Skill太多记不住名字?

用好命名规范:

  • review-*: 代码审查类
  • gen-*: 代码生成类
  • util-*: 工具类
  • fix-*: 问题修复类

我的命名:review-frontend.mdgen-api.mdutil-commit.md

Skill输出太长看不完?

在skill里加上简洁模式:

1默认使用详细模式。如果用户添加`--brief`参数,输出简洁版:
2- 问题清单(一行一个)
3- 严重程度标注
4- 关键修复建议
5

Skill在不同项目中表现不一致?

让skill主动请求上下文:

1## 分析前置步骤
2
3开始前请先:
41. 读取package.json了解依赖版本
52. 检查tsconfig.json了解TS配置
63. 查看.eslintrc了解代码规范
74. 浏览README.md了解项目架构
8

最后说两句

用了半年的skill功能,我的开发效率至少提升了40%。更重要的是,很多重复性的脑力劳动被解放出来了,我可以把时间花在真正需要思考的架构设计和业务逻辑上。

如果你现在还在手写提示词,建议你:

  1. 今天就开始:从一个简单的skill开始,比如代码审查或测试生成
  2. 逐步完善:每次用完后反思哪里可以改进,更新版本
  3. 团队共享:好的skill就像好的工具库,要分享出去
  4. 持续学习:关注官方文档更新,新功能可能会改变写法

最后分享一个心得:Skill的价值不在于有多复杂,而在于解决真实问题。我那个最简单的commit-msg生成器只有30行,但每天都在用,累计节省的时间已经好几个小时了。

从现在开始,试着把你每天重复输入的提示词整理成skill吧。三个月后,你会感谢今天的自己。

相关资源

本文首发自个人博客


把常用 Prompt 做成 Skill 之后,我和 Claude Code 的配合效率直接翻了 3 倍》 是转载文章,点击查看原文


相关推荐


基于华为开发者空间从0实现一个MCP Server
高校俱乐部2025/11/25

1 概述 1.1 案例介绍 MCP (Model Context Protocol) 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文。可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 为设备连接各种外设和配件提供标准化方式一样,MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方式。 MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器: {{{width="60%" height="auto"}}} - MCP 主机:


【Spring】Cookie和Session是什么
d***9352025/11/23

文章目录 回顾 Cookie理解 SessionCookie 和 Session 的区别 回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态:默认情况下,HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后,第二次访问的时候服务器就能知道该请求是否是已经登录过了 上述图片中的“令牌”通常就存储在 Cookie 字段中 比如去医院挂号: 看病之前先挂


Lua 的 dofile 函数
IMPYLH2025/11/21

Lua 的 dofile 函数 是用于加载并执行外部 Lua 脚本文件的核心函数之一。它的主要功能和工作原理如下: 基本功能 读取指定的 Lua 文件编译文件内容为字节码执行编译后的代码返回该文件中最后一个表达式的值 语法格式 dofile(filename) 其中 filename 是要加载的 Lua 文件路径(相对路径或绝对路径) 典型应用场景 模块化开发时加载子模块游戏开发中加载场景或关卡配置动态加载用户自定义脚本测试环境快速重载修改后的代码 与 require 的区别


Gemini 3 Pro 来了!一句话生成完整网站,AI编程能力断层领先
wwwzhouhui2025/11/19

前言 在AI大模型快速迭代的今天,各家厂商疯狂堆参数、拼算力,动不动就是参数翻倍,但日常用起来的感觉却大同小异。就在大家对"GPT-4.5级"、"性能提升30%"这些宣传话术感到麻木的时候,Google在2025年11月18日悄悄扔出了一个重磅炸弹——Gemini 3.0。 Gemini 3 Pro 是 Google DeepMind 推出的新一代旗舰模型,被官方定义为"世界上多模态理解能力最强的模型"。它不是简单的微调升级,而是从零开始在自家TPU芯片上训练的全新模型,采用稀疏混合专家架构(M


使用 Cursor & Claude 操作 Figma 画图
Keely402852025/11/18

版权声明:本文为博主原创文章,未经博主允许不得转载。 文章底部留言可联系作者。 一、背景 现在各种AI工具的普及让人眼花缭乱,大家都在拥抱AI,之前朋友推荐某音的一个小视频看到可以使用Cursor操作Figma自动画图感觉非常神奇,正好我 Claude和Cursor 都在使用,对有意思的工具做了一些尝试,现在总结下经验希望可以帮助大家。 二、Cursor 如何操作 Figma 1. 安装 Cursor Cursor 可以点击官网下载选择合适版本进行使用。新账号试用过后需要付费使用,具体使用方法


我在高职教STM32(新12)——STM32中断概览
南耿先生2025/11/17

新学期,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项目不变(图 1 所示),逐步将源码替换成 HAL 库。虽然不能一步到位,但会在备课期间逐步替换,自己就当再学习和巩固一遍。


openGauss实战:Python开发与AI向量数据库应用
倔强的石头_2025/11/16

引言 经过前两篇文章的铺垫,我们已经掌握了openGauss的部署安装和使用Data Studio进行可视化管理。现在,我们来到了本系列文章的终章,将目光聚焦于开发者最关心的环节——如何在应用程序中与openGauss进行交互,并探索其在AI领域的应用潜力。 本文将以目前最流行的编程语言之一Python为例,详细演示如何连接openGauss数据库,并围绕两个典型的业务场景——“用户管理系统”和“订单支付流程”,构建完整的CRUD(创建、读取、更新、删除)与事务处理代码示例。更进一步,我们将结合


🍵 Go Queryx 入门指南:让数据库操作像喝奶茶一样丝滑!
golang学习记2025/11/15

🎬 前言:为什么是 Queryx?—— 因为 bug 等不及你「运行时才发现」 想象一下这些经典场景: // 🚨 GORM 的“惊喜盲盒” db.Where("nmae = ?", "john").Find(&users) // 拼写错误?编译器:没问题 👌 // → 运行时:查不到数据?🤔 调试 2 小时:哦,`nmae` 少了个 `e` …… // 🧨 原生 SQL 的“类型彩票” rows, _ := db.Query("SELECT * FROM users WHERE


Python 编程实战 · 实用工具与库 — Flask 基础入门
程序员爱钓鱼2025/11/14

Flask 是 Python 生态中最灵活、最轻量的 Web 框架之一,非常适合快速构建接口、网站原型、后台服务等。它遵循 WSGI 标准,核心库极其简洁,但可以通过插件无限扩展。 1. Flask 基础概念 ✔ Flask 是什么? 一个 微框架(Micro Framework) 默认只提供核心组件:路由、请求处理、模板、调试器 需要什么功能就安装什么扩展(ORM、表单验证、JWT、数据库等) ✔ Flask 的优势 代码简洁、上手快 灵活度极高(不像 Django 那样有强约


😎 Node.js 应用多阶段构建 Dockerfile 详解
你的人类朋友2025/11/12

前言 🍃 你好啊,我是你的人类朋友!✨ 本文主要来一起阅读一个高效的 Node.js 应用 Dockerfile。 在开始分析这个 Dockerfile 之前,先问大家一个问题:为什么这个 Dockerfile 要分两个阶段来构建,而不是直接复制所有文件然后安装依赖? 读完本文后,你就能找到答案! 😎 小贴士:如果你不懂啥是两段构建,问题不大,后面有解释,可以继续看。 下面展示的是一个用于部署 Node.js 应用的 Dockerfile,让我们先看看完整代码: FROM node:18

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读