Claude Skills 彻底爆了,从实现原理到 Claude Code、CodeX、OpenCode 实战,一网打尽!
大家好,我是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()
```
有关高级表单填充,请参阅 [FORMS.md](FORMS.md)。
SKILL.md 的指令包含 Skills 的运行逻辑,包括它的:工作流、最佳实践和规范等,其实就是一个提示词说明书文档。
第 3 步:执行 Skills(按需加载)
代理会按照 SKILL.md 中的指令来操作,必要时还会加载 references 目录中引用的文件,或者运行 scripts 目录下打包好的脚本及代码。
Skills 通过渐进式披露这种方式,可以让代理按需调取更多上下文,从而执行得飞快。
渐进式披露成本
渐进式披露确保任何给定时间,只有相关内容占据上下文窗口,这是它的成本:
| 步骤 | 加载时间 | 令牌成本 |
|---|---|---|
| 第 1 步:发现 | 始终加载 | 每个 Skill 约 100 个令牌 |
| 第 2 步:激活 | 触发时加载 | 不到 5k 个令牌 |
| 第 3 步:执行 | 按需加载 | 实际上无限制 |
SKILL.md 的文件结构
每一个 Skill 都必须要有一个 SKILL.md 文件,它是一个 Markdown 格式的文件,包含 YAML 前置元数据和 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技术宅" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。

浙公网安备 33010602011771号