plugin-relevance.md +0 −186 deleted
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# Рекомендуйте plugins для вашей организации
6
7> Добавьте блок relevance к записям plugins на marketplace, чтобы Claude Code предлагал их, когда работа пользователя совпадает.
8
9Если вы управляете marketplace plugins для вашей организации, вы можете заставить Claude Code предлагать конкретные plugins пользователям на основе того, над чем они работают. Добавьте блок `relevance` к записи plugin в `marketplace.json`, затем добавьте marketplace в список разрешённых в управляемых параметрах. Когда сеанс пользователя совпадает с одним из объявленных сигналов, Claude Code выводит предложение об установке этого plugin.
10
11Предложения, объявленные на marketplace, являются добровольными для каждого marketplace через [управляемые параметры](/docs/ru/managed-settings). Никакие объявления `relevance` marketplace не создают предложения, пока администратор не добавит его в список разрешённых, включая официальный marketplace Anthropic. Claude Code также включает одно встроенное предложение, которое не зависит от этого списка разрешённых; это совет и все объявленные на marketplace советы отключаются, когда [`spinnerTipsEnabled`](/docs/ru/settings-reference#spinnertipsenabled) установлен на `false`.
12
13Эта страница предназначена для операторов marketplace и администраторов предприятия. Если вы ищете установку plugins, см. [Обнаружение и установка plugins](/docs/ru/discover-plugins).
14
15<h2 id="how-it-works">
16 Как это работает
17</h2>
18
19Каждая запись plugin в `marketplace.json` может содержать объект `relevance`. Объект называет тему и один или несколько сигналов. Сигнал — это шаблон, который Claude Code проверяет в текущем сеансе, например рабочий каталог или файлы, которые Claude прочитал.
20
21Сопоставление сигналов происходит локально на машине пользователя. Сопоставление не добавляет сетевой трафик и не сообщает, какие сигналы совпали или их значения, в Anthropic или оператору marketplace.
22
23Когда сигнал совпадает и plugin ещё не установлен, Claude Code показывает plugin в трёх местах:
24
25* **Spinner tip**: сообщение "Working with *topic*? Install the *plugin* plugin" с командой `/plugin install` появляется под спиннером, пока Claude отвечает.
26* **Session-start suggestion**: если сигнал `cwd` совпадает с рабочим каталогом, однострочное уведомление `plugin suggestion: <name>@<marketplace> · /plugin` появляется перед первым ходом.
27* **`/plugin` Discover tab**: plugin закреплён в верхней части списка Discover с аннотацией, такой как "suggested for this directory" или "suggested for stripe commands".
28
29Spinner tip и уведомление о начале сеанса являются частью системы spinner-tips. Claude Code отключает оба, когда `spinnerTipsEnabled` разрешается в `false` в ваших файлах параметров, или когда `excludeDefault` разрешается в `true` в ключах [`spinnerTipsOverride`](/docs/ru/settings-reference#spinnertipsoverride) в пользовательских, `--settings` и управляемых параметрах, и эти ключи настраивают по крайней мере один совет или `tipsFile`.
30
31Закрепление на вкладке Discover независимо от параметров советов.
32
33Claude Code никогда не устанавливает plugin автоматически. Пользователь всегда подтверждает.
34
35<h2 id="add-relevance-to-a-plugin-entry">
36 Добавьте relevance к записи plugin
37</h2>
38
39Добавьте объект `relevance` к записи plugin в вашем `marketplace.json`. Следующий пример объявляет, что plugin `terraform-helpers` актуален, когда Claude читает файл `.tf` или когда Claude запускает `terraform`:
40
41```json theme={null}
42{
43 "name": "acme-corp-plugins",
44 "owner": { "name": "Acme Platform Team" },
45 "plugins": [
46 {
47 "name": "terraform-helpers",
48 "source": "./plugins/terraform-helpers",
49 "description": "Acme conventions and helpers for Terraform",
50 "relevance": {
51 "topic": "Terraform",
52 "signals": {
53 "cli": ["terraform"],
54 "filesRead": ["**/*.tf"]
55 }
56 }
57 }
58 ]
59}
60```
61
62Plugin с блоком `relevance`, но без совпадающего сигнала ведёт себя как любая другая запись marketplace. Он появляется в списке Discover в своей обычной позиции и никогда не выводится как spinner tip.
63
64<h2 id="field-reference">
65 Справочник полей
66</h2>
67
68<h3 id="relevance">
69 `relevance`
70</h3>
71
72| Поле | Тип | Описание |
73| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74| `topic` | string | Необязательно. Фраза, которая заполняет "Working with *topic*?" в spinner tip. Часто название продукта, например `Stripe`. Используйте домен, такой как `design`, когда название plugin не читается естественно как тема. По умолчанию название plugin с каждым сегментом через дефис с заглавной буквой. Уведомление о начале сеанса не использует это значение. Максимум 64 символа. |
75| `signals` | object | Сопоставители, которые определяют, когда plugin актуален. Требуется по крайней мере один сигнал, чтобы plugin был предложен. См. таблицу ниже. |
76
77<h3 id="relevance-signals">
78 `relevance.signals`
79</h3>
80
81| Поле | Тип | Описание |
82| :------------- | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
83| `cwd` | array of strings | Glob-шаблоны, сопоставляемые с рабочим каталогом сеанса. Сопоставляется как абсолютный путь и, когда находится в репозитории git, как путь относительно корня репозитория. Нормализовано с прямыми слешами и без учёта регистра. Каждый шаблон совпадает с самим каталогом и всем, что находится под ним, поэтому `infra`, `infra/` и `infra/**` ведут себя одинаково. Это единственный сигнал, который может совпадать при запуске сеанса, до первого хода. Максимум 10 шаблонов по 256 символов каждый. |
84| `cli` | array of strings | Названия команд из shell-команд, которые Claude запустил в этом сеансе, например `["stripe"]`. Применяется на каждой платформе: команды, запущенные на Windows через PowerShell или Git Bash, записываются одинаково. Claude Code записывает одно название команды на вызов shell-инструмента: первый токен после любых назначений переменных окружения и `sudo`. Составные команды вносят только свою ведущую команду, поэтому `cd infra && terraform plan` записывает `cd`, а не `terraform`. Точное совпадение. Максимум 10 записей по 64 символа каждая. |
85| `hosts` | array of strings | Имена хостов, видимые в URL-адресах `http://` или `https://` в Bash-командах этого сеанса, например `["api.stripe.com"]`. Только голое имя хоста в нижнем регистре: без схемы, порта или пути. Точное совпадение без учёта регистра. Максимум 20 записей по 128 символов каждая. |
86| `filesRead` | array of strings | Glob-шаблоны, сопоставляемые с путями файлов, которые Claude прочитал в этом сеансе, например `["**/*.tf"]`. Нормализовано с прямыми слешами и без учёта регистра. Максимум 10 шаблонов по 256 символов каждый. |
87| `manifestDeps` | array of objects | Зависимости, объявленные в манифестах пакетов, которые Claude прочитал в этом сеансе. Каждая запись — это `{ "file": "...", "pattern": "..." }`, где `file` — это регулярное выражение, сопоставляемое с путём файла манифеста, как записано в состояние сеанса, обычно абсолютный путь, и `pattern` — это регулярное выражение, сопоставляемое с содержимым этого файла. Якорь `file` в конце, например `[/\\\\]package\\.json$` в JSON-экранированной форме, потому что шаблон с якорем в начале никогда не совпадает с абсолютным путём. Пути не нормализуются по разделителям для этого сигнала, поэтому пути Windows используют обратные слеши. Файлы манифеста размером более 512 КБ пропускаются. Оба значения — это строки источника JavaScript `RegExp` максимум по 256 символов. `file` совпадает без учёта регистра. `pattern` чувствителен к регистру. Максимум 10 записей. |
88
89Сигналы `cli`, `hosts`, `filesRead` и `manifestDeps` требуют истории сеанса, поэтому они могут совпадать только на spinner tip и вкладке Discover. Сигналы `filesRead` и `manifestDeps` проверяют записанное состояние файлов сеанса, которое также включает файлы, которые Claude написал или отредактировал, и автоматически загруженные файлы памяти `CLAUDE.md`. Для этих двух сигналов Claude Code пропускает пути в своём собственном [каталоге конфигурации](/docs/ru/claude-directory) и его временных каталогах.
90
91Следующий пример использует `manifestDeps` для предложения plugin Stripe после того, как Claude прочитал `package.json`, который зависит от `stripe`. Шаблон `file` использует `[/\\\\]`, поэтому он совпадает как с прямыми слешами, так и с обратными слешами, и `\\.`, поэтому точка является литеральной. В JSON каждый обратный слеш в регулярном выражении написан дважды.
92
93```json theme={null}
94{
95 "name": "stripe-helpers",
96 "source": "./plugins/stripe-helpers",
97 "relevance": {
98 "topic": "Stripe",
99 "signals": {
100 "manifestDeps": [
101 {
102 "file": "[/\\\\]package\\.json$",
103 "pattern": "\"stripe\"\\s*:"
104 }
105 ]
106 }
107 }
108}
109```
110
111<Note>
112 Claude Code игнорирует неизвестные поля под `relevance` и `relevance.signals` при загрузке, поэтому старые клиенты продолжают загружать ваш marketplace.
113</Note>
114
115<h2 id="enable-suggestions-in-managed-settings">
116 Включите предложения в управляемых параметрах
117</h2>
118
119Объявление `relevance` в `marketplace.json` недостаточно само по себе. Администратор должен добавить marketplace в список разрешённых в [управляемых параметрах](/docs/ru/managed-settings) перед тем, как его предложения появятся пользователям.
120
121Добавьте название marketplace в `pluginSuggestionMarketplaces`. Для любого marketplace, кроме официального marketplace Anthropic, также объявите источник marketplace в тех же управляемых параметрах, либо как запись этого названия в `extraKnownMarketplaces`, либо как запись в `strictKnownMarketplaces`. Разрешённое название игнорируется, если marketplace, зарегистрированный на машине, поступил из другого источника. Это предотвращает регистрацию несвязанного источника под разрешённым названием для предложения его plugins по всей вашей организации.
122
123Следующий `managed-settings.json` регистрирует marketplace организации из репозитория GitHub и включает его предложения:
124
125```json theme={null}
126{
127 "extraKnownMarketplaces": {
128 "acme-corp-plugins": {
129 "source": {
130 "source": "github",
131 "repo": "acme-corp/claude-plugins"
132 }
133 }
134 },
135 "pluginSuggestionMarketplaces": ["acme-corp-plugins"]
136}
137```
138
139Официальный marketplace освобождается от требования объявления источника, потому что его название может регистрироваться только из официального источника Anthropic. Добавления названия в список разрешённых достаточно:
140
141```json theme={null}
142{
143 "pluginSuggestionMarketplaces": ["claude-plugins-official"]
144}
145```
146
147<h2 id="what-the-user-sees">
148 Что видит пользователь
149</h2>
150
151Когда сигнал совпадает во время сеанса, spinner tip читается:
152
153```text theme={null}
154Working with Terraform? Install the terraform-helpers plugin:
155/plugin install terraform-helpers@acme-corp-plugins
156```
157
158При запуске сеанса совпадающий сигнал `cwd` выводит однострочное уведомление:
159
160```text theme={null}
161plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin
162```
163
164Предложение данного plugin появляется максимум один раз каждые три сеанса в совокупности на spinner tip и уведомлении о начале сеанса, и ни один из них не повторяется после установки plugin. Уведомление о начале сеанса дополнительно перестаёт появляться после того, как предложение было показано дважды.
165
166На вкладке `/plugin` Discover plugin закреплён выше других результатов с аннотацией, которая называет совпадающий сигнал, такой как `suggested for this directory` или `suggested for terraform commands`. Вкладка Discover закрепляет данный plugin один раз; последующие посещения перечисляют его в обычном порядке.
167
168<h2 id="validate-your-marketplace">
169 Проверьте ваш marketplace
170</h2>
171
172Запустите `claude plugin validate` для каталога вашего marketplace, чтобы проверить блок `relevance` перед публикацией:
173
174```
175claude plugin validate ./my-marketplace
176```
177
178Валидатор сообщает неизвестные ключи под `relevance` и `relevance.signals` как предупреждения, отмечает значение `relevance`, которое не является объектом, и отклоняет запись `signals.hosts`, которая включает схему, порт или путь.
179
180<h2 id="see-also">
181 См. также
182</h2>
183
184* [Создание и распространение marketplace plugin](/docs/ru/plugin-marketplaces): создайте marketplace, который размещает ваши plugins
185* [Рекомендуйте ваш plugin из вашего CLI](/docs/ru/plugin-hints): предложите пользователям из вашего собственного CLI вместо сигналов сеанса Claude Code
186* [Все параметры](/docs/ru/settings-reference#pluginsuggestionmarketplaces): `pluginSuggestionMarketplaces` и `extraKnownMarketplaces`