去年年底,我在一个项目里同时要处理数据分析、代码审查、文档生成三件事,每天在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用户(就是终端里那个),需要先安装:
npm install -g @anthropic-ai/claude-code
然后进到项目目录,输入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文件夹结构是这样的:
my-first-skill/
├── SKILL.md # 必需:主文件
├── scripts/ # 可选:可执行脚本
│ └── helper.py
├── references/ # 可选:参考文档
│ └── api-guide.md
└── assets/ # 可选:模板资源
└── template.docx
注意几个坑:
文件名必须是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:
name: my-first-skill
description: 这是一个示例技能,用于处理XXX任务。当用户提到XXX、YYY时激活。
必填字段只有两个:
name:技能名称,只能用kebab-case,不超过64字符
description:技能描述,包含“做什么”和“什么时候用”,不超过1024字符
还可以加这些可选字段:
allowed-tools:限制该Skill能用哪些工具(比如只让读文件,不让写)
model:指定用哪个模型
version:版本号
license:开源许可证
description怎么写才靠谱? 我踩过的坑是写得太笼统,比如“帮助处理文档”,结果Claude从来不自动触发。后来改成“从PDF、Word、Excel中提取文本和表格数据,适用于文档解析、表单提取等场景”,立马见效。记住:要写用户可能说的关键词,比如“帮我提取这个PDF里的表格”。
3.3 正文怎么写
元数据下面就是正文,Claude只有在判断技能相关时才会加载这部分。
正文没有固定格式,但好的Skill通常包含这些内容:
技能名称
角色定位
你是一个XXX专家,具备XXX能力。
核心规则
- 规则一
- 规则二
工作流程
当收到任务时,按以下步骤执行:
- 第一步
- 第二步
- 第三步
输出格式
必须严格按照以下格式输出:
[格式模板]
示例
- 输入:XXX
- 输出:XXX
注意事项
- 不要做XXX
- 遇到XXX情况时,先询问用户
写正文的核心原则:把你每次都要对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里这样引用:
附加资源
- 详细的API文档请参考 reference/api.md
- 示例代码请看 examples.md
脚本使用
运行以下命令进行数据校验:
```bash
python scripts/validator.py --input <文件路径>
这样,Claude只有在真正需要的时候才会去读这些文件。而且脚本执行结果会返回给对话,但脚本代码本身不占用上下文。
4.3 组合多个Skill
Claude可以同时加载多个Skill。比如你可以有一个“品牌规范”Skill负责配色字体,一个“财务报告”Skill负责数据格式,Claude会自动把它们组合起来。
所以设计Skill时,尽量让每个Skill专注做一件事,小而美比大而全更好用。
五、测试与调试
5.1 本地测试
创建完Skill后,先用几条测试用例试试:
- 把
SKILL.md上传到Claude对话 - 说“请加载这个Skill”
- 用应该触发Skill的提问测试,比如“帮我做XXX”
如果Claude没触发,八成是description写得不够具体。可以换个说法,或者加几个触发关键词。
5.2 Claude Code调试模式
如果你用Claude Code,可以用调试模式启动:
```bash
claude --debug
系统会输出详细的加载日志,包括YAML解析错误、路径权限问题等。
5.3 权限问题
如果Skill里带了脚本,记得给可执行权限:
chmod +x ~/.claude/skills/my-skill/scripts/*.py
不然Claude调用时会报错。
人工智能技术学习交流群
伙伴们,对AI测试、大模型评测、质量保障感兴趣吗?我们建了一个 「人工智能测试开发交流群」,专门用来探讨相关技术、分享资料、互通有无。无论你是正在实践还是好奇探索,都欢迎扫码加入,一起抱团成长!期待与你交流!👇
图片
六、发布与分享
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字段:
name: my-skill
description: XXX
version: 1.2.0
更新之前记得先下载备份,因为更新会直接覆盖旧版本。万一新版不如意,还能回滚。
七、Skill vs 其他功能,一张表看懂
很多人搞不清楚Skill和其他功能的区别,我整理了一张表:
功能
核心用途
触发方式
持久性
Skills
固化专业流程和操作规范
自动触发(匹配description)
永久保存
Projects
为特定项目提供静态背景知识
始终加载
永久保存
MCP
连接外部工具和数据源
显式调用工具
按需连接
Subagents
处理动态的复杂子任务
委派调用
临时生成
Slash Commands
手动执行重复任务
用户输入/xxx
永久保存
简单说:Projects是“背景知识”,Skills是“操作规程”,MCP是“工具箱”,Subagents是“临时工”。
八、几个能直接用的场景
如果你还在想“到底能用Skill做什么”,这几个方向可以参考:
- 代码审查
触发词:“帮我review这段代码”
做的事:按安全→性能→规范→可维护的顺序检查,输出表格报告
- 周报生成
触发词:“写周报”
做的事:提取这周的工作记录,按“完成事项→进行中→下周计划”格式输出
- 会议纪要
触发词:“整理会议纪要”
做的事:从对话记录中提取决策、待办事项、负责人、截止时间
- API文档生成
触发词:“生成API文档”
做的事:根据代码注释生成Markdown表格,包含参数、类型、必填、描述
- 数据分析报告
触发词:“分析XXX数据”
做的事:先查数据库,再统计分析,最后输出结构化报告
写在最后
从第一次接触Claude Skill到现在,我最大的感受是:这东西真正的价值不是“省事”,而是“标准化”。
以前让Claude做同一件事,今天和明天的结果可能完全不一样——语气不同、格式不同、甚至理解都有偏差。但有了Skill之后,每一次输出都像同一个人写的。对于团队协作来说,这意味着什么?意味着新同事第一天就能用Claude生成符合团队规范的文档,意味着不用再花时间统一AI的使用方式。
如果你平时有那种“每次都要重复说一遍”的场景,不妨花半小时试试。从零开始也好,从工作流程回推也好,一旦跑通第一个Skill,你会发现后面的都是复制粘贴。
最后,如果遇到什么奇奇怪怪的问题,欢迎留言。踩过的坑我都写在这了,但谁知道哪天又冒出个新坑呢。