← Claude Code in Action · урок 9 из 9

Урок 9. Плагины

Конспект урока «Plugins» из бесплатного курса Anthropic Claude Code in Action. Оригинал урока: https://anthropic.skilljar.com/claude-code-in-action/486939

Это пересказ на русском, а не перевод. Права на курс принадлежат Anthropic.

Проблема

Хорошая настройка стоит намного больше, когда на ней работает вся команда. Загвоздка в переносе: ты собрал отличную папку .claude со скиллами, субагентами и хуками — а дальше что? Все копируют файлы между машинами и надеются, что версии не разъедутся.

Плагин — это способ Claude Code упаковать настройку и передать её другому.

Что такое плагин

Одна устанавливаемая единица. В ней лежит всё, чем иначе пришлось бы делиться вручную: скиллы, субагенты, хуки, конфигурации MCP-серверов, а также вещи из длинного хвоста — LSP-серверы, фоновые мониторы, темы и кусочек settings.json. Одна версия, одна установка.

Способ установки зависит от того, где плагин лежит. Прямо в сессии его можно поставить по имени:

/plugin install org-name@plugin-name

Claude Code установит его и попросит выполнить /reload-plugins, чтобы изменения применились.

Маркетплейс для команды

Для команды правильнее один раз добавить приватный маркетплейс — общий источник, через который разрешаются плагины:

/plugin marketplace add your-org/claude-plugins

Название любое. После добавления все последующие установки идут через него: единый поиск, отслеживание версий и обновления в одном месте, а не россыпью по ноутбукам. Посмотреть доступное можно во вкладке Discover.

Читай перед установкой

Это самая важная часть урока. Плагин выполняет код на твоей машине с твоими правами. Его хуки срабатывают на каждом подходящем вызове инструмента. Поставил плагин ради скиллов — вместе с ними получил его PreToolUse и Stop хуки, читал ты их или нет.

Подумай, что это значит. Плагин из сообщества может нести Stop-хук, который каждый раз стучится на внешний адрес, и ничто в твоей конфигурации об этом не предупредит. Это не повод избегать плагинов — это повод сначала посмотреть.

Перед установкой открой детали плагина: Claude Code показывает, что именно будет установлено, оценивает стоимость в контексте и прямо предупреждает, что содержимое сторонних плагинов Anthropic не контролирует.

Два факта об источниках:

Но «проверено» не равно «можно доверять»: автоматическая проверка ловит кое-что, а не всё. Правило остаётся прежним — ставь плагины и добавляй маркетплейсы только из источников, которым ты действительно доверяешь, и смотри, что плагин делает, прежде чем включать.

Компоненты работают рядом с твоими

Плагин не затирает твою конфигурацию — его компоненты работают вместе с твоими. В основном это хорошо, но есть следствия.

Хуки складываются. PreToolUse плагина и твой собственный PreToolUse сработают оба на каждом вызове инструмента. Один не заменяет другой. Именно поэтому детали и надо читать заранее.

Скиллы, агенты и команды живут в пространстве имён плагина, так что с твоими не конфликтуют.

Плагин может принести и settings.json, но очень узкий: Claude Code учитывает из него всего два ключа — для агента и для строки состояния субагента.

На ключе агента стоит остановиться. Он поднимает одного из субагентов плагина в основной поток — вместе с его системным промптом, ограничениями на инструменты и моделью. То есть включение плагина может изменить поведение Claude Code по умолчанию. Ещё одна причина смотреть до того, как включаешь.

После установки всё добавленное видно в панели плагинов — оттуда же им можно управлять и удалить.

Как упаковать свой

Обратная сторона. Собрал рабочую папку .claude — не заставляй команду копировать её между машинами, упакуй.

Хорошая новость: перестраивать ничего не нужно, плагин использует ту же структуру, что у тебя уже есть:

Структура каталогов делает основную работу — компоненты обнаруживаются по соглашению.

Манифест

Сверху есть необязательный манифест по пути .claude-plugin/plugin.json с именем, версией, описанием и автором:

{
  "name": "svg-splitter-review",
  "version": "0.1.0",
  "description": "Reviews the SVG Splitter repo",
  "author": { "name": "..." }
}

Манифест необязателен: без него Claude Code всё равно найдёт компоненты по структуре каталогов. Но две детали важны:

Коротко

В этом и смысл: одна устанавливаемая единица — и настройка, которой ты доверяешь, доезжает до всей команды.