Справочник компонентов плагина
Skills
Плагины добавляют skills в Claude Code, создавая сочетания клавиш/name, которые вы или Claude можете вызвать.
Расположение: каталог skills/ или commands/ в корне плагина, или один файл SKILL.md в корне плагина
Формат файла: Skills — это каталоги с SKILL.md; команды — это простые файлы markdown
Структура skill:
- Skills и команды автоматически обнаруживаются при установке плагина
- Claude может вызывать их автоматически на основе контекста задачи
- Skills могут включать вспомогательные файлы рядом с SKILL.md
skills/ и не имеет поля манифеста skills, то SKILL.md в корне плагина загружается как один skill. Установите поле frontmatter name для управления именем вызова skill. Без него Claude Code возвращается к имени каталога установки, которое для плагинов, установленных из маркетплейса, является строкой версии, которая меняется при каждом обновлении. Для плагинов, которые поставляют более одного skill, используйте макет каталога skills/, показанный выше.
Для полной информации смотрите Skills.
Agents
Плагины могут предоставлять специализированные subagents для конкретных задач, которые Claude может вызывать автоматически при необходимости. Расположение: каталогagents/ в корне плагина
Формат файла: Файлы markdown, описывающие возможности агента
Структура агента:
name, description, model, effort, maxTurns, tools, disallowedTools, skills, memory, background и isolation. Единственное допустимое значение isolation — это "worktree". По соображениям безопасности hooks, mcpServers и permissionMode не поддерживаются для agents, поставляемых с плагинами.
Точки интеграции:
- Агенты появляются в интерфейсе @-mention typeahead под их областью видимости, такой как
my-plugin:code-reviewer, после включения плагина - Claude может вызывать агентов автоматически на основе контекста задачи
- Агенты могут быть вызваны вручную пользователями
- Плагины agents работают наряду со встроенными agents Claude
Hooks
Плагины могут предоставлять обработчики событий, которые автоматически реагируют на события Claude Code. Расположение:hooks/hooks.json в корне плагина или встроенный в plugin.json
Формат: Конфигурация JSON с сопоставителями событий и действиями
Конфигурация hook:
Типы hook:
command: выполнение команд оболочки или скриптовhttp: отправка JSON события как POST запроса на URLmcp_tool: вызов инструмента на настроенном MCP serverprompt: оценка приглашения с помощью LLM (использует заполнитель$ARGUMENTSдля контекста)agent: запуск проверки агента с инструментами для сложных задач проверки
if принимают scoped tool name mcp__plugin_<plugin-name>_<server-name>__<tool>, а поле server hook mcp_tool принимает plugin:<plugin-name>:<server-name>. Сопоставитель, написанный для простого ключа сервера, никогда не срабатывает. Смотрите Match MCP tools и Plugin-provided MCP servers.
MCP servers
Плагины могут включать серверы Model Context Protocol (MCP) для подключения Claude Code к внешним инструментам и сервисам. Расположение:.mcp.json в корне плагина или встроенный в plugin.json
Формат: Стандартная конфигурация сервера MCP
Конфигурация сервера MCP:
- Серверы MCP плагина запускаются автоматически при включении плагина
- Серверы отображаются как стандартные инструменты MCP в наборе инструментов Claude
- Возможности сервера беспрепятственно интегрируются с существующими инструментами Claude
- Серверы плагина можно настраивать независимо от серверов MCP пользователя
LSP servers
Плагины могут предоставлять серверы Language Server Protocol (LSP) для предоставления Claude интеллектуальной информации о коде в реальном времени при работе с вашей кодовой базой. Интеграция LSP предоставляет:- Мгновенная диагностика: Claude видит ошибки и предупреждения сразу после каждого редактирования
- Навигация по коду: переход к определению, поиск ссылок и информация при наведении
- Осведомлённость о языке: информация о типах и документация для символов кода
.lsp.json в корне плагина или встроенный в plugin.json
Формат: Конфигурация JSON, сопоставляющая имена языковых серверов с их конфигурациями
Формат файла .lsp.json:
plugin.json:
Опциональные поля:
restartOnCrash и shutdownTimeout требуют Claude Code v2.1.205 или позже. До v2.1.205 схема конфигурации принимала обе опции, но установка любой из них заставляла Claude Code пропустить этот сервер LSP полностью при запуске, причём причина видна только в выводе claude --debug.
Несколько серверов для одного расширения: когда более одного включённого сервера LSP объявляет одно и то же расширение файла в extensionToLanguage, независимо от того, поступают ли серверы из одного плагина или из разных плагинов, первый зарегистрированный сервер обрабатывает файлы с этим расширением, а остальные никогда не запускаются. Интерфейс /plugin показывает предупреждение, называющее плагин, чей сервер активен.
Серверы, которые не инициализируются: Claude Code пропускает сервер, конфигурация которого недействительна, например один, в котором отсутствует command или extensionToLanguage, и остальные настроенные серверы всё ещё запускаются. Запустите claude --debug, чтобы увидеть, почему сервер был пропущен.
Пропущенный сервер не заявляет свои расширения файлов, поэтому другой действительный сервер, который объявляет то же расширение, из того же или другого плагина, всё ещё обрабатывает эти файлы. До v2.1.205 сервер, который не инициализировался, всё ещё заявлял свои расширения и блокировал другой действительный сервер для того же расширения.
Доступные плагины LSP:
Сначала установите языковой сервер, затем установите плагин из маркетплейса.
Monitors
Плагины могут объявлять фоновые monitors, которые Claude Code автоматически запускает при активации плагина. Каждый monitor запускает команду оболочки на протяжении всего сеанса и доставляет каждую строку stdout Claude как уведомление, чтобы Claude мог реагировать на записи журнала, изменения статуса или опрашиваемые события без необходимости просить запустить наблюдение. Плагины monitors используют тот же механизм, что и инструмент Monitor, и разделяют его ограничения доступности. Они работают только в интерактивных сеансах CLI, работают без песочницы на том же уровне доверия, что и hooks, и пропускаются на хостах, где инструмент Monitor недоступен. Расположение:monitors/monitors.json в корне плагина или встроенный в plugin.json
Формат: Массив JSON записей monitor
Следующий monitors/monitors.json отслеживает конечную точку статуса развёртывания и локальный журнал ошибок:
experimental.monitors в plugin.json на тот же массив. Для загрузки из пути, отличного от пути по умолчанию, установите experimental.monitors на строку относительного пути, такую как "./config/monitors.json". Monitors — это экспериментальный компонент.
Обязательные поля:
Опциональные поля:
Значение
command поддерживает подстановки переменных ${CLAUDE_PLUGIN_ROOT}, ${CLAUDE_PLUGIN_DATA} и ${CLAUDE_PROJECT_DIR}, плюс любой ${ENV_VAR} из окружения. Добавьте префикс команды с cd "${CLAUDE_PLUGIN_ROOT}" && , если скрипт должен работать из собственного каталога плагина.
Команда monitor не может ссылаться на значения ${user_config.*}. Команда работает через оболочку, поэтому Claude Code отклоняет monitor с ошибкой вместо подстановки значения. Процессы monitor не получают переменные окружения CLAUDE_PLUGIN_OPTION_<KEY>, поэтому пусть скрипт monitor читает значение из файла конфигурации, который он владеет. До v2.1.207 команды monitor подставляли значения ${user_config.*}.
Отключение плагина в середине сеанса не останавливает monitors, которые уже работают. Они останавливаются при завершении сеанса.
Themes
Плагины могут поставлять цветовые темы, которые появляются в/theme наряду со встроенными предустановками и локальными темами пользователя. Тема — это JSON файл в themes/ с предустановкой base и разреженной картой переопределений overrides цветовых токенов. Themes — это экспериментальный компонент.
custom:<plugin-name>:<slug> в конфигурации пользователя. Темы плагина доступны только для чтения; нажатие Ctrl+E на одной из них в /theme копирует её в ~/.claude/themes/, чтобы пользователь мог редактировать копию.
Области установки плагина
При установке плагина вы выбираете область, которая определяет, где плагин доступен и кто ещё может его использовать:
Плагины используют ту же систему областей, что и другие конфигурации Claude Code. Для инструкций по установке и флагов области смотрите Установка плагинов. Для полного объяснения областей смотрите Области конфигурации.
Плагины в каталоге skills
Любая папка в каталоге skills, которая содержит манифест.claude-plugin/plugin.json, загружается как плагин с именем <name>@skills-dir в следующем сеансе, без маркетплейса и без шага установки. Создайте один с помощью plugin init. В отличие от установки маркетплейса, плагин обнаруживается на месте, а не копируется в кэш плагина.
Дерево каталога skills поддерживает три различных вещи:
Выберите, откуда загружается плагин
Плагин области проекта проверяется в репозитории и достигает каждого сотрудника, который его клонирует. Поскольку это содержимое поступает из репозитория, а не от вас, оно загружается только после того же шлюза доверия, который управляет
.claude/settings.json, и компоненты, которые запускают код, дополнительно ограничены:
- Серверы MCP, которые он объявляет, проходят через то же одобрение для каждого сервера что и проект
.mcp.json - Серверы LSP запускаются только после того, как вы доверяете рабочей области
- Фоновые monitors не загружаются
Редактирование, перезагрузка и отключение плагина в каталоге skills
Изменения, которые вы вносите вSKILL.md skill, вступают в силу немедленно в текущем сеансе. Изменения в других компонентах плагина, таких как hooks/, .mcp.json, agents/ и output-styles/, не вступают в силу. Запустите /reload-plugins или перезагрузите Claude Code, чтобы их подхватить. Смотрите Обнаружение изменений в реальном времени.
Чтобы остановить загрузку плагина в каталоге skills, удалите его папку или отключите его по имени. Нет шага uninstall, потому что ничего не было установлено из маркетплейса.
Схема манифеста плагина
Файл.claude-plugin/plugin.json определяет метаданные и конфигурацию вашего плагина. Этот раздел документирует все поддерживаемые поля и опции.
Манифест опционален. Если он опущен, Claude Code автоматически обнаруживает компоненты в местоположениях по умолчанию и выводит имя плагина из имени каталога. Используйте манифест, когда вам нужно предоставить метаданные или пользовательские пути компонентов.
Полная схема
Обязательные поля
Если вы включаете манифест,name — единственное обязательное поле.
Это имя используется для пространства имён компонентов. Например, в пользовательском интерфейсе агент
agent-creator для плагина с именем plugin-dev будет отображаться как plugin-dev:agent-creator.
Нераспознанные поля
Claude Code игнорирует поля верхнего уровня, которые он не распознаёт. Вы можете сохранить метаданные из другой экосистемы вplugin.json, и плагин всё ещё будет загружаться. Это делает практичным поддержание одного манифеста, который одновременно служит манифестом расширения VS Code или Cursor, npm package.json или манифестом пакета MCPB/DXT.
claude plugin validate сообщает о нераспознанных полях как о предупреждениях, а не об ошибках. Если поле отличается на один или два символа от распознанного, предупреждение предлагает вероятное предполагаемое имя. Плагин только с предупреждениями о нераспознанных полях всё ещё проходит валидацию и загружается во время выполнения.
Поля с неправильным типом всё ещё вызывают ошибку. Например, значение keywords, которое является строкой вместо массива, является ошибкой загрузки, и claude plugin validate сообщает об этом.
Передайте --strict для обработки предупреждений как ошибок. Используйте это в CI для перехвата опечатки в имени поля или поля, оставшегося от манифеста другого инструмента перед публикацией, даже если плагин загружается во время выполнения.
Поля метаданных
Включение по умолчанию
УстановитеdefaultEnabled: false в plugin.json, чтобы отправить плагин, который устанавливается отключённым. Пользователь включает его с помощью claude plugin enable <plugin> или интерфейса /plugin. Используйте это для плагинов, которые добавляют стоимость или область, в которую пользователь должен согласиться, например для плагина, который подключается к внешнему сервису. Это требует Claude Code v2.1.154 или более поздней версии. Более ранние версии игнорируют поле и включают плагин при установке.
defaultEnabled — это резервный вариант, когда ничто другое не решило состояние плагина. Два вещи имеют приоритет над ним:
- Параметр пользователя: запись для плагина в
enabledPluginsв любой области параметров. После записи она сохраняется при обновлениях и переустановках плагина, поэтому изменениеdefaultEnabledв более позднем выпуске не переключает существующего пользователя. - Требование зависимости: когда плагин требуется другим активным плагином, Claude Code записывает
trueдля него при установке или включении. Это даёт ему явный параметр, поэтому его собственное значение по умолчанию больше не применяется. Смотрите Включение или отключение плагина с зависимостями.
plugin.json. Смотрите Опциональные поля плагина.
Поля пути компонента
Экспериментальные компоненты
Компоненты под ключомexperimental, themes и monitors, имеют схему манифеста, которая может измениться между выпусками во время их стабилизации. Место, где вы их объявляете, — это отдельная миграция: верхний уровень всё ещё работает, claude plugin validate выдаёт предупреждение, и будущий выпуск потребует experimental.*.
Конфигурация пользователя
ПолеuserConfig объявляет значения, которые Claude Code запрашивает у пользователя при включении плагина. Используйте это вместо требования пользователям вручную редактировать settings.json.
Каждое значение доступно для подстановки как
${user_config.KEY} в конфигурациях серверов MCP и LSP и командах hooks. Нечувствительные значения также могут быть подставлены в содержимое skills и agents. Все значения экспортируются в процессы hooks как переменные окружения CLAUDE_PLUGIN_OPTION_<KEY>, где <KEY> — это ключ опции в верхнем регистре.
Поля, которые работают в shell, отклоняют ${user_config.*}: подстановка настроенного значения в команду shell позволила бы shell выполнить всё, что содержит это значение, поэтому компонент не работает с ошибкой. Каждое отклонённое поле имеет альтернативный способ передачи значения:
До v2.1.207 эти поля подставляли значения
${user_config.KEY}; обновите плагины, которые полагались на это.
Нечувствительные значения хранятся под ключом pluginConfigs в settings.json как pluginConfigs[<plugin-id>].options. Claude Code записывает ключ в параметры пользователя и читает его обратно из параметров пользователя, флага --settings и управляемых параметров только; записи в .claude/settings.json или .claude/settings.local.json проекта игнорируются. До v2.1.207 Claude Code также читал параметры проекта и локальные параметры.
Чувствительные значения переходят в macOS Keychain или в ~/.claude/.credentials.json на платформах, где keychain недоступен. Хранилище Keychain общее с OAuth токенами и имеет приблизительный лимит 2 КБ, поэтому держите чувствительные значения небольшими.
Каналы
Полеchannels позволяет плагину объявить один или несколько каналов сообщений, которые внедряют содержимое в разговор. Каждый канал привязывается к серверу MCP, который предоставляет плагин.
server обязательно и должно соответствовать ключу в mcpServers плагина. Опциональный userConfig для каждого канала использует ту же схему, что и поле верхнего уровня, позволяя плагину запрашивать токены ботов или ID владельцев при включении плагина.
Правила поведения пути
Замена ли пользовательский путь или расширяет каталог по умолчанию плагина, зависит от поля:- Заменяет по умолчанию:
commands,agents,outputStyles,experimental.themes,experimental.monitors. Например, когда манифест указываетcommands, каталог по умолчаниюcommands/не сканируется. Чтобы сохранить по умолчанию и добавить больше, перечислите его явно:"commands": ["./commands/", "./extras/"] - Добавляет к по умолчанию:
skills. Каталог по умолчаниюskills/всегда сканируется, и каталоги, перечисленные вskills, загружаются вместе с ним. Исключение: для записи маркетплейса, чейsourceразрешается в корень маркетплейса, объявление конкретных подкаталогов заменяет сканирование по умолчаниюskills/ - Собственные правила слияния: hooks, MCP servers и LSP servers. Смотрите каждый раздел для того, как несколько источников объединяются
claude plugin list и представлении деталей /plugin. Плагин всё ещё загружается с использованием путей манифеста. Предупреждение не показывается, когда ключ манифеста указывает на папку по умолчанию, например "commands": ["./commands/deploy.md"], потому что папка явно адресуется в этом случае.
Для всех полей пути:
- Все пути должны быть относительны к корню плагина и начинаться с
./ - Компоненты из пользовательских путей используют те же правила именования и пространства имён
- Несколько путей можно указать как массивы
- Когда путь skill указывает на каталог, который содержит
SKILL.mdнапрямую, например"skills": ["./"], указывающий на корень плагина, поле frontmatternameвSKILL.mdопределяет имя вызова skill. Это обеспечивает стабильное имя независимо от каталога установки. Еслиnameне установлен в frontmatter, в качестве резервного варианта используется имя каталога.
SKILL.md в своём корне, не имеет подкаталога skills/ и не имеет поля манифеста skills, автоматически загружается как плагин с одним skill в Claude Code v2.1.142 и более поздних версиях. Вам не нужно устанавливать "skills": ["./"] в plugin.json для этого макета. Имя вызова skill следует тому же правилу, что и выше: поле frontmatter name или имя каталога в качестве резервного варианта.
Примеры путей:
Переменные окружения
Claude Code предоставляет три переменные для ссылки на пути:
Все три экспортируются как переменные окружения в процессы hooks и в подпроцессы серверов MCP и LSP. Какие поля подставляют их встроенно, зависит от компонента плагина:
В командах hook используйте форму exec с
args, чтобы каждый путь передавался как один аргумент без кавычек. В hooks в форме shell и командах monitor оборачивайте переменные в двойные кавычки, как в "${CLAUDE_PROJECT_DIR}/scripts/server.sh". Этот hook в форме shell запускает скрипт, поставляемый с плагином:
${CLAUDE_PLUGIN_ROOT} изменяется при обновлении плагина. Каталог предыдущей версии остаётся на диске примерно семь дней после обновления перед очисткой, но рассматривайте его как временный и не записывайте состояние там.
Когда плагин обновляется во время сеанса, команды hooks, monitors, серверы MCP и серверы LSP продолжают использовать путь предыдущей версии. Запустите /reload-plugins для переключения hooks, серверов MCP и серверов LSP на новый путь; monitors требуют перезагрузки сеанса.
Серверы MCP также могут вызывать запрос roots/list для чтения рабочих каталогов сеанса во время выполнения. Смотрите что возвращает roots/list и когда Claude Code уведомляет сервер об изменениях.
Каталог постоянных данных
Каталог${CLAUDE_PLUGIN_DATA} разрешается в ~/.claude/plugins/data/{id}/, где {id} — это идентификатор плагина с символами вне a-z, A-Z, 0-9, _ и -, заменённые на -. Для плагина, установленного как formatter@my-marketplace, каталог — это ~/.claude/plugins/data/formatter-my-marketplace/.
Распространённое использование — установка языковых зависимостей один раз и их повторное использование в сеансах и обновлениях плагина. Поскольку каталог данных пережидает любую отдельную версию плагина, проверка только существования каталога не может обнаружить, когда обновление изменяет манифест зависимостей плагина. Рекомендуемый паттерн сравнивает поставляемый манифест с копией в каталоге данных и переустанавливает при различиях.
Этот hook SessionStart устанавливает node_modules при первом запуске и снова всякий раз, когда обновление плагина включает изменённый package.json:
diff выходит с ненулевым кодом, когда сохранённая копия отсутствует или отличается от поставляемой, охватывая как первый запуск, так и обновления, изменяющие зависимости. Если npm install не удаётся, завершающий rm удаляет скопированный манифест, чтобы следующий сеанс повторил попытку.
Скрипты, поставляемые в ${CLAUDE_PLUGIN_ROOT}, затем могут работать с сохранённым node_modules:
/plugin показывает размер каталога и запрашивает перед удалением. CLI удаляет по умолчанию; передайте --keep-data для сохранения.
Кэширование плагина и разрешение файлов
Плагины указываются одним из двух способов:- Через
claude --plugin-dirилиclaude --plugin-url, на время сеанса. - Через маркетплейс, установленный для будущих сеансов.
~/.claude/plugins/cache) вместо использования их на месте. Понимание этого поведения важно при разработке плагинов, которые ссылаются на внешние файлы.
Каждая установленная версия — это отдельный каталог в кэше. Когда вы обновляете или удаляете плагин, предыдущий каталог версии помечается как сиротский и удаляется автоматически через 7 дней. Период отсрочки позволяет одновременным сеансам Claude Code, которые уже загрузили старую версию, продолжать работу без ошибок.
Инструменты Glob и Grep Claude пропускают сиротские каталоги версий при поиске, поэтому результаты файлов не включают устаревший код плагина.
Ограничения обхода пути
Установленные плагины не могут ссылаться на файлы вне их каталога. Пути, которые выходят за пределы корня плагина (такие как../shared-utils), не будут работать после установки, потому что эти внешние файлы не копируются в кэш.
Совместное использование файлов в маркетплейсе с помощью символических ссылок
Если вашему плагину нужно совместно использовать файлы с другими частями того же маркетплейса, вы можете создать символические ссылки внутри каталога вашего плагина. То, как символическая ссылка обрабатывается при копировании плагина в кэш, зависит от того, где разрешается её цель:- В собственном каталоге плагина: символическая ссылка сохраняется как относительная символическая ссылка в кэше, поэтому она продолжает разрешаться к скопированной цели во время выполнения.
- В другом месте в том же маркетплейсе: символическая ссылка разыменовывается. Содержимое цели копируется в кэш на её место. Это позволяет каталогу
skills/мета-плагина ссылаться на навыки, определённые другими плагинами в маркетплейсе. - Вне маркетплейса: символическая ссылка пропускается в целях безопасности. Это предотвращает извлечение плагинами произвольных файлов хоста, таких как системные пути, в кэш.
--plugin-dir или из локального пути, сохраняются только символические ссылки, которые разрешаются в собственном каталоге плагина. Все остальные пропускаются.
Следующая команда создаёт ссылку из плагина маркетплейса на общий навык, определённый соседним плагином. В Windows используйте mklink /D из командной строки с повышенными привилегиями или включите режим разработчика:
Структура каталога плагина
Стандартная раскладка плагина
Полный плагин следует этой структуре:CLAUDE.md в корне плагина не загружается как контекст проекта. Плагины предоставляют контекст через skills, agents и hooks, а не через CLAUDE.md. Чтобы отправить инструкции, которые загружаются в контекст Claude, поместите их в skill.
Справочник местоположений файлов
Справочник команд CLI
Claude Code предоставляет команды CLI для неинтерактивного управления плагинами, полезные для написания скриптов и автоматизации.plugin init
Создайте новый плагин в~/.claude/skills/<name>/. В следующем сеансе Claude Code он загружается автоматически как <name>@skills-dir и появляется в /plugin и claude plugin list без шага установки.
Смотрите Плагины в каталоге skills для требований области и доверия.
<name>: Имя плагина. Становится пространством имён skill и именем каталога в~/.claude/skills/, поэтому не может содержать пробелы или разделители пути.
Псевдонимы:
new
Каждое значение --with добавляет стартовый файл для этого компонента, готовый к редактированию:
Созданный плагин использует источник
@skills-dir вместо маркетплейса. Администраторы могут заблокировать этот источник с помощью strictKnownMarketplaces или добавив {"source": "skills-dir"} в blockedMarketplaces в управляемых параметрах. При блокировке plugin init завершается с ошибкой перед записью.
Примеры:
plugin install
Установите плагин из доступных маркетплейсов.<plugin>: Имя плагина илиplugin-name@marketplace-nameдля конкретного маркетплейса
Область определяет, в какой файл параметров добавляется установленный плагин. Например,
--scope project записывает в enabledPlugins в .claude/settings.json, делая плагин доступным для всех, кто клонирует репозиторий проекта.
Примеры:
plugin uninstall
Удалите установленный плагин.<plugin>: Имя плагина илиplugin-name@marketplace-name
Псевдонимы:
remove, rm
По умолчанию удаление из последней оставшейся области также удаляет каталог ${CLAUDE_PLUGIN_DATA} плагина. Используйте --keep-data для сохранения, например при переустановке после тестирования новой версии.
plugin prune
Удалите автоматически установленные зависимости плагинов, которые больше не требуются ни одному установленному плагину. Зависимости, которые Claude Code подтянул для удовлетворения поляdependencies другого плагина, удаляются; плагины, которые вы установили напрямую, никогда не затрагиваются.
Псевдонимы:
autoremove
Команда выводит список потерянных зависимостей и запрашивает подтверждение перед их удалением. Чтобы удалить плагин и очистить его зависимости в один шаг, запустите claude plugin uninstall <plugin> --prune.
claude plugin prune требует Claude Code v2.1.121 или более поздней версии.plugin enable
Включите отключённый плагин. Если плагин объявляет зависимости, Claude Code включает их транзитивно в той же области, и команда завершается с ошибкой, когда зависимость не установлена.<plugin>: Имя плагина илиplugin-name@marketplace-name
plugin disable
Отключите плагин без его удаления. Завершается с ошибкой, когда другой включённый плагин зависит от целевого плагина. Сообщение об ошибке включает цепочку команд, которая сначала отключает каждый зависимый плагин.<plugin>: Имя плагина илиplugin-name@marketplace-name
plugin update
Обновите плагин до последней версии.<plugin>: Имя плагина илиplugin-name@marketplace-name
plugin list
Список установленных плагинов с их версией, источником маркетплейса и статусом включения.
В интерактивном сеансе
/plugin list выводит тот же список встроенным образом. Интерактивная форма принимает --enabled или --disabled для отображения только плагинов в этом состоянии, и ls как сокращение для list.
plugin details
Показать инвентарь компонентов плагина и прогнозируемую стоимость в токенах. Вывод содержит список всех компонентов, которые вносит плагин, сгруппированных как Skills, Agents, Hooks, MCP серверы и LSP серверы, вместе с оценкой того, сколько токенов он добавляет к каждой сессии. Группа Skills включает как записиskills/, так и commands/.
<name>: Имя плагина илиplugin-name@marketplace-name
Вывод показывает две цифры стоимости для каждого компонента:
- Always-on: токены, добавляемые к каждой сессии текстом описания плагина, такие как описания навыков, описания агентов и имена команд, независимо от того, срабатывает ли какой-либо компонент.
- On-invoke: токены, которые стоит компонент при срабатывании. Показано для каждого компонента отдельно, а не как итог плагина, потому что типичная сессия вызывает только подмножество компонентов.
count_tokens для вашей активной модели. Числа для каждого компонента пропорционально масштабируются от этого итога. Если API недоступен, команда переходит на оценку на основе количества символов.
plugin tag
Создайте тег выпуска git для плагина в текущем каталоге. Запустите из папки плагина. Смотрите Теги выпусков плагинов.Инструменты отладки и разработки
Команды отладки
Используйтеclaude --debug для просмотра деталей загрузки плагина:
Это показывает:
- Какие плагины загружаются
- Любые ошибки в манифестах плагинов
- Регистрацию skill, agent и hook
- Инициализацию сервера MCP
Распространённые проблемы
Примеры сообщений об ошибках
Ошибки проверки манифеста:Invalid JSON syntax: Unexpected token } in JSON at position 142: проверьте наличие пропущенных запятых, лишних запятых или неквотированных строкPlugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required: отсутствует обязательное полеPlugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...: ошибка синтаксиса JSON
Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.: путь команды существует, но не содержит действительных файлов командPlugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.: путьsourceв marketplace.json указывает на несуществующий каталогPlugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.: удалите дублирующиеся определения компонентов или удалитеstrict: falseв записи маркетплейса
Устранение неполадок Hook
Скрипт hook не выполняется:- Проверьте, что скрипт исполняемый:
chmod +x ./scripts/your-script.sh - Проверьте строку shebang: Первая строка должна быть
#!/bin/bashили#!/usr/bin/env bash - Проверьте, что путь использует
${CLAUDE_PLUGIN_ROOT}:"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh" - Протестируйте скрипт вручную:
./scripts/your-script.sh
- Проверьте, что имя события правильное (чувствительно к регистру):
PostToolUse, а неpostToolUse - Проверьте, что шаблон сопоставления соответствует вашим инструментам:
"matcher": "Write|Edit"для операций с файлами - Подтвердите, что тип hook действителен:
command,http,mcp_tool,promptилиagent
Устранение неполадок сервера MCP
Сервер не запускается:- Проверьте, что команда существует и исполняемая
- Проверьте, что все пути используют переменную
${CLAUDE_PLUGIN_ROOT} - Проверьте журналы сервера MCP:
claude --debugпоказывает ошибки инициализации - Протестируйте сервер вручную вне Claude Code
- Убедитесь, что сервер правильно настроен в
.mcp.jsonилиplugin.json - Проверьте, что сервер правильно реализует протокол MCP
- Проверьте наличие тайм-аутов соединения в выводе отладки
Ошибки структуры каталога
Симптомы: Плагин загружается, но компоненты (skills, agents, hooks) отсутствуют. Правильная структура: Компоненты должны быть в корне плагина, а не внутри.claude-plugin/. Только plugin.json должен быть в .claude-plugin/.
.claude-plugin/, переместите их в корень плагина.
Контрольный список отладки:
- Запустите
claude --debugи ищите сообщения “loading plugin” - Проверьте, что каждый каталог компонента указан в выводе отладки
- Проверьте, что разрешения файлов позволяют читать файлы плагина
Справочник по распространению и версионированию
Управление версиями
Claude Code использует версию плагина в качестве ключа кэша, который определяет, доступно ли обновление. Когда вы запускаете/plugin update или срабатывает автоматическое обновление, Claude Code вычисляет текущую версию и пропускает обновление, если она совпадает с уже установленной.
Версия определяется из первого из следующих параметров, который установлен:
- Поле
versionвplugin.jsonплагина - Поле
versionв записи плагина на маркетплейсе вmarketplace.json - SHA коммита git источника плагина для источников
github,url,git-subdirи relative-path в маркетплейсе, размещённом на git unknownдля источниковnpmили локальных каталогов, не находящихся в репозитории git
Если вы используете явные версии, следуйте семантическому версионированию (
MAJOR.MINOR.PATCH): обновляйте MAJOR для критических изменений, MINOR для новых функций, PATCH для исправлений ошибок. Документируйте изменения в CHANGELOG.md.
Смотрите также
- Плагины - Учебные материалы и практическое использование
- Маркетплейсы плагинов - Создание и управление маркетплейсами
- Skills - Детали разработки skills
- Subagents - Конфигурация и возможности агентов
- Hooks - Обработка событий и автоматизация
- MCP - Интеграция внешних инструментов
- Параметры - Опции конфигурации для плагинов