跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

发布与分发插件

选择分发方式、发布前的检查清单、不用市场分享、创建与通过自己的市场发布、提交到 Anthropic 目录、发布新版本、打标签、重命名与移除,以及声明依赖。

发布 Claude Code 插件,意思是把它列进一个市场(marketplace):一个 JSON 目录,列出插件以及从哪里获取每一个,这样其他人就能按名字安装它并收到你的更新。你可以运营自己的市场,也可以把插件提交到 Anthropic 的目录。要分享插件而不发布它,把插件的目录或它的 .zip 发给别人,让他们自己加载。

本页面向已有可用插件、准备分享的作者。其他情形在别的页面里讲:插件还没做完,从「创建插件」开始;你维护的 CLI 或 SDK 有官方市场里的插件,见「从你的 CLI 推荐你的插件」。先看「选择分发方式」比较分发选项;如果你已经知道路线,直接去「发布前准备」,然后按你路线的那一节了解该告诉用户什么以及他们如何收到更新。

选择分发方式

根据谁需要安装插件来选择分发选项:

路线谁能安装你需要什么用户自动获得你的更新吗
不用市场你把插件文件夹或它的 .zip 发给的人插件的文件夹不会,他们加载你发来的那份副本
你自己的市场任何能访问该仓库的人,可以是你团队能克隆的私有仓库一个 git 仓库或其他主机,带列出你插件的 .claude-plugin/marketplace.json默认关闭
Anthropic 的目录在 claude.ai 或 Cowork 里添加它的人;它也通过账号同步在他们的 Claude Code 会话里加载保存插件的 GitHub 仓库,以及用来提交的付费 claude.ai 套餐会,在你推送的版本发布之后

自动更新是用户这一侧按市场的设置,会在后台获取新版本。

发布前准备

名称、版本、校验和从市场安装,决定一次发布对安装它的人是否有效。首次发布前检查它们,之后每次发布前再检查一遍。

  1. 选一个永久的名称:用户通过 name@marketplace 安装、启用和配置你的插件,所以重命名后的插件对每个已有安装来说都是另一个插件。选一个 kebab-case 名称,如 deploy-helper(claude plugin validate 对其他形式会警告),并把它视为永久不变。用 plugin.json 里的 displayName 设置用户看到的标签。
  2. 决定怎么做版本控制:如果你在 plugin.json 里设了 version,之后推送提交却没有改它,claude plugin update 会打印 <name> is already at the latest version (1.0.0).,用户保留旧副本。要么每次发布都递增 version,要么在 git 托管的市场里省略它,让 Claude Code 改用提交 SHA;见插件加载页的「版本与更新」。
  3. 校验:在 shell 里运行 claude plugin validate --strict ./your-plugin,干净的运行会打印 ✔ Validation passed。在 CI 里保留 --strict,它对未知的清单字段或缺失 version 这类警告也以退出码 1 让运行失败;如果你在上一步选择省略 version,就去掉 --strict。路径:校验会报告不以 ./ 开头的组件路径;在 hook 命令和 MCP 服务器配置内部,用 ${CLAUDE_PLUGIN_ROOT}/... 引用文件,见清单参考里的路径规则。
  4. 从本地市场安装它:在 shell 里用 claude plugin marketplace add ./path-to-marketplace 添加列出该插件的本地市场,从中安装插件,并启动会话确认它能加载。最小的可用市场见下面的「创建市场」;安装加载的是你的源目录还是缓存副本,见插件加载页的「原地与复制的插件」。
  5. 填写用户看到的元数据:在 plugin.json 里设置 description、author、homepage 和 repository,并在插件根目录添加 README.md;homepage 必须能解析为 URL。清单参考列出了每个字段。
  6. 运行你的评测套件:如果你有评测套件,在 shell 里运行 claude plugin eval,它运行插件的测试用例并给结果打分,在你改动插件时能抓住回归;见「用评测测试插件」。

不用市场分享插件

如果插件在 git 仓库里,人们可以克隆它并加载检出的副本,或者从 shell 里用 --plugin-url 指向你附在发布上的 .zip 来启动 Claude Code;要拿到你的下一个版本,他们再次拉取或下载。如果它不在仓库里,把目录或它的 .zip 发给他们。他们用两种方式之一加载它:

  • 只为一个会话:他们从 shell 里用 claude --plugin-dir ./deploy-helper 启动 Claude Code,路径是克隆、解压后的文件夹或 .zip 本身;见「为单个会话加载插件的标志」。
  • 为每个会话:他们把插件目录连同它的 .claude-plugin/plugin.json 移到 ~/.claude/skills/ 下,这样 Claude Code 在每个会话里都加载它。

给同一个仓库添加 .claude-plugin/marketplace.json,才能让人们按名字安装、用一条命令更新;见「通过你自己的市场发布」。

随你自己的工具一起发布插件

如果你维护 CLI 或 SDK,把插件发布在市场里,并让你的安装器或安装后消息运行或打印用户需要的两条命令:claude plugin marketplace add <source>,然后 claude plugin install <name>@<marketplace>。有人使用你的工具时的会话内发现,见「从你的 CLI 推荐你的插件」。

创建市场

市场是一个带 .claude-plugin/marketplace.json 文件的目录,外加它列出的插件。这个文件必须有 name、owner 和 plugins 数组,plugins 里每个条目至少有 name 和 source:

{
  "name": "my-marketplace",
  "description": "Plugins for my team",
  "owner": { "name": "Your Name" },
  "plugins": [
    {
      "name": "my-first-plugin",
      "source": "./plugins/my-first-plugin",
      "description": "A greeting plugin to learn the basics"
    }
  ]
}

条目的 source 要写成从市场根目录出发的相对路径,条目的 name 要和插件清单里的 name 保持一致。本地验证整个流程:

claude plugin validate ./my-marketplace          # 校验 JSON 语法、必填字段和各插件条目
claude plugin marketplace add ./my-marketplace   # 注册为市场
claude plugin install my-first-plugin@my-marketplace   # 安装 id 是条目名 + @ + 市场名
claude plugin list

在会话里,/plugin marketplace add ./my-marketplace 同样注册市场。

通过你自己的市场发布

你自己的市场是一个列出你插件的 .claude-plugin/marketplace.json 文件,加到一个 git 仓库里。文件进入仓库后,插件就发布了,没有提交表单。你可以把文件放在插件自己的仓库里,也可以放在单独的仓库里。

把市场文件加进你的仓库

要从插件自己的仓库发布,把市场文件存在 .claude-plugin/ 里 plugin.json 旁边,带一个 source 为 "./"(仓库根目录)的条目。给条目与 plugin.json 相同的 name(条目名与清单名保持一致):

{
  "name": "your-marketplace",
  "owner": { "name": "Your Name" },
  "plugins": [
    { "name": "deploy-helper", "source": "./" }
  ]
}

推送之前,在 shell 里于仓库中运行 claude plugin validate . 检查这个文件。一个仓库里有多个插件的布局,见「创建市场」的完整文档。

控制谁能安装

任何能克隆仓库的人都能从中安装,所以如果仓库是私有的,市场也是私有的。对 git 仓库之外的主机,见「托管市场」;要触达公司里的每个人(包括不使用 git 的人),见「推广到整个公司」。

告诉用户如何安装

告诉你的用户从 shell 里添加市场、再安装插件,把来源和名称换成你的:

  • 添加市场一次:claude plugin marketplace add your-org/your-marketplace,参数是 GitHub 的 owner/repo 简写、URL 或路径。
  • 安装插件:claude plugin install deploy-helper@your-marketplace。
  • 或在会话里一次完成两者:/plugin install deploy-helper --marketplace your-org/your-marketplace(需要 Claude Code v2.1.275 或更高)。

向用户发布更新

用户在要求时,或当你的市场开启了自动更新时,收到发布:

  • 按需:用户 shell 里的 claude plugin update deploy-helper@your-marketplace 刷新市场,并在你插件的版本变化时安装新副本。
  • 自动更新:你的市场默认关闭;见「开启自动更新」。开启后,它在会话启动后延迟一段时间做与 claude plugin update 相同的事。

用户这一侧的命令见「安装插件」,自动更新的时机见插件加载页的「自动更新何时运行」。

提交到 Anthropic 的目录

Anthropic 的目录是人们在 claude.ai 和 Cowork 里浏览以添加插件和连接器的目录。那里的一个列表能触达 claude.ai、Cowork 和 Claude Code 里的人。你从 claude.ai/directory/manage 的开发者门户提交;claude.com 上的「Prepare for review」描述了每个版本在发布前会发生什么。

提交需要付费的 claude.ai 套餐。在 Pro 和 Max 上,你从自己的账号提交;在 Team 和 Enterprise 上,Owner 可以提交,Enterprise 的 Owner 还可以通过 Organization settings > Roles 下的自定义角色把 Directory 权限授予其他成员。提交步骤、每个版本必须通过的检查,以及发布之后会发生什么,都记录在 claude.com 上,因为不论你的用户在哪个界面它们都相同:发布到目录(你能提交什么、谁能提交);提交插件(门户步骤和更新已发布的插件);插件提交前检查清单(提交前要运行并修复的检查);把较早的提交迁移到开发者门户(如果你在门户存在之前通过较早的提交表单提交过插件)。

打开门户之前,先在本地校验,并检查你的哪些组件在 Claude Code 之外也能加载:

  • 在 shell 里运行 claude plugin validate ./your-plugin --strict,把 ./your-plugin 换成你的插件目录路径。该命令在本地抓住清单错误;门户应用 CLI 不检查的额外目录规则,所以本地干净的运行不保证门户校验干净。
  • 检查什么在哪里加载:有些插件组件是 Claude Code 专属的,不会在 claude.ai 或 Cowork 里加载。组件支持表按应用列出每个组件,让你知道 Claude Code 之外的用户会得到什么。

Anthropic 的官方市场 claude-plugins-official 不通过目录门户接受提交;如果你和 Anthropic 的合作伙伴联络人有往来,向他们询问官方市场的列表。

列出的插件如何到达 Claude Code 用户

在 claude.ai 上从目录安装了你插件的人,账号上就有它,Claude Code 把它加载为 <name>@synced。他们看到什么以及如何关闭它,见插件加载页的「从 claude.ai 同步的插件」。

发布更新、重命名与移除

发布新版本

如果你通过自己的市场发布,并且 plugin.json 设了 version,递增它并推送。运行 claude plugin update 或开启了自动更新的用户随后会收到新版本,如上面「向用户发布更新」所述。如果你没设置 version,则每次提交都视作新版本。目录列表的更新见「更新已发布的插件」。

给发布打标签

当其他插件在你的插件上声明版本范围时,在 git 里给发布打标签,因为那些范围是对标签解析的;否则你不需要标签。要打标签,在 shell 里于插件目录运行 claude plugin tag,它创建 {name}--v{version} 标签;加 --push 把标签推送到 origin。plugin tag 参考列出了它的标志。

重命名或移除插件

永远不要更改已发布插件的 name。重命名之后,已经安装它的用户会丢失插件,因为他们的安装记录在旧名称下。市场文件里的 renames 条目会迁移他们。想要不同的标签时,改 displayName。

如果重命名不可避免,用市场文件的 renames 映射,使现有安装迁移,而不是以 Plugin "<name>" not found in marketplace 失败。从市场移除插件,或 renames 的完整细节,见托管页的「重命名或移除插件」;字段本身见市场参考的顶层字段。

声明依赖

如果你的插件需要同一市场里的另一个插件被启用,把它列在 plugin.json 的 dependencies 数组里。每个条目是裸名称,或带 semver version 范围(如 ^1.2)的对象。用户安装你的插件时,Claude Code 也安装并启用依赖,并在卸载时清理不再需要的。范围语法、跨市场依赖,以及用户如何修剪不再需要的依赖,见「插件依赖」。

下一步

  • 托管并维护市场:发布新版本并让用户保持更新。
  • 插件依赖:声明你所依赖插件的版本。
  • 从你的 CLI 推荐你的插件:提示你 CLI 的 Claude Code 用户安装该插件。
  • 衡量插件成本与用量:查看你的插件在上下文里花多少、人们是否使用它。