大家好,我是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》开放标准了:

https://agentskills.io/

这是一个 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 的顶部,必须加上前置元数据,主要是 namedescription 这 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:

https://www.javastack.cn/claude-code-skills-usage/

后面的 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,包括我自己。

怎么安装和使用参考我分享的使用教程:

开源版 Claude Code 杀疯了,怒斩 70k+ Star!!

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 是什么鬼?如何使用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。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注