OpenSkills:让 AI 编码代理共享同一套技能系统

73 次阅读

如果你用过 Claude Code,一定对它的技能系统印象深刻——轻轻一句"帮我创建一个 PDF",Claude 就能调用内置的 PDF 工具,自动完成复杂的操作。但问题来了:这套好用的技能系统,能不能用在其他 AI 编码代理上呢?比如 Cursor、Windsurf、Aider 或者 Codex?

这就是 OpenSkills 诞生的初衷。


什么是 OpenSkills?

OpenSkills 是一个通用的 AI 编码代理技能加载器。它把 Anthropic 的技能系统带到了每一个 AI 编码代理——不管你是用 Claude Code、Cursor、Windsurf、Aider、Codex,还是任何能读取 AGENTS.md 的工具。

简单来说,OpenSkills 就是 SKILL.md 的通用安装器

它的核心理念可以用三句话概括:

  • One CLI:一个命令行工具
  • Every agent:支持所有 AI 编码代理
  • Same format as Claude Code:与 Claude Code 完全相同的格式

为什么选择 OpenSkills?

完全兼容 Claude Code

OpenSkills 使用与 Claude Code 完全相同的 prompt 格式、相同的市场(marketplace)、相同的文件夹结构。这意味着你在 Claude Code 里用的技能,可以直接迁移到其他代理上。

真正的通用性

不管你用哪个 AI 编码代理——Claude Code、Cursor、Windsurf、Aider、Codex,甚至是未来出现的新工具——只要它能读取 AGENTS.md,就能使用 OpenSkills 安装的技能。

渐进式披露

技能只在需要时加载,保持代理的上下文干净、专注。你不用担心技能太多会干扰代理的工作。

仓库友好

技能保存在你的项目里,可以被版本控制。你可以把技能配置提交到 Git,团队成员克隆项目后就能使用相同的技能。

私有友好

你可以从本地路径或私有 Git 仓库安装技能,不用担心敏感信息泄露。


快速开始

前置要求

使用 OpenSkills 前,请确保你的系统满足以下条件:

  • Node.js 20.6+
  • Git(用于克隆仓库)

你可以通过以下命令检查版本:

bash
node --version  # 应显示 v20.6.0 或更高
git --version

安装第一个技能

让我们从 Anthropic 的官方技能市场开始:

bash
npx openskills install anthropics/skills

这个命令会从 GitHub 的 anthropics/skills 仓库下载所有可用的技能。

同步 AGENTS.md

安装完技能后,你需要生成或更新 AGENTS.md 文件,这样你的 AI 代理才能知道有哪些技能可用:

bash
npx openskills sync

执行后,你会在项目根目录看到一个 AGENTS.md 文件。打开它,你会看到类似这样的内容:

xml
<skills_system priority="1">

## Available Skills

<usage>
When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively.

How to use skills:
- Invoke: `npx openskills read <skill-name>` (run in your shell)
- The skill content will load with detailed instructions
- Base directory provided in output for resolving bundled resources
...
</usage>

<available_skills>

<skill>
<name>pdf</name>
<description>Comprehensive PDF manipulation toolkit for extracting text and tables...</description>
<location>project</location>
</skill>

...
</available_skills>

</skills_system>

现在,你的 AI 代理就能看到这个技能列表了!


核心命令详解

OpenSkills 提供了一系列命令来管理技能。让我们逐一了解:

install — 安装技能

bash
npx openskills install <source> [options]

从 GitHub 仓库安装:

bash
npx openskills install anthropics/skills

从本地路径安装:

bash
npx openskills install ./local-skills/my-skill

从私有 Git 仓库安装:

bash
npx openskills install git@github.com:your-org/private-skills.git

常用选项:

  • --global:安装到全局目录 ~/.claude/skills
  • --universal:安装到 .agent/skills/(用于多代理设置)

默认情况下,技能会安装到项目的本地目录 ./.claude/skills

sync — 同步 AGENTS.md

bash
npx openskills sync [options]

这个命令会扫描已安装的技能,并生成或更新 AGENTS.md 文件。

常用选项:

  • -y, --yes:跳过确认提示(适合 CI/CD 环境)
  • -o, --output <path>:指定输出文件路径(默认:AGENTS.md

示例:

bash
npx openskills sync -y -o ./config/AGENTS.md

list — 列出已安装的技能

bash
npx openskills list

这个命令会显示当前项目中已安装的所有技能。

read — 读取技能内容

bash
npx openskills read <name>

这个命令会加载指定技能的完整内容。这通常在 AI 代理决定使用某个技能时调用。

示例:

bash
npx openskills read pdf

你也可以一次读取多个技能,用逗号分隔:

bash
npx openskills read pdf,docx,xlsx

update — 更新技能

bash
npx openskills update [name...]

这个命令会从源仓库获取最新版本的技能。

更新所有技能:

bash
npx openskills update

更新特定技能:

bash
npx openskills update skill-name

manage / remove — 移除技能

交互式管理:

bash
npx openskills manage

这个命令会启动交互式界面,让你选择要移除的技能。

直接移除特定技能:

bash
npx openskills remove <name>

示例:

bash
npx openskills remove pdf

工作原理深度解析

要真正理解 OpenSkills 的价值,我们需要深入了解它的工作原理。

Claude Code 的技能系统

Claude Code 的技能系统基于 SKILL.md 文件。当你在 Claude Code 中工作时,它会暴露一个 <available_skills> XML 块,告诉你有哪些技能可用。

当用户提出任务请求时,Claude 会动态加载匹配的技能。

xml
<available_skills>
<skill>
<name>pdf</name>
<description>Comprehensive PDF manipulation toolkit for extracting text and tables...</description>
<location>plugin</location>
</skill>
</available_skills>

OpenSkills:相同的格式,通用的加载器

OpenSkills 生成完全相同的 <available_skills> XML,并放在你的 AGENTS.md 文件中。任何能读取 AGENTS.md 的代理都能看到这些技能。

当代理决定使用某个技能时,它会运行:

bash
npx openskills read <skill-name>

OpenSkills 会加载技能的完整内容(SKILL.md 文件),代理就能按照指令执行任务。

对比:Claude Code vs OpenSkills

特性 Claude Code OpenSkills
Prompt 格式 <available_skills> XML 完全相同的 XML
技能存储 .claude/skills/ .claude/skills/(默认)
调用方式 Skill("name") 工具 npx openskills read <name>
市场 Anthropic marketplace GitHub (anthropics/skills)
渐进式披露

正如你所见,OpenSkills 完全兼容 Claude Code 的技能系统,但把它带到了更广泛的生态系统中。

AGENTS.md 格式详解

当你运行 npx openskills sync 时,OpenSkills 会生成类似这样的 AGENTS.md

xml
<skills_system priority="1">

## Available Skills

<!-- SKILLS_TABLE_START -->
<usage>
When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively.

How to use skills:
- Invoke: `npx openskills read <skill-name>` (run in your shell)
- The skill content will load with detailed instructions
- Base directory provided in output for resolving bundled resources

Usage notes:
- Only use skills listed in <available_skills> below
- Do not invoke a skill that is already loaded in your context
</usage>

<available_skills>

<skill>
<name>pdf</name>
<description>Comprehensive PDF manipulation toolkit for extracting text and tables...</description>
<location>project</location>
</skill>

</available_skills>
<!-- SKILLS_TABLE_END -->

</skills_system>

这个文件告诉 AI 代理:

  1. 有哪些技能可用 —— 在 <available_skills> 块中列出
  2. 如何使用技能 —— 通过 npx openskills read <skill-name> 调用
  3. 注意事项 —— 只使用列出的技能,不要重复加载

MCP vs OpenSkills:厘清概念

很多人会有疑问:MCP(Model Context Protocol)和 OpenSkills 有什么区别?我应该用哪个?

关键区别

MCP 是为动态工具设计的。 它需要一个服务器运行,通过协议与代理通信。适合需要实时交互、动态生成工具的场景。

Skills 是静态指令 + 资源。 它们只是文件,不需要服务器,不需要协议。Skill 包含一组固定的指令和资源(脚本、参考文档等),代理按需读取。

简单类比

  • MCP 像 API:实时、动态、需要连接
  • Skills 像文档:静态、离线、即插即用

什么时候用哪个?

场景 推荐方案
需要实时查询数据库 MCP
需要动态生成代码 MCP
有一组固定的工具脚本 OpenSkills
想复用 Claude Code 的技能 OpenSkills
需要在离线环境工作 OpenSkills

MCP 和 Skills 解决的是不同问题。OpenSkills 让 Skills 保持轻量级和通用性,不需要依赖 MCP 的复杂性。


创建自己的技能

OpenSkills 最强大的地方在于,你可以创建自己的技能并分享给别人。

最小结构

一个技能最少只需要一个文件:

text

带资源的结构

如果你的技能需要脚本、参考文档或图片,可以组织成这样:

my-skill/
├── SKILL.md
├── references/
├── scripts/
└── assets/

SKILL.md 格式

SKILL.md 使用 Anthropic 的标准格式:

markdown
---
name: my-skill
description: 描述你的技能是做什么的
---

# 技能指令

当用户要求你执行 XXX 任务时,遵循以下步骤:

1. 安装依赖:`pip install xxx`
2. 运行脚本:`scripts/do_something.py`
3. 参考文档:`references/guide.md`

安装自己的技能

bash
npx openskills install ./my-skill

本地开发技巧

如果你想在开发时实时修改技能,可以用符号链接:

bash
git clone git@github.com:your-org/my-skills.git ~/dev/my-skills
mkdir -p .claude/skills
ln -s ~/dev/my-skills/my-skill .claude/skills/my-skill

这样你修改 ~/dev/my-skills/my-skill/ 下的文件,项目里会立即生效。

技能创作指南

如果你想学习更多关于创作技能的技巧,可以安装官方的 skill-creator 技能:

bash
npx openskills install anthropics/skills
npx openskills read skill-creator

常见问题

OpenSkills 和 MCP 有什么区别?

MCP(Model Context Protocol)是为动态工具设计的,需要一个服务器运行。Skills 是静态指令 + 资源,只是文件,不需要服务器。MCP 适合实时交互,Skills 适合离线使用。详细对比请参考上文"MCP vs OpenSkills"章节。

我需要全局安装 OpenSkills 吗?

不需要。你可以直接通过 npx openskills 运行,npx 会自动下载并执行。全局安装是可选的。

技能安装在哪里?

默认安装到项目的本地目录 ./.claude/skills。你可以用 --global 安装到 ~/.claude/skills,或者用 --universal 安装到 ./.agent/skills/

我可以使用私有仓库的技能吗?

可以。OpenSkills 支持从私有 Git 仓库安装:

bash
npx openskills install git@github.com:your-org/private-skills.git

如何更新已安装的技能?

更新所有技能:

bash
npx openskills update

更新特定技能:

bash
npx openskills update skill-name

Universal 模式是什么?

如果你同时使用 Claude Code 和其他代理,并且想共享一个 AGENTS.md 文件,可以使用 --universal 标志。这会把技能安装到 ./.agent/skills/,避免与 Claude Code 的插件市场冲突。

技能搜索的优先级顺序是(从高到低):

  1. ./.agent/skills/
  2. ~/.agent/skills/
  3. ./.claude/skills/
  4. ~/.claude/skills/

结语

OpenSkills 的出现,让 AI 编码代理的技能系统第一次实现了真正的跨平台兼容。你不再需要为每个代理单独配置工具,也不必担心技能不兼容的问题。

无论你使用 Claude Code、Cursor、Windsurf、Aider 还是 Codex,OpenSkills 都能让你享受到 Anthropic 精心设计的技能生态。这就是"One CLI. Every agent."的真正含义。

现在,就打开你的终端,试试 npx openskills install anthropics/skills,开启你的通用技能之旅吧。

感谢阅读,如果觉得有用欢迎分享