10 10
11当你想让一个你选择的群体(例如你的团队或组织)安装你的 plugins 并继续从你控制的目录接收更新时,创建你自己的 marketplace。该仓库可以是私有的,可以列出任意数量的 plugins,管理员可以[在每台机器上要求它](/docs/zh-CN/plugins/org)。11当你想让一个你选择的群体(例如你的团队或组织)安装你的 plugins 并继续从你控制的目录接收更新时,创建你自己的 marketplace。该仓库可以是私有的,可以列出任意数量的 plugins,管理员可以[在每台机器上要求它](/docs/zh-CN/plugins/org)。
12 12
13<Note>13> [!NOTE]
14 这些情况在其他页面上有介绍:14>
15 15> 这些情况在其他页面上有介绍:
16 * **与少数人共享一个 plugin**:将 plugin 的目录或其 `.zip` 文件发送给他们。请参阅[不使用 marketplace 共享 plugin](/docs/zh-CN/plugins/publish#share-a-plugin-without-a-marketplace)。16>
17 * **向所有人提供一个 plugin**:将其提交到 Anthropic 的社区 marketplace。请参阅[提交到社区 marketplace](/docs/zh-CN/plugins/publish#submit-to-anthropics-directory)。17> * **与少数人共享一个 plugin**:将 plugin 的目录或其 `.zip` 文件发送给他们。请参阅[不使用 marketplace 共享 plugin](/docs/zh-CN/plugins/publish#share-a-plugin-without-a-marketplace)。
18 * **自己使用一个 plugin**:使用 `--plugin-dir` 加载它或将其保存在你的 skills 目录中。请参阅[不使用 marketplace 开发](/docs/zh-CN/plugins/create#develop-without-a-marketplace)。18> * **向所有人提供一个 plugin**:将其提交到 Anthropic 的社区 marketplace。请参阅[提交到社区 marketplace](/docs/zh-CN/plugins/publish#submit-to-anthropics-directory)。
19</Note>19> * **自己使用一个 plugin**:使用 `--plugin-dir` 加载它或将其保存在你的 skills 目录中。请参阅[不使用 marketplace 开发](/docs/zh-CN/plugins/create#develop-without-a-marketplace)。
20 20
21从[创建一个 marketplace](#create-a-marketplace) 开始,在你自己的机器上构建一个并从中安装一个 plugin,然后[添加更多 plugin 条目](#add-plugin-entries)。21从[创建一个 marketplace](#create-a-marketplace) 开始,在你自己的机器上构建一个并从中安装一个 plugin,然后[添加更多 plugin 条目](#add-plugin-entries)。
22 22
23<h2 id="create-a-marketplace">23## 创建一个 marketplace
24 创建一个 marketplace
25</h2>
26 24
27以下步骤在你的机器上创建一个 marketplace,向其中添加一个 plugin,在 Claude Code 中注册它,并从中安装该 plugin。这是整个循环,也是你的用户一旦你在他们可以访问的地方托管 marketplace 后所经历的相同循环。从你想要创建 `my-marketplace/` 的目录在你的 shell 中运行每个命令。25以下步骤在你的机器上创建一个 marketplace,向其中添加一个 plugin,在 Claude Code 中注册它,并从中安装该 plugin。这是整个循环,也是你的用户一旦你在他们可以访问的地方托管 marketplace 后所经历的相同循环。从你想要创建 `my-marketplace/` 的目录在你的 shell 中运行每个命令。
28 26
29你需要一个 plugin 来列出。该示例使用来自[创建你的第一个 plugin](/docs/zh-CN/plugins/create#create-your-first-plugin) 的 `my-first-plugin`,这是一个具有一个 skill 的 plugin,你可以将其作为 `/my-first-plugin:hello` 运行;如果你还没有 plugin,请先构建它。要使用你自己的 plugin,请在步骤说 `my-first-plugin` 的地方替换其目录和其 `name`。有关 plugin 目录可以包含的内容,请参阅[plugin 目录浏览器](/docs/zh-CN/plugins/components#explore-the-plugin-directory)。27你需要一个 plugin 来列出。该示例使用来自[创建你的第一个 plugin](/docs/zh-CN/plugins/create#create-your-first-plugin) 的 `my-first-plugin`,这是一个具有一个 skill 的 plugin,你可以将其作为 `/my-first-plugin:hello` 运行;如果你还没有 plugin,请先构建它。要使用你自己的 plugin,请在步骤说 `my-first-plugin` 的地方替换其目录和其 `name`。有关 plugin 目录可以包含的内容,请参阅[plugin 目录浏览器](/docs/zh-CN/plugins/components#explore-the-plugin-directory)。
30 28
31<Steps>29**1. 设置 marketplace 目录**
32 <Step title="设置 marketplace 目录">
33 marketplace 是一个包含 `.claude-plugin/marketplace.json` 文件的目录,加上它列出的 plugins。创建 marketplace 目录及其 `.claude-plugin/` 文件夹,然后在 `plugins/` 下复制你的 plugin:
34 30
35 ```bash theme={null}31marketplace 是一个包含 `.claude-plugin/marketplace.json` 文件的目录,加上它列出的 plugins。创建 marketplace 目录及其 `.claude-plugin/` 文件夹,然后在 `plugins/` 下复制你的 plugin:
36 mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
37 cp -r my-first-plugin my-marketplace/plugins/
38 ```
39 32
40 检查 plugin 现在所在的位置是否有效,以便任何后续错误都是关于 marketplace 而不是 plugin 的:33```bash theme={null}
34mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
35cp -r my-first-plugin my-marketplace/plugins/
36```
41 37
42 ```bash theme={null}38检查 plugin 现在所在的位置是否有效,以便任何后续错误都是关于 marketplace 而不是 plugin 的:
43 claude plugin validate ./my-marketplace/plugins/my-first-plugin
44 ```
45 39
46 输出的最后一行读作 `✔ Validation passed`。40```bash theme={null}
47 </Step>41claude plugin validate ./my-marketplace/plugins/my-first-plugin
42```
48 43
49 <Step title="创建 marketplace 文件">44输出的最后一行读作 `✔ Validation passed`。
50 在 `my-marketplace/.claude-plugin/marketplace.json` 处保存 `marketplace.json`。该文件需要一个 `name`、一个 `owner` 和一个 `plugins` 数组。
51 45
52 `plugins` 中的每个对象都是一个 plugin 条目,需要一个 `name` 和一个 `source`。将条目的 `source` 写成从 marketplace 根目录的路径。根目录是 `my-marketplace/`,即包含 `.claude-plugin/` 的目录。46**2. 创建 marketplace 文件**
53 47
54 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}48在 `my-marketplace/.claude-plugin/marketplace.json` 处保存 `marketplace.json`。该文件需要一个 `name`、一个 `owner` 和一个 `plugins` 数组。
55 {49
50`plugins` 中的每个对象都是一个 plugin 条目,需要一个 `name` 和一个 `source`。将条目的 `source` 写成从 marketplace 根目录的路径。根目录是 `my-marketplace/`,即包含 `.claude-plugin/` 的目录。
51
52```json my-marketplace/.claude-plugin/marketplace.json theme={null}
53{
56 "name": "my-marketplace",54 "name": "my-marketplace",
57 "description": "Plugins for my team",55 "description": "Plugins for my team",
58 "owner": {56 "owner": {
65 "description": "A greeting plugin to learn the basics"63 "description": "A greeting plugin to learn the basics"
66 }64 }
67 ]65 ]
68 }66}
69 ```67```
70 </Step>68
69**3. 验证 marketplace**
70
71在 marketplace 目录上运行 `claude plugin validate` 以检查 JSON 语法、必需字段以及其 `.claude-plugin/marketplace.json` 中的每个 plugin 条目。
72
73```bash theme={null}
74claude plugin validate ./my-marketplace
75```
71 76
72 <Step title="验证 marketplace">77对于在步骤 2 中编写的文件,输出的最后一行读作 `✔ Validation passed`。
73 在 marketplace 目录上运行 `claude plugin validate` 以检查 JSON 语法、必需字段以及其 `.claude-plugin/marketplace.json` 中的每个 plugin 条目。
74 78
75 ```bash theme={null}79**4. 添加 marketplace 并安装 plugin**
76 claude plugin validate ./my-marketplace
77 ```
78 80
79 对于在步骤 2 中编写的文件,输出的最后一行读作 `✔ Validation passed`。81将目录注册为 marketplace。
80 </Step>
81 82
82 <Step title="添加 marketplace 并安装 plugin">83```bash theme={null}
83 将目录注册为 marketplace。84claude plugin marketplace add ./my-marketplace
85```
84 86
85 ```bash theme={null}87该命令打印 `✔ Successfully added marketplace: my-marketplace (declared in user settings)`,这意味着 marketplace 已记录在你的用户设置文件中。
86 claude plugin marketplace add ./my-marketplace
87 ```
88 88
89 该命令打印 `✔ Successfully added marketplace: my-marketplace (declared in user settings)`,这意味着 marketplace 已记录在你的用户设置文件中。89安装 plugin。安装 id 是条目的 `name`、一个 `@` 和 marketplace 的 `name`。
90 90
91 安装 plugin。安装 id 是条目的 `name`、一个 `@` 和 marketplace 的 `name`。91```bash theme={null}
92claude plugin install my-first-plugin@my-marketplace
93```
92 94
93 ```bash theme={null}95该命令打印 `✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user)`。
94 claude plugin install my-first-plugin@my-marketplace
95 ```
96 96
97 该命令打印 `✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user)`。97在会话内,`/plugin marketplace add ./my-marketplace` 以相同的方式注册 marketplace。`/plugin install my-first-plugin@my-marketplace` 在 `/plugin` 面板中打开 plugin 的详细信息,你可以在其中安装它。有关该流程,请参阅[安装和管理 plugins](/docs/zh-CN/plugins/install)。
98 98
99 在会话内,`/plugin marketplace add ./my-marketplace` 以相同的方式注册 marketplace。`/plugin install my-first-plugin@my-marketplace` 在 `/plugin` 面板中打开 plugin 的详细信息,你可以在其中安装它。有关该流程,请参阅[安装和管理 plugins](/docs/zh-CN/plugins/install)。99**5. 确认 plugin 已加载**
100 </Step>
101 100
102 <Step title="确认 plugin 已加载">101列出已安装的 plugins。
103 列出已安装的 plugins。
104 102
105 ```bash theme={null}103```bash theme={null}
106 claude plugin list104claude plugin list
107 ```105```
108 106
109 输出列出 `my-first-plugin@my-marketplace`,其 `Status: ✔ enabled`。107输出列出 `my-first-plugin@my-marketplace`,其 `Status: ✔ enabled`。
110 108
111 要查看 plugin 加载了什么,请显示其详细信息。109要查看 plugin 加载了什么,请显示其详细信息。
112 110
113 ```bash theme={null}111```bash theme={null}
114 claude plugin details my-first-plugin112claude plugin details my-first-plugin
115 ```113```
116 114
117 `Component inventory` 部分读作 `Skills (1) hello`。115`Component inventory` 部分读作 `Skills (1) hello`。
118 116
119 要运行该 skill,启动一个会话并输入 `/my-first-plugin:hello`。Claude 会向你问好。该命令以 plugin 的名称作为前缀,就像每个 plugin skill 的名称一样。117要运行该 skill,启动一个会话并输入 `/my-first-plugin:hello`。Claude 会向你问好。该命令以 plugin 的名称作为前缀,就像每个 plugin skill 的名称一样。
120 </Step>
121</Steps>
122 118
123<h2 id="add-plugin-entries">119## 添加 plugin 条目
124 添加 plugin 条目
125</h2>
126 120
127你分发的每个 plugin 都是 `marketplace.json` 的 `plugins` 数组中的一个对象。要添加第二个 plugin,请添加第二个对象。这些字段涵盖了大多数条目:121你分发的每个 plugin 都是 `marketplace.json` 的 `plugins` 数组中的一个对象。要添加第二个 plugin,请添加第二个对象。这些字段涵盖了大多数条目:
128 122
132 126
133有关完整的字段列表,请参阅[插件条目](/docs/zh-CN/plugins/marketplace-reference#plugin-entries),其中还介绍了条目可以设置的 [`plugin.json`](/docs/zh-CN/plugins/manifest-reference) 字段以及这些字段何时生效。127有关完整的字段列表,请参阅[插件条目](/docs/zh-CN/plugins/marketplace-reference#plugin-entries),其中还介绍了条目可以设置的 [`plugin.json`](/docs/zh-CN/plugins/manifest-reference) 字段以及这些字段何时生效。
134 128
135<h2 id="rules-for-plugin-entries">129## Plugin 条目的规则
136 Plugin 条目的规则
137</h2>
138 130
139来自新 marketplace 的大多数失败安装来自于从错误目录编写的相对路径,或来自与 plugin 的 `plugin.json` 中的 `name` 不同的条目名称。131来自新 marketplace 的大多数失败安装来自于从错误目录编写的相对路径,或来自与 plugin 的 `plugin.json` 中的 `name` 不同的条目名称。
140 132
141<h3 id="write-relative-paths-from-the-marketplace-root">133### 从 marketplace 根目录编写相对路径
142 从 marketplace 根目录编写相对路径
143</h3>
144 134
145marketplace 根目录是包含 `.claude-plugin/` 的目录。在[演练](#create-a-marketplace)中,那是 `my-marketplace/`,所以条目的 `source` 是 `"./plugins/my-first-plugin"`。该路径不是从 `.claude-plugin/` 内部开始的,所以不要使用 `..` 来离开它。135marketplace 根目录是包含 `.claude-plugin/` 的目录。在[演练](#create-a-marketplace)中,那是 `my-marketplace/`,所以条目的 `source` 是 `"./plugins/my-first-plugin"`。该路径不是从 `.claude-plugin/` 内部开始的,所以不要使用 `..` 来离开它。
146 136
149* **包含 `..` 的路径**:`claude plugin validate` 将条目报告为无效。消息以 `Path contains "..": ./../plugins/my-first-plugin` 开头。139* **包含 `..` 的路径**:`claude plugin validate` 将条目报告为无效。消息以 `Path contains "..": ./../plugins/my-first-plugin` 开头。
150* **指向不存在目录的路径**:`claude plugin validate` 通过。`claude plugin install` 失败,显示 `Source path does not exist: <path>`,其中 `<path>` 是 Claude Code 检查的绝对位置。140* **指向不存在目录的路径**:`claude plugin validate` 通过。`claude plugin install` 失败,显示 `Source path does not exist: <path>`,其中 `<path>` 是 Claude Code 检查的绝对位置。
151 141
152<h3 id="keep-the-entry-name-and-the-manifest-name-the-same">142### 保持条目名称和清单名称相同
153 保持条目名称和清单名称相同
154</h3>
155 143
156marketplace plugin 在 `marketplace.json` 中有一个条目 `name` 和在其自己的 `plugin.json` 中有一个 `name`,称为清单名称。每个名称出现在不同的地方:144marketplace plugin 在 `marketplace.json` 中有一个条目 `name` 和在其自己的 `plugin.json` 中有一个 `name`,称为清单名称。每个名称出现在不同的地方:
157 145
160 148
161当两个名称不同且有人按清单名称安装时,Claude Code 报告 `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`。保持两个名称相同。有关 Claude Code 如何使用这两个名称的更多信息,请参阅[Plugin 加载参考](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from)。149当两个名称不同且有人按清单名称安装时,Claude Code 报告 `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`。保持两个名称相同。有关 Claude Code 如何使用这两个名称的更多信息,请参阅[Plugin 加载参考](/docs/zh-CN/plugins/loading#find-where-a-plugin-came-from)。
162 150
163<h2 id="choose-a-plugin-source">151## 选择 plugin 源
164 选择 plugin 源
165</h2>
166 152
167`marketplace.json` 中的每个 plugin 条目都有一个 `source`,告诉 Claude Code 从哪里获取那个 plugin。根据 plugin 文件的存储位置选择源。该表列出了大多数 marketplace 所有者使用的源。153`marketplace.json` 中的每个 plugin 条目都有一个 `source`,告诉 Claude Code 从哪里获取那个 plugin。根据 plugin 文件的存储位置选择源。该表列出了大多数 marketplace 所有者使用的源。
168 154
183 169
184有关每种源类型的字段,以及将基于 git 的源固定到 `ref` 或 `sha`,请参阅[Plugin 源](/docs/zh-CN/plugins/marketplace-reference#plugin-sources)。170有关每种源类型的字段,以及将基于 git 的源固定到 `ref` 或 `sha`,请参阅[Plugin 源](/docs/zh-CN/plugins/marketplace-reference#plugin-sources)。
185 171
186<h2 id="validate-and-test">172## 验证和测试
187 验证和测试
188</h2>
189 173
190当你添加 plugins 时,在每次编辑后在你的 shell 中运行 `claude plugin validate ./my-marketplace`,并在分享之前从你自己机器上的 marketplace 安装。验证和安装会捕获不同的问题。174当你添加 plugins 时,在每次编辑后在你的 shell 中运行 `claude plugin validate ./my-marketplace`,并在分享之前从你自己机器上的 marketplace 安装。验证和安装会捕获不同的问题。
191 175
192<h3 id="problems-that-validation-reports">176### 验证报告的问题
193 验证报告的问题
194</h3>
195 177
196`claude plugin validate` 仅读取 marketplace 目录内的文件。它报告:178`claude plugin validate` 仅读取 marketplace 目录内的文件。它报告:
197 179
204 186
205有关 `validate` 可以打印的每条消息,请参阅[验证消息](/docs/zh-CN/plugins/marketplace-reference#validation-messages)。有关其标志和退出代码,请参阅 [`plugin validate`](/docs/zh-CN/plugins/cli-reference#plugin-validate)。187有关 `validate` 可以打印的每条消息,请参阅[验证消息](/docs/zh-CN/plugins/marketplace-reference#validation-messages)。有关其标志和退出代码,请参阅 [`plugin validate`](/docs/zh-CN/plugins/cli-reference#plugin-validate)。
206 188
207<h3 id="problems-that-surface-when-you-add-or-install">189### 添加或安装时出现的问题
208 添加或安装时出现的问题
209</h3>
210 190
211`claude plugin validate` 不报告的问题在你添加 marketplace 或从中安装时出现:191`claude plugin validate` 不报告的问题在你添加 marketplace 或从中安装时出现:
212 192
215 * Claude Code 在你安装 plugin 时首先获取 `github`、`git-subdir` 或其他远程源,所以错误的 `repo` 或 `path` 会在那时出现。195 * Claude Code 在你安装 plugin 时首先获取 `github`、`git-subdir` 或其他远程源,所以错误的 `repo` 或 `path` 会在那时出现。
216 * 一个相对 `source` 的目录不存在也会在安装时失败,显示 `Source path does not exist: <path>`。196 * 一个相对 `source` 的目录不存在也会在安装时失败,显示 `Source path does not exist: <path>`。
217 197
218<h3 id="test-an-edit-to-a-plugin">198### 测试对 plugin 的编辑
219 测试对 plugin 的编辑
220</h3>
221 199
222在[演练](#create-a-marketplace)中,你从具有相对路径 `source` 的本地目录添加了 `my-marketplace`。使用该设置,Claude Code 直接从 `my-marketplace/plugins/` 读取 plugin 的文件。你的编辑在下一个会话开始时或当你在会话中运行 `/reload-plugins` 时生效,无需更改 plugin 的 `version`。200在[演练](#create-a-marketplace)中,你从具有相对路径 `source` 的本地目录添加了 `my-marketplace`。使用该设置,Claude Code 直接从 `my-marketplace/plugins/` 读取 plugin 的文件。你的编辑在下一个会话开始时或当你在会话中运行 `/reload-plugins` 时生效,无需更改 plugin 的 `version`。
223 201
224从你托管的 marketplace 安装的人会在 plugin 缓存中获得一个副本。有关他们如何接收新版本,请参阅[保持用户最新](/docs/zh-CN/plugins/host-marketplace#keep-users-up-to-date)。202从你托管的 marketplace 安装的人会在 plugin 缓存中获得一个副本。有关他们如何接收新版本,请参阅[保持用户最新](/docs/zh-CN/plugins/host-marketplace#keep-users-up-to-date)。
225 203
226<h3 id="remove-the-marketplace-to-start-over">204### 删除 marketplace 以重新开始
227 删除 marketplace 以重新开始
228</h3>
229 205
230要删除所有内容并重新开始,在你的 shell 中运行 `claude plugin marketplace remove my-marketplace`。该命令删除 marketplace 并卸载其 plugins。206要删除所有内容并重新开始,在你的 shell 中运行 `claude plugin marketplace remove my-marketplace`。该命令删除 marketplace 并卸载其 plugins。
231 207
232<h2 id="host-your-marketplace">208## 托管你的 marketplace
233 托管你的 marketplace
234</h2>
235 209
236一旦你可以从你自己机器上的 marketplace 安装 plugin,如[创建一个 marketplace](#create-a-marketplace) 中所示,将 marketplace 目录推送到 git 主机。210一旦你可以从你自己机器上的 marketplace 安装 plugin,如[创建一个 marketplace](#create-a-marketplace) 中所示,将 marketplace 目录推送到 git 主机。
237 211
239 213
240有关私有仓库访问、更新、版本控制以及重命名或删除条目,请参阅[托管和维护 marketplace](/docs/zh-CN/plugins/host-marketplace)。214有关私有仓库访问、更新、版本控制以及重命名或删除条目,请参阅[托管和维护 marketplace](/docs/zh-CN/plugins/host-marketplace)。
241 215
242<h2 id="next-steps">216## 后续步骤
243 后续步骤
244</h2>
245 217
246* [托管和维护 marketplace](/docs/zh-CN/plugins/host-marketplace):选择一个主机、保持用户最新并安全地重命名或删除 plugins218* [托管和维护 marketplace](/docs/zh-CN/plugins/host-marketplace):选择一个主机、保持用户最新并安全地重命名或删除 plugins
247* [Marketplace 参考](/docs/zh-CN/plugins/marketplace-reference):`marketplace.json` 字段和源类型219* [Marketplace 参考](/docs/zh-CN/plugins/marketplace-reference):`marketplace.json` 字段和源类型