今天使用claudecode,在VSCODE插件里。想安装自己的SKILL,发现有些困难,就找了这个文章,搞定了marketplace。
由 Anthropic 推出并被行业广泛接受的 Skills 机制让 AI 能力变得可复用,写好一份 SKILL.md,就能让 Agent 在特定场景下精确执行任务。
但随着生态发展,一个现实问题浮出水面:
Skills 越来越多,却越来越难管。
- 安装靠手动:下载 zip、解压、放到指定目录,每个项目都做一遍
- 更新无感知:上游 Skill 迭代了新版本,你本地还是旧的
- 版本不一致:团队成员各自安装,结果对不齐
- 来源难追溯:三个月后你已经忘记这些技能从哪来的了
如果你也感受到了这些痛苦,Claude Marketplace 就是为你准备的解决方案。
[图片上传失败...(image-a851af-1780325557554)]
本文所述方案已在 AntV Infographic 开源项目中实际落地,由我贡献的 PR 已通过审查并被合并到主仓库。
[图片上传失败...(image-17f7e-1780325557554)]
Claude Marketplace 是什么
简单来说,Marketplace 是 Skills 的包管理器。
就像 npm 之于 Node.js 包、brew 之于 macOS 工具一样,Claude Marketplace 让你可以:
- 一条命令安装:不用再手动下载解压
- 统一管理:所有安装的 Skills 在一处可查
- 版本追踪:清楚知道装了什么、来自哪里
-
自动更新:上游更新后,
/plugin marketplace update一键同步
对于 Skill 的发布者来说,为你的仓库添加 Marketplace 支持,意味着用户只需两条命令:
Bash复制
/plugin marketplace add <仓库地址>
/plugin install <插件名>@<marketplace名>
就能拿到你提供的全部 AI 技能。
三步接入 Marketplace
不管你的 Skill 是个人项目还是团队仓库,接入流程都是标准的三步。
实际上,你完全可以将 Claude Code 官方文档:创建和分发 Plugin Marketplace 丢给大模型,然后要求它帮你为 Skill 项目接入 Marketplace,主流模型都是能实现的。
第一步:创建插件元数据(plugin.json)
在仓库根目录创建 .claude-plugin/plugin.json,描述你的插件基本信息:
Json复制
{
"name": "your-plugin-name",
"version": "1.0.0",
"description": "一句话描述你的 Skill 做什么",
"author": {
"name": "你的名字或团队名",
"email": "optional@example.com"
},
"repository": "https://github.com/your/repo",
"license": "MIT",
"keywords": ["关键词1", "关键词2"]
}
字段说明:
-
**name**:插件标识符,kebab-case 格式(如my-awesome-skills),用户安装时会看到 -
**author**:建议团队项目填写团队名,个人项目填写 GitHub 用户名 - 其余可选字段(
homepage、license、keywords)有助于被发现和分类
第二步:创建 Marketplace 清单(marketplace.json)
在同一目录下创建 .claude-plugin/marketplace.json:
Json复制
{
"name": "your-marketplace",
"owner": {
"name": "维护者名称",
"email": "contact@example.com"
},
"metadata": {
"description": "简短描述这个 Marketplace 提供什么"
},
"plugins": [
{
"name": "your-plugin-name",
"source": "./",
"description": "插件描述",
"version": "1.0.0"
}
]
}
字段说明:
-
**name**:Marketplace 标识,用户添加后会看到,使用 kebab-case 格式,不能用 保留名称 -
**owner**:维护者/团队信息,name必填,email可选 -
**metadata.description**:Marketplace 描述,不填会有校验警告 -
**plugins[].source**:插件位置,"./"表示仓库根即是插件根
第三步:确保 Skills 目录结构合规
Claude Marketplace 期望的目录结构是:
代码块复制
你的仓库/
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
└── skills/
├── skill-a/
│ └── SKILL.md
└── skill-b/
├── SKILL.md
└── references/ ← 可选的参考文档
└── prompt.md
关键要求:技能必须放在 skills/<技能名>/SKILL.md 路径下。如果你原来的目录命名不同(比如用了 .skills 或其他名字),需要迁移到 skills/。
每个 SKILL.md 文件的基本格式:
Markdown复制
---
name: your-skill-name
description: 描述这个技能做什么、何时触发
---
这里写具体的技能指令内容...
校验和测试
完成上述三步后,运行官方校验命令确认一切合规:
Bash复制
claude plugin validate .
[图片上传失败...(image-65d61f-1780325557554)]
校验通过后,可以先在本地测试:
Bash复制
# 本地测试安装
/plugin marketplace add ./
/plugin install your-plugin-name@your-marketplace
确认技能可以正常触发后,把代码推送到 GitHub 即完成发布。
发布后的效果
完成接入后,你只需要执行以下命令:
Bash复制
/plugin marketplace add https://github.com/你的用户名/你的仓库.git
/plugin install 你的插件名@你的marketplace名
以 AntV Infographic 为例:
Bash复制
/plugin marketplace add https://github.com/antvis/Infographic.git
/plugin install antv-infographic-skills@antv-infographic
安装完成后,所有技能即刻可用。后续上游更新,执行 /plugin marketplace update 就能同步最新版本,再也不用手动下载 zip 了。
[图片上传失败...(image-44f087-1780325557554)]
注意事项
-
**source**** 路径不要写 ****..**:校验器禁止路径遍历,正确写法是"source": "./",相对路径基于仓库根目录解析 - **记得填写 **
**metadata.description**:不填不会阻塞校验,但会产生警告,建议从一开始就写上 -
插件内不能引用外部文件:安装时会复制整个插件目录到缓存,
../引用的目录外文件不会被一起复制
[图片上传失败...(image-a8b366-1780325557554)]
多 AI 工具共享同一套 Skills
现实中,一个项目可能同时在用 Cursor、Claude Code、Gemini CLI、iFlow 等多种 AI 工具。每个工具都有自己的配置目录(.cursor、.claude、.gemini、.iflow……),而 Skills 的格式其实是通用的,同一份 SKILL.md 在不同工具里都能用。
如果你在每个工具目录下都复制一遍 Skills,不仅浪费空间,而且更新时容易漏改。
以 Claude 为中心,软链接到其他工具
我的做法是:无论全局还是项目级,都用 **.claude** 作为 Skills 的唯一管理目录。对于其他 AI 工具,用 ln -s(符号链接)指向 Claude 目录中的技能文件夹。
[图片上传失败...(image-dd6062-1780325557553)]
以全局 Skills 为例,Claude Marketplace 安装的技能会存放在 ~/.claude/plugins/marketplaces/ 下。要让 Gemini CLI 也能使用这些技能,只需创建软链接:
Bash复制
# 确保目标目录存在
mkdir -p ~/.gemini/skills
# 示例:将 Claude Marketplace 安装的技能链接到 Gemini
ln -s ~/.claude/plugins/marketplaces/antv-infographic/skills/infographic-creator \
~/.gemini/skills/infographic-creator
ln -s ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pdf \
~/.gemini/skills/pdf
ln -s ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/xlsx \
~/.gemini/skills/xlsx
项目级 Skills 同理:在项目的 .claude/skills 里维护一份,然后从 .cursor/skills、.gemini/skills 等目录软链接过去。
小坑:不要复制软链接,要重新生成
有一个容易踩的坑:在 A 工具目录中创建的软链接,不能直接复制到 B 工具目录。
比如你先用 ln -s 在 .gemini/skills/ 下创建了链接,然后想把同样的链接「复制」到 .cursor/skills/,用 cp 复制软链接文件时,行为取决于你的 cp 版本和参数:有时会复制链接本身(拿到一个指向相同目标的新链接),有时会复制链接指向的实际内容(丢失链接关系)。为了避免歧义,**始终对每个目标工具目录重新执行 ****ln -s**:
Bash复制
# ✘ 不要这样做
cp -r ~/.gemini/skills/infographic-creator ~/.cursor/skills/
# ✔ 每个工具目录独立创建软链接
ln -s ~/.claude/plugins/marketplaces/antv-infographic/skills/infographic-creator \
~/.cursor/skills/infographic-creator
ln -s ~/.claude/plugins/marketplaces/antv-infographic/skills/infographic-creator \
~/.gemini/skills/infographic-creator
这样无论哪个工具读取技能,都直接指向 Claude Marketplace 的源目录,更新时只需要在 Claude Code 中执行 /plugin marketplace update,所有工具同步受益。
总结
为你的 Skill 接入 Claude Marketplace,核心只需要:
-
两个 JSON 文件:
.claude-plugin/plugin.json+.claude-plugin/marketplace.json -
标准目录结构:
skills/<技能名>/SKILL.md -
一次校验:
claude plugin validate .
再进一步,用软链接策略让多个 AI 工具共享同一套 Skills,实现一处更新、处处可用。
如果你已经有现成的 Skills,不妨花 15 分钟给它加上 Marketplace 支持,从此告别手动下载、版本混乱、更新遗忘的烦恼。