Обзор
Создание и распространение marketplace включает:- Создание плагинов: создайте один или несколько плагинов с skills, агентами, hooks, MCP servers или LSP servers. Это руководство предполагает, что у вас уже есть плагины для распространения; см. Создание плагинов для получения подробной информации о том, как их создавать.
- Создание файла marketplace: определите
marketplace.json, который перечисляет ваши плагины и где их найти. См. Создание файла marketplace. - Размещение marketplace: отправьте на GitHub, GitLab или другой хост Git. См. Размещение и распространение marketplace.
- Совместное использование с пользователями: пользователи добавляют ваш marketplace с помощью
/plugin marketplace addи устанавливают отдельные плагины. См. Обнаружение и установка плагинов.
/plugin marketplace update.
Пошаговое руководство: создание локального marketplace
Этот пример создает marketplace с одним плагином: skillquality-review для проверки кода. Вы создадите структуру каталогов, добавите skill, создадите манифест плагина и каталог marketplace, затем установите и протестируете его.
1
Создание структуры каталогов
2
Создание skill
Создайте файл
SKILL.md, который определяет, что делает skill quality-review.my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md
3
Создание манифеста плагина
Создайте файл
plugin.json, который описывает плагин. Манифест находится в каталоге .claude-plugin/.my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json
Установка
version означает, что пользователи получают обновления только при изменении этого поля, поэтому увеличивайте его при каждом выпуске. Если вы опустите version и разместите этот marketplace в git, каждый коммит автоматически считается новой версией. См. Разрешение версий, чтобы выбрать правильный подход.4
Создание файла marketplace
Создайте каталог marketplace, который перечисляет ваш плагин.
my-marketplace/.claude-plugin/marketplace.json
5
Добавление и установка
Добавьте marketplace и установите плагин.
6
Попробуйте
Выберите некоторый код в вашем редакторе и запустите вашу новую skill. Plugin skills имеют пространство имен с именем плагина.
Как устанавливаются плагины: Когда пользователи устанавливают плагин, Claude Code копирует каталог плагина в место кэша. Это означает, что плагины не могут ссылаться на файлы вне их каталога, используя пути вроде
../shared-utils, потому что эти файлы не будут скопированы.Если вам нужно совместно использовать файлы между плагинами, используйте символические ссылки. См. Кэширование плагинов и разрешение файлов для получения подробной информации.Создание файла marketplace
Создайте.claude-plugin/marketplace.json в корне вашего репозитория. Этот файл определяет имя вашего marketplace, информацию о владельце и список плагинов с их источниками.
Каждая запись плагина требует как минимум name и source, который указывает Claude Code, откуда его получить. См. полную схему ниже для всех доступных полей.
Схема marketplace
Обязательные поля
Зарезервированные имена: следующие имена 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, healthcare. Имена, которые выдают себя за официальные marketplace, такие как official-claude-plugins или anthropic-plugins-v2, также заблокированы. Резервирование этих имен предотвращает представление стороннего marketplace как источника, опубликованного Anthropic.Claude Code повторно проверяет зарезервированные имена каждый раз при загрузке marketplace, а не только при добавлении. Marketplace, зарегистрированный под одним из этих имен до того, как имя было зарезервировано, перестает загружаться и сообщает, что он зарегистрирован из ненадежного источника. Удалите этот marketplace и добавьте его снова из официального источника Anthropic. Сторонний marketplace, затронутый вновь зарезервированным именем, загружается снова, как только вы добавите его под другим именем. До версии v2.1.205 first-party-plugins и healthcare не были зарезервированы, и marketplace, уже зарегистрированный под зарезервированным именем, продолжал загружаться.Поля владельца
Дополнительные поля
description и version также принимаются в metadata для обратной совместимости.
Записи плагинов
Каждая запись плагина в массивеplugins описывает плагин и где его найти. Вы можете включить любое поле из схемы манифеста плагина, такие как description, version, author, commands и hooks, плюс эти поля, специфичные для marketplace: source, category, tags, strict и relevance.
Обязательные поля
Дополнительные поля плагина
Поля стандартных метаданных:
Поля конфигурации компонентов:
Источники плагинов
Источники плагинов указывают Claude Code, откуда получить каждый отдельный плагин, указанный в вашем marketplace. Они устанавливаются в полеsource каждой записи плагина в marketplace.json.
После того как плагин клонирован или скопирован на локальную машину, он копируется в локальный кэш плагинов с версией в ~/.claude/plugins/cache.
Источники marketplace и источники плагинов: Это разные концепции, которые контролируют разные вещи.
- Источник marketplace — откуда получить сам каталог
marketplace.json. Устанавливается, когда пользователи запускают/plugin marketplace addили в параметрахextraKnownMarketplaces. Поддерживаетref(ветка/тег), но неsha. - Источник плагина — откуда получить отдельный плагин, указанный в marketplace. Устанавливается в поле
sourceкаждой записи плагина внутриmarketplace.json. Поддерживает какref(ветка/тег), так иsha(точный коммит).
acme-corp/plugin-catalog (источник marketplace), может перечислять плагин, полученный из acme-corp/code-formatter (источник плагина). Источник marketplace и источник плагина указывают на разные репозитории и закреплены независимо.github, url и git-subdir. Когда оба ref и sha установлены на любом из них, sha является эффективным закреплением. Claude Code получает и проверяет закрепленный коммит напрямую.
На большинстве хостов Git, включая GitHub, GitLab и Bitbucket, это означает, что установка успешна даже если ветка или тег, названные ref, были удалены выше по течению, при условии, что коммит все еще доступен из репозитория. Некоторые серверы, такие как AWS CodeCommit, не поддерживают получение коммитов по SHA. На этих серверах ref все еще должен существовать и закрепленный коммит должен быть доступен из него.
Относительные пути
Для плагинов в одном репозитории используйте путь, начинающийся с./:
.claude-plugin/. В приведенном выше примере ./plugins/my-plugin указывает на <repo>/plugins/my-plugin, даже если marketplace.json находится в <repo>/.claude-plugin/marketplace.json. Не используйте ../ для ссылки на пути вне корня marketplace.
Относительные пути разрешаются относительно локальной копии marketplace, поэтому они работают, когда пользователи добавляют ваш marketplace из источника Git или локального каталога. Если пользователи добавляют ваш marketplace через прямой URL к файлу
marketplace.json, относительные пути не будут разрешены, потому что загружается только этот файл. Для распространения на основе URL используйте вместо этого источники GitHub, npm или URL Git. См. Устранение неполадок для получения подробной информации.Репозитории GitHub
Репозитории Git
Подкаталоги Git
Используйтеgit-subdir для указания плагина, который находится в подкаталоге репозитория Git. Claude Code использует разреженный, частичный клон для получения только подкаталога, минимизируя пропускную способность для больших монорепозиториев.
url также принимает сокращение GitHub (owner/repo) или SSH URL (git@github.com:owner/repo.git).
Пакеты npm
Плагины, распространяемые как пакеты npm, устанавливаются с помощьюnpm install. Это работает с любым пакетом в общедоступном реестре npm или в частном реестре, который размещает ваша команда.
version:
registry:
Расширенные записи плагинов
Этот пример показывает запись плагина, использующую множество дополнительных полей, включая пользовательские пути для команд, агентов, hooks и MCP servers:commandsиagents: вы можете указать несколько каталогов или отдельные файлы. Пути относительны к корню плагина.${CLAUDE_PLUGIN_ROOT}: используйте эту переменную в командах hooks и конфигурациях MCP server для ссылки на файлы в каталоге установки плагина. Это необходимо, потому что плагины копируются в место кэша при установке.- См. таблицу подстановки для того, какие поля конфигурации подставляют её для каждого типа сервера
- Для зависимостей или состояния, которое должно сохраняться при обновлениях плагина, используйте
${CLAUDE_PLUGIN_DATA}вместо этого
strict: false: поскольку это установлено на false, плагину не нужен собственныйplugin.json. Запись marketplace определяет все. См. Strict mode ниже.
skills/ в его source. Пути, указанные в поле skills, добавляются к этому сканированию:
skills/ в корне marketplace (source: "./"), вместо этого указывайте конкретные подкаталоги, чтобы каждая запись загружала только свои собственные skills:
skills/ не загружаются. Указание самого ./skills/ или корня плагина сохраняет полное сканирование. Если ни один из указанных путей не существует, вместо этого запускается сканирование по умолчанию.
Strict mode
Полеstrict контролирует, является ли plugin.json авторитетом для определений компонентов (skills, агенты, hooks, MCP servers, стили вывода).
Когда использовать каждый режим:
strict: true: плагин имеет собственныйplugin.jsonи управляет своими компонентами. Запись marketplace может добавить дополнительные skills или hooks сверху. Это значение по умолчанию и работает для большинства плагинов.strict: false: оператор marketplace хочет полный контроль. Репозиторий плагина предоставляет необработанные файлы, и запись marketplace определяет, какие из этих файлов открыты как skills, агенты, hooks и т. д. Полезно, когда оператор marketplace переструктурирует или курирует компоненты плагина иначе, чем предполагал автор плагина.
Размещение и распространение marketplace
Размещение на GitHub (рекомендуется)
GitHub обеспечивает рекомендуемый способ размещения и распространения marketplace:- Создание репозитория: установите новый репозиторий для вашего marketplace
- Добавление файла marketplace: создайте
.claude-plugin/marketplace.jsonс определениями ваших плагинов - Совместное использование с командами: пользователи добавляют ваш marketplace с помощью
/plugin marketplace add owner/repo
Размещение на других сервисах Git
Любой сервис хостинга Git работает, например GitLab, Bitbucket и самостоятельно размещаемые серверы. Пользователи добавляют с полным URL репозитория:Частные репозитории
Claude Code поддерживает установку плагинов из частных репозиториев. Для ручной установки и обновлений 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, чтобы вместо этого клонировать их через HTTPS.
Фоновые автоматические обновления работают иначе. По умолчанию фоновое обновление отключает помощников учетных данных Git для своего git pull, поэтому pull не может аутентифицироваться в частных репозиториях через HTTPS, даже если помощник настроен. Удаленные SSH не затронуты: ключ, загруженный в ssh-agent, аутентифицирует фоновые pull так же, как ручные операции. Когда фоновый pull не удается, Claude Code возвращается к повторному клонированию marketplace с нуля. Повторное клонирование использует ваши сохраненные учетные данные Git, но оно может истечь на больших репозиториях, поэтому автоматические обновления частного marketplace могут периодически не удаваться.
Два параметра делают частные marketplace предсказуемыми:
- Установите
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1, чтобы сохранить существующий клон при неудаче фонового pull, вместо удаления и повторного клонирования. Ваши плагины продолжают работать из последнего синхронизированного состояния, и ручные обновления с/plugin marketplace updateпо-прежнему pull с вашими учетными данными. - Настройте помощника учетных данных Git, например с помощью
gh auth setup-gitдля GitHub, чтобы fallback повторного клонирования мог аутентифицироваться без подсказок.
GITHUB_TOKEN, в вашей среде не включает фоновую аутентификацию сама по себе. Токены вступают в силу только через настроенного помощника учетных данных, например помощника CLI gh, который читает GH_TOKEN и GITHUB_TOKEN.
Чтобы сам фоновый pull аутентифицировался через HTTPS, настройте глобальное переписывание URL Git. Переписывание встраивает токен в удаленный URL, поэтому оно вступает в силу, несмотря на то, что фоновый pull отключает помощников учетных данных, и успешный pull пропускает fallback повторного клонирования. Следующий пример переписывает URL репозитория marketplace, чтобы включить токен доступа:
Переписывание хранит токен в открытом виде в вашем gitconfig, поэтому используйте токен с доступом только для чтения к репозиторию marketplace.
В средах CI/CD настройте помощника учетных данных Git перед установкой плагинов из частных репозиториев. На GitHub Actions экспортируйте токен с доступом для чтения к репозиторию marketplace как
GH_TOKEN, затем запустите gh auth setup-git. Токен рабочего процесса по умолчанию может получить доступ только к репозиторию самого рабочего процесса, поэтому частный marketplace в другом репозитории требует личного токена доступа или токена приложения. Глобальное переписывание URL, настроенное в конвейере, также аутентифицирует фоновый pull напрямую.Тестирование локально перед распространением
Протестируйте ваш marketplace локально перед совместным использованием:Требование marketplace для вашей команды
Вы можете настроить ваш репозиторий так, чтобы члены команды автоматически получали предложение установить ваш marketplace, когда они доверяют папке проекта. Добавьте ваш marketplace в.claude/settings.json:
Если вы используете локальный источник
directory или file с относительным путем, путь разрешается относительно основного checkout вашего репозитория. Когда вы запускаете Claude Code из git worktree, путь все еще указывает на основной checkout, поэтому все worktrees совместно используют одно и то же расположение marketplace. Состояние marketplace хранится один раз для каждого пользователя в ~/.claude/plugins/known_marketplaces.json, а не для каждого проекта.Предварительное заполнение плагинов для контейнеров
Для образов контейнеров и сред CI вы можете предварительно заполнить каталог плагинов во время сборки, чтобы Claude Code запускался с уже доступными marketplace и плагинами, без клонирования во время выполнения. Установите переменную окруженияCLAUDE_CODE_PLUGIN_SEED_DIR на этот каталог.
Чтобы наслоить несколько каталогов seed, разделите пути с : на Unix или ; на Windows. Claude Code ищет каждый каталог по порядку и использует первый seed, содержащий данный marketplace или кэш плагина.
Каталог seed отражает структуру ~/.claude/plugins:
~/.claude/plugins в ваш образ и укажите CLAUDE_CODE_PLUGIN_SEED_DIR на него.
Чтобы пропустить шаг копирования, установите CLAUDE_CODE_PLUGIN_CACHE_DIR на путь целевого seed во время сборки, чтобы плагины устанавливались непосредственно туда:
CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed в среде выполнения вашего контейнера, чтобы Claude Code читал из seed при запуске.
При запуске Claude Code регистрирует marketplace, найденные в known_marketplaces.json seed, в основную конфигурацию и использует кэши плагинов, найденные под cache/, на месте без повторного клонирования. Это работает как в интерактивном режиме, так и в неинтерактивном режиме с флагом -p.
Детали поведения:
- Только для чтения: каталог seed никогда не записывается. Автоматические обновления отключены для seed marketplace, так как git pull не удастся на файловой системе только для чтения.
- Записи seed имеют приоритет: marketplace, объявленные в seed, перезаписывают любые совпадающие записи в конфигурации пользователя при каждом запуске. Чтобы отказаться от seed плагина, используйте
/plugin disableвместо удаления marketplace. - Разрешение пути: Claude Code находит содержимое marketplace, проверяя
$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/во время выполнения, а не доверяя путям, хранящимся внутри JSON seed. Это означает, что seed работает правильно, даже если он смонтирован по другому пути, чем где он был построен. - Мутация заблокирована: запуск
/plugin marketplace removeили/plugin marketplace updateпротив seed-управляемого marketplace не удается с указанием попросить вашего администратора обновить образ seed. - Компонуется с параметрами: если
extraKnownMarketplacesилиenabledPluginsобъявляют marketplace, который уже существует в seed, Claude Code использует копию seed вместо клонирования.
Ограничения управляемого marketplace
Для организаций, требующих строгого контроля над источниками плагинов, администраторы могут ограничить, какие marketplace плагинов пользователи могут добавлять, используя параметрstrictKnownMarketplaces в управляемых параметрах. Чтобы также отклонить флаги CLI, которые загружают плагины, агентов и MCP серверы для одного запуска, объедините его с disableSideloadFlags. Чтобы разрешить список, какие marketplace плагинов могут появляться как предложения контекстной установки, установите pluginSuggestionMarketplaces.
Когда strictKnownMarketplaces настроен в управляемых параметрах, поведение ограничения зависит от значения:
Общие конфигурации
Отключение всех добавлений marketplace:".*" как pathPattern для разрешения любого пути файловой системы при одновременном контроле сетевых источников с помощью hostPattern.
strictKnownMarketplaces ограничивает то, что пользователи могут добавлять, но не регистрирует marketplace самостоятельно. Чтобы сделать разрешенные marketplace доступными автоматически без запуска пользователями /plugin marketplace add, объедините его с extraKnownMarketplaces в одном файле managed-settings.json. См. Использование обоих вместе.Как работают ограничения
Ограничения проверяются перед любой сетевой или файловой операцией. Проверка выполняется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении плагина. Если marketplace был добавлен до настройки политики и его источник больше не совпадает со списком разрешений, Claude Code отказывает в установке или обновлении плагинов из него. То же самое применяется кblockedMarketplaces.
Список разрешений использует точное сопоставление для большинства типов источников. Чтобы marketplace был разрешен, все указанные поля должны совпадать точно:
- Для источников GitHub:
repoобязателен, иrefилиpathтакже должны совпадать, если указаны в списке разрешений - Для источников URL: полный URL должен совпадать точно
- Для источников
hostPattern: хост marketplace сопоставляется с шаблоном регулярного выражения - Для источников
pathPattern: путь файловой системы marketplace сопоставляется с шаблоном регулярного выражения
.git или форма ssh:// в сравнении с https:// рассматриваются как разные значения. Если marketplace вашей организации можно клонировать более чем одной формой URL, предпочтите запись hostPattern буквальному URL, чтобы все формы совпадали.
Поскольку strictKnownMarketplaces установлен в управляемых параметрах, отдельные пользователи и конфигурации проекта не могут переопределить эти ограничения.
Для полных деталей конфигурации, включая все поддерживаемые типы источников и сравнение с extraKnownMarketplaces, см. справку strictKnownMarketplaces.
Разрешение версий и каналы выпуска
Версии плагинов определяют пути кэша и обнаружение обновлений: если разрешенная версия совпадает с тем, что уже есть у пользователя,/plugin update и автоматическое обновление пропускают плагин.
Claude Code разрешает версию плагина из первого из этих параметров, который установлен:
versionвplugin.jsonплагинаversionв записи marketplace плагина- SHA коммита Git источника плагина
github, url, git-subdir и относительных путей внутри marketplace, размещенного на Git, вы можете полностью опустить version и каждый новый коммит будет рассматриваться как новая версия. Это самая простая установка для внутренних или активно разрабатываемых плагинов.
Установка каналов выпуска
Для поддержки каналов выпуска “stable” и “latest” для ваших плагинов вы можете установить два marketplace, которые указывают на разные refs или SHAs одного репозитория. Затем вы можете назначить два marketplace разным группам пользователей через управляемые параметры.latest-tools:
Закрепление версий зависимостей плагинов
Плагин может ограничить свои зависимости диапазоном semver, чтобы обновления зависимости не нарушили зависимый плагин. См. Ограничение версий зависимостей плагинов для соглашения о тегах Git{plugin-name}--v{version}, синтаксиса диапазона и того, как несколько ограничений на одну и ту же зависимость объединяются.
Переименование или удаление плагина
name плагина является его стабильным идентификатором. Пользователи ссылаются на него в enabledPlugins, pluginConfigs и командах /plugin install, поэтому изменение его нарушает каждую существующую установку. Чтобы изменить метку, отображаемую в пользовательском интерфейсе, без нарушения установок, установите displayName и оставьте name неизменным.
Если вы должны изменить name плагина или удалить плагин из массива plugins, добавьте запись renames верхнего уровня, чтобы существующие пользователи мигрировали вместо того, чтобы видеть ошибку plugin-not-found. Автоматическая миграция требует Claude Code v2.1.193 или позже. Сопоставьте каждое бывшее имя с его текущим именем или с null, если плагин больше не существует. Следующий пример переименовывает formatter в code-formatter и записывает, что legacy-linter был удален:
renames:
- Если запись указывает на новое имя, Claude Code загружает плагин под его новым именем и показывает однострочное уведомление, такое как
Renamed to "code-formatter" in the "acme-tools" marketplace. Затем он переписывает старый ключ на новый ключ в областях параметров пользователя, проекта и локальных параметров для обоихenabledPluginsиpluginConfigs, поэтому уведомление появляется один раз. - Для записи
nullClaude Code удаляет старый ключ и уведомление сообщает, что плагин был удален из marketplace. - Если переименованный плагин использует удаленный источник, такой как
githubилиnpm, Claude Code сообщаетplugin-cache-missпосле переименования и пользователь должен запустить/plugin installодин раз, чтобы получить его под новым именем.
renames как историю только для добавления: сохраняйте старые записи на месте даже после того, как вы ожидаете, что каждый пользователь мигрировал. Claude Code следует цепочкам, поэтому если вы позже переименуете code-formatter в formatter-pro, добавьте вторую запись вместо редактирования первой. Пользователь, который все еще имеет оригинальный formatter включенным, затем разрешается через обе записи в formatter-pro.
Запустите claude plugin validate . после редактирования карты; он отклоняет любую запись, цепочка которой образует цикл или не заканчивается на null или имя, указанное в plugins.
Управляемые и политические параметры доступны только для чтения для Claude Code, поэтому плагины, включенные там, не могут быть переписаны автоматически. Переименованный плагин все еще загружается каждый сеанс, но уведомление о переименовании повторяется до тех пор, пока администратор не обновит
enabledPlugins в файле управляемых параметров, чтобы использовать новое имя. То же самое применяется к плагинам, включенным через другие источники только для чтения, такие как --add-dir.renames и сообщают plugin-not-found для старого имени.
Валидация и тестирование
Протестируйте ваш marketplace перед совместным использованием. Проверьте синтаксис JSON вашего marketplace:Управление marketplace из CLI
Claude Code предоставляет неинтерактивные подкомандыclaude plugin marketplace для написания скриптов и автоматизации. Они эквивалентны командам /plugin marketplace, доступным в интерактивном сеансе.
Plugin marketplace add
Добавьте marketplace из репозитория GitHub, URL Git, удаленного URL или локального пути.<source>: Сокращение GitHubowner/repo, URL Git, удаленный URL к файлуmarketplace.jsonили путь локального каталога. Чтобы закрепить на ветке или теге, добавьте@refк сокращению GitHub или#refк URL Git
gitlab.example.com/team/plugins, отклоняется как недействительное сокращение owner/repo, и ошибка указывает вам добавить https:// или использовать ./ для локального пути. Более ранние версии неправильно интерпретировали его как путь репозитория GitHub и не удаются при клонировании с ошибкой GitHub not-found.
Параметры:
Добавьте marketplace из GitHub, используя сокращение
owner/repo:
@ref:
marketplace.json напрямую:
.claude/settings.json:
Plugin marketplace list
Перечислите все настроенные marketplace.
С помощью
--json каждая запись включает name, source и поля, специфичные для источника: repo для источников GitHub, url для источников Git и URL, а также path для локальных источников. Источники GitHub и Git также включают поле ref, когда marketplace был добавлен с закрепленной веткой или тегом.
Plugin marketplace remove
Удалите настроенный marketplace. Также принимается псевдонимrm.
<name>: имя marketplace для удаления, как показано вclaude plugin marketplace list. Этоnameизmarketplace.json, а не источник, который вы передали вadd
Plugin marketplace update
Обновите marketplace из их источников, чтобы получить новые плагины и изменения версий. Marketplace, добавленный с веткой или тегомref, обновляется до последнего коммита этого ref, а не до ветки по умолчанию репозитория.
[name]: имя marketplace для обновления, как показано вclaude plugin marketplace list. Обновляет все marketplace, если опущено
remove и update не удаются при запуске против seed-управляемого marketplace, который доступен только для чтения. При обновлении всех marketplace записи, управляемые seed, пропускаются, и другие marketplace все еще обновляются. Чтобы изменить плагины, предоставленные seed, попросите вашего администратора обновить образ seed. См. Предварительное заполнение плагинов для контейнеров.
Устранение неполадок
Marketplace не загружается
Симптомы: Не удается добавить marketplace или увидеть плагины из него Решения:- Проверьте, что URL marketplace доступен
- Убедитесь, что
.claude-plugin/marketplace.jsonсуществует по указанному пути - Убедитесь, что синтаксис JSON действителен, используя
claude plugin validateили/plugin validate. Чтобы проверить frontmatter skill, agent и command, запустите команду для каждого каталога плагина - Для частных репозиториев подтвердите, что у вас есть разрешения доступа
Ошибки валидации marketplace
Запуститеclaude plugin validate . или /plugin validate . из каталога вашего marketplace, чтобы проверить наличие проблем. Когда валидатор указывает на каталог marketplace, он проверяет marketplace.json на ошибки схемы, дублирующиеся имена плагинов и обход пути источника. Для каждой записи, чей source является локальным путем, он также валидирует собственный plugin.json этого плагина и предупреждает, когда version записи не совпадает с версией в plugin.json. Проблемы, найденные в plugin.json плагина, имеют префикс с индексом записи в форме plugins[2] plugin.json →.
Начиная с Claude Code v2.1.196, проверка для каждой записи также:
- включает плагины, чей
sourceявляется. - запускается, когда
marketplace.jsonнаходится вне каталога.claude-plugin, разрешая источники относительно собственного каталога файла - сообщает о проблемах каждой записи даже когда другая часть файла имеет ошибки схемы
.claude-plugin/marketplace.json.
Чтобы валидировать plugin.json отдельного плагина и его файлы skill, agent, command и hook, запустите команду для самого каталога плагина, например claude plugin validate ./plugins/my-plugin. Распространенные ошибки:
Предупреждения (не блокирующие):
Marketplace has no plugins defined: добавьте хотя бы один плагин в массивpluginsNo marketplace description provided: добавьте описание верхнего уровняdescription, чтобы помочь пользователям понять ваш marketplacePlugin name "x" is not kebab-case: имя плагина содержит прописные буквы, пробелы или специальные символы. Переименуйте в строчные буквы, цифры и дефисы только (например,my-plugin). Claude Code принимает другие формы, но синхронизация marketplace claude.ai их отклоняет.
Ошибки установки плагина
Симптомы: Marketplace появляется, но установка плагина не удается Решения:- Проверьте, что URL источников плагинов доступны
- Убедитесь, что каталоги плагинов содержат необходимые файлы
- Для источников GitHub убедитесь, что репозитории являются общедоступными или у вас есть доступ
- Протестируйте источники плагинов вручную, клонируя/загружая их
- Если источник закрепляет как
ref, так иsha, удаленная ветвь или тег не блокируют установку на большинстве хостов git, включая GitHub, GitLab и Bitbucket. На серверах, которые не поддерживают получение коммитов по SHA, таких как AWS CodeCommit,refвсе еще должен существовать и закрепленный коммит должен быть достижим из него. Если установка все еще не удается, подтвердите, что закрепленный коммит все еще существует в репозитории
Ошибка аутентификации частного репозитория
Симптомы: Ошибки аутентификации при установке плагинов из частных репозиториев Решения: Для ручной установки и обновлений:- Проверьте, что вы аутентифицированы у вашего поставщика Git (например, запустите
gh auth statusдля GitHub) - Проверьте, что ваш помощник учетных данных настроен правильно:
git config --global credential.helper - Попробуйте клонировать репозиторий вручную, чтобы проверить, что ваши учетные данные работают
- По умолчанию фоновые обновления отключают помощники учетных данных Git для pull, поэтому pull не может аутентифицироваться через HTTPS. SSH удаленные хосты с загруженным ключом в
ssh-agentвсе еще аутентифицируются. Неудачный pull запускает повторное клонирование с нуля, которое использует ваши сохраненные учетные данные, но может истечь по времени на больших репозиториях - Установите
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1, чтобы сохранить существующий клон при сбое фонового pull - Настройте помощник учетных данных Git, например
gh auth setup-git, чтобы резервное повторное клонирование могло аутентифицироваться - Если повторное клонирование истекает по времени на большом репозитории, увеличьте лимит с помощью
CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS - Настройте переписывание URL Git, ограниченное репозиторием marketplace, чтобы фоновый pull аутентифицировался напрямую
- Или обновляйте частные marketplace вручную с помощью
/plugin marketplace update <name>, которая использует ваши учетные данные
Обновления marketplace не работают в автономных средах
Симптомы: Marketplacegit pull не удается в фоне, и Claude Code многократно пытается повторно клонировать, что не может успешно завершиться.
Причина: По умолчанию, когда git pull не удается, Claude Code пытается повторно клонировать с нуля. В автономных или изолированных средах повторное клонирование не удается так же, и восстановление предыдущего кэша после этого является наилучшим усилием. Обновление запускается в фоне после запуска, поэтому оно не задерживает запуск, но каждая сессия повторяет неудачные попытки и каждая операция Git может ждать 120-секундного таймаута.
Решение: Установите CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1, чтобы пропустить попытку повторного клонирования и продолжить использование существующего кэша при сбое pull:
git pull и продолжает использовать последнее известное хорошее состояние. Для полностью автономных развертываний, где репозиторий никогда не будет доступен, используйте CLAUDE_CODE_PLUGIN_SEED_DIR для предварительного заполнения каталога плагинов во время сборки вместо этого.
Операции Git истекают по времени
Симптомы: Установка плагина или обновление marketplace не удается с ошибкой истечения времени, например “Git clone timed out after 120s” или “Git pull timed out after 120s”. Причина: Claude Code использует 120-секундный таймаут для всех операций Git, включая клонирование репозиториев плагинов и извлечение обновлений marketplace. Большие репозитории или медленные сетевые соединения могут превысить этот лимит. Решение: Увеличьте таймаут, используя переменную окруженияCLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS. Значение указывается в миллисекундах:
Плагины с относительными путями не работают в marketplace на основе URL
Симптомы: Добавлен marketplace через URL (например,https://example.com/marketplace.json), но плагины с источниками относительных путей, такие как "./plugins/my-plugin", не устанавливаются с ошибками “path not found”.
Причина: Marketplace на основе URL загружают только сам файл marketplace.json. Они не загружают файлы плагинов с сервера. Относительные пути в записи marketplace ссылаются на файлы на удаленном сервере, которые не были загружены.
Решения:
- Используйте внешние источники: Измените записи плагинов, чтобы использовать источники GitHub, npm или URL Git вместо относительных путей:
- Используйте marketplace на основе Git: Разместите ваш marketplace в репозитории Git и добавьте его с URL Git. Marketplace на основе Git клонируют весь репозиторий, что делает относительные пути рабочими.
Файлы не найдены после установки
Симптомы: Плагин устанавливается, но ссылки на файлы не работают, особенно файлы вне каталога плагина Причина: Плагины копируются в каталог кэша, а не используются на месте. Пути, которые ссылаются на файлы вне каталога плагина (например,../shared-utils), не будут работать, потому что эти файлы не копируются.
Решения: См. Кэширование плагинов и разрешение файлов для обходных путей, включая символические ссылки и переструктурирование каталогов.
Для дополнительных инструментов отладки и распространенных проблем см. Инструменты отладки и разработки.
См. также
- Обнаружение и установка готовых плагинов - Установка плагинов из существующих marketplace
- Плагины - Создание собственных плагинов
- Справка плагинов - Полные технические спецификации и схемы
- Параметры плагинов - Параметры конфигурации плагинов
- Справка strictKnownMarketplaces - Ограничения управляемого marketplace