File Deleted
View Diff
1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Создание и распространение marketplace плагинов
6
7> Создавайте и размещайте marketplace плагинов для распространения расширений Claude Code по командам и сообществам.
8
9**plugin marketplace** — это каталог, который позволяет вам распространять плагины другим пользователям. Marketplace обеспечивают централизованное обнаружение, отслеживание версий, автоматические обновления и поддержку нескольких типов источников, включая репозитории Git и локальные пути. Это руководство показывает, как создать собственный marketplace для совместного использования плагинов с вашей командой или сообществом.
10
11Ищете способ установить плагины из существующего marketplace? См. [Обнаружение и установка готовых плагинов](/docs/ru/discover-plugins).
12
13<h2 id="overview">
14 Обзор
15</h2>
16
17Создание и распространение marketplace включает:
18
191. **Создание плагинов**: создайте один или несколько плагинов с skills, агентами, hooks, MCP servers или LSP servers. Это руководство предполагает, что у вас уже есть плагины для распространения; см. [Создание плагинов](/docs/ru/plugins) для получения подробной информации о том, как их создавать.
202. **Создание файла marketplace**: определите `marketplace.json`, который перечисляет ваши плагины и где их найти. См. [Создание файла marketplace](#create-the-marketplace-file).
213. **Размещение marketplace**: отправьте на GitHub, GitLab или другой хост Git. См. [Размещение и распространение marketplace](#host-and-distribute-marketplaces).
224. **Совместное использование с пользователями**: пользователи добавляют ваш marketplace с помощью `/plugin marketplace add` и устанавливают отдельные плагины. См. [Обнаружение и установка плагинов](/docs/ru/discover-plugins).
23
24После того как ваш marketplace будет запущен, вы можете обновить его, отправив изменения в ваш репозиторий. Пользователи обновляют свою локальную копию с помощью `/plugin marketplace update`.
25
26<h2 id="walkthrough-create-a-local-marketplace">
27 Пошаговое руководство: создание локального marketplace
28</h2>
29
30Этот пример создает marketplace с одним плагином: skill `quality-review` для проверки кода. Вы создадите структуру каталогов, добавите skill, создадите манифест плагина и каталог marketplace, а затем установите и протестируете его.
31
32<Steps>
33 <Step title="Создание структуры каталогов">
34 ```bash theme={null}
35 mkdir -p my-marketplace/.claude-plugin
36 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin
37 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review
38 ```
39 </Step>
40
41 <Step title="Создание skill">
42 Создайте файл `SKILL.md`, который определяет, что делает skill `quality-review`.
43
44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}
45 ---
46 description: Review code for bugs, security, and performance
47 ---
48
49 Review the code I've selected or the recent changes for:
50 - Potential bugs or edge cases
51 - Security concerns
52 - Performance issues
53 - Readability improvements
54
55 Be concise and actionable.
56 ```
57 </Step>
58
59 <Step title="Создание манифеста плагина">
60 Создайте файл `plugin.json`, который описывает плагин. Манифест находится в каталоге `.claude-plugin/`.
61
62 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}
63 {
64 "name": "quality-review-plugin",
65 "description": "Adds a quality-review skill for quick code reviews",
66 "version": "1.0.0",
67 "author": {
68 "name": "Your Name"
69 }
70 }
71 ```
72
73 <Note>
74 Установка `version` означает, что пользователи получают обновления только при изменении этого поля, поэтому увеличивайте его при каждом выпуске. Плагин с [`command` source](#command-sources) не закреплен этим полем. Также не закреплен плагин, [загруженный на месте](/docs/ru/plugins-reference#plugin-caching-and-file-resolution) из marketplace, добавленного как локальный каталог. Если вы опустите `version`, версия берется из следующего источника в [управлении версиями](/docs/ru/plugins-reference#version-management).
75 </Note>
76 </Step>
77
78 <Step title="Создание файла marketplace">
79 Создайте каталог marketplace, который перечисляет ваш плагин.
80
81 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}
82 {
83 "name": "my-plugins",
84 "owner": {
85 "name": "Your Name"
86 },
87 "plugins": [
88 {
89 "name": "quality-review-plugin",
90 "source": "./plugins/quality-review-plugin",
91 "description": "Adds a quality-review skill for quick code reviews"
92 }
93 ]
94 }
95 ```
96 </Step>
97
98 <Step title="Добавление и установка">
99 Из каталога, содержащего `my-marketplace`, запустите Claude Code и выполните следующие команды. Команда установки открывает представление сведений о плагине, где вы выбираете область установки для подтверждения установки. Проверьте сводку установки: если она сообщает `Run /reload-plugins to activate.`, см. [Применение изменений плагина без перезагрузки](/docs/ru/discover-plugins#apply-plugin-changes-without-restarting).
100
101 ```shell theme={null}
102 /plugin marketplace add ./my-marketplace
103 /plugin install quality-review-plugin@my-plugins
104 ```
105 </Step>
106
107 <Step title="Попробуйте">
108 Выберите некоторый код в редакторе и запустите ваш новый skill. Skills плагинов имеют пространство имен с именем плагина.
109
110 ```shell theme={null}
111 /quality-review-plugin:quality-review
112 ```
113 </Step>
114</Steps>
115
116Чтобы узнать больше о том, что могут делать плагины, включая hooks, agents, MCP servers и LSP servers, см. [Plugins](/docs/ru/plugins).
117
118<Note>
119 **Как устанавливаются плагины**: когда пользователи устанавливают плагин, Claude Code копирует каталог плагина в место кэша, если только плагин не загружается на месте. [`command` source в режиме link](#copy-mode-and-link-mode) загружается на месте, как и [relative path source](#relative-paths) в marketplace, добавленном из локального каталога. Скопированные плагины не могут ссылаться на файлы вне их каталога, используя пути вроде `../shared-utils`, потому что эти файлы не будут скопированы.
120
121 Если вам нужно совместно использовать файлы между плагинами, используйте symlinks. Подробнее см. [Plugin caching and file resolution](/docs/ru/plugins-reference#plugin-caching-and-file-resolution).
122</Note>
123
124<h2 id="create-the-marketplace-file">
125 Создание файла marketplace
126</h2>
127
128Создайте `.claude-plugin/marketplace.json` в корне вашего репозитория. Этот файл определяет имя вашего marketplace, информацию о владельце и список плагинов с их источниками.
129
130Каждая запись плагина требует как минимум `name` и `source`, который указывает Claude Code, откуда его получить. См. [полную схему](#marketplace-schema) ниже для всех доступных полей.
131
132```json theme={null}
133{
134 "name": "company-tools",
135 "owner": {
136 "name": "DevTools Team",
137 "email": "devtools@example.com"
138 },
139 "plugins": [
140 {
141 "name": "code-formatter",
142 "source": "./plugins/formatter",
143 "description": "Автоматическое форматирование кода при сохранении",
144 "version": "2.1.0",
145 "author": {
146 "name": "DevTools Team"
147 }
148 },
149 {
150 "name": "deployment-tools",
151 "source": {
152 "source": "github",
153 "repo": "company/deploy-plugin"
154 },
155 "description": "Инструменты автоматизации развертывания"
156 }
157 ]
158}
159```
160
161<h2 id="marketplace-schema">
162 Схема marketplace
163</h2>
164
165<h3 id="required-fields">
166 Обязательные поля
167</h3>
168
169| Поле | Тип | Описание | Пример |
170| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------- |
171| `name` | string | Идентификатор marketplace в kebab-case, без пробелов, управляющих символов или символов двунаправленного форматирования. Это общедоступное поле: пользователи видят его при установке плагинов (например, `/plugin install my-tool@your-marketplace`). Каждый пользователь может зарегистрировать только один marketplace с одним именем: добавление второго marketplace с тем же именем заменяет первый. Чтобы опубликовать несколько плагинов под одним именем marketplace, перечислите их все в [одном файле `marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |
172| `owner` | object | Информация о сопровождающем marketplace. См. [Поля владельца](#owner-fields) | |
173| `plugins` | array | Список доступных плагинов | См. [Записи плагинов](#plugin-entries) |
174
175<Note>
176 **Зарезервированные имена**: следующие имена marketplace зарезервированы для официального использования Anthropic и не могут использоваться сторонними marketplace: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Имена, которые выдают себя за официальные marketplace, такие как `official-claude-plugins` или `anthropic-plugins-v2`, также заблокированы. Резервирование этих имен предотвращает представление стороннего marketplace как источника, опубликованного Anthropic.
177
178 Claude Code повторно проверяет зарезервированные имена каждый раз при загрузке marketplace, а не только при добавлении. Marketplace, зарегистрированный под одним из этих имен до того, как имя было зарезервировано, перестает загружаться и сообщает, что он [зарегистрирован из ненадежного источника](/docs/ru/errors#marketplace-is-registered-from-an-untrusted-source). Удалите этот marketplace и добавьте его снова из официального источника Anthropic. Сторонний marketplace, затронутый вновь зарезервированным именем, загружается снова, как только вы добавите его под другим именем. До версии v2.1.205 `first-party-plugins` и `healthcare` не были зарезервированы, и marketplace, уже зарегистрированный под зарезервированным именем, продолжал загружаться. До версии v2.1.265 `claude-tag-plugins` не был зарезервирован.
179
180 Вы также не можете назвать marketplace `npm`, `pip`, `uv`, `cargo`, `github` или `gh` в любом регистре. Эта проверка требует Claude Code v2.1.275 или позже.
181</Note>
182
183<h3 id="owner-fields">
184 Поля владельца
185</h3>
186
187| Поле | Тип | Обязательно | Описание |
188| :------ | :----- | :---------- | :------------------------------------------------- |
189| `name` | string | Да | Имя сопровождающего или команды |
190| `email` | string | Нет | Контактный адрес электронной почты сопровождающего |
191| `url` | string | Нет | Веб-сайт, профиль GitHub или URL организации |
192
193<h3 id="optional-fields">
194 Дополнительные поля
195</h3>
196
197| Поле | Тип | Описание |
198| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
199| `$schema` | string | URL JSON Schema для автодополнения редактора и валидации. Claude Code игнорирует это поле при загрузке. |
200| `description` | string | Краткое описание marketplace |
201| `version` | string | Версия манифеста marketplace |
202| `metadata.pluginRoot` | string | Каталог, в котором Claude Code разрешает имена источников плагинов без пути. См. [Относительные пути](#relative-paths). Требуется Claude Code v2.1.239 или позже. |
203| `allowCrossMarketplaceDependenciesOn` | array | Другие marketplace, на которые плагины в этом marketplace могут зависеть. Зависимости от marketplace, не указанного здесь, блокируются при установке. См. [Зависимость от плагина из другого marketplace](/docs/ru/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |
204| `renames` | object | Карта от прежнего имени плагина `name` к его текущему имени или к `null`, если плагин был удален. Позволяет существующим пользователям автоматически мигрировать при переименовании или удалении записи в `plugins`. См. [Переименование или удаление плагина](#rename-or-remove-a-plugin). Требуется Claude Code v2.1.193 или позже. |
205
206`description` и `version` также принимаются в `metadata` для обратной совместимости.
207
208<h2 id="plugin-entries">
209 Записи плагинов
210</h2>
211
212Каждая запись плагина в массиве `plugins` описывает плагин и место его размещения. Вы можете включить любое поле из [схемы манифеста плагина](/docs/ru/plugins-reference#plugin-manifest-schema), такое как `description`, `version`, `author`, `commands` и `hooks`, плюс эти поля, специфичные для marketplace: `source`, `category`, `tags`, `strict`, `relevance`, `headers` и `headersHelper`.
213
214<h3 id="required-fields-2">
215 Обязательные поля
216</h3>
217
218| Поле | Тип | Описание |
219| :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
220| `name` | string | Идентификатор плагина в kebab-case без пробелов, управляющих символов или символов двунаправленного форматирования. Это открытое поле: пользователи видят его при установке (например, `/plugin install my-plugin@marketplace`). |
221| `source` | string\|object | Откуда получить плагин (см. [Источники плагинов](#plugin-sources) ниже) |
222
223<h3 id="optional-plugin-fields">
224 Необязательные поля плагина
225</h3>
226
227**Стандартные поля метаданных:**
228
229| Поле | Тип | Описание |
230| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
231| `displayName` | string | Удобочитаемое имя, отображаемое в интерфейсе. Когда ни запись, ни `plugin.json` плагина не устанавливают его, пользователи видят `name` плагина. Может содержать пробелы и любой регистр. Не используется для пространства имён или поиска. |
232| `description` | string | Краткое описание плагина |
233| `version` | string | Версия плагина. Если установлена (здесь или в `plugin.json`), плагин закреплён на эту строку и пользователи получают обновления только при её изменении. Плагин с источником [`command`](#command-sources) не закреплён ни одним из этих полей. Также не закреплён плагин, [загруженный на месте](/docs/ru/plugins-reference#plugin-caching-and-file-resolution) из marketplace, добавленного как локальный каталог. Если версия не установлена ни в одном месте, она берётся из следующего источника в [управлении версиями](/docs/ru/plugins-reference#version-management). |
234| `author` | object | Информация об авторе плагина (`name` обязательно; `email` и `url` необязательны) |
235| `homepage` | string | Домашняя страница плагина или URL документации |
236| `repository` | string | URL репозитория исходного кода |
237| `license` | string | Идентификатор лицензии SPDX (например, MIT, Apache-2.0) |
238| `keywords` | array | Теги для обнаружения и категоризации плагина |
239| `metadata` | object | Свободный объект для ваших собственных полей, таких как данные о правах или каталога. Claude Code его не читает. До версии v2.1.222 `claude plugin validate` сообщал ключ как нераспознанное поле. |
240| `category` | string | Категория плагина для организации |
241| `tags` | array | Теги для поиска |
242| `strict` | boolean | Контролирует, является ли `plugin.json` авторитетом для определений компонентов (по умолчанию: true). См. [Строгий режим](#strict-mode) ниже. |
243| `relevance` | object | Сигналы, которые говорят Claude Code, когда предложить этот плагин пользователям. Действует только для marketplace, которые администратор добавляет в список разрешённых в управляемых параметрах. См. [Рекомендовать плагины для вашей организации](/docs/ru/plugin-relevance). |
244| `defaultEnabled` | boolean | Включен ли плагин после установки (по умолчанию: true). Установите значение `false`, чтобы установить плагин отключённым до тех пор, пока пользователь не согласится. Имеет приоритет над тем же полем в `plugin.json` плагина. См. [Включение по умолчанию](/docs/ru/plugins-reference#default-enablement). |
245
246И запись, и собственный `plugin.json` плагина могут устанавливать поля отображения `displayName`, `description`, `author`, `homepage`, `repository`, `license` и `keywords`. В списках плагинов и деталях до и после установки:
247
248* Для поля, которое вы установили в записи, пользователи видят значение записи, даже если `plugin.json` устанавливает другое значение.
249* Для поля, которое запись оставляет неустановленным, пользователи видят значение из `plugin.json`.
250
251До установки Claude Code может читать `plugin.json` только для записей с [источником относительного пути](#relative-paths), чьи файлы плагина находятся внутри самого marketplace. Для записи с любым другим типом источника пользователи видят только собственные поля записи до установки плагина.
252
253**Поля конфигурации компонентов:**
254
255| Поле | Тип | Описание |
256| :----------- | :------------- | :--------------------------------------------------------------------- |
257| `skills` | string\|array | Пользовательские пути к каталогам skills, содержащим `<name>/SKILL.md` |
258| `commands` | string\|array | Пользовательские пути к плоским файлам `.md` skills или каталогам |
259| `agents` | string\|array | Пользовательские пути к файлам агентов |
260| `hooks` | string\|object | Конфигурация пользовательских hooks или путь к файлу hooks |
261| `mcpServers` | string\|object | Конфигурации MCP сервера или путь к конфигурации MCP |
262| `lspServers` | string\|object | Конфигурации LSP сервера или путь к конфигурации LSP |
263
264**Поля аутентификации архива:**
265
266Установите их, когда запись имеет источник [`archive`](#zip-archives) на сервере, требующем учётные данные.
267
268| Поле | Тип | Описание |
269| :-------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
270| `headers` | object | HTTP заголовки, которые Claude Code отправляет при загрузке архива этой записи. Переопределяет заголовки marketplace с тем же именем. Требует Claude Code v2.1.238 или позже. |
271| `headersHelper` | string | Команда, которая выводит HTTP заголовки для загрузки архива этой записи как один JSON объект, для учётных данных, которые истекают. См. [Аутентификация загрузок архива](#authenticate-archive-downloads). Запись также должна установить [`"strict": false`](#strict-mode). Требует Claude Code v2.1.238 или позже. |
272
273<h2 id="plugin-sources">
274 Источники плагинов
275</h2>
276
277Источники плагинов указывают Claude Code, откуда получить каждый отдельный плагин, указанный в вашем marketplace. Они устанавливаются в поле `source` каждой записи плагина в `marketplace.json`.
278
279Claude Code копирует каждый установленный плагин в локальный кэш плагинов с версией в `~/.claude/plugins/cache`, за исключением случаев, когда плагин загружается на месте. [`command` источник в режиме link](#copy-mode-and-link-mode) загружается на месте, как и [относительный путь источника](#relative-paths) из marketplace, добавленного из локального каталога. Claude Code также [устанавливает подходящие зависимости пакетов Node.js плагина](/docs/ru/plugins-reference#node-js-package-dependencies) в кэшированную копию. См. [Plugin caching and file resolution](/docs/ru/plugins-reference#plugin-caching-and-file-resolution) для того, как плагин, загруженный на месте из marketplace локального каталога, получает ваши правки.
280
281| Источник | Тип | Поля | Примечания |
282| ------------------ | ------------------------------------ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
283| Относительный путь | `string` (например, `"./my-plugin"`) | none | Локальный каталог в репозитории marketplace. Должен начинаться с `./`, если вы не напишете [простое имя под `metadata.pluginRoot`](#relative-paths). Claude Code разрешает путь относительно корня marketplace, а не каталога `.claude-plugin/` |
284| `github` | object | `repo`, `ref?`, `sha?` | |
285| `url` | object | `url`, `ref?`, `sha?` | Источник URL Git |
286| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Подкаталог в репозитории Git. Клонирует разреженно, чтобы минимизировать пропускную способность для монорепозиториев |
287| `npm` | object | `package`, `version?`, `registry?` | npm пакет, загруженный с вашим npm клиентом и распакованный без запуска скриптов установки |
288| `archive` | object | `url`, `sha256?` | ZIP-архив, загруженный через HTTPS. Работает без git или npm на машине пользователя. Требует Claude Code v2.1.224 или позже |
289| `command` | object | `command`, `timeout?`, `mode?` | Каталог плагина, созданный путем запуска локальной команды, переустанавливается один раз за сеанс для получения изменений. Требует Claude Code v2.1.229 или позже |
290
291<Note>
292 **Источники marketplace и источники плагинов**: Это разные концепции, которые контролируют разные вещи.
293
294 * **Источник marketplace**: откуда получить сам каталог `marketplace.json`. Устанавливается, когда пользователи запускают `/plugin marketplace add` или в параметрах `extraKnownMarketplaces`. Источники marketplace на основе Git поддерживают `ref` (ветка/тег), но не `sha`.
295 * **Источник плагина**: откуда получить отдельный плагин, указанный в marketplace. Устанавливается в поле `source` каждой записи плагина внутри `marketplace.json`. Источники плагинов на основе Git поддерживают как `ref` (ветка/тег), так и `sha` (точный коммит).
296
297 Например, marketplace, размещенный в `acme-corp/plugin-catalog` (источник marketplace), может перечислять плагин, полученный из `acme-corp/code-formatter` (источник плагина). Источник marketplace и источник плагина указывают на разные репозитории и закреплены независимо.
298</Note>
299
300Типы источников на основе Git ниже — это `github`, `url` и `git-subdir`. Когда оба `ref` и `sha` установлены на любом из них, `sha` является эффективным закреплением. Claude Code получает и проверяет закрепленный коммит напрямую.
301
302На большинстве хостов Git, включая GitHub, GitLab и Bitbucket, это означает, что установка успешна даже если ветка или тег, названные `ref`, были удалены выше по течению, при условии, что коммит все еще доступен из репозитория. Некоторые серверы, такие как AWS CodeCommit, не поддерживают получение коммитов по SHA. На этих серверах `ref` все еще должен существовать и закрепленный коммит должен быть доступен из него.
303
304Если вы распространяете плагины через **Organization settings > Plugins**, разрешены только некоторые типы источников. См. [Распространение через параметры организации](#distribute-through-organization-settings).
305
306<h3 id="relative-paths">
307 Относительные пути
308</h3>
309
310Для плагинов в одном репозитории используйте путь, начинающийся с `./`:
311
312```json theme={null}
313{
314 "name": "my-plugin",
315 "source": "./plugins/my-plugin"
316}
317```
318
319Пути разрешаются относительно корня marketplace, который является каталогом, содержащим `.claude-plugin/`. Источник `./plugins/my-plugin` поэтому указывает на `<repo>/plugins/my-plugin`, даже если `marketplace.json` находится в `<repo>/.claude-plugin/marketplace.json`. Не используйте `../` для ссылки на пути вне корня marketplace. На macOS и Linux Claude Code отказывает запись пути с обратной косой чертой где-либо после начального `./`, поэтому пишите разделители как `/` на каждой платформе.
320
321Простое имя — это одно имя каталога без `/`, например `"formatter"`. Чтобы писать простые имена вместо путей `./`, установите [`metadata.pluginRoot`](#optional-fields) на каталог, в котором они разрешаются. С `"pluginRoot": "./plugins"`, Claude Code разрешает `"source": "formatter"` на `./plugins/formatter`. Требует Claude Code v2.1.239 или позже.
322
323`metadata.pluginRoot` должен быть относительным путем внутри marketplace. Claude Code игнорирует его для источника, который уже начинается с `./`. Источник, содержащий `/`, например `team-a/formatter`, не является простым именем и все еще нуждается в префиксе `./`, даже когда установлен `metadata.pluginRoot`.
324
325<Note>
326 Claude Code разрешает относительные пути относительно локальной копии marketplace, поэтому они работают, когда пользователи добавляют ваш marketplace из источника Git или локального каталога. Если пользователи добавляют ваш marketplace через прямой URL к файлу `marketplace.json`, относительные пути не будут разрешены, потому что загружается только этот файл. Для распространения на основе URL используйте вместо этого любой другой [источник плагина](#plugin-sources). См. [Устранение неполадок](#plugins-with-relative-paths-fail-in-url-based-marketplaces) для получения подробной информации.
327</Note>
328
329<h3 id="github-repositories">
330 Репозитории GitHub
331</h3>
332
333```json theme={null}
334{
335 "name": "github-plugin",
336 "source": {
337 "source": "github",
338 "repo": "owner/plugin-repo"
339 }
340}
341```
342
343Вы можете закрепить определенную ветку, тег или коммит:
344
345```json theme={null}
346{
347 "name": "github-plugin",
348 "source": {
349 "source": "github",
350 "repo": "owner/plugin-repo",
351 "ref": "v2.0.0",
352 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
353 }
354}
355```
356
357| Поле | Тип | Описание |
358| :----- | :----- | :--------------------------------------------------------------------------------- |
359| `repo` | string | Обязательно. Репозиторий GitHub в формате `owner/repo` |
360| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |
361| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |
362
363<h3 id="git-repositories">
364 Репозитории Git
365</h3>
366
367```json theme={null}
368{
369 "name": "git-plugin",
370 "source": {
371 "source": "url",
372 "url": "https://gitlab.com/team/plugin.git"
373 }
374}
375```
376
377Вы можете закрепить определенную ветку, тег или коммит:
378
379```json theme={null}
380{
381 "name": "git-plugin",
382 "source": {
383 "source": "url",
384 "url": "https://gitlab.com/team/plugin.git",
385 "ref": "main",
386 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
387 }
388}
389```
390
391| Поле | Тип | Описание |
392| :---- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
393| `url` | string | Обязательно. Полный URL репозитория Git (`https://` или `git@`). Суффикс `.git` опционален, поэтому URL Azure DevOps и AWS CodeCommit без суффикса работают |
394| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |
395| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |
396
397<h3 id="git-subdirectories">
398 Подкаталоги Git
399</h3>
400
401Используйте `git-subdir` для указания плагина, который находится в подкаталоге репозитория Git. Claude Code использует разреженный, частичный клон для получения только подкаталога, минимизируя пропускную способность для больших монорепозиториев.
402
403```json theme={null}
404{
405 "name": "my-plugin",
406 "source": {
407 "source": "git-subdir",
408 "url": "https://github.com/acme-corp/monorepo.git",
409 "path": "tools/claude-plugin"
410 }
411}
412```
413
414Вы можете закрепить определенную ветку, тег или коммит:
415
416```json theme={null}
417{
418 "name": "my-plugin",
419 "source": {
420 "source": "git-subdir",
421 "url": "https://github.com/acme-corp/monorepo.git",
422 "path": "tools/claude-plugin",
423 "ref": "v2.0.0",
424 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
425 }
426}
427```
428
429Поле `url` также принимает сокращение GitHub (`owner/repo`) или SSH URL (`git@github.com:owner/repo.git`).
430
431| Поле | Тип | Описание |
432| :----- | :----- | :------------------------------------------------------------------------------------------------- |
433| `url` | string | Обязательно. URL репозитория Git, сокращение GitHub `owner/repo` или SSH URL |
434| `path` | string | Обязательно. Путь подкаталога в репозитории, содержащий плагин (например, `"tools/claude-plugin"`) |
435| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |
436| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |
437
438<h3 id="npm-packages">
439 Пакеты npm
440</h3>
441
442Источник npm может назвать любой пакет в общедоступном реестре npm или в частном реестре, который размещает ваша команда. Claude Code разрешает пакет с вашим npm клиентом, загружает tarball и распаковывает его в кэш плагинов.
443
444Скрипты установки пакета, такие как `preinstall` или `postinstall`, никогда не запускаются, и его зависимости не устанавливаются во время загрузки.
445
446Если пакет поставляет поддерживаемый файл блокировки рядом с его `package.json`, Claude Code устанавливает эти [зависимости пакетов Node.js](/docs/ru/plugins-reference#node-js-package-dependencies) в отдельном шаге, также с отключенными скриптами. В противном случае опубликуйте плагин со всем, что ему нужно, уже встроенным. MCP сервер, которому нужны другие пакеты, может запуститься через `npx`, который устанавливает их при первом запуске.
447
448```json theme={null}
449{
450 "name": "my-npm-plugin",
451 "source": {
452 "source": "npm",
453 "package": "@acme/claude-plugin"
454 }
455}
456```
457
458Чтобы закрепить определенную версию, добавьте поле `version`:
459
460```json theme={null}
461{
462 "name": "my-npm-plugin",
463 "source": {
464 "source": "npm",
465 "package": "@acme/claude-plugin",
466 "version": "2.1.0"
467 }
468}
469```
470
471Для установки из частного или внутреннего реестра добавьте поле `registry`:
472
473```json theme={null}
474{
475 "name": "my-npm-plugin",
476 "source": {
477 "source": "npm",
478 "package": "@acme/claude-plugin",
479 "version": "^2.0.0",
480 "registry": "https://npm.example.com"
481 }
482}
483```
484
485| Поле | Тип | Описание |
486| :--------- | :----- | :-------------------------------------------------------------------------------------------------- |
487| `package` | string | Обязательно. Имя пакета или область пакета (например, `@org/plugin`) |
488| `version` | string | Опционально. Версия или диапазон версий (например, `2.1.0`, `^2.0.0`, `~1.5.0`) |
489| `registry` | string | Опционально. Пользовательский URL реестра npm. По умолчанию системный реестр npm (обычно npmjs.org) |
490
491<h3 id="zip-archives">
492 ZIP-архивы
493</h3>
494
495Используйте `archive` для распространения плагина как ZIP-файла, который Claude Code загружает через HTTPS, поэтому установки работают без git или npm на машине пользователя. Разместите файл на любом статическом файловом сервере или хранилище артефактов, например в корзине S3, в универсальном хранилище Artifactory или nginx. Требует Claude Code v2.1.224 или позже. На версиях v2.1.120 через v2.1.223 установка плагина не удается с `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`; на более старых версиях marketplace, содержащий запись `archive`, полностью не загружается.
496
497Эта запись устанавливает плагин из ZIP-файла на сервере артефактов:
498
499```json theme={null}
500{
501 "name": "my-plugin",
502 "source": {
503 "source": "archive",
504 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip"
505 }
506}
507```
508
509Когда вы создаете ZIP-файл, вы можете заархивировать содержимое плагина напрямую или заархивировать саму папку плагина. Claude Code ищет `.claude-plugin/` в верхней части архива, затем внутри одной папки верхнего уровня, поэтому оба макета устанавливаются:
510
511```text theme={null}
512my-plugin.zip my-plugin.zip
513├── .claude-plugin/ └── my-plugin/
514│ └── plugin.json ├── .claude-plugin/
515└── commands/ │ └── plugin.json
516 └── commands/
517```
518
519Claude Code не ищет глубже одной папки, поэтому плагин, вложенный дальше, не устанавливается. Claude Code отказывает архивам размером более 256 МиБ.
520
521Чтобы закрепить точный файл, добавьте поле `sha256` с дайджестом архива:
522
523```json theme={null}
524{
525 "name": "my-plugin",
526 "source": {
527 "source": "archive",
528 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip",
529 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"
530 }
531}
532```
533
534Если загруженный файл не совпадает с закреплением, Claude Code отказывает установку и сообщает [`Plugin archive integrity check failed`](/docs/ru/errors#plugin-archive-integrity-check-failed).
535
536Источники архивов принимают эти поля:
537
538| Поле | Тип | Описание |
539| :------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
540| `url` | string | Обязательно. HTTPS URL ZIP-архива. Claude Code отклоняет `http://` URL, а также loopback, link-local и cloud-metadata хосты. Каждый переход перенаправления должен удовлетворять тем же правилам, или Claude Code отказывает загрузку |
541| `sha256` | string | Опционально. SHA-256 дайджест архива как 64 шестнадцатеричных символа, прописные или строчные. Claude Code проверяет каждую загрузку против него и отказывает установку при несовпадении |
542
543Дайджест `sha256` также служит версией плагина, когда ни `plugin.json`, ни запись marketplace не объявляют версию. См. [Управление версиями](/docs/ru/plugins-reference#version-management). Если вы объявляете `version`, эта строка версии является сигналом обновления, поэтому после изменения ZIP-файла и его дайджеста также увеличьте версию, или пользователи сохранят кэшированную копию.
544
545<h4 id="authenticate-archive-downloads">
546 Аутентификация загрузок архивов
547</h4>
548
549Чтобы аутентифицировать загрузку архива, например загрузку из частного реестра, установите HTTP-заголовки, которые Claude Code отправляет с ней. Установите `headers` на источник `url` marketplace, который вы зарегистрировали, например запись [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces). На Claude Code v2.1.238 или позже вы можете установить его на запись плагина вместо этого, рядом с `source`.
550
551Если значение, которое вы поместили бы в `headers`, недолговечно, например токен, который ваш реестр создает по запросу, установите вместо этого команду `headersHelper` в том же месте. Claude Code запускает команду и отправляет объект JSON, который она печатает, как заголовки этого места. Требует Claude Code v2.1.238 или позже.
552
553Место, которое вы выбираете, определяет, какие загрузки получают заголовки и когда Claude Code запускает команду:
554
555| Место | Загрузки, которые получают заголовки | Когда Claude Code запускает `headersHelper`, установленный там |
556| :------------------------- | :-------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
557| Источник `url` marketplace | Загрузки архивов на происхождении URL marketplace, означающие одну и ту же схему, хост и порт | Перед каждой выборкой `marketplace.json` marketplace и перед каждой загрузкой архива на этом происхождении. Claude Code повторно использует вывод одного запуска до 60 секунд |
558| Запись плагина | Только загрузка этой записи | Только когда пользователь устанавливает или обновляет этот один плагин отдельно и [принимает команду](#how-users-accept-a-headershelper-command) |
559
560Где оба места устанавливают заголовок с одним и тем же именем, Claude Code отправляет значение записи. В одном месте заголовок, который печатает команда, переопределяет заголовок с одним и тем же именем, указанный в `headers`.
561
562<h5 id="add-a-headershelper-to-a-plugin-entry">
563 Добавьте headersHelper к записи плагина
564</h5>
565
566Эта запись устанавливает `headersHelper` рядом с `source`. Она также устанавливает `"strict": false`, что Claude Code требует от записи `marketplace.json`, которая устанавливает `headersHelper`. С [`"strict": false`](#strict-mode), запись marketplace является полным определением плагина, поэтому пользователь может просмотреть, что содержит плагин, перед принятием команды:
567
568```json theme={null}
569{
570 "name": "my-plugin",
571 "description": "Formatting commands for internal services",
572 "strict": false,
573 "commands": "./commands",
574 "source": {
575 "source": "archive",
576 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"
577 },
578 "headersHelper": "/opt/bin/mint-registry-token.sh"
579}
580```
581
582Чтобы проверить запись, запустите `claude plugin install my-plugin@your-marketplace`. Claude Code показывает вам команду и URL архива и загружает ZIP-файл после того, как вы примете.
583
584До v2.1.238 Claude Code загружал архив записи без её `headers` или `headersHelper`, поэтому установка, которая полагалась на них, не удавалась с `HTTP 401 while downloading plugin archive from`, за которым следует URL, с кодом состояния реестра вместо 401.
585
586<h4 id="write-the-headershelper-command">
587 Напишите команду headersHelper
588</h4>
589
590Независимо от того, устанавливаете ли вы `headersHelper` на источник `url` marketplace или на запись плагина, напишите команду, чтобы она соответствовала этим требованиям:
591
592* **Текст команды**: максимум 500 символов печатного ASCII, без прогонов из четырех или более пробелов.
593* **Вывод**: печать одного объекта JSON имен заголовков и строковых значений на stdout, затем выход 0 в течение 10 секунд.
594* **Shell и рабочий каталог**: Claude Code запускает команду через `sh` или `cmd.exe` на Windows из каталога конфигурации, `~/.claude` или [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars#variables). Дайте абсолютный путь или команду на `PATH`, потому что относительный путь разрешается относительно этого каталога, а не проекта пользователя.
595* **Переменные, которые Claude Code удаляет**: из окружения команды, установленной в записи `marketplace.json` или в `.claude/settings.json` или `.claude/settings.local.json` проекта, Claude Code удаляет каждую переменную, имя которой содержит слово, такое как `TOKEN`, `SECRET`, `KEY` или `AUTH`, включая `ANTHROPIC_API_KEY`. Claude Code не применяет это удаление к команде, установленной в пользовательских параметрах, файле `--settings` или управляемых параметрах.
596* **Переменные, которые Claude Code устанавливает**: `CLAUDE_CODE_MARKETPLACE_URL` и `CLAUDE_CODE_MARKETPLACE_NAME` для команды источника `url`, и `CLAUDE_CODE_PLUGIN_NAME` и `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` для команды записи. `CLAUDE_CODE_MARKETPLACE_NAME` не установлена при первой выборке после того, как пользователь добавит marketplace по URL, потому что эта выборка — это то, что предоставляет имя.
597
598Команда, которая создает токен носителя, печатает объект, подобный этому:
599
600```json theme={null}
601{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}
602```
603
604<h4 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">
605 Когда Claude Code пропускает команду headersHelper или отбрасывает её вывод
606</h4>
607
608Claude Code не запускает команду `headersHelper` или отбрасывает заголовки, которые пришли из `headers` или из вывода команды, в этих ситуациях:
609
610* **Команда не удается**: если команда выходит с ненулевым кодом, работает более 10 секунд или печатает что-либо, кроме объекта JSON строковых значений, Claude Code не выполняет выборку или загрузку, для которой она запустила команду.
611* **URL marketplace не начинается с `https://`**: Claude Code не запускает команду этого источника `url` и отправляет только заголовки, указанные в его поле `headers`.
612* **Перенаправление покидает происхождение**: когда загрузка перенаправляется с происхождения URL архива, Claude Code отбрасывает значения `headers` и вывод команды как источника `url` marketplace, так и записи плагина.
613* **Запись устанавливает заголовок маршрутизации или идентификации**: Claude Code отбрасывает имена маршрутизации запросов и идентификации клиента, такие как `Host`, `Cookie` и `X-Forwarded-*` из `headers` записи и вывода команды, и сохраняет имена аутентификации, такие как `Authorization`. Claude Code фильтрует каждую запись `marketplace.json` таким образом, и [встроенную запись параметров](/docs/ru/settings-reference#extraknownmarketplaces) в зависимости от того, какой файл её объявляет.
614* **Команда установлена в параметрах каталога `--add-dir`**: Claude Code игнорирует её, на источнике `url` и на [встроенной записи плагина](/docs/ru/settings-reference#extraknownmarketplaces) одинаково, и отправляет только `headers` этого файла.
615* **Управляемые параметры блокируют команду**: установка [`disableCommandPluginSources`](/docs/ru/settings-reference#disablecommandpluginsources) на `true` блокирует команды `headersHelper`, и [`allowManagedHooksOnly`](/docs/ru/settings-reference#allowmanagedhooksonly) также блокирует их, если `disableCommandPluginSources` явно не `false`. При любом блокировании Claude Code все еще запускает команду для marketplace, который сами управляемые параметры объявляют.
616
617<h4 id="how-users-accept-a-headershelper-command">
618 Как пользователи принимают команду headersHelper
619</h4>
620
621Пользователь принимает команду записи плагина каждый раз, когда устанавливает или обновляет этот один плагин отдельно, из собственного представления плагина в `/plugin` или с `claude plugin install` или `claude plugin update`. Claude Code показывает команду и URL архива и запускает команду только после того, как пользователь примет.
622
623В неинтерактивной оболочке передайте [`--yes`](/docs/ru/plugins-reference#plugin-install) для принятия команды. Чтобы принять только команду, которую предыдущий запуск `--json` отобразил, передайте [`--accept-command`](/docs/ru/plugins-reference#plugin-install) с `sha256`, который запуск сообщил.
624
625Claude Code запускает только команду, которую он показал, для URL архива, который он показал. Если команда записи или URL архива изменились между тем, Claude Code отказывает установку или обновление. Изменение только в строке запроса не считается.
626
627<h5 id="installs-and-updates-that-refuse-the-command-instead-of-asking">
628 Установки и обновления, которые отказывают команде вместо запроса
629</h5>
630
631При любой операции, отличной от установки или обновления одного плагина, Claude Code не запускает команду записи и не загружает её архив, поэтому плагин остается в установленной версии или остается неустановленным. То, что видит пользователь, зависит от операции:
632
633* **Установка нескольких плагинов одновременно, из предложения плагина или как зависимость другого плагина**: Claude Code отказывает плагину, который имеет команду, и указывает пользователю на собственное представление этого плагина в `/plugin`. Другие плагины в массовой установке все еще устанавливаются. Плагин, который зависит от отказанного плагина, не устанавливается, пока пользователь не установит отказанный плагин отдельно.
634* **Фоновое автообновление или запуск сеанса для плагина, архив которого никогда не был загружен**: Claude Code перечисляет плагин на вкладке `/plugin` Errors, чтобы пользователь знал, что нужно установить или обновить его вручную. Автообновление, которое находит запись, по-прежнему объявляет установленную версию, не перечисляет ничего.
635
636<h5 id="when-a-marketplace-url-source’s-command-runs">
637 Когда запускается команда headersHelper источника marketplace `url`
638</h5>
639
640`headersHelper` источника `url` marketplace объявляется в файле параметров, например в записи [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces), а не в каталоге, который публикует marketplace, поэтому Claude Code не просит пользователя принять её при каждой установке или обновлении. Файл параметров, который её объявляет, определяет, когда Claude Code её запускает:
641
642| Файл параметров | Когда Claude Code запускает команду |
643| :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
644| Пользовательские параметры, файл `--settings` или управляемый файл параметров на машине | Без запроса, включая во время фонового обновления marketplace |
645| `.claude/settings.json` или `.claude/settings.local.json` проекта | Только после того, как пользователь примет [диалог доверия рабочей области](/docs/ru/permissions#what-runs-before-you-trust-a-folder) для этой папки. Сеанс `-p` или SDK не считается принятием, и ни доверие, предоставленное родительской папке |
646| Управляемые параметры сервера | Только после того, как пользователь одобрит доставленные параметры в [диалоге одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) |
647
648В сеансе `-p` или SDK Claude Code не может показать диалог одобрения безопасности. Он применяет другие доставленные параметры, но выборка marketplace и любая загрузка архива, которая нуждается в команде, не удается, пока пользователь не одобрит в интерактивном сеансе.
649
650Для [встроенной записи плагина](/docs/ru/settings-reference#extraknownmarketplaces) в одном из этих файлов Claude Code требует того же доверия папки или одобрения параметров, что и для команды уровня marketplace в этом файле, и пользователь также принимает команду записи при каждой установке или обновлении.
651
652<h3 id="command-sources">
653 Источники команд
654</h3>
655
656Используйте `command`, когда локально установленный инструмент создает каталог плагина, например IDE, который отображает свой плагин для выбранной в данный момент цепочки инструментов. Claude Code запускает команду, когда пользователь устанавливает плагин, и переустанавливает её в фоне один раз за сеанс, поэтому ваши пользователи получают изменённый вывод инструмента без переустановки. Требует Claude Code v2.1.229 или позже. На v2.1.120 через v2.1.228 установка плагина не удается с `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`, и на более старых версиях весь marketplace не загружается.
657
658Эта запись устанавливает плагин из любого каталога, который печатает инструмент:
659
660```json theme={null}
661{
662 "name": "my-plugin",
663 "source": {
664 "source": "command",
665 "command": "my-tool claude-plugin-path"
666 }
667}
668```
669
670Claude Code запускает команду через оболочку платформы, `sh` на macOS и Linux или `cmd.exe` на Windows, из домашнего каталога пользователя. Команда должна печать ровно одну строку на stdout и выход с кодом 0. Эта строка — абсолютный путь каталога, который содержит полный плагин к моменту выхода команды, и путь может изменяться между запусками.
671
672Claude Code останавливает команду, которая работает дольше, чем `timeout` секунд, и установка или обновление не удается. Claude Code также отказывает печатанному пути в этих случаях, и установка или обновление не удается таким же образом:
673
674* Каталог не имеет содержимого плагина на его верхнем уровне, например каталога `.claude-plugin/` или каталога `skills/`, `commands/`, `agents/` или `hooks/`
675* Каталог — это тот, в котором был запущен Claude Code, или один из его родителей
676* На Windows путь — это путь UNC
677
678Источники команд принимают эти поля:
679
680| Поле | Тип | Описание |
681| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
682| `command` | string | Обязательно. Команда оболочки, которая печатает абсолютный путь каталога плагина как одну строку на stdout и выходит 0. Должна быть печатным ASCII, максимум 500 символов, без прогонов из четырех или более пробелов, чтобы пользователи могли просмотреть всю команду, которую их просят принять |
683| `timeout` | number | Опционально. Целое число секунд для ожидания команды перед отказом (по умолчанию: 60, максимум: 600) |
684| `mode` | string | Опционально. `"copy"` (по умолчанию) копирует печатанный каталог в кэш плагинов. `"link"` использует печатанный каталог на месте. См. [Режим копирования и режим link](#copy-mode-and-link-mode) |
685
686<h4 id="copy-mode-and-link-mode">
687 Режим копирования и режим link
688</h4>
689
690С `"mode": "copy"` по умолчанию Claude Code копирует печатанный каталог в кэш плагинов с версией и выводит [версию плагина](/docs/ru/plugins-reference#version-management) из хеша содержимого каталога. Ваш инструмент может удалить или переписать каталог после выхода команды, и переустановка, которая создает идентичное содержимое, считается актуальной. Claude Code отказывает установку каталога размером более 256 МиБ или содержащего более 20 000 записей.
691
692Установите `"mode": "link"` для больших каталогов плагинов, которые не должны копироваться, например для отображаемого экспорта SDK. Claude Code заполняет запись кэша плагина ссылкой на каждую запись верхнего уровня печатанного каталога и использует файлы на месте, поэтому ничего не копируется, содержимое файлов не хешируется, и ограничения размера не применяются. Установка не удается, если запись верхнего уровня — это символическая ссылка, которая указывает вне печатанного каталога. Claude Code также пропускает [установку зависимостей пакета Node.js](/docs/ru/plugins-reference#node-js-package-dependencies) для плагина в режиме link, поэтому печатайте каталог, который уже содержит любые `node_modules`, которые нужны плагину.
693
694Сохраняйте печатанный каталог на месте столько, сколько плагин остается установленным, потому что Claude Code загружает плагин через эти ссылки при каждом запуске. Claude Code выводит [версию плагина](/docs/ru/plugins-reference#version-management) из реального пути печатанного каталога и его записей верхнего уровня, а не файлов внутри, поэтому печатайте другой путь для сигнала нового содержимого. В сеансе, запущенном в печатанном каталоге или где-либо ниже, Claude Code вообще не загружает плагин.
695
696Claude Code не поддерживает режим link на Windows и отказывает установку плагина в режиме link там. Объявите `"mode": "copy"` вместо этого.
697
698<h4 id="how-users-accept-the-command">
699 Как пользователи принимают команду
700</h4>
701
702Claude Code запускает вашу команду на машине пользователя, поэтому она привязывает каждый запуск к явному принятию пользователем:
703
704* Когда пользователи устанавливают плагин из его экрана деталей в `/plugin` или устанавливают или обновляют его с `claude plugin install` или `claude plugin update` в интерактивном терминале, Claude Code сначала показывает им точную строку команды и записывает принятую команду для этой установки. `claude plugin update`, который может продолжаться при принятии той же команды, не показывает ничего.
705* В неинтерактивной оболочке, например в скрипте подготовки, передайте `--yes` в `claude plugin install` или `claude plugin update` для принятия команды, которую она печатает. Чтобы принять только команду, которую предыдущий запуск `--json` отобразил, передайте [`--accept-command`](/docs/ru/plugins-reference#plugin-install) с `sha256`, который запуск сообщил.
706* Каждый другой путь запускает только команду, которую пользователь уже принял. Это включает обновления, запущенные из `/plugin`, и фоновые запуски, описанные в [Когда Claude Code переустанавливает команду](#when-claude-code-re-runs-the-command). Когда ничего не было принято, Claude Code отказывает запустить команду и говорит пользователю, как её просмотреть. Claude Code никогда не устанавливает плагин с источником команды как зависимость другого плагина, поэтому пользователи устанавливают его сами в первую очередь.
707* Если вы измените `command` записи или переключите её `mode`, пользователи сохраняют версию, которую они уже имеют, и Claude Code останавливает переустановку команды. В интерактивных сеансах вкладка `/plugin` Errors показывает новую команду, пока пользователь не просмотрит и не примет её, запустив `claude plugin update <plugin>@<marketplace>`.
708
709Администраторы могут блокировать источники команд во всей организации с помощью управляемого параметра [`disableCommandPluginSources`](/docs/ru/settings-reference#disablecommandpluginsources). Если организация устанавливает [`allowManagedHooksOnly`](/docs/ru/settings-reference#allowmanagedhooksonly), Claude Code блокирует источники команд по умолчанию.
710
711<h4 id="when-claude-code-re-runs-the-command">
712 Когда Claude Code переустанавливает команду
713</h4>
714
715Печатанный каталог отражает состояние инструмента на момент запуска команды, поэтому Claude Code запускает команду снова в эти моменты:
716
717* Каждый раз, когда пользователь устанавливает или обновляет плагин
718* Один раз за сеанс для каждого включённого плагина с источником команды, в фоне, вскоре после запуска сеанса. Этот запуск не проходит через автообновление marketplace, поэтому не зависит от [параметра автообновления](/docs/ru/discover-plugins#configure-auto-updates) marketplace
719* При запуске или на `/reload-plugins`, когда установленная версия включённого плагина отсутствует в кэше плагинов
720
721Claude Code пропускает два фоновых запуска, когда пользователь устанавливает [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/ru/env-vars). Явные установки и обновления все еще запускают команду с этой переменной установленной.
722
723Когда хешированный вывод команды изменился, Claude Code устанавливает результат как новую версию и перезагружает его в работающем интерактивном сеансе, переключая [те же компоненты, которые переключает `/reload-plugins`](/docs/ru/plugins-reference#environment-variables). Пользователь видит уведомление, что плагин был перезагружен. Если переустановка на месте аннулирует кэш подсказок сеанса, Claude Code вместо этого предлагает пользователю запустить `/reload-plugins`, который [предупреждает о стоимости кэша и применяется при переустановке с `--force`](/docs/ru/prompt-caching#enabling-or-disabling-a-plugin).
724
725<h3 id="advanced-plugin-entries">
726 Расширенные записи плагинов
727</h3>
728
729Этот пример показывает запись плагина, использующую множество дополнительных полей, включая пользовательские пути для команд, агентов, hooks и MCP servers:
730
731```json theme={null}
732{
733 "name": "enterprise-tools",
734 "source": {
735 "source": "github",
736 "repo": "company/enterprise-plugin"
737 },
738 "description": "Инструменты автоматизации корпоративного рабочего процесса",
739 "version": "2.1.0",
740 "author": {
741 "name": "Enterprise Team",
742 "email": "enterprise@example.com"
743 },
744 "homepage": "https://docs.example.com/plugins/enterprise-tools",
745 "repository": "https://github.com/company/enterprise-plugin",
746 "license": "MIT",
747 "keywords": ["enterprise", "workflow", "automation"],
748 "category": "productivity",
749 "commands": [
750 "./commands/core/",
751 "./commands/enterprise/",
752 "./commands/experimental/preview.md"
753 ],
754 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],
755 "hooks": {
756 "PostToolUse": [
757 {
758 "matcher": "Write|Edit",
759 "hooks": [
760 {
761 "type": "command",
762 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
763 }
764 ]
765 }
766 ]
767 },
768 "mcpServers": {
769 "enterprise-db": {
770 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
771 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]
772 }
773 },
774 "strict": false
775}
776```
777
778Ключевые моменты, на которые следует обратить внимание:
779
780* **`commands` и `agents`**: вы можете указать несколько каталогов или отдельные файлы. Пути относительны к корню плагина и должны оставаться внутри него.
781 * Claude Code отказывает путь, который разрешается вне каталога плагина, например `./../shared.md`, с ошибкой [`path escapes plugin directory`](/docs/ru/errors#path-escapes-plugin-directory), и все еще загружает плагин без этого компонента
782* **`${CLAUDE_PLUGIN_ROOT}`**: используйте эту переменную в командах hooks и конфигурациях MCP server для ссылки на файлы в каталоге установки плагина.
783 * См. [таблицу подстановки](/docs/ru/plugins-reference#environment-variables) для того, какие поля конфигурации подставляют её для каждого типа сервера
784 * Для зависимостей или состояния, которое должно сохраняться при обновлениях плагина, используйте [`${CLAUDE_PLUGIN_DATA}`](/docs/ru/plugins-reference#persistent-data-directory) вместо этого
785* **`strict: false`**: поскольку это установлено на false, плагину не нужен собственный `plugin.json`. Запись marketplace определяет все. См. [Strict mode](#strict-mode) ниже.
786
787По умолчанию skills плагина загружаются из каталога `skills/` в его `source`. Пути, указанные в поле `skills`, добавляются к этому сканированию:
788
789```json theme={null}
790"skills": ["./skills/", "./extra-skills/"]
791```
792
793Когда несколько записей плагинов совместно используют один каталог `skills/` в корне marketplace (`source: "./"`), вместо этого указывайте конкретные подкаталоги, чтобы каждая запись загружала только свои собственные skills:
794
795```json theme={null}
796"source": "./",
797"skills": ["./skills/code-review", "./skills/docs"]
798```
799
800С источником в корне marketplace указанные пути являются полным набором для этой записи, и другие каталоги в общем каталоге `skills/` не загружаются. Указание самого `./skills/` или корня плагина сохраняет полное сканирование. Если ни один из указанных путей не существует, вместо этого запускается сканирование по умолчанию.
801
802<h3 id="strict-mode">
803 Strict mode
804</h3>
805
806Поле `strict` контролирует, является ли `plugin.json` авторитетом для определений компонентов (skills, агенты, hooks, MCP servers, стили вывода).
807
808| Значение | Поведение |
809| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
810| `true` (по умолчанию) | `plugin.json` является авторитетом. Запись marketplace может дополнить его дополнительными компонентами, и оба источника объединяются. |
811| `false` | Запись marketplace является полным определением. Если плагин также имеет `plugin.json`, который объявляет компоненты, это конфликт и плагин не загружается. |
812
813**Когда использовать каждый режим:**
814
815* **`strict: true`**: плагин имеет собственный `plugin.json` и управляет своими компонентами. Запись marketplace может добавить дополнительные skills или hooks сверху. Это значение по умолчанию и работает для большинства плагинов.
816* **`strict: false`**: оператор marketplace хочет полный контроль. Репозиторий плагина предоставляет необработанные файлы, и запись marketplace определяет, какие из этих файлов открыты как skills, агенты, hooks и т. д. Полезно, когда оператор marketplace переструктурирует или курирует компоненты плагина иначе, чем предполагал автор плагина.
817
818<h2 id="host-and-distribute-marketplaces">
819 Размещение и распространение marketplace
820</h2>
821
822Когда пользователи добавляют marketplace, размещенный в репозитории Git, или устанавливают плагин на основе Git из его списка, Claude Code клонирует этот репозиторий marketplace или плагина на машину пользователя. Клон никогда не загружает содержимое [Git LFS](https://git-lfs.com), поэтому файлы, отслеживаемые LFS, поступают как файлы-указатели. Держите файлы, которые нужны вашим плагинам, вне LFS.
823
824<h3 id="host-on-github-recommended">
825 Размещение на GitHub (рекомендуется)
826</h3>
827
828GitHub обеспечивает рекомендуемый способ размещения и распространения marketplace:
829
8301. **Создание репозитория**: установите новый репозиторий для вашего marketplace
8312. **Добавление файла marketplace**: создайте `.claude-plugin/marketplace.json` с определениями ваших плагинов
8323. **Совместное использование с командами**: пользователи добавляют ваш marketplace с помощью `/plugin marketplace add owner/repo`
833
834**Преимущества**: встроенное управление версиями, отслеживание проблем и функции совместной работы команды.
835
836<h3 id="host-on-other-git-services">
837 Размещение на других сервисах Git
838</h3>
839
840Любой сервис хостинга Git работает, например GitLab, Bitbucket и самостоятельно размещаемые серверы. Пользователи добавляют с полным URL репозитория:
841
842```shell theme={null}
843/plugin marketplace add https://gitlab.com/company/plugins.git
844```
845
846<h3 id="private-repositories">
847 Частные репозитории
848</h3>
849
850Claude Code поддерживает установку плагинов из частных репозиториев. Если вы распространяете ваш marketplace через [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) вместо этого, ваши учетные данные Git не задействованы: организационная синхронизация читает репозиторий marketplace через подключение вашей организации GitHub или GitLab на claude.ai. См. [Распространение через параметры организации](#distribute-through-organization-settings) для информации о том, какие источники плагинов могут быть частными.
851
852<h4 id="commands-you-run">
853 Команды, которые вы запускаете
854</h4>
855
856Когда вы запускаете `/plugin marketplace add`, `/plugin install`, `/plugin update` или `/plugin marketplace update`, Claude Code использует ваши существующие помощники учетных данных Git, поэтому доступ HTTPS через `gh auth login`, macOS Keychain или `git-credential-store` работает так же, как в вашем терминале. Доступ SSH работает, пока хост уже находится в вашем файле `known_hosts` и ключ загружен в `ssh-agent`, так как Claude Code подавляет интерактивные подсказки SSH для отпечатка хоста и пароля ключа. Сокращение GitHub `owner/repo` по умолчанию клонирует через SSH; установите [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/ru/env-vars#variables), чтобы вместо этого клонировать их через HTTPS.
857
858<h4 id="background-auto-updates">
859 Фоновые автоматические обновления
860</h4>
861
862Фоновое обновление проверяет удаленное хранилище marketplace на предмет новых коммитов с помощью ваших настроенных помощников учетных данных Git, так же как команды, которые вы запускаете. Для удаленных SSH ключ, загруженный в `ssh-agent`, аутентифицирует проверку. Claude Code запускает проверку неинтерактивно: он отключает подсказки терминала Git и программы askpass, а также указывает помощникам учетных данных не выводить подсказки. Возможность проверки аутентифицироваться в частном репозитории через HTTPS зависит от вашего помощника:
863
864* Помощник, который может предоставить сохраненные учетные данные без подсказки, аутентифицирует проверку. Git Credential Manager, помощник macOS Keychain и `git-credential-store` работают таким образом, как только они содержат учетные данные для хоста.
865* Помощник, который должен вас попросить, не может ответить в фоновом режиме. Обновление не удается молча, и существующий checkout остается на месте, поэтому ваши плагины продолжают работать из последнего синхронизированного состояния. Запустите `/plugin marketplace update <name>`, чтобы обновить marketplace с вашими учетными данными.
866
867Когда проверка находит checkout в актуальном состоянии, Claude Code оставляет его как есть. Когда проверка находит новые коммиты или не удается, потому что не может достичь или аутентифицироваться на удаленном хранилище, Claude Code клонирует marketplace снова и заменяет новый клон. Если этот клон не удается, существующий checkout остается на месте. Повторное клонирование может [истечь на больших репозиториях](#git-operations-time-out).
868
869Два параметра делают частные marketplace предсказуемыми:
870
871* Установите `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, чтобы сохранить существующий checkout без попытки повторного клонирования, когда фоновая проверка не может достичь или аутентифицироваться на удаленном хранилище. Ваши плагины продолжают работать из последнего синхронизированного состояния, и ручные обновления с `/plugin marketplace update` по-прежнему аутентифицируются с вашими учетными данными.
872* Настройте помощника учетных данных Git, например с помощью `gh auth setup-git` для GitHub, чтобы фоновая проверка и повторное клонирование могли аутентифицироваться без подсказок.
873
874Установка токена поставщика, такого как `GITHUB_TOKEN`, в вашей среде не включает фоновую аутентификацию сама по себе. Токены вступают в силу только через настроенного помощника учетных данных, например помощника CLI `gh`, который читает `GH_TOKEN` и `GITHUB_TOKEN`.
875
876<Note>
877 В средах CI/CD настройте помощника учетных данных Git перед установкой плагинов из частных репозиториев. На GitHub Actions экспортируйте токен с доступом для чтения к репозиторию marketplace как `GH_TOKEN`, затем запустите `gh auth setup-git`. Токен рабочего процесса по умолчанию может получить доступ только к репозиторию самого рабочего процесса, поэтому частный marketplace в другом репозитории требует личного токена доступа или токена приложения.
878</Note>
879
880<h3 id="distribute-through-organization-settings">
881 Распространение через параметры организации
882</h3>
883
884Если вы распространяете плагины через [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) в плане Team или Enterprise, применяются эти правила источника:
885
886* На github.com и gitlab.com репозиторий marketplace должен быть частным или внутренним. Организационная синхронизация читает репозиторий через подключение, которое соответствует его хосту:
887 * **github.com**: Claude GitHub App
888 * **Ваш хост GitHub Enterprise Server**: [GitHub Enterprise App](/docs/ru/github-enterprise-server#admin-setup) вашей организации
889 * **gitlab.com или ваш самостоятельно управляемый экземпляр GitLab**: токен доступа в [конфигурации GitLab](#sync-a-gitlab-hosted-marketplace) вашей организации для этого хоста
890* Каждый источник плагина должен быть типа `github`, `url` или `git-subdir`, или [относительный путь](#relative-paths), который начинается с `./`. Если вы перечисляете плагин по простому имени под `metadata.pluginRoot`, организационная синхронизация отклоняет его как неподдерживаемый источник, поэтому напишите путь полностью, например `./plugins/deploy-tools`.
891* Источник плагина может быть частным в трех случаях:
892 * Источник github.com, который совместно использует владельца репозитория marketplace
893 * Источник на хосте GitHub Enterprise вашей организации с установленным GHE App на репозитории
894 * Источник `url` или `git-subdir` на том же хосте GitLab, что и репозиторий marketplace. На gitlab.com источник также должен находиться под той же группой верхнего уровня или пространством имен пользователя, что и репозиторий marketplace.
895* Любой другой источник плагина должен быть общедоступным репозиторием на github.com, gitlab.com или bitbucket.org, который организационная синхронизация получает без учетных данных. Организационная синхронизация отклоняет источники плагинов на хостах, которые эти правила не охватывают.
896
897См. [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) для рабочего процесса администратора.
898
899Чтобы включить частные плагины, поместите папки плагинов внутри репозитория marketplace и ссылайтесь на них с помощью [относительного пути](#relative-paths). Организационная синхронизация упаковывает каждый плагин во время распространения, поэтому пользователи никогда не нуждаются в доступе к отдельному репозиторию источника.
900
901Например, эта запись плагина `marketplace.json` ссылается на плагин, который вы зафиксировали в `plugins/deploy-tools` в репозитории marketplace:
902
903```json theme={null}
904{
905 "name": "deploy-tools",
906 "source": "./plugins/deploy-tools"
907}
908```
909
910<h4 id="sync-a-gitlab-hosted-marketplace">
911 Синхронизация marketplace, размещенного на GitLab
912</h4>
913
914Чтобы синхронизировать marketplace с gitlab.com или самостоятельно управляемого экземпляра GitLab, [Owner](/docs/ru/server-managed-settings#access-control) сначала добавляет конфигурацию GitLab для этого хоста в [**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code). Конфигурации GitLab находятся в публичной бета-версии и применяются только к синхронизации marketplace плагинов. Добавление одной не делает репозитории GitLab доступными в [облачных сеансах](/docs/ru/claude-code-on-the-web#limitations). См. [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) для шагов настройки.
915
916Когда вы добавляете marketplace, введите HTTPS URL проекта, например `https://gitlab.example.com/platform/claude-plugins`. Проекты в вложенных подгруппах работают. Организационная синхронизация читает ветку по умолчанию проекта. Если вы включите **Sync automatically**, только push в ветку по умолчанию запускают синхронизацию.
917
918<h4 id="keep-executables-out-of-the-top-level-bin-directory">
919 Держите исполняемые файлы вне каталога bin верхнего уровня
920</h4>
921
922Не включайте каталог `bin/` верхнего уровня в любой плагин, который вы распространяете через параметры организации. claude.ai отклоняет плагин, который имеет его, независимо от того, поступает ли плагин через синхронизацию marketplace или прямую загрузку:
923
924* **Синхронизация marketplace**: организационная синхронизация отклоняет этот плагин и синхронизирует остальную часть marketplace. Сообщение об ошибке начинается с `Plugin contains a top-level bin/ directory`.
925* **Прямая загрузка**: если вы загружаете плагин в [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) вместо этого, claude.ai отклоняет загрузку с тем же сообщением.
926
927Держите исполняемые файлы в другом каталоге, например `scripts/`, и ссылайтесь на них как `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` из ваших [skills, hooks или MCP server configs](/docs/ru/plugins-reference#environment-variables).
928
929<h3 id="require-marketplaces-for-your-team">
930 Требование marketplace для вашей команды
931</h3>
932
933Вы можете настроить ваш репозиторий так, чтобы Claude Code добавлял ваш marketplace для членов команды один раз, когда они [доверяют папке проекта](/docs/ru/permissions#what-runs-before-you-trust-a-folder), без отдельного запроса. Добавьте ваш marketplace в `.claude/settings.json`:
934
935```json theme={null}
936{
937 "extraKnownMarketplaces": {
938 "company-tools": {
939 "source": {
940 "source": "github",
941 "repo": "your-org/claude-plugins"
942 }
943 }
944 }
945}
946```
947
948Вы также можете указать, какие плагины должны быть включены по умолчанию:
949
950```json theme={null}
951{
952 "enabledPlugins": {
953 "code-formatter@company-tools": true,
954 "deployment-tools@company-tools": true
955 }
956}
957```
958
959Для полных параметров конфигурации см. [Plugin settings](/docs/ru/settings-reference#plugin-settings).
960
961<Note>
962 Если вы используете локальный источник `directory` или `file` с относительным путем, путь разрешается относительно основного checkout вашего репозитория. Когда вы запускаете Claude Code из git worktree, путь все еще указывает на основной checkout, поэтому все worktrees совместно используют одно и то же расположение marketplace. Состояние marketplace хранится один раз для каждого пользователя в `~/.claude/plugins/known_marketplaces.json`, а не для каждого проекта.
963</Note>
964
965<h3 id="pre-populate-plugins-for-containers">
966 Предварительное заполнение плагинов для контейнеров
967</h3>
968
969Для образов контейнеров и сред CI вы можете предварительно заполнить каталог плагинов во время сборки, чтобы Claude Code запускался с уже доступными marketplace и плагинами, без клонирования во время выполнения. Установите переменную окружения `CLAUDE_CODE_PLUGIN_SEED_DIR` на этот каталог.
970
971Чтобы наслоить несколько каталогов seed, разделите пути с `:` на Unix или `;` на Windows. Claude Code ищет каждый каталог по порядку и использует первый seed, содержащий данный marketplace или кэш плагина.
972
973Каталог seed отражает структуру `~/.claude/plugins`:
974
975```
976$CLAUDE_CODE_PLUGIN_SEED_DIR/
977 known_marketplaces.json
978 marketplaces/<name>/...
979 cache/<marketplace>/<plugin>/<version>/...
980```
981
982Чтобы построить каталог seed, запустите Claude Code один раз во время сборки образа, установите нужные вам плагины, затем скопируйте полученный каталог `~/.claude/plugins` в ваш образ и укажите `CLAUDE_CODE_PLUGIN_SEED_DIR` на него.
983
984Чтобы пропустить шаг копирования, установите `CLAUDE_CODE_PLUGIN_CACHE_DIR` на путь целевого seed во время сборки, чтобы плагины устанавливались непосредственно туда:
985
986```bash theme={null}
987CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins
988CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins
989```
990
991Затем установите `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` в среде выполнения вашего контейнера, чтобы Claude Code читал из seed при запуске.
992
993При запуске Claude Code регистрирует marketplace, найденные в `known_marketplaces.json` seed, в основную конфигурацию и использует кэши плагинов, найденные под `cache/`, на месте без повторного клонирования. Это работает как в интерактивном режиме, так и в неинтерактивном режиме с флагом `-p`.
994
995Детали поведения:
996
997* **Только для чтения**: Claude Code никогда не записывает в каталог seed.
998* **Автоматические обновления отключены**: seed marketplace не автоматически обновляются.
999* **Записи seed имеют приоритет**: marketplace, объявленные в seed, перезаписывают любые совпадающие записи в конфигурации пользователя при каждом запуске. Чтобы отказаться от seed плагина, используйте `/plugin disable` вместо удаления marketplace.
1000* **Разрешение пути**: Claude Code находит содержимое marketplace, проверяя `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` во время выполнения, а не доверяя путям, хранящимся внутри JSON seed. Это означает, что seed работает правильно, даже если он смонтирован по другому пути, чем где он был построен.
1001* **Мутация заблокирована**: запуск `/plugin marketplace remove` или `/plugin marketplace update` против seed-управляемого marketplace не удается с указанием попросить вашего администратора обновить образ seed.
1002* **Компонуется с параметрами**: если `extraKnownMarketplaces` или `enabledPlugins` объявляют marketplace, который уже существует в seed, Claude Code использует копию seed вместо клонирования.
1003
1004<h3 id="managed-marketplace-restrictions">
1005 Ограничения управляемого marketplace
1006</h3>
1007
1008Для организаций, требующих строгого контроля над источниками плагинов, администраторы могут ограничить, какие marketplace плагинов пользователи могут добавлять, используя параметр [`strictKnownMarketplaces`](/docs/ru/settings-reference#strictknownmarketplaces) в управляемых параметрах. Чтобы также отклонить флаги CLI, которые загружают плагины, агентов и MCP серверы для одного запуска, объедините его с [`disableSideloadFlags`](/docs/ru/settings-reference#disablesideloadflags). Чтобы разрешить список, какие marketplace плагинов могут появляться как предложения контекстной установки, установите [`pluginSuggestionMarketplaces`](/docs/ru/settings-reference#pluginsuggestionmarketplaces).
1009
1010`strictKnownMarketplaces` совпадает с marketplace, из которого поступает плагин, а не с записями внутри него, поэтому пользователи все еще могут установить плагин с [источником `command`](#command-sources) из разрешенного marketplace. Чтобы также заблокировать источники команд, установите [`disableCommandPluginSources`](/docs/ru/settings-reference#disablecommandpluginsources).
1011
1012Когда `strictKnownMarketplaces` настроен в управляемых параметрах, поведение ограничения зависит от значения:
1013
1014| Значение | Поведение |
1015| ---------------------------- | ----------------------------------------------------------------------------------------------------------- |
1016| Не определено (по умолчанию) | Нет ограничений. Пользователи могут добавлять любой marketplace |
1017| Пустой массив `[]` | Полная блокировка. Блокирует каждый источник marketplace, включая официальный marketplace Anthropic |
1018| Список источников | Список разрешений применяется. Пользователи могут добавлять только marketplace, которые совпадают с записью |
1019
1020<h4 id="common-configurations">
1021 Общие конфигурации
1022</h4>
1023
1024Отключение всех добавлений marketplace, включая официальный marketplace Anthropic:
1025
1026```json theme={null}
1027{
1028 "strictKnownMarketplaces": []
1029}
1030```
1031
1032Claude Code загружает плагины [синхронизированные с claude.ai](/docs/ru/plugins-reference#synced-plugins) из вашей учетной записи, а не из marketplace, поэтому эта блокировка их не охватывает. Чтобы остановить их также, установите [`syncClaudeAiPlugins`](/docs/ru/settings-reference#syncclaudeaiplugins) на `false` в управляемых параметрах или отключите Skills для вашей организации на claude.ai.
1033
1034Разрешение только официального marketplace Anthropic. Сопоставление для записи одного репозитория является точным, поэтому эта запись не охватывает варианты `ref` или `path` одного и того же репозитория:
1035
1036```json theme={null}
1037{
1038 "strictKnownMarketplaces": [
1039 {
1040 "source": "github",
1041 "repo": "anthropics/claude-plugins-official"
1042 }
1043 ]
1044}
1045```
1046
1047С этой записью Claude Code сохраняет уже зарегистрированный официальный marketplace доступным и, на свежей машине, регистрирует marketplace автоматически при первом запуске Claude Code в интерактивном режиме.
1048
1049Автоматическая регистрация не охватывает каждую машину. Она наиболее часто пропускает:
1050
1051* Неинтерактивные среды, которые запускаются перед первым интерактивным запуском машины.
1052* Машины, где Claude Code уже запускался в интерактивном режиме под политикой, которая заблокировала marketplace, например блокировка пустого массива. Claude Code записывает заблокированную попытку и не повторяет попытку после изменения политики.
1053
1054На этих машинах добавьте marketplace в [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) в том же `managed-settings.json`, чтобы Claude Code регистрировал его автоматически, или запустите `claude plugin marketplace add anthropics/claude-plugins-official`.
1055
1056Разрешение только определенных marketplace:
1057
1058```json theme={null}
1059{
1060 "strictKnownMarketplaces": [
1061 {
1062 "source": "github",
1063 "repo": "acme-corp/approved-plugins"
1064 },
1065 {
1066 "source": "github",
1067 "repo": "acme-corp/security-tools",
1068 "ref": "v2.0"
1069 },
1070 {
1071 "source": "url",
1072 "url": "https://plugins.example.com/marketplace.json"
1073 }
1074 ]
1075}
1076```
1077
1078Разрешение каждого репозитория marketplace под организацией GitHub с записью [owner-wildcard](/docs/ru/settings-reference#owner-wildcards). Owner wildcards требуют Claude Code v2.1.223 или позже.
1079
1080```json theme={null}
1081{
1082 "strictKnownMarketplaces": [
1083 {
1084 "source": "github",
1085 "repo": "acme-corp/*"
1086 }
1087 ]
1088}
1089```
1090
1091Разрешение всех marketplace с внутреннего сервера Git с использованием сопоставления шаблонов регулярных выражений на хосте. Это рекомендуемый подход для [GitHub Enterprise Server](/docs/ru/github-enterprise-server#plugin-marketplaces-on-ghes) или самостоятельно размещаемых экземпляров GitLab:
1092
1093```json theme={null}
1094{
1095 "strictKnownMarketplaces": [
1096 {
1097 "source": "hostPattern",
1098 "hostPattern": "^github\\.example\\.com$"
1099 }
1100 ]
1101}
1102```
1103
1104Разрешение marketplace на основе файловой системы из определенного каталога с использованием сопоставления шаблонов регулярных выражений на пути:
1105
1106```json theme={null}
1107{
1108 "strictKnownMarketplaces": [
1109 {
1110 "source": "pathPattern",
1111 "pathPattern": "^/opt/approved/"
1112 }
1113 ]
1114}
1115```
1116
1117Используйте `".*"` как `pathPattern` для разрешения любого пути файловой системы при одновременном контроле сетевых источников с помощью `hostPattern`.
1118
1119<Note>
1120 `strictKnownMarketplaces` ограничивает то, что пользователи могут добавлять, но не регистрирует marketplace самостоятельно. Чтобы сделать разрешенный marketplace доступным для пользователей автоматически, добавьте его в [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) в том же `managed-settings.json`.
1121
1122 Официальный marketplace Anthropic — это единственный, который Claude Code регистрирует самостоятельно, и только когда список разрешений позволяет это. Автоматическая регистрация также пропускает некоторые машины, такие как неинтерактивные среды и машины, где более ранняя политика заблокировала его. Чтобы охватить эти машины, добавьте официальный marketplace в `extraKnownMarketplaces` также. Для двух параметров рядом см. справку [`strictKnownMarketplaces`](/docs/ru/settings-reference#strictknownmarketplaces).
1123</Note>
1124
1125<h4 id="how-restrictions-work">
1126 Как работают ограничения
1127</h4>
1128
1129Ограничения проверяются перед любой сетевой или файловой операцией. Проверка выполняется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении плагина. Если marketplace был добавлен до настройки политики и его источник больше не совпадает со списком разрешений, Claude Code отказывает в установке или обновлении плагинов из него. То же самое применяется к `blockedMarketplaces`.
1130
1131Где две списки применяются, зависит от того, где вы их установили:
1132
1133* **Консоль администратора claude.ai**: Claude Code применяет оба списка в сеансах, которые [читают управляемые параметры сервера](/docs/ru/managed-settings#where-and-when-a-policy-applies). claude.ai также проверяет их, когда кто-либо в вашей организации добавляет новый marketplace из репозитория Git на claude.ai или из **Customize** в приложении Claude Desktop вне его вкладки Code. Это охватывает marketplace, который член добавляет для своей собственной учетной записи, и тот, который добавляется для всей организации под [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai отказывает репозиторию, который список разрешений не допускает или который список блокировки называет. Он не переопроверяет marketplace, который был добавлен в любом месте до установки списков, и он не проверяет загруженные плагины.
1134* **Файл управляемых параметров, политика уровня ОС или другой управляемый источник**: Claude Code применяет оба списка там, где он читает этот источник. claude.ai не читает его.
1135
1136Чтобы заблокировать каждый репозиторий marketplace под владельцем GitHub, используйте форму owner-wildcard в записи `blockedMarketplaces`: `{ "source": "github", "repo": "untrusted-org/*" }`. Требуется Claude Code v2.1.223 или позже. Для правил сопоставления, которые отличаются между списком блокировки и списком разрешений, см. [Owner wildcards](/docs/ru/settings-reference#owner-wildcards).
1137
1138Когда пользователь добавляет URL репозитория `https://`, который Claude Code [клонирует, а не получает](/docs/ru/discover-plugins#add-from-other-git-hosts), например простой URL репозитория `github.com` или `gitlab.com`, Claude Code также проверяет его против записей `url` в `blockedMarketplaces`. Claude Code блокирует добавление, если запись называет тот же URL. В этом сравнении Claude Code игнорирует суффикс `.git` и любой ref, который пользователь добавляет после `#`. Требуется Claude Code v2.1.232 или позже. До v2.1.232 Claude Code совпадал с записью `url` только против URL, который он получал как размещенный файл `marketplace.json`.
1139
1140Список разрешений использует точное сопоставление для большинства типов источников, кроме записей owner-wildcard `github`. Чтобы marketplace был разрешен, все указанные поля должны совпадать:
1141
1142* Для источников GitHub: `repo` обязателен, либо называя один репозиторий, либо используя форму owner-wildcard `owner/*` для охвата каждого репозитория под этим владельцем. Для того, как записи wildcard совпадают, включая правила регистра, см. [Owner wildcards](/docs/ru/settings-reference#owner-wildcards). Для записей одного репозитория `ref` должен совпадать точно или отсутствовать в обоих источниках marketplace и записи списка разрешений, и то же правило применяется к `path`
1143* Для источников URL: полный URL должен совпадать точно
1144* Для источников `hostPattern`: хост marketplace сопоставляется с шаблоном регулярного выражения
1145* Для источников `pathPattern`: путь файловой системы marketplace сопоставляется с шаблоном регулярного выражения
1146
1147Точное сопоставление списка разрешений рассматривает URL, которые отличаются только конечной косой чертой, суффиксом `.git` или схемой `ssh://` и `https://` как разные значения. Если marketplace вашей организации можно клонировать более чем одной формой URL, предпочтите запись `hostPattern` буквальному URL, чтобы формы `https://`, `ssh://` и `user@host:path` все совпадали.
1148
1149Marketplace [размещенный на claude.ai](/docs/ru/discover-plugins#add-from-claude-ai) сопоставляется по хосту: запись `hostPattern`, которая совпадает с `claude.ai`, управляет им в `strictKnownMarketplaces` и в `blockedMarketplaces`. В списке разрешений такая запись не допускает личные загрузки claude.ai члена. Требуется Claude Code v2.1.273 или позже.
1150
1151Поскольку `strictKnownMarketplaces` установлен в [управляемых параметрах](/docs/ru/managed-settings), отдельные пользователи и конфигурации проекта не могут переопределить эти ограничения.
1152
1153Для полных деталей конфигурации, включая все поддерживаемые типы источников и сравнение с `extraKnownMarketplaces`, см. справку [strictKnownMarketplaces](/docs/ru/settings-reference#strictknownmarketplaces).
1154
1155<h3 id="version-resolution-and-release-channels">
1156 Разрешение версий и каналы выпуска
1157</h3>
1158
1159Версии плагинов определяют пути кэша и обнаружение обновлений: если разрешенная версия совпадает с тем, что уже есть у пользователя, `/plugin update` и автоматическое обновление пропускают плагин. Для источников на основе Git, если вы опустите `version`, Claude Code использует разрешенный SHA коммита источника, поэтому пользователи получают обновление всякий раз, когда этот коммит изменяется; это самая простая установка для внутренних или активно разрабатываемых плагинов. См. [Version management](/docs/ru/plugins-reference#version-management) для полного порядка разрешения, включая источники `archive`.
1160
1161<Warning>
1162 Установка `version` закрепляет плагин для каждого типа источника, кроме [`command`](#command-sources), чья версия всегда включает хеш того, что произвела команда. Плагин [загруженный на месте](/docs/ru/plugins-reference#plugin-caching-and-file-resolution) из marketplace, добавленного как локальный каталог, также не закреплен. Если вы объявляете `"version": "1.0.0"` в `plugin.json` и отправляете новые коммиты без изменения этой строки, существующие пользователи этих источников сохраняют кэшированную копию, потому что Claude Code видит ту же версию. Увеличивайте поле при каждом выпуске или опустите его, чтобы вернуться к разрешенной версии.
1163
1164 Избегайте установки `version` одновременно в `plugin.json` и в записи marketplace. Значение `plugin.json` всегда побеждает молча, поэтому устаревшая версия манифеста может скрыть версию, которую вы установили в `marketplace.json`.
1165</Warning>
1166
1167<h4 id="set-up-release-channels">
1168 Установка каналов выпуска
1169</h4>
1170
1171Для поддержки каналов выпуска "stable" и "latest" для ваших плагинов вы можете установить два marketplace, которые указывают на разные refs или SHAs одного репозитория. Затем вы можете дать каждой группе пользователей свой собственный marketplace через управляемые параметры одним из двух способов:
1172
1173* Развертывание отдельных [endpoint-managed settings](/docs/ru/managed-settings#delivery-mechanisms), таких как файл управляемых параметров или профиль MDM, для устройств каждой группы. [Как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#precedence-within-the-managed-tier) говорит, применяется ли файл или профиль для каждой группы на устройстве, которое также имеет источник на уровне организации.
1174* Определение одной [Claude apps gateway policy](/docs/ru/claude-apps-gateway-config#managed) для каждой группы. Шлюз применяет первую политику, чье правило соответствия подходит пользователю, поэтому упорядочьте политики так, чтобы каждый пользователь достигал политики своей группы. Политика группы `extraKnownMarketplaces` заменяет карту политики catch-all, а не объединяется с ней, поэтому перечислите каждый marketplace, который группе нужен в политике группы, а не только ее marketplace канала.
1175
1176Управляемые параметры сервера из консоли администратора [применяются к каждому пользователю в вашей организации](/docs/ru/server-managed-settings#current-limitations), поэтому они не могут нести назначение для каждой группы.
1177
1178<Warning>
1179 Каждый канал должен разрешаться в другую версию. Если вы используете явные версии, `plugin.json` должен объявлять другую `version` в каждом закрепленном ref. Если вы опустите `version`, различные SHA коммитов уже различают каналы. Если два refs разрешаются в одну и ту же строку версии, Claude Code рассматривает их как идентичные и пропускает обновление.
1180</Warning>
1181
1182<h5 id="example">
1183 Пример
1184</h5>
1185
1186```json theme={null}
1187{
1188 "name": "stable-tools",
1189 "plugins": [
1190 {
1191 "name": "code-formatter",
1192 "source": {
1193 "source": "github",
1194 "repo": "acme-corp/code-formatter",
1195 "ref": "stable"
1196 }
1197 }
1198 ]
1199}
1200```
1201
1202```json theme={null}
1203{
1204 "name": "latest-tools",
1205 "plugins": [
1206 {
1207 "name": "code-formatter",
1208 "source": {
1209 "source": "github",
1210 "repo": "acme-corp/code-formatter",
1211 "ref": "latest"
1212 }
1213 }
1214 ]
1215}
1216```
1217
1218<h5 id="assign-channels-to-user-groups">
1219 Назначение каналов группам пользователей
1220</h5>
1221
1222Назначьте каждый marketplace соответствующей группе пользователей через управляемые параметры для каждой группы или политику шлюза, описанные в разделе [Установка каналов выпуска](#set-up-release-channels). Например, стабильная группа получает:
1223
1224```json theme={null}
1225{
1226 "extraKnownMarketplaces": {
1227 "stable-tools": {
1228 "source": {
1229 "source": "github",
1230 "repo": "acme-corp/stable-tools"
1231 }
1232 }
1233 }
1234}
1235```
1236
1237Группа ранних доступов получает вместо этого `latest-tools`:
1238
1239```json theme={null}
1240{
1241 "extraKnownMarketplaces": {
1242 "latest-tools": {
1243 "source": {
1244 "source": "github",
1245 "repo": "acme-corp/latest-tools"
1246 }
1247 }
1248 }
1249}
1250```
1251
1252<h4 id="pin-dependency-versions">
1253 Закрепление версий зависимостей плагинов
1254</h4>
1255
1256Плагин может ограничить свои зависимости диапазоном semver, чтобы обновления зависимости не нарушили зависимый плагин. См. [Ограничение версий зависимостей плагинов](/docs/ru/plugin-dependencies) для соглашения о тегах Git `{plugin-name}--v{version}`, синтаксиса диапазона и того, как несколько ограничений на одну и ту же зависимость объединяются.
1257
1258<h3 id="rename-or-remove-a-plugin">
1259 Переименование или удаление плагина
1260</h3>
1261
1262`name` плагина является его стабильным идентификатором. Пользователи ссылаются на него в `enabledPlugins`, `pluginConfigs` и командах `/plugin install`, поэтому изменение его нарушает каждую существующую установку. Чтобы изменить метку, отображаемую в пользовательском интерфейсе, без нарушения установок, установите [`displayName`](#optional-plugin-fields) и оставьте `name` неизменным.
1263
1264Если вы должны изменить `name` плагина или удалить плагин из массива `plugins`, добавьте запись `renames` верхнего уровня, чтобы существующие пользователи мигрировали вместо того, чтобы видеть ошибку `plugin-not-found`. Автоматическая миграция требует Claude Code v2.1.193 или позже. Сопоставьте каждое бывшее имя с его текущим именем или с `null`, если плагин больше не существует. Следующий пример переименовывает `formatter` в `code-formatter` и записывает, что `legacy-linter` был удален:
1265
1266```json theme={null}
1267{
1268 "name": "acme-tools",
1269 "owner": { "name": "Acme" },
1270 "plugins": [
1271 { "name": "code-formatter", "source": "./plugins/code-formatter" }
1272 ],
1273 "renames": {
1274 "formatter": "code-formatter",
1275 "legacy-linter": null
1276 }
1277}
1278```
1279
1280Когда пользователь запускает Claude Code со старым именем все еще в своих параметрах, Claude Code следует карте `renames`:
1281
1282* Если запись указывает на новое имя, Claude Code загружает плагин под его новым именем и показывает однострочное уведомление, такое как `Renamed to "code-formatter" in the "acme-tools" marketplace`. Затем он переписывает старый ключ на новый ключ в областях параметров пользователя, проекта и локальных параметров для обоих `enabledPlugins` и `pluginConfigs`, поэтому уведомление появляется один раз.
1283* Для записи `null` Claude Code удаляет старый ключ и уведомление сообщает, что плагин был удален из marketplace.
1284* Если переименованный плагин использует удаленный источник, такой как `github` или `npm`, Claude Code сообщает `plugin-cache-miss` после переименования и пользователь должен запустить `/plugin install` один раз, чтобы получить его под новым именем.
1285
1286Рассматривайте `renames` как историю только для добавления: сохраняйте старые записи на месте даже после того, как вы ожидаете, что каждый пользователь мигрировал. Claude Code следует цепочкам, поэтому если вы позже переименуете `code-formatter` в `formatter-pro`, добавьте вторую запись вместо редактирования первой. Пользователь, который все еще имеет оригинальный `formatter` включенным, затем разрешается через обе записи в `formatter-pro`.
1287
1288Запустите `claude plugin validate .` после редактирования карты; он отклоняет любую запись, цепочка которой образует цикл или не заканчивается на `null` или имя, указанное в `plugins`.
1289
1290<Note>
1291 Управляемые и политические параметры доступны только для чтения для Claude Code, поэтому плагины, включенные там, не могут быть переписаны автоматически. Переименованный плагин все еще загружается каждый сеанс, но уведомление о переименовании повторяется до тех пор, пока администратор не обновит `enabledPlugins` в файле управляемых параметров, чтобы использовать новое имя. То же самое применяется к плагинам, включенным через другие источники только для чтения, такие как `--add-dir`.
1292</Note>
1293
1294Более ранние версии Claude Code игнорируют поле `renames` и сообщают `plugin-not-found` для старого имени.
1295
1296<h2 id="validation-and-testing">
1297 Валидация и тестирование
1298</h2>
1299
1300Протестируйте ваш marketplace перед совместным использованием. Валидация проверяет структуру файлов; чтобы протестировать, изменяет ли плагин поведение Claude на реалистичных запросах, запустите его набор eval с помощью [`claude plugin eval`](/docs/ru/plugin-evals) перед публикацией новой версии.
1301
1302Из вашего каталога marketplace проверьте синтаксис JSON:
1303
1304```bash theme={null}
1305claude plugin validate .
1306```
1307
1308Или из Claude Code:
1309
1310```shell theme={null}
1311/plugin validate .
1312```
1313
1314Добавьте marketplace для тестирования:
1315
1316```shell theme={null}
1317/plugin marketplace add ./path/to/marketplace
1318```
1319
1320Установите тестовый плагин, чтобы проверить, что все работает:
1321
1322```shell theme={null}
1323/plugin install test-plugin@marketplace-name
1324```
1325
1326Для полного диапазона рабочих процессов тестирования плагинов см. [Тестирование ваших плагинов локально](/docs/ru/plugins#test-your-plugins-locally). Для технического устранения неполадок см. [Справка плагинов](/docs/ru/plugins-reference).
1327
1328<h2 id="manage-marketplaces-from-the-cli">
1329 Управление marketplace из CLI
1330</h2>
1331
1332Claude Code предоставляет неинтерактивные подкоманды `claude plugin marketplace` для написания скриптов и автоматизации. Они эквивалентны командам `/plugin marketplace`, доступным в интерактивном сеансе.
1333
1334<h3 id="plugin-marketplace-add">
1335 Plugin marketplace add
1336</h3>
1337
1338Добавьте marketplace из репозитория GitHub, URL Git, удаленного URL или локального пути.
1339
1340```bash theme={null}
1341claude plugin marketplace add <source> [options]
1342```
1343
1344**Аргументы:**
1345
1346* `<source>`: Сокращение GitHub `owner/repo`, URL Git, удаленный URL к файлу `marketplace.json` или путь локального каталога. Чтобы закрепить на ветке или теге, добавьте `@ref` к сокращению GitHub или `#ref` к URL Git
1347
1348URL должен включать свою схему. Начиная с Claude Code v2.1.196, хост, введенный без схемы, такой как `gitlab.example.com/team/plugins`, отклоняется как недействительное сокращение `owner/repo`, и ошибка указывает вам добавить `https://` или использовать `./` для локального пути. Более ранние версии неправильно интерпретировали его как путь репозитория GitHub и не удаются при клонировании с ошибкой GitHub not-found.
1349
1350**Параметры:**
1351
1352| Параметр | Описание | По умолчанию |
1353| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------- |
1354| `--scope <scope>` | Где объявить marketplace: `user`, `project` или `local`. См. [Области установки плагинов](/docs/ru/plugins-reference#plugin-installation-scopes) | `user` |
1355| `--sparse <paths...>` | Ограничить checkout определенными каталогами через git sparse-checkout. Полезно для монорепозиториев | |
1356| `--claudeai` | Прочитайте аргумент как имя [marketplace, размещенного на claude.ai](/docs/ru/discover-plugins#add-from-claude-ai), вместо источника. Требует Claude Code v2.1.273 или более поздней версии | |
1357
1358Добавьте marketplace из GitHub, используя сокращение `owner/repo`:
1359
1360```bash theme={null}
1361claude plugin marketplace add acme-corp/claude-plugins
1362```
1363
1364Закрепите на определенной ветке или теге с помощью `@ref`:
1365
1366```bash theme={null}
1367claude plugin marketplace add acme-corp/claude-plugins@v2.0
1368```
1369
1370Добавьте из URL Git на хосте, отличном от GitHub:
1371
1372```bash theme={null}
1373claude plugin marketplace add https://gitlab.example.com/team/plugins.git
1374```
1375
1376Добавьте из удаленного URL, который служит файлом `marketplace.json` напрямую:
1377
1378```bash theme={null}
1379claude plugin marketplace add https://example.com/marketplace.json
1380```
1381
1382Добавьте из локального каталога для тестирования:
1383
1384```bash theme={null}
1385claude plugin marketplace add ./my-marketplace
1386```
1387
1388Объявите marketplace в области проекта, чтобы он был общим с вашей командой через `.claude/settings.json`:
1389
1390```bash theme={null}
1391claude plugin marketplace add acme-corp/claude-plugins --scope project
1392```
1393
1394Для монорепозитория ограничьте checkout каталогами, содержащими содержимое плагина:
1395
1396```bash theme={null}
1397claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins
1398```
1399
1400Добавьте [marketplace, размещенный на claude.ai](/docs/ru/discover-plugins#add-from-claude-ai), по имени, напечатанному в разделе `From claude.ai:` команды `claude plugin marketplace list`:
1401
1402```bash theme={null}
1403claude plugin marketplace add --claudeai claudeai-organization-library
1404```
1405
1406С помощью `--claudeai` команда отклоняет `--scope` и `--sparse`. Marketplace размещен для вашей учетной записи, а не объявлен в файле параметров, поэтому вы не можете поделиться им через `.claude/settings.json` проекта.
1407
1408<h3 id="plugin-marketplace-list">
1409 Plugin marketplace list
1410</h3>
1411
1412Перечислите все настроенные marketplace.
1413
1414```bash theme={null}
1415claude plugin marketplace list [options]
1416```
1417
1418**Параметры:**
1419
1420| Параметр | Описание |
1421| :------- | :--------------- |
1422| `--json` | Вывести как JSON |
1423
1424С помощью `--json` каждая запись включает `name`, `source`, поле `installLocation` с локальным путем кэша, где хранится marketplace, и поля, специфичные для источника: `repo` для источников GitHub, `url` для источников Git и URL, а также `path` для локальных источников. Источники GitHub и Git также включают поле `ref`, когда marketplace был добавлен с закрепленной веткой или тегом.
1425
1426Добавленный [marketplace claude.ai](/docs/ru/discover-plugins#add-from-claude-ai) не имеет локального клона, поэтому его запись содержит его идентификаторы claude.ai, `marketplaceId` и `organizationUuid`, вместо `installLocation`.
1427
1428В сеансах терминала, где [плагины синхронизируются из вашей учетной записи claude.ai](/docs/ru/plugins-reference#synced-plugins), текстовый список заканчивается разделом `From claude.ai:`, в котором указано, что claude.ai перечисляет для вашей учетной записи помимо добавленных вами marketplace. Чтобы добавить один из них, см. [Добавить из claude.ai](/docs/ru/discover-plugins#add-from-claude-ai). Вывод `--json` охватывает только настроенные marketplace и не включает этот раздел. Требует Claude Code v2.1.273 или более поздней версии.
1429
1430<h3 id="plugin-marketplace-remove">
1431 Plugin marketplace remove
1432</h3>
1433
1434Удалите настроенный marketplace. Также принимается псевдоним `rm`.
1435
1436```bash theme={null}
1437claude plugin marketplace remove <name> [options]
1438```
1439
1440**Аргументы:**
1441
1442* `<name>`: имя marketplace для удаления, как показано в `claude plugin marketplace list`. Это `name` из `marketplace.json`, а не источник, который вы передали в `add`
1443
1444**Параметры:**
1445
1446| Параметр | Описание | По умолчанию |
1447| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
1448| `--scope <scope>` | Ограничить удаление одной областью параметров: `user`, `project` или `local`. См. [Области установки плагинов](/docs/ru/plugins-reference#plugin-installation-scopes). Если опущено, объявление удаляется из каждой редактируемой области. Если указано, удаляется только объявление этой области; общее состояние, кэш и установленные данные плагина сохраняются, когда marketplace все еще объявлен в другой области | (все области) |
1449
1450<Warning>
1451 Удаление marketplace из его последней оставшейся области также удаляет все плагины, которые вы установили из него. Чтобы обновить marketplace без потери установленных плагинов, используйте `claude plugin marketplace update` вместо этого.
1452</Warning>
1453
1454<h3 id="plugin-marketplace-update">
1455 Plugin marketplace update
1456</h3>
1457
1458Обновите marketplace из их источников, чтобы получить новые плагины и изменения версий. Marketplace, добавленный с веткой или тегом `ref`, обновляется до последнего коммита этого ref, а не до ветки по умолчанию репозитория.
1459
1460```bash theme={null}
1461claude plugin marketplace update [name]
1462```
1463
1464**Аргументы:**
1465
1466* `[name]`: имя marketplace для обновления, как показано в `claude plugin marketplace list`. Обновляет все marketplace, если опущено
1467
1468Оба `remove` и `update` не удаются при запуске против seed-управляемого marketplace, который доступен только для чтения. При обновлении всех marketplace записи, управляемые seed, пропускаются, и другие marketplace все еще обновляются. Чтобы изменить плагины, предоставленные seed, попросите вашего администратора обновить образ seed. См. [Предварительное заполнение плагинов для контейнеров](#pre-populate-plugins-for-containers).
1469
1470<h2 id="troubleshooting">
1471 Устранение неполадок
1472</h2>
1473
1474<h3 id="marketplace-not-loading">
1475 Marketplace не загружается
1476</h3>
1477
1478**Симптомы**: Не удается добавить marketplace или увидеть плагины из него
1479
1480**Решения**:
1481
1482* Проверьте, что URL marketplace доступен
1483* Убедитесь, что `.claude-plugin/marketplace.json` существует по указанному пути
1484* Убедитесь, что синтаксис JSON действителен, используя `claude plugin validate .` или `/plugin validate .` из каталога marketplace. Чтобы проверить frontmatter skill, agent и command, см. [Валидация плагина или каталога без манифеста](#validate-a-plugin-or-a-directory-without-a-manifest)
1485* Для частных репозиториев подтвердите, что у вас есть разрешения доступа
1486
1487<h3 id="marketplace-validation-errors">
1488 Ошибки валидации marketplace
1489</h3>
1490
1491Запустите `claude plugin validate .` или `/plugin validate .` из каталога вашего marketplace, чтобы проверить наличие проблем. Когда валидатор указывает на каталог marketplace, он проверяет `marketplace.json` на ошибки схемы, дублирующиеся имена плагинов и обход пути источника. Для каждой записи, чей `source` является локальным путем, он также валидирует собственный `plugin.json` этого плагина и предупреждает, когда `version` записи не совпадает с версией в `plugin.json`. Проблемы, найденные в `plugin.json` плагина, имеют префикс с индексом записи в форме `plugins[2] plugin.json →`.
1492
1493Начиная с Claude Code v2.1.196, проверка для каждой записи также:
1494
1495* включает плагины, чей `source` является `.`
1496* запускается, когда `marketplace.json` находится вне каталога `.claude-plugin`, разрешая источники относительно собственного каталога файла
1497* сообщает о проблемах каждой записи даже когда другая часть файла имеет ошибки схемы
1498
1499Более ранние версии пропускают плагины в корне marketplace и спускаются только из `.claude-plugin/marketplace.json`.
1500
1501Из каталога marketplace Claude Code не открывает файлы skill, agent, command или hook плагинов. Чтобы найти ошибки в этих файлах, см. [Валидация плагина или каталога без манифеста](#validate-a-plugin-or-a-directory-without-a-manifest). В таблице ниже перечислены наиболее распространенные ошибки из каталога marketplace с причиной и решением для каждой:
1502
1503| Ошибка | Причина | Решение |
1504| :------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
1505| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | Каталог, который вы назвали, не имеет `.claude-plugin/marketplace.json` или `plugin.json`, и нет файлов skill, agent или command для проверки | Запустите из корня marketplace или создайте `.claude-plugin/marketplace.json` с обязательными полями |
1506| `Invalid JSON syntax: Unexpected token...` | Ошибка синтаксиса JSON в marketplace.json | Проверьте отсутствующие запятые, лишние запятые или неквотированные строки |
1507| `Duplicate plugin name "x" found in marketplace` | Два плагина имеют одно имя | Дайте каждому плагину уникальное значение `name` |
1508| `plugins[0].source: Path contains ".."` | Путь источника содержит `..` | Используйте пути относительно корня marketplace без `..`. См. [Относительные пути](#relative-paths) |
1509| `Marketplace name cannot contain control or bidirectional-formatting characters` | Имя marketplace содержит символ Unicode двунаправленного форматирования или управляющий символ, такой как escape или новая строка | Удалите символ из имени. До v2.1.247 эти символы выдавали ошибку `Marketplace name impersonates an official Anthropic/Claude marketplace` |
1510| `Plugin name cannot contain control or bidirectional-formatting characters` | Имя плагина `name` содержит символ Unicode двунаправленного форматирования или управляющий символ, такой как escape или новая строка | Удалите символ из имени. До v2.1.247 Claude Code не запускал эту проверку |
1511
1512**Предупреждения** (не блокирующие):
1513
1514* `Marketplace has no plugins defined`: добавьте хотя бы один плагин в массив `plugins`
1515* `No marketplace description provided`: добавьте описание верхнего уровня `description`, чтобы помочь пользователям понять ваш marketplace
1516* `Plugin name "x" is not kebab-case`: переименуйте в строчные буквы, цифры и дефисы только (например, `my-plugin`). Claude Code принимает другие формы, но синхронизация marketplace claude.ai их отклоняет.
1517* `Marketplace name "x" is reserved in Claude Desktop`: marketplace назван `org`, `org-provisioned` или `unknown`, в любом регистре. Claude Code принимает эти имена, но синхронизация управляемого marketplace Claude Desktop отклоняет весь marketplace. Переименуйте marketplace. До v2.1.221 `claude plugin validate` не запускал эту проверку.
1518* `Marketplace name "x" is not accepted by Claude Desktop` или `Plugin name "x" is not accepted by Claude Desktop`: Claude Desktop принимает имена длиной до 128 символов, состоящие из букв, цифр, `.`, `_` и `-`, начинающиеся с буквы или цифры. Claude Code принимает другие формы, но синхронизация управляемого marketplace Claude Desktop отклоняет marketplace, чье имя не проходит проверку, и молча удаляет запись плагина, чье имя не проходит. Переименуйте marketplace или плагин. До v2.1.221 `claude plugin validate` не запускал эти проверки.
1519
1520<h4 id="validate-a-plugin-or-a-directory-without-a-manifest">
1521 Валидация плагина или каталога без манифеста
1522</h4>
1523
1524Чтобы найти файлы skill, agent и command, чей frontmatter не парсится, запустите `claude plugin validate` и назовите каталог, который их содержит. Claude Code не смотрит вне каталога, который вы назвали. Каждый запуск, кроме одного, для плагина, который имеет `plugin.json`, требует Claude Code v2.1.233 или позже.
1525
1526<h5 id="pick-the-directory-to-name">
1527 Выберите каталог для назначения
1528</h5>
1529
1530Claude Code проверяет разные файлы в зависимости от того, какой каталог вы назовете. Найдите то, что вы хотите проверить в первом столбце, и запустите команду из этой строки:
1531
1532| Для проверки | Запустите | Claude Code проверяет |
1533| :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1534| Плагин, который имеет `plugin.json` | `claude plugin validate ./plugins/my-plugin` | `plugin.json`, `hooks/hooks.json` и каталоги `skills`, `agents` и `commands` в корне плагина |
1535| Один каталог skills, agents или commands, такой как плагин, который еще не имеет `plugin.json` | `claude plugin validate .claude/skills`, `~/.claude/agents` или `./my-plugin/agents` | Каждый файл skill, agent или command в этом каталоге |
1536| Папка, чей skill является его корневым `SKILL.md` | `claude plugin validate ./skills`, назвав каталог `skills`, который содержит папку | Корневой `SKILL.md` каждой папки. Содержащий каталог должен быть назван `skills`; папка под другим именем, такая как `plugins/`, не имеет запуска, который проверяет его корневой `SKILL.md` |
1537| Три каталога проекта одновременно | `claude plugin validate .claude` или корень проекта, когда он не имеет манифеста `.claude-plugin/` | `.claude/skills`, `.claude/agents` и `.claude/commands` |
1538| Ваши каталоги уровня пользователя | `claude plugin validate ~/.claude` | `~/.claude/skills`, `~/.claude/agents` и `~/.claude/commands` |
1539
1540<h5 id="check-a-plugin-whose-skill-is-its-root-skill-md">
1541 Проверка плагина, чей skill является его корневым `SKILL.md`
1542</h5>
1543
1544Когда вы запускаете `claude plugin validate` для каталога плагина, Claude Code не проверяет `SKILL.md` в корне плагина. Когда плагин находится в каталоге с именем `skills`, запустите команду дважды:
1545
1546* Назовите этот каталог `skills`, чтобы проверить корневой `SKILL.md` плагина.
1547* Назовите каталог плагина, чтобы проверить остальное.
1548
1549Когда плагин находится под другим именем, такое как `plugins/`, запуск каталога `skills` недоступен, и ни один запуск не проверяет его корневой `SKILL.md`.
1550
1551<h5 id="check-files-behind-symlinks">
1552 Проверка файлов за символическими ссылками
1553</h5>
1554
1555Когда вы запускаете `claude plugin validate`, Claude Code не следует символическим ссылкам внутри каталога, который вы назвали. То, что он делает, зависит от того, где находится ссылка:
1556
1557* **Связанный каталог `skills`, `agents` или `commands` под корнем плагина или `.claude`**: Claude Code предупреждает, что ничего в нем не было прочитано.
1558* **Связанная запись внутри каталога `skills`, `agents` или `commands`**: Claude Code пропускает ее и предупреждает, для каждого каталога, сколько записей оно пропустило, которые сессия загрузит.
1559* **Каталог `skills`, `agents` или `commands`, который вы назвали, сам является символической ссылкой, или его родительский каталог `.claude` является**: Claude Code сообщает об ошибке и ничего в нем не проверяет. Назовите реальный каталог вместо этого.
1560
1561В двух случаях skills запуск проходит с предупреждениями. Чтобы проверить связанные файлы, запустите снова и назовите каталог, который их содержит напрямую:
1562
1563* **Плагин, чей каталог `skills` [ссылается на каталог skills соседнего плагина](/docs/ru/plugins-reference#share-files-within-a-marketplace-with-symlinks)**: назовите каталог соседнего плагина.
1564* **[Связанная запись skill](/docs/ru/skills#where-skills-live) в `~/.claude/skills` или `.claude/skills`**: Claude Code следует записи в сессии. Чтобы проверить ее, назовите каталог с именем `skills`, который содержит реальную папку.
1565
1566<h5 id="read-the-validation-results">
1567 Прочитайте результаты валидации
1568</h5>
1569
1570Чистый запуск заканчивается с `Validation passed`.
1571
1572`No manifest found in directory` означает, что Claude Code не нашел `plugin.json` или `marketplace.json` там, и нет файла skill, agent или command в каталогах, которые он проверяет под ним. Назовите каталог `skills`, `agents` или `commands`, который содержит ваши файлы, вместо этого.
1573
1574Две из ошибок, которые Claude Code сообщает из этих запусков, с исправлением для каждой:
1575
1576* `YAML frontmatter failed to parse: ...`: исправьте YAML в блоке frontmatter файла skill, agent или command. До тех пор, пока вы это не сделаете, сессия не читает поля frontmatter из файла
1577* `Invalid JSON syntax: ...` на `hooks/hooks.json`: исправьте синтаксис JSON. До тех пор, пока вы это не сделаете, сессия загружает плагин без hooks в этом файле. Claude Code сообщает эту ошибку только в запуске плагина
1578
1579В запуске плагина Claude Code также предупреждает о `CLAUDE.md` в корне плагина. Для путей, которые вы установили через [поля пути компонента](/docs/ru/plugins-reference#component-path-fields) в `plugin.json`, Claude Code проверяет, что каждый путь существует, но не читает файлы там.
1580
1581<h3 id="plugin-installation-failures">
1582 Ошибки установки плагина
1583</h3>
1584
1585**Симптомы**: Marketplace появляется, но установка плагина не удается
1586
1587**Решения**:
1588
1589* Проверьте, что URL источников плагинов доступны
1590* Убедитесь, что каталоги плагинов содержат необходимые файлы
1591* Для источников GitHub убедитесь, что репозитории являются общедоступными или у вас есть доступ
1592* Протестируйте источники плагинов вручную, клонируя/загружая их
1593* Если источник закрепляет как `ref`, так и `sha`, удаленная ветвь или тег не блокируют установку на большинстве хостов git, включая GitHub, GitLab и Bitbucket. На серверах, которые не поддерживают получение коммитов по SHA, таких как AWS CodeCommit, `ref` все еще должен существовать и закрепленный коммит должен быть достижим из него. Если установка все еще не удается, подтвердите, что закрепленный коммит все еще существует в репозитории
1594
1595<h3 id="private-repository-authentication-fails">
1596 Ошибка аутентификации частного репозитория
1597</h3>
1598
1599**Симптомы**: Ошибки аутентификации при установке плагинов из частных репозиториев
1600
1601**Решения**:
1602
1603Для ручной установки и обновлений:
1604
1605* Проверьте, что вы аутентифицированы у вашего поставщика Git (например, запустите `gh auth status` для GitHub)
1606* Проверьте, что ваш помощник учетных данных настроен: `git config --global credential.helper`
1607* Запустите `git ls-remote <marketplace-url>`, чтобы проверить, может ли git аутентифицироваться самостоятельно. Если git запрашивает имя пользователя или пароль, сначала сохраните учетные данные: для GitHub через HTTPS запустите `gh auth setup-git`, а для SSH удаленных хостов загрузите ваш ключ в `ssh-agent`
1608
1609Для фоновых автоматических обновлений:
1610
1611* Фоновая проверка использует ваши настроенные помощники учетных данных Git, но никогда не запрашивает, поэтому ваш помощник должен иметь возможность ответить сохраненными учетными данными. SSH удаленные хосты с загруженным ключом в `ssh-agent` также аутентифицируются
1612* Если ваш помощник должен вас запросить, фоновое обновление не удается молча и существующий checkout остается на месте. Сначала войдите в ваш помощник, чтобы он содержал учетные данные для хоста. Для GitHub запустите `gh auth login`, затем `gh auth setup-git`
1613* Когда проверка находит новые коммиты или не может достичь или аутентифицироваться на удаленном хосте, Claude Code повторно клонирует marketplace с теми же учетными данными. Повторное клонирование может истечь по времени на больших репозиториях
1614* Установите `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, чтобы сохранить существующий checkout без попытки повторного клонирования, когда фоновая проверка не может достичь или аутентифицироваться на удаленном хосте
1615* Если повторное клонирование истекает по времени на большом репозитории, увеличьте лимит с помощью [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)
1616* Или обновляйте частные marketplace вручную с помощью `/plugin marketplace update <name>`, которая использует ваши учетные данные
1617
1618До v2.1.280 фоновая проверка запускалась без ваших помощников учетных данных и не могла аутентифицироваться на частных репозиториях через HTTPS.
1619
1620<h3 id="marketplace-updates-fail-in-offline-environments">
1621 Обновления marketplace не работают в автономных средах
1622</h3>
1623
1624**Симптомы**: В автономной или изолированной среде фоновое обновление marketplace не может достичь удаленного хоста и Claude Code многократно пытается повторно клонировать, что не может успешно завершиться.
1625
1626**Причина**: Фоновое обновление проверяет удаленный хост marketplace на наличие новых коммитов, и когда проверка не может достичь удаленного хоста, Claude Code пытается клонировать marketplace снова. В автономной среде клон не удается так же, и существующий checkout остается на месте. До v2.1.274 обновление запускало `git pull` в существующем checkout, перемещало checkout в сторону для повторного клонирования при сбое pull, и восстанавливало его впоследствии на основе наилучших усилий.
1627
1628Обновление запускается в фоне после запуска, поэтому оно не задерживает запуск. Каждая сессия все еще повторяет неудачную попытку, и каждая операция Git может ждать [120-секундного таймаута](#git-operations-time-out).
1629
1630**Решение**: Установите `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, чтобы пропустить попытку повторного клонирования и продолжить использование существующего checkout, когда проверка не может достичь удаленного хоста:
1631
1632```bash theme={null}
1633export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1
1634```
1635
1636Для полностью автономных развертываний, где репозиторий никогда не будет доступен, используйте [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) для предварительного заполнения каталога плагинов во время сборки вместо этого.
1637
1638<h3 id="git-operations-time-out">
1639 Операции Git истекают по времени
1640</h3>
1641
1642**Симптомы**: Установка плагина или обновление marketplace не удается с ошибкой истечения времени, например `Git clone timed out after 120s`.
1643
1644**Причина**: Claude Code использует 120-секундный таймаут для всех операций Git, включая клонирование репозиториев плагинов и повторное клонирование marketplace для его обновления. Большие репозитории или медленные сетевые соединения могут превысить этот лимит.
1645
1646**Решение**: Увеличьте таймаут, используя переменную окружения `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. Значение указывается в миллисекундах:
1647
1648```bash theme={null}
1649export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 минут
1650```
1651
1652<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">
1653 Плагины с относительными путями не работают в marketplace на основе URL
1654</h3>
1655
1656**Симптомы**: Добавлен marketplace через URL, такой как `https://example.com/marketplace.json`, но плагины с источниками относительных путей, такие как `"./plugins/my-plugin"`, не устанавливаются с ошибкой `its marketplace entry path does not stay inside the marketplace directory`. Уже установленные плагины не загружаются с ошибкой `Plugin source path refused`. Обе сообщения имеют [запись справки об ошибке](/docs/ru/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).
1657
1658**Причина**: добавление marketplace на основе URL загружает только сам файл `marketplace.json`, и Claude Code не загружает файлы плагинов по относительному пути с этого сервера. Относительные пути в записи marketplace ссылаются на файлы на удаленном сервере, которые не были загружены.
1659
1660**Решения**:
1661
1662* **Используйте внешние источники**: измените записи плагинов на любой [источник плагина](#plugin-sources), кроме относительного пути:
1663 ```json theme={null}
1664 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }
1665 ```
1666* **Используйте marketplace на основе Git**: Разместите ваш marketplace в репозитории Git и добавьте его с URL Git. Marketplace на основе Git клонируют весь репозиторий, что делает относительные пути рабочими.
1667
1668<h3 id="files-not-found-after-installation">
1669 Файлы не найдены после установки
1670</h3>
1671
1672**Симптомы**: Плагин устанавливается, но ссылки на файлы не работают, особенно файлы вне каталога плагина
1673
1674**Причина**: Claude Code копирует установленные плагины в каталог кэша, если только плагин не загружается на месте. [`command` источник в режиме link](#copy-mode-and-link-mode) загружается на месте, как и [источник относительного пути](#relative-paths) в marketplace, добавленном из локального каталога. Пути, которые ссылаются на файлы вне скопированного каталога плагина (такие как `../shared-utils`), не будут работать, потому что эти файлы не копируются.
1675
1676**Решения**: См. [Кэширование плагинов и разрешение файлов](/docs/ru/plugins-reference#plugin-caching-and-file-resolution) для обходных путей, включая символические ссылки и переструктурирование каталогов.
1677
1678Для дополнительных инструментов отладки и распространенных проблем см. [Инструменты отладки и разработки](/docs/ru/plugins-reference#debugging-and-development-tools).
1679
1680<h2 id="see-also">
1681 См. также
1682</h2>
1683
1684* [Обнаружение и установка готовых плагинов](/docs/ru/discover-plugins) - Установка плагинов из существующих marketplace
1685* [Плагины](/docs/ru/plugins) - Создание собственных плагинов
1686* [Справка плагинов](/docs/ru/plugins-reference) - Полные технические спецификации и схемы
1687* [Параметры плагинов](/docs/ru/settings-reference#plugin-settings) - Параметры конфигурации плагинов
1688* [Справка strictKnownMarketplaces](/docs/ru/settings-reference#strictknownmarketplaces) - Ограничения управляемого marketplace