Claude Skill完全指南:从创建到发布,让AI学会处理复杂任务
去年年底,我在一个项目里同时要处理数据分析、代码审查、文档生成三件事,每天在Claude里重复粘贴同样的提示词,搞得跟个复读机似的。后来实在受不了了,花了两周时间把Claude Skills彻底研究了一遍,现在终于可以说:这东西是真的能打。
这篇文章,我想把这段时间踩过的坑、总结的经验,一次性说清楚。从Skill到底是什么,到怎么设计一个真正好用的Skill,再到最后怎么打包分享给别人——全程手把手,争取让你看完就能动手。
一、Claude Skill到底是什么?先把这个搞清楚
在开始动手之前,我们得对齐一下认知。很多人一上来就问“Skill跟MCP有什么区别”“Skill跟Project哪个好”,其实这些问题问错了方向。
我找到了一句我觉得最精辟的总结:MCP解决的是“模型能用什么”,Skills解决的是“模型该怎么用”。
什么意思?打个比方:
- MCP相当于给Claude配了一套工具箱——扳手、螺丝刀、电钻都有了
- Skills相当于一本操作手册——“拧螺丝要用十字螺丝刀,先顺时针转三圈,再逆时针调整半圈”
两者不是替代关系,是协作关系。你甚至可以把MCP和Skills搭配着用:MCP负责连数据库,Skills负责教Claude怎么安全地查数据、怎么格式化输出。
从技术角度说,一个Skill就是一个文件夹,里面必须包含一个SKILL.md文件。Claude会在需要的时候自动读取这个文件,按你的要求执行任务。最关键的是,它采用“渐进式披露”的设计——平时只加载技能的名字和描述,等真用到了才把完整内容读进来,这样不会浪费上下文窗口。
二、创建前的准备工作
2.1 确认你能用Skill
首先确认你的账号支持Skill功能。目前Claude Pro及以上套餐的用户可以创建和使用自定义Skill。免费版只能查看预制Skill,不能创建。
如果你是Claude Code用户(就是终端里那个),需要先安装:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">npm install -g @anthropic-ai/claude-code </pre>
然后进到项目目录,输入claude就能启动。
2.2 开启skill-creator(强烈建议)
如果你用的是Claude Web端,我强烈建议先开启官方的skill-creator工具。路径是:Claude界面右下角Customize → Skills → 启动skill-creator。
这个工具会以对话方式引导你创建Skill,你只需要回答它的提问,它就能帮你生成完整的SKILL.md文件。我第一次用的时候,十分钟就搓出了第一个可用的Skill。
2.3 搞清楚Skill放在哪儿
Skills可以放在不同位置,生效范围不一样:
| 存储位置 | 路径 | 适用范围 |
|---|---|---|
| 个人 | ~/.claude/skills/ |
当前用户的所有项目 |
| 项目 | .claude/skills/ |
仅当前代码库 |
| 企业 | 企业托管路径 | 整个组织 |
如果同名,优先级是企业 > 个人 > 项目。这个设计挺合理的——公司规范优先,个人习惯次之。
三、从零开始:你的第一个Skill
3.1 目录结构长什么样
一个标准的Skill文件夹结构是这样的:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">my-first-skill/ ├── SKILL.md # 必需:主文件 ├── scripts/ # 可选:可执行脚本 │ └── helper.py ├── references/ # 可选:参考文档 │ └── api-guide.md └── assets/ # 可选:模板资源 └── template.docx </pre>
注意几个坑:
- 文件名必须是
SKILL.md全大写,写成skill.md或者SKILL.MD都不行 - 文件夹命名必须用kebab-case(小写+连字符),比如
my-first-skill✅,My First Skill❌,my_first_skill❌ - 文件夹里不要放
README.md,所有说明写在SKILL.md或者references/里
3.2 SKILL.md的骨架
SKILL.md由两部分组成:顶部的YAML元数据和正文。
元数据是最关键的,Claude就是靠这段描述判断什么时候用你的Skill:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">--- name: my-first-skill description: 这是一个示例技能,用于处理XXX任务。当用户提到XXX、YYY时激活。 --- </pre>
必填字段只有两个:
-
name:技能名称,只能用kebab-case,不超过64字符 -
description:技能描述,包含“做什么”和“什么时候用”,不超过1024字符
还可以加这些可选字段:
-
allowed-tools:限制该Skill能用哪些工具(比如只让读文件,不让写) -
model:指定用哪个模型 -
version:版本号 -
license:开源许可证
description怎么写才靠谱? 我踩过的坑是写得太笼统,比如“帮助处理文档”,结果Claude从来不自动触发。后来改成“从PDF、Word、Excel中提取文本和表格数据,适用于文档解析、表单提取等场景”,立马见效。记住:要写用户可能说的关键词,比如“帮我提取这个PDF里的表格”。
3.3 正文怎么写
元数据下面就是正文,Claude只有在判断技能相关时才会加载这部分。
正文没有固定格式,但好的Skill通常包含这些内容:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;"># 技能名称 ## 角色定位 你是一个XXX专家,具备XXX能力。 ## 核心规则 1. 规则一 2. 规则二 ## 工作流程 当收到任务时,按以下步骤执行: 1. 第一步 2. 第二步 3. 第三步 ## 输出格式 必须严格按照以下格式输出: [格式模板] ## 示例 - 输入:XXX - 输出:XXX ## 注意事项 - 不要做XXX - 遇到XXX情况时,先询问用户 </pre>
写正文的核心原则:把你每次都要对Claude说的那些话,一次性写进去。用中文写就行,Claude看得懂。
四、进阶技巧:让Skill真正好用起来
4.1 两种创建方式,选哪个?
官方skill-creator支持两种创建方式:
方式一:从零开始。适合你已经很清楚自己要什么。启动skill-creator后,它问你答,一步步把需求讲清楚。
方式二:从工作流程回推。这是我更推荐的方式。先正常用Claude完成一次实际任务,比如“帮我把这个会议纪要整理成周报”,等结果满意了,直接对Claude说:“请把刚才的工作流程整理成一个Skill。”
这样做的好处是:你不用凭空想功能,Skill直接以你实际用过的流程为基础,效率高得多。我第一次用这个方法,五分钟就生成了一个周报Skill。
4.2 渐进式披露:别把所有内容塞进SKILL.md
如果Skill很复杂,把所有内容都塞进SKILL.md会浪费大量Token。正确的做法是:
-
SKILL.md只放核心指令和导航 - 详细文档放到
references/目录 - 脚本放到
scripts/目录
然后在SKILL.md里这样引用:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">## 附加资源 -详细的API文档请参考 [reference/api.md](references/api.md) - 示例代码请看 [examples.md](references/examples.md) ## 脚本使用 运行以下命令进行数据校验: ```bash python scripts/validator.py --input <文件路径> </pre>
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;"> 这样,Claude只有在真正需要的时候才会去读这些文件。而且脚本执行结果会返回给对话,但脚本代码本身不占用上下文。 ### 4.3 组合多个Skill Claude可以同时加载多个Skill。比如你可以有一个“品牌规范”Skill负责配色字体,一个“财务报告”Skill负责数据格式,Claude会自动把它们组合起来。 所以设计Skill时,尽量让每个Skill专注做一件事,小而美比大而全更好用。 --- ## 五、测试与调试 ### 5.1 本地测试 创建完Skill后,先用几条测试用例试试: 1\. 把SKILL.md上传到Claude对话 2\. 说“请加载这个Skill” 3\. 用应该触发Skill的提问测试,比如“帮我做XXX” 如果Claude没触发,八成是description写得不够具体。可以换个说法,或者加几个触发关键词。 ### 5.2 Claude Code调试模式 如果你用Claude Code,可以用调试模式启动: ```bash claude --debug </pre>
系统会输出详细的加载日志,包括YAML解析错误、路径权限问题等。
5.3 权限问题
如果Skill里带了脚本,记得给可执行权限:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">chmod +x ~/.claude/skills/my-skill/scripts/*.py </pre>
不然Claude调用时会报错。
六、发布与分享
6.1 发布到你的团队
如果想让团队其他人用你的Skill,有几个方式:
方式一:放在项目目录。把Skill文件夹放到项目的.claude/skills/目录,提交到代码仓库,团队成员pull下来就能用。
方式二:通过插件市场。如果你是插件开发者,可以把Skills打包进插件发布。
方式三:打包成ZIP分享。在Claude Web端,创建好的Skill可以下载成ZIP文件,别人通过“Capabilities → Upload skill”就能安装。
6.2 发布前检查清单
我习惯发布前过一遍这个清单:
- 文件夹命名是kebab-case
- 有
SKILL.md文件(全大写) - YAML元数据有
name和description -
description里包含了触发关键词 - 引用的文件路径正确
- 脚本有可执行权限
- 用2-3个测试用例验证过触发逻辑
6.3 版本管理
Skill是可以迭代的。我习惯在元数据里加个version字段:
<pre data-tool="mdnice编辑器" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 10px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">--- name: my-skill description: XXX version: 1.2.0 --- </pre>
更新之前记得先下载备份,因为更新会直接覆盖旧版本。万一新版不如意,还能回滚。
七、Skill vs 其他功能,一张表看懂
很多人搞不清楚Skill和其他功能的区别,我整理了一张表:
| 功能 | 核心用途 | 触发方式 | 持久性 |
|---|---|---|---|
| Skills | 固化专业流程和操作规范 | 自动触发(匹配description) | 永久保存 |
| Projects | 为特定项目提供静态背景知识 | 始终加载 | 永久保存 |
| MCP | 连接外部工具和数据源 | 显式调用工具 | 按需连接 |
| Subagents | 处理动态的复杂子任务 | 委派调用 | 临时生成 |
| Slash Commands | 手动执行重复任务 | 用户输入/xxx
|
永久保存 |
简单说:Projects是“背景知识”,Skills是“操作规程”,MCP是“工具箱”,Subagents是“临时工”。
八、几个能直接用的场景
如果你还在想“到底能用Skill做什么”,这几个方向可以参考:
1. 代码审查
- 触发词:“帮我review这段代码”
- 做的事:按安全→性能→规范→可维护的顺序检查,输出表格报告
2. 周报生成
- 触发词:“写周报”
- 做的事:提取这周的工作记录,按“完成事项→进行中→下周计划”格式输出
3. 会议纪要
- 触发词:“整理会议纪要”
- 做的事:从对话记录中提取决策、待办事项、负责人、截止时间
4. API文档生成
- 触发词:“生成API文档”
- 做的事:根据代码注释生成Markdown表格,包含参数、类型、必填、描述
5. 数据分析报告
- 触发词:“分析XXX数据”
- 做的事:先查数据库,再统计分析,最后输出结构化报告
写在最后
从第一次接触Claude Skill到现在,我最大的感受是:这东西真正的价值不是“省事”,而是“标准化”。
以前让Claude做同一件事,今天和明天的结果可能完全不一样——语气不同、格式不同、甚至理解都有偏差。但有了Skill之后,每一次输出都像同一个人写的。对于团队协作来说,这意味着什么?意味着新同事第一天就能用Claude生成符合团队规范的文档,意味着不用再花时间统一AI的使用方式。
如果你平时有那种“每次都要重复说一遍”的场景,不妨花半小时试试。从零开始也好,从工作流程回推也好,一旦跑通第一个Skill,你会发现后面的都是复制粘贴。
最后,如果遇到什么奇奇怪怪的问题,欢迎留言。踩过的坑我都写在这了,但谁知道哪天又冒出个新坑呢。
关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。
学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。
我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。
在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。
同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。