大家好,我是R哥。
最近 Claude Skills 又开始爆火了,几个月前我分享《MCP 不香了,Claude Code 又推出了 Skills!!(保姆级安装和使用教程分享)》时还是不温不火,现在已经火爆全网了。
经过几个月的发展,Skills 也有了些许变化,这篇我再结合最新的信息,分享下 Skills 的概念及如何在 Claude Code、CodeX、OpenCode 中创建和如何 Skills。
万字干货,避免错过,建议收藏慢慢看。。

Skills 是什么?
Skills 最初由 Anthropic 公司开发,专门用来扩展 Claude 功能的模块化能力。
说白了,Skills 其实就是一个文件夹,这是每个 Skills 的目录结构:
my-skill/
├── SKILL.md # 必选:指令、元数据
├── scripts/ # 可选: 执行脚本
├── references/ # 可选:参考文档
└── assets/ # 可选:模板、资源
每个 Skill 包含指令、元数据和资源等,只有当 Claude 认为某个 Skill 和当前任务相关时,它才会启用,即按需加载,从而提升性能,也能大大节省 Tokens 消耗。
现在 Anthropic 已经把 Skills 做成《Agent Skills》开放标准了:
这是一个 Skills 开放标准,由 Anthropic 发布并推动作为开放标准,旨在让不同 AI 平台都能实现一个通用的 “Agent Skills” 格式。
Anthropic 真是 AI 标准的制定者,前有 MCP 协议,现在又弄出了 Agent Skills 标准。
Agent Skills 现在已经被主流的 AI 开发工具全面支持了,我看 OpenAI、Google、Cursor 等 AI 厂商都已经跟进并支持 Skills 了。
比如,我刚在 Claude 写完 Skills,直接就可以复制到 CodeX 中使用,100% 兼容。
Skills 的架构
Skills 在代码执行环境中运行,它具有文件系统访问、bash 命令和代码执行功能。
这是 Skills 的架构图:

可以这样理解,Skills 相当于是虚拟机上的目录,Claude 可以使用计算机上导航文件相同的 bash 命令与它们交互。
Skills 的工作原理
Skills 是通过渐进式披露来高效管理上下文,这张图演示了 Claude 如何加载和使用 PDF 处理 skill 的方式:

这种动态加载方式,确保只有相关的 Skill 内容占据上下文窗口。
工作流程
第 1 步:发现 Skills(始终加载)
Claude 在启动时,代理只会加载每个可用技能的 SKILL.md 中的元数据,比如:名称和描述,用来判断它什么时候可能用得上。
元数据格式如下:
---
name: pdf-processing
description: 从 PDF 文件中提取文本和表格、填充表单、合并文档。在处理 PDF 文件或用户提及 PDF、表单或文档提取时使用。
---
这种轻量级的加载方式,意味着我们可以集成大量的 Skills 而不会产生上下文成本,Claude 只知道每个 Skill 的存在以及何时使用它。
第 2 步:激活 Skills(触发时加载)
当任务匹配到某个技能的描述时,代理才会把完整的 SKILL.md 指令加载进上下文里。
参考指令如下:
# PDF 处理
## 快速入门
使用 pdfplumber 从 PDF 中提取文本:
```python
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()</code></pre>
<p>有关高级表单填充,请参阅 <a href="FORMS.md">FORMS.md</a>。</p>
<pre><code>
SKILL.md 的指令包含 Skills 的运行逻辑,包括它的:**工作流、最佳实践和规范**等,其实就是一个提示词说明书文档。
#### 第 3 步:执行 Skills(按需加载)
代理会按照 <code>SKILL.md</code> 中的指令来操作,必要时还会加载 <code>references</code> 目录中引用的文件,或者运行 <code>scripts</code> 目录下打包好的脚本及代码。
Skills 通过**渐进式披露**这种方式,可以让代理按需调取更多上下文,从而执行得飞快。
### 渐进式披露成本
渐进式披露确保任何给定时间,只有相关内容占据上下文窗口,这是它的成本:
| 步骤 | 加载时间 | 令牌成本 |
| :----------- | :---- | :----------------- |
| **第 1 步:发现** | 始终加载 | 每个 Skill 约 100 个令牌 |
| **第 2 步:激活** | 触发时加载 | 不到 5k 个令牌 |
| **第 3 步:执行** | 按需加载 | 实际上无限制 |
## SKILL.md 的文件结构
每一个 Skill 都必须要有一个 <code>SKILL.md</code> 文件,它是一个 <code>Markdown</code> 格式的文件,包含 YAML 前置元数据和 Markdown 指令。
参考格式如下:
```markdown
---
name: your-skill-name
description: 简要描述此 Skill 的功能以及何时使用它
license: Apache-2.0
metadata:
author: example-org
version: "1.0"
---
# Skill 名称
## 指令
[Claude 要遵循的清晰、分步指导]
## 示例
[使用此 Skill 的具体示例]
在 SKILL.md 的顶部,必须加上前置元数据,主要是 name 和 description 这 2 个元数据,其他的都是可选的。
| 字段 | 是否必填 | 约束条件 |
|---|---|---|
| name | 是 | 最多 64 个字符;只能包含小写字母、数字和连字符;不能以连字符开头或结尾。 |
| description | 是 | 最多 1024 个字符;不能为空;用于描述该技能的功能以及适用场景。 |
| license | 否 | 许可证名称,或指向随技能一起提供的许可证文件的引用。 |
| compatibility | 否 | 最多 500 个字符;用于说明环境要求,例如目标产品、系统依赖、网络访问等。 |
| metadata | 否 | 用于附加元数据的任意键值映射。 |
| allowed-tools | 否 | 技能可使用的预批准工具列表,以空格分隔(实验性功能)。 |
另外,Markdown 中的实际指令,对结构和内容没有特别限制。
如下面这个示例:
---
name: pdf-processing
description: 从 PDF 文件中提取文本和表格,填写表单,合并文档。
---
# PDF 处理
## 何时使用该技能
当用户需要处理 PDF 文件时,使用该技能……
## 如何提取文本
1. 使用 pdfplumber 进行文本提取……
## 如何填写表单
...
这种简单的格式有几个关键优势:
- 清晰易懂:不管是技能作者还是使用者,只要看一眼
SKILL.md,就能明白它干啥的,让技能的维护和优化变得特别轻松。 - 扩展性好:技能的复杂度可以灵活调整,从简单的文字指令,到可执行代码、资源文件,再到模板,全都能搞定。
- 轻松迁移:技能就是个文件,编辑、版本管理、分享都特别方便。
相比于固定的 AI 工作流,Skills 的灵活性更好。
Skills 仓库推荐
在使用 Skills 前,先分享两个 Skills 仓库:
第一个是官方的 Skills 仓库,里面包含了一些图片、文档等基本技能,还有一个 skill-creator 技能,通过它就可以引导式创建一个技能。
第二个是第三方的 Skills 仓库,里面也包含也许多类型的技能,根据自己的需要酌情使用。
还有更多一些大厂、第三方收集的 Agent Skills,这篇就不展开了,下一篇会详细分享一下,关注公众号「AI技术宅」第一时间分享。
Claude Code 使用 Skills 指南
拿 Claude 自家来说,Claude API、Claude Code、Claude Agent SDK 等都支持 Skills,下面以 Claude Code 为例,来看看要怎么创建和使用 Skills。
Claude Code 的安装和高级用法看这两篇:
Skills 分类
技能的存储位置决定了谁可以使用它:
| Skills 类型 | 含义说明 | 生效范围 | 目录位置 |
|---|---|---|---|
| Personal Skills | 个人技能,所有项目都可以复用的 Skills | 全局(对所有项目生效) | ~/.claude/skills/ |
| Project Skills | 项目技能,仅对当前项目生效,便于团队协作与共享 | 单个项目 | .claude/skills/ |
| Plugin Skills | 插件技能,随插件一起安装,安装后即可直接使用 | 取决于插件适用范围 | 由插件定义(安装后自动生效) |
一般是全局、项目 Skills。
安装 Skills
比如,你想使用官方、第三方的 Skills,只需要把它们仓库的技能目录复制到 ~/.claude/skills 目录下即可:

在 Claude Code 中使用 /skills 指令就可以列出所有的技能。
使用 Skills
使用 Skills 有两种方法:
1、自动引用
上面说了,如果 Claude 认为你的需求和某个 Skill 相关时,它就会自动加载并使用。
比如我发送:
列出所有skills并创建一个pdf

提示词中要创建 PDF,所以它自动加载了 PDF 的 Skill,这就是自动按需加载。
2、手动引用
你也可以通过 /xx 来手动引用要使用的 Skill,比如我明确知道官方有一个 canvas-design 技能,那我可以这样手动引用:
/canvas-design 设计一个 AI 学习路线图

如果你知道某个经常用的 Skills,这样手动引用可能会加快 Skills 的加载速度。另外,如果有多个类似的 Skills,手动引用也特别有用,避免用错。
创建自定义 Skills
创建 Skills 非常简单,一个 3 步:
- 在
~/.claude/skills目录下创建一个技能目录; - 在技能目录下面创建一个
SKILL.md技能文档; - 开始编写你的
SKILL.md文档具体操作指令。
当然,你也可以通过官方的一个 skill-creator 技能来引导式创建 Skills,这种方式更快,创建出来的 Skills 也会更懂你的需求。
下面,我来演示下如何通过 skill-creator 技能来创建一个自媒体助手 Skills。

然后,我把我在 GPT 上面的提示词扔给它:


当然,不一定要提供提示词,你完全可以把你的需求说出来,让它一步步帮你构建好这个 Skill。
不一会儿,它就帮我在 ~/.claude/skills 目录下创建好了 my-zmt-tools 自媒体助手 Skill,它主要包括两个功能:中文转英文URL、内容转小红书风格,这两个功能我之前是在 GPT 上面实现的。
使用 /skills 指令来验证下:

有了,这是它生成的 SKILL.ms 文档:

还不错吧?如果不满意,还可以基于它做二次修改。
现在来看看如何使用它,直接使用 /my-zmt-tool 技能的指令,然后带上指令参数、具体的内容或者要求就行了:

成功了,中文标题正确转换成了英文 URL,这个功能我在写博客时经常要用到,比如《MCP 不香了,Claude Code 又推出了 Skills!!(保姆级安装和使用教程分享)》这篇文章就对应这个 URL:
后面的 claude-code-skills-usage 就是靠定制化 GPT 帮我生成的。
在使用 ChatGPT 时,首先要切换到具体的 GPT,然后再发送指令,使用不是很方便,网络慢时可能更影响速度,现在有了 Skills 感觉效率要更快了。
所以,有了 Skills,很多 GPT 上面完成的工作,都可以尝试用 Skills 来完成,Skills 有了更多的可能性。
CodeX 使用 Skills 指南
上面说了,Agent Skills 已经是开放标准了,在 Claude 创建好的 Skills 也可以在其他支持 Agent Skills 的 AI 编程工具中使用,比如 CodeX。
方法很简单,比如,我把上面创建好的 my-zmt-tolls 目录直接复制到 ~/.codex/skills 目录下。
然后同样使用在 CodeX 中使用 /skills 命令,可以列出所有的 Skills:

用法其实和 Claude Code 差不多,不太一样的是,Claude Code 的自身命令、斜杠命令和 Skills 都是通过 / 来选择,非常混乱,而在 CodeX 中,Skills 可以使用单独的 $ 来选择 Skills,它是和自身的 / 命令分开的。
所以,在 CodeX 中可以自动调用 Skills,也可以手动指定要引用的 Skill:

Skill 都正常执行了,很方便吧?
从 /skills 列表命令也可以看到,CodeX 还提供了一个 skill-creator 命令用于创建和维护 Skills,还有一个 skill-installer 命令用于从其他仓库源安装 Skills。
其他支持 Skills 的 AI 编程工具,都是同一样的手法。
OpenCode 使用 Skills 指南
如果你有多模型的使用习惯,比如:国外、国内、本地模型混用,封闭的 Claude Code、CodeX 就无法满足需求了,这里我们就得使用最近火爆全网的 OpenCode,号称开源版的 Claude Code,它支持任意模型随时切换。
现在越来越多的人都在使用 OpenCode,包括我自己。
怎么安装和使用参考我分享的使用教程:
OpenCode 会自动搜索以下位置的 Skills:
- 项目配置:
.opencode/skills/<name>/SKILL.md - 全局配置:
~/.config/opencode/skills/<name>/SKILL.md - 兼容项目 Claude:
.claude/skills/<name>/SKILL.md - 兼容全局 Claude:
~/.claude/skills/<name>/SKILL.md
也就是说,OpenCode 不需要像 CodeX 那样复制 Skills,它支持自动搜索 Claude 的 Skills,这就比 CodeX 要方便太多了,不用复制冗余文件,这太舒服了。
目前,OpenCode 官方还没有类似 的 /skills 命令来列出所有的 Skills,不过可以通过问它列出所有的 Skills:

使用方法也是一样的,可以自动或者手动引用 Skills:

OpenCode 桌面版的使用也是一样的。
常见问题
经过以上 Skills 的工作原理和使用指南,下面的问题就不是问题了。
1、有了 MCP,为什么又搞出 Skills?
之前分享了一篇 MCP 的介绍及使用:
MCP 本质上是为 AI 大模型提供调用外部工具的能力,MCP Server 就是这个能力的具体实现——你可以通过它,把你已有的 API、脚本、服务包装成 AI 能理解和调用的 MCP 工具。
使用 MCP 的限制:
- 如果只靠 MCP,你虽然可以调用很多工具/数据,但模型每次必须在提示或上下文里夹带大量相关信息,这会消耗大量 token、降低效率。
- 在很多场景下,问题不是调用 API,而是按公司标准/流程来做事,MCP 可以访问数据或工具,但不会自动知道这个流程的外在规则是什么。
而 Skills 正好解决了这些问题,所以,MCP 是 AI 连接外部的工具,而 Skills 教模型如何使用工具。
MCP + Skills 可以协同工作,在很多复杂系统中,两者往往组合使用,模型先通过 MCP 访问工具/数据,再通过 Skills 引导流程执行。
但有一点,在执行代码方面:
Skills 虽然也支持代码执行,但受限于本地的环境,比如执行 Python 脚本,要是本地没有安装 Python 环境,或者版本不兼容,都会影响 Skills 执行效率。
MCP 因为是执行固定的代码,所以 MCP 在执行代码方面要更稳定。
2、Skills 和 Slash Commands 有什么区别?
Skills 是由模型驱动的,Claude 会根据你的任务和 Skill 的描述自动匹配并使用这些 Skills,完全不需要你介入,当然也可以通过 /skill-name 来主动触发。
Slash Commands(斜杠命令)则是完全由用户触发的,你需要主动输入 /command 才能触发。
但是,从最新的 Skills 来看,Slash Commands 也被合并在用户 Skills 中了:


合并归合并,困为 Slash Commands 和 Skills 两者都可以通过 / 手动触发,Slash Commands 并不能自动触发,因为它没有像 Skills 那样定义元数据。
Skills 相比 Slash Commands 只是多了几个可选功能,它支持文件的目录、控制 Claude 是否调用 Skills 前置元数据,以及 Claude 在相关时自动加载它们的能力。
总结
Agent Skills 这一套机制,表面看只是多了一个 SKILL.md 文件,实际上背后是一整套 Agent 能力组织方式的升级。
Agent Skills 把提示词、工具、脚本、资源全部收敛到一个标准化目录里,再通过「渐进式披露」的方式按需加载,这一点对上下文成本和执行效率的提升非常明显。
从使用体验来看,Skills 最大的价值有三个:可复用、低心智成本、易迁移。
不管是个人常用能力,还是项目级、团队级的能力,都可以沉淀成 Skills,一次写好,反复使用。而且它不绑死某一家平台,已经被做成开放标准,Claude、Google、OpenAI、Cursor 都能用,这一点非常重要。
比如拿我自己来说,以前要频繁切 GPT,现在一个 Skill 就能搞定。
所以,可以预见的未来,Agent Skills 的体系和生态会更加完善,大家可以早点把自己的常用能力沉淀下来,后面只会越用越爽。
未完待续,R哥持续分享更多 AI 编程经验,包括更加复杂的 Skills 使用,公众号第一时间推送,关注「AI技术宅」公众号和我一起学 AI。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



