Перейти к основному содержанию
Если вы управляете marketplace plugins для вашей организации, вы можете заставить Claude Code предлагать конкретные plugins пользователям на основе того, над чем они работают. Добавьте блок relevance к записи plugin в marketplace.json, затем добавьте marketplace в список разрешённых в управляемых параметрах. Когда сеанс пользователя совпадает с одним из объявленных сигналов, Claude Code выводит предложение об установке этого plugin. Предложения, объявленные на marketplace, являются добровольными для каждого marketplace через управляемые параметры. Никакие объявления relevance marketplace не создают предложения, пока администратор не добавит его в список разрешённых, включая официальный marketplace Anthropic. Claude Code также включает одно встроенное предложение, которое не зависит от этого списка разрешённых; это совет и все объявленные на marketplace советы отключаются, когда spinnerTipsEnabled установлен на false. Эта функция требует Claude Code v2.1.152 или позже. Старые клиенты игнорируют поле relevance. Эта страница предназначена для операторов marketplace и администраторов предприятия. Если вы ищете установку plugins, см. Обнаружение и установка plugins.

Как это работает

Каждая запись plugin в marketplace.json может содержать объект relevance. Объект называет тему и один или несколько сигналов. Сигнал — это шаблон, который Claude Code проверяет в текущем сеансе, например рабочий каталог или файлы, которые Claude прочитал. Сопоставление сигналов происходит локально на машине пользователя. Сопоставление не добавляет сетевой трафик и не сообщает, какие сигналы совпали или их значения, в Anthropic или оператору marketplace. Когда сигнал совпадает и plugin ещё не установлен, Claude Code показывает plugin в трёх местах:
  • Spinner tip: сообщение “Working with topic? Install the plugin plugin” с командой /plugin install появляется под спиннером, пока Claude отвечает.
  • Session-start suggestion: если сигнал cwd совпадает с рабочим каталогом, однострочное уведомление plugin suggestion: <name>@<marketplace> · /plugin появляется перед первым ходом. Эта поверхность требует Claude Code v2.1.153 или позже.
  • /plugin Discover tab: plugin закреплён в верхней части списка Discover с аннотацией, такой как “suggested for this directory” или “suggested for stripe commands”. Эта поверхность требует Claude Code v2.1.154 или позже.
Spinner tip и уведомление о начале сеанса являются частью системы spinner-tips. Оба отключаются, когда пользователь или проект устанавливает spinnerTipsEnabled на false, или когда настроен пользовательский spinnerTipsOverride с excludeDefault. Закрепление на вкладке Discover независимо от параметров советов. Claude Code никогда не устанавливает plugin автоматически. Пользователь всегда подтверждает.

Добавьте relevance к записи plugin

Добавьте объект relevance к записи plugin в вашем marketplace.json. Следующий пример объявляет, что plugin terraform-helpers актуален, когда Claude читает файл .tf или когда Claude запускает terraform:
{
  "name": "acme-corp-plugins",
  "owner": { "name": "Acme Platform Team" },
  "plugins": [
    {
      "name": "terraform-helpers",
      "source": "./plugins/terraform-helpers",
      "description": "Acme conventions and helpers for Terraform",
      "relevance": {
        "topic": "Terraform",
        "signals": {
          "cli": ["terraform"],
          "filesRead": ["**/*.tf"]
        }
      }
    }
  ]
}
Plugin с блоком relevance, но без совпадающего сигнала ведёт себя как любая другая запись marketplace. Он появляется в списке Discover в своей обычной позиции и никогда не выводится как spinner tip.

Справочник полей

relevance

ПолеТипОписание
topicstringНеобязательно. Фраза, которая заполняет “Working with topic?” в spinner tip. Часто название продукта, например Stripe. Используйте домен, такой как design, когда название plugin не читается естественно как тема. По умолчанию название plugin с каждым сегментом через дефис с заглавной буквы. Уведомление о начале сеанса не использует это значение. Максимум 64 символа.
signalsobjectСопоставители, которые определяют, когда plugin актуален. Требуется по крайней мере один сигнал, чтобы plugin был предложен. См. таблицу ниже.

relevance.signals

ПолеТипОписание
cwdarray of stringsGlob-шаблоны, сопоставляемые с рабочим каталогом сеанса. Сопоставляется как абсолютный путь и, когда находится в репозитории git, как путь относительно корня репозитория. Нормализовано с прямыми слешами и без учёта регистра. Каждый шаблон совпадает с самим каталогом и всем, что находится под ним, поэтому infra, infra/ и infra/** ведут себя одинаково. Это единственный сигнал, который может совпадать при запуске сеанса, до первого хода. Максимум 10 шаблонов по 256 символов каждый.
cliarray of stringsНазвания команд из shell-команд, которые Claude запустил в этом сеансе, например ["stripe"]. Применяется на каждой платформе: команды, запущенные на Windows через PowerShell или Git Bash, записываются одинаково. Claude Code записывает одно название команды на вызов shell-инструмента: первый токен после любых назначений переменных окружения и sudo. Составные команды вносят только свою ведущую команду, поэтому cd infra && terraform plan записывает cd, а не terraform. Точное совпадение. Максимум 10 записей по 64 символа каждая.
hostsarray of stringsИмена хостов, видимые в URL-адресах http:// или https:// в Bash-командах этого сеанса, например ["api.stripe.com"]. Только голое имя хоста в нижнем регистре: без схемы, порта или пути. Точное совпадение без учёта регистра. Максимум 20 записей по 128 символов каждая.
filesReadarray of stringsGlob-шаблоны, сопоставляемые с путями файлов, которые Claude прочитал в этом сеансе, например ["**/*.tf"]. Нормализовано с прямыми слешами и без учёта регистра. Максимум 10 шаблонов по 256 символов каждый.
manifestDepsarray of objectsЗависимости, объявленные в манифестах пакетов, которые Claude прочитал в этом сеансе. Каждая запись — это { "file": "...", "pattern": "..." }, где file — это регулярное выражение, сопоставляемое с путём файла манифеста, как записано в состояние сеанса, обычно абсолютный путь, и pattern — это регулярное выражение, сопоставляемое с содержимым этого файла. Якорь file в конце, например [/\\\\]package\\.json$ в JSON-экранированной форме, потому что шаблон с якорем в начале никогда не совпадает с абсолютным путём. Пути не нормализуются по разделителям для этого сигнала, поэтому пути Windows используют обратные слеши. Файлы манифеста размером более 512 КБ пропускаются. Оба значения — это строки источника JavaScript RegExp максимум по 256 символов. file совпадает без учёта регистра. pattern чувствителен к регистру. Максимум 10 записей.
Сигналы cli, hosts, filesRead и manifestDeps требуют истории сеанса, поэтому они могут совпадать только на spinner tip и вкладке Discover. Только cwd может совпадать при запуске сеанса. Сигналы filesRead и manifestDeps проверяют записанное состояние файлов сеанса, которое также включает файлы, которые Claude написал или отредактировал, и автоматически загруженные файлы памяти CLAUDE.md. Следующий пример использует manifestDeps для предложения plugin Stripe после того, как Claude прочитал package.json, который зависит от stripe. Шаблон file использует [/\\\\], поэтому он совпадает как с прямыми слешами, так и с обратными слешами, и \\., поэтому точка является литеральной. В JSON каждый обратный слеш в регулярном выражении написан дважды.
{
  "name": "stripe-helpers",
  "source": "./plugins/stripe-helpers",
  "relevance": {
    "topic": "Stripe",
    "signals": {
      "manifestDeps": [
        {
          "file": "[/\\\\]package\\.json$",
          "pattern": "\"stripe\"\\s*:"
        }
      ]
    }
  }
}
Неизвестные поля под relevance и relevance.signals игнорируются при загрузке, поэтому старые клиенты Claude Code продолжают загружать ваш marketplace. Запустите claude plugin validate, чтобы вывести их как предупреждения.

Включите предложения в управляемых параметрах

Объявление relevance в marketplace.json недостаточно само по себе. Администратор должен добавить marketplace в список разрешённых в управляемых параметрах, прежде чем его предложения появятся пользователям. Добавьте название marketplace в pluginSuggestionMarketplaces. Для любого marketplace, кроме официального marketplace Anthropic, также объявите источник marketplace в тех же управляемых параметрах, либо как запись этого названия в extraKnownMarketplaces, либо как запись в strictKnownMarketplaces. Разрешённое название игнорируется, если marketplace, зарегистрированный на машине, поступил из другого источника. Это предотвращает регистрацию несвязанного источника под разрешённым названием для предложения его plugins по всей вашей организации. Следующий managed-settings.json регистрирует marketplace организации из репозитория GitHub и включает его предложения:
{
  "extraKnownMarketplaces": {
    "acme-corp-plugins": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  },
  "pluginSuggestionMarketplaces": ["acme-corp-plugins"]
}
Официальный marketplace освобождается от требования объявления источника, потому что его название может регистрироваться только из официального источника Anthropic. Добавления названия в список разрешённых достаточно:
{
  "pluginSuggestionMarketplaces": ["claude-plugins-official"]
}
См. справочник параметров для pluginSuggestionMarketplaces и extraKnownMarketplaces для полных деталей конфигурации.

Что видит пользователь

Когда сигнал совпадает во время сеанса, spinner tip читается:
Working with Terraform? Install the terraform-helpers plugin:
/plugin install terraform-helpers@acme-corp-plugins
При запуске сеанса совпадающий сигнал cwd выводит однострочное уведомление:
plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin
Предложение данного plugin появляется максимум один раз каждые три сеанса в совокупности на spinner tip и уведомлении о начале сеанса, и ни один из них не повторяется после установки plugin. Уведомление о начале сеанса дополнительно перестаёт появляться после того, как предложение было показано дважды. На вкладке /plugin Discover plugin закреплён выше других результатов с аннотацией, которая называет совпадающий сигнал, такой как suggested for this directory или suggested for terraform commands. Вкладка Discover закрепляет данный plugin один раз; последующие посещения перечисляют его в обычном порядке. Закрепление на вкладке Discover требует Claude Code v2.1.154 или позже. На v2.1.152 появляется только spinner tip; уведомление о начале сеанса добавляется в v2.1.153.

Проверьте ваш marketplace

Запустите claude plugin validate для каталога вашего marketplace, чтобы проверить блок relevance перед публикацией:
claude plugin validate ./my-marketplace
Валидатор сообщает неизвестные ключи под relevance и relevance.signals как предупреждения, отмечает значение relevance, которое не является объектом, и отклоняет запись signals.hosts, которая включает схему, порт или путь.

См. также