Skip to main content
Ищете способ установить плагины? Смотрите Обнаружение и установка плагинов. Для создания плагинов смотрите Плагины. Для распространения плагинов смотрите Маркетплейсы плагинов.
Этот справочник содержит полные технические спецификации для системы плагинов Claude Code, включая схемы компонентов, команды CLI и инструменты разработки. Плагин — это самостоятельный каталог компонентов, который расширяет Claude Code пользовательской функциональностью. Компоненты плагина включают skills, agents, hooks, MCP servers, LSP servers и monitors.

Справочник компонентов плагина

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, описывающие возможности агента Структура агента:
Плагины agents поддерживают поля frontmatter 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
Для полной информации смотрите Subagents.

Hooks

Плагины могут предоставлять обработчики событий, которые автоматически реагируют на события Claude Code. Расположение: hooks/hooks.json в корне плагина или встроенный в plugin.json Формат: Конфигурация JSON с сопоставителями событий и действиями Конфигурация hook:
Плагины hooks реагируют на те же события жизненного цикла, что и определённые пользователем hooks: Типы hook:
  • command: выполнение команд оболочки или скриптов
  • http: отправка JSON события как POST запроса на URL
  • mcp_tool: вызов инструмента на настроенном MCP server
  • prompt: оценка приглашения с помощью LLM (использует заполнитель $ARGUMENTS для контекста)
  • agent: запуск проверки агента с инструментами для сложных задач проверки
Hooks, которые нацелены на собственный bundled MCP server плагина, должны использовать его scoped names. Сопоставители инструментов и поля 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

Ищете способ использовать плагины LSP? Установите их из официального маркетплейса: найдите “lsp” на вкладке Discover в /plugin. Этот раздел документирует, как создавать плагины LSP для языков, не охватываемых официальным маркетплейсом.
Плагины могут предоставлять серверы 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 настраивают способ подключения Claude Code к языковому серверу, но они не включают сам сервер. Если вы видите Executable not found in $PATH на вкладке Errors в /plugin, установите требуемый двоичный файл для вашего языка.
Доступные плагины LSP: Сначала установите языковой сервер, затем установите плагин из маркетплейса.

Monitors

Плагины могут объявлять фоновые monitors, которые Claude Code автоматически запускает при активации плагина. Каждый monitor запускает команду оболочки на протяжении всего сеанса и доставляет каждую строку stdout Claude как уведомление, чтобы Claude мог реагировать на записи журнала, изменения статуса или опрашиваемые события без необходимости просить запустить наблюдение. Плагины monitors используют тот же механизм, что и инструмент Monitor, и разделяют его ограничения доступности. Они работают только в интерактивных сеансах CLI, работают без песочницы на том же уровне доверия, что и hooks, и пропускаются на хостах, где инструмент Monitor недоступен. Расположение: monitors/monitors.json в корне плагина или встроенный в plugin.json Формат: Массив JSON записей monitor Следующий monitors/monitors.json отслеживает конечную точку статуса развёртывания и локальный журнал ошибок:
Для объявления monitors встроенным образом установите 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, и компоненты, которые запускают код, дополнительно ограничены: Плагины личной области не имеют этих ограничений.
Плагины @skills-dir области проекта загружаются только из .claude/skills/ каталога, где вы запускаете Claude Code. Они не поднимаются к корню репозитория так, как это делают простые skills и команды, поэтому запуск из подкаталога пропускает плагин, который находится в корне репо. Запустите из корня репозитория или запустите /reload-plugins после изменения каталогов.

Редактирование, перезагрузка и отключение плагина в каталоге 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 Code v2.1.140 и более поздние версии отмечают игнорируемую папку в claude plugin list и представлении деталей /plugin. Плагин всё ещё загружается с использованием путей манифеста. Предупреждение не показывается, когда ключ манифеста указывает на папку по умолчанию, например "commands": ["./commands/deploy.md"], потому что папка явно адресуется в этом случае. Для всех полей пути:
  • Все пути должны быть относительны к корню плагина и начинаться с ./
  • Компоненты из пользовательских путей используют те же правила именования и пространства имён
  • Несколько путей можно указать как массивы
  • Когда путь skill указывает на каталог, который содержит SKILL.md напрямую, например "skills": ["./"], указывающий на корень плагина, поле frontmatter name в 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 Code копирует плагины маркетплейса в локальный кэш плагина пользователя (~/.claude/plugins/cache) вместо использования их на месте. Понимание этого поведения важно при разработке плагинов, которые ссылаются на внешние файлы. Каждая установленная версия — это отдельный каталог в кэше. Когда вы обновляете или удаляете плагин, предыдущий каталог версии помечается как сиротский и удаляется автоматически через 7 дней. Период отсрочки позволяет одновременным сеансам Claude Code, которые уже загрузили старую версию, продолжать работу без ошибок. Инструменты Glob и Grep Claude пропускают сиротские каталоги версий при поиске, поэтому результаты файлов не включают устаревший код плагина.

Ограничения обхода пути

Установленные плагины не могут ссылаться на файлы вне их каталога. Пути, которые выходят за пределы корня плагина (такие как ../shared-utils), не будут работать после установки, потому что эти внешние файлы не копируются в кэш. Если вашему плагину нужно совместно использовать файлы с другими частями того же маркетплейса, вы можете создать символические ссылки внутри каталога вашего плагина. То, как символическая ссылка обрабатывается при копировании плагина в кэш, зависит от того, где разрешается её цель:
  • В собственном каталоге плагина: символическая ссылка сохраняется как относительная символическая ссылка в кэше, поэтому она продолжает разрешаться к скопированной цели во время выполнения.
  • В другом месте в том же маркетплейсе: символическая ссылка разыменовывается. Содержимое цели копируется в кэш на её место. Это позволяет каталогу skills/ мета-плагина ссылаться на навыки, определённые другими плагинами в маркетплейсе.
  • Вне маркетплейса: символическая ссылка пропускается в целях безопасности. Это предотвращает извлечение плагинами произвольных файлов хоста, таких как системные пути, в кэш.
Для плагинов, установленных с помощью --plugin-dir или из локального пути, сохраняются только символические ссылки, которые разрешаются в собственном каталоге плагина. Все остальные пропускаются. Следующая команда создаёт ссылку из плагина маркетплейса на общий навык, определённый соседним плагином. В Windows используйте mklink /D из командной строки с повышенными привилегиями или включите режим разработчика:
Это обеспечивает гибкость при сохранении преимуществ безопасности системы кэширования.

Структура каталога плагина

Стандартная раскладка плагина

Полный плагин следует этой структуре:
Каталог .claude-plugin/ содержит файл plugin.json. Все остальные каталоги (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) должны быть в корне плагина, а не внутри .claude-plugin/.
Файл 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: токены, которые стоит компонент при срабатывании. Показано для каждого компонента отдельно, а не как итог плагина, потому что типичная сессия вызывает только подмножество компонентов.
Этот пример показывает, как выглядит вывод для плагина с двумя навыками:
Итог always-on вычисляется через API 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 не выполняется:
  1. Проверьте, что скрипт исполняемый: chmod +x ./scripts/your-script.sh
  2. Проверьте строку shebang: Первая строка должна быть #!/bin/bash или #!/usr/bin/env bash
  3. Проверьте, что путь использует ${CLAUDE_PLUGIN_ROOT}: "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh"
  4. Протестируйте скрипт вручную: ./scripts/your-script.sh
Hook не срабатывает на ожидаемых событиях:
  1. Проверьте, что имя события правильное (чувствительно к регистру): PostToolUse, а не postToolUse
  2. Проверьте, что шаблон сопоставления соответствует вашим инструментам: "matcher": "Write|Edit" для операций с файлами
  3. Подтвердите, что тип hook действителен: command, http, mcp_tool, prompt или agent

Устранение неполадок сервера MCP

Сервер не запускается:
  1. Проверьте, что команда существует и исполняемая
  2. Проверьте, что все пути используют переменную ${CLAUDE_PLUGIN_ROOT}
  3. Проверьте журналы сервера MCP: claude --debug показывает ошибки инициализации
  4. Протестируйте сервер вручную вне Claude Code
Инструменты сервера не отображаются:
  1. Убедитесь, что сервер правильно настроен в .mcp.json или plugin.json
  2. Проверьте, что сервер правильно реализует протокол MCP
  3. Проверьте наличие тайм-аутов соединения в выводе отладки

Ошибки структуры каталога

Симптомы: Плагин загружается, но компоненты (skills, agents, hooks) отсутствуют. Правильная структура: Компоненты должны быть в корне плагина, а не внутри .claude-plugin/. Только plugin.json должен быть в .claude-plugin/.
Если ваши компоненты находятся внутри .claude-plugin/, переместите их в корень плагина. Контрольный список отладки:
  1. Запустите claude --debug и ищите сообщения “loading plugin”
  2. Проверьте, что каждый каталог компонента указан в выводе отладки
  3. Проверьте, что разрешения файлов позволяют читать файлы плагина

Справочник по распространению и версионированию

Управление версиями

Claude Code использует версию плагина в качестве ключа кэша, который определяет, доступно ли обновление. Когда вы запускаете /plugin update или срабатывает автоматическое обновление, Claude Code вычисляет текущую версию и пропускает обновление, если она совпадает с уже установленной. Версия определяется из первого из следующих параметров, который установлен:
  1. Поле version в plugin.json плагина
  2. Поле version в записи плагина на маркетплейсе в marketplace.json
  3. SHA коммита git источника плагина для источников github, url, git-subdir и relative-path в маркетплейсе, размещённом на git
  4. unknown для источников npm или локальных каталогов, не находящихся в репозитории git
Это дает вам два способа версионирования плагина:
Если вы установите version в plugin.json, вы должны обновлять его каждый раз, когда хотите, чтобы пользователи получили изменения. Отправка новых коммитов недостаточна, потому что Claude Code видит ту же строку версии и сохраняет кэшированную копию. Если вы быстро итерируете, оставьте version неустановленным, чтобы вместо этого использовалась SHA коммита git.
Если вы используете явные версии, следуйте семантическому версионированию (MAJOR.MINOR.PATCH): обновляйте MAJOR для критических изменений, MINOR для новых функций, PATCH для исправлений ошибок. Документируйте изменения в CHANGELOG.md.

Смотрите также

  • Плагины - Учебные материалы и практическое использование
  • Маркетплейсы плагинов - Создание и управление маркетплейсами
  • Skills - Детали разработки skills
  • Subagents - Конфигурация и возможности агентов
  • Hooks - Обработка событий и автоматизация
  • MCP - Интеграция внешних инструментов
  • Параметры - Опции конфигурации для плагинов