AmigaОбучение ИИ
Модуль 4 · Проверяем и делимся · урок 9 из 10

Плагины

11 мин чтения▶ есть видеоверсия

За курс у вас накопилось: навык проверки, навык-ревьюер, три хука, набор правил разрешений. Всё это лежит в .claude/ одного проекта. Скопировать в двадцать других — можно, но через месяц двадцать копий разойдутся. Плагин решает это: тот же набор упаковывается один раз, кладётся в git-репозиторий, а проекты подключают его одной строкой в настройках и получают обновления. В этом уроке разберём, как плагин устроен, как его собрать и проверить и как раздать команде.

Когда плагин, а когда просто .claude/

Документация даёт простое разделение. Папка .claude/ в проекте — для личных сценариев, проектных особенностей и экспериментов; навык вызывается как /verify. Плагин — для того, что нужно нескольким людям или проектам, с версиями и обновлениями; навык вызывается как /amiga:verify. Совет оттуда же: начинайте в .claude/, быстро итерируйте, и переводите в плагин, когда стало понятно, что это нужно не только вам.

Плагин может содержать:

Папка или файл Что это
.claude-plugin/plugin.json Манифест: имя, описание, версия
skills/<имя>/SKILL.md Навыки
agents/*.md Субагенты
hooks/hooks.json Хуки в том же формате, что в settings.json
.mcp.json MCP-серверы
.lsp.json Языковые серверы для навигации по коду
commands/*.md Навыки в виде плоских файлов; устаревший вариант, для новых плагинов используйте skills/

Частая ошибка: положить skills/ или hooks/ внутрь .claude-plugin/. Там лежит только манифест. Всё остальное — в корне плагина.

Собираем плагин командных стандартов

Структура плагина amiga-standards:

text
amiga-standards/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   ├── verify/
│   │   └── SKILL.md
│   └── review-diff/
│       └── SKILL.md
├── agents/
│   └── security-reviewer.md
├── hooks/
│   └── hooks.json
└── README.md

Манифест .claude-plugin/plugin.json:

json
{
  "name": "amiga-standards",
  "description": "Проверка, ревью и защитные хуки для проектов Amiga",
  "version": "1.0.0",
  "author": {
    "name": "Amiga"
  }
}

Поле name становится пространством имён: навык verify будет вызываться как /amiga-standards:verify. Поле version определяет, когда пользователи получат обновление: пока вы не подняли версию, у них остаётся старая.

Навыки переносятся из .claude/skills/ без изменений — verify и review-diff из урока «Навыки проверки» работают как есть. Субагент agents/security-reviewer.md:

markdown
---
name: security-reviewer
description: Проверяет изменения на уязвимости
tools: Read, Grep, Glob, Bash
model: opus
---
Ты — инженер по безопасности. Проверь код на:
- инъекции (SQL, XSS, команды);
- ошибки авторизации и аутентификации;
- секреты в коде;
- небезопасную обработку данных.
Давай ссылки на строки и предлагай исправления.

Хуки переезжают из settings.json в hooks/hooks.json — формат тот же, только скрипты адресуются через ${CLAUDE_PLUGIN_ROOT}, папку установленного плагина:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PLUGIN_ROOT}/hooks/protect-files.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Скрипт protect-files.sh кладётся рядом, в hooks/, и делается исполняемым.

Проверяем локально

Плагин подключается на одну сессию флагом --plugin-dir:

bash
claude --plugin-dir ./amiga-standards

В сессии: /amiga-standards:verify должен работать, субагент должен появиться в /context в разделе Custom Agents, а хук — сработать при попытке отредактировать .env. После правок в файлах плагина — /reload-plugins, перезапуск не нужен. Флаг можно повторять, чтобы подключить несколько плагинов сразу.

Перед публикацией — валидация:

bash
claude plugin validate ./amiga-standards

Она проверяет структуру и манифест. Если плагин с таким же именем уже установлен из маркетплейса, локальная копия из --plugin-dir на эту сессию имеет приоритет — удобно тестировать изменения, не удаляя рабочую версию.

Для черновика есть и claude plugin init <имя>: создаёт заготовку с манифестом и стартовым SKILL.md в папке навыков, откуда она загружается автоматически.

Маркетплейс: как раздать команде

Маркетплейс — каталог плагинов: git-репозиторий с файлом .claude-plugin/marketplace.json. Плагины могут лежать в том же репозитории или ссылаться на другие.

Репозиторий amiga/claude-plugins:

text
claude-plugins/
├── .claude-plugin/
│   └── marketplace.json
└── plugins/
    ├── amiga-standards/
    └── amiga-mobile/

marketplace.json:

json
{
  "name": "amiga",
  "owner": {
    "name": "Amiga Dev Tools"
  },
  "plugins": [
    {
      "name": "amiga-standards",
      "source": "./plugins/amiga-standards",
      "description": "Проверка, ревью и защитные хуки",
      "version": "1.0.0"
    },
    {
      "name": "amiga-mobile",
      "source": "./plugins/amiga-mobile",
      "description": "Навыки для мобильных проектов"
    }
  ]
}

Поле source — относительный путь внутри репозитория либо объект со ссылкой на другой репозиторий: {"source": "github", "repo": "amiga/other-plugin"} или git-URL для GitLab и самохостинга. Репозиторий может быть приватным: Claude Code использует ваши обычные git-учётные данные.

Разработчик подключает маркетплейс и ставит плагин:

text
/plugin marketplace add amiga/claude-plugins
/plugin install amiga-standards@amiga

Для GitHub достаточно owner/repo; для других хостов — полный URL с .git на конце. При установке выбирается область: пользовательская (для всех ваших проектов), проектная (для всех участников репозитория — пишется в .claude/settings.json) или локальная (только вы в этом репозитории).

Но лучше не заставлять каждого выполнять команды. В .claude/settings.json проекта:

json
{
  "extraKnownMarketplaces": {
    "amiga": {
      "source": {
        "source": "github",
        "repo": "amiga/claude-plugins"
      }
    }
  },
  "enabledPlugins": {
    "amiga-standards@amiga": true
  }
}

Когда участник команды открывает проект и подтверждает доверие папке, Claude Code регистрирует маркетплейс сам. Плагин с внешним источником всё же потребует одной команды claude plugin install — Claude Code подскажет, какой. Двадцать проектов агентства получают стандарты через один и тот же фрагмент настроек, а обновление — через поднятие version в маркетплейсе.

Управление и обновления

/plugin открывает менеджер с вкладками: Discover (что доступно), Installed (что установлено — включить, выключить, удалить), Marketplaces (каталоги), Errors (ошибки загрузки). Из командной строки: /plugin list, /plugin disable amiga-standards@amiga, /plugin enable ..., /plugin uninstall .... Для скриптов есть claude plugin install <имя>@<маркетплейс> --scope project — без интерактивной панели.

Обновление маркетплейса — /plugin marketplace update amiga. У сторонних маркетплейсов автообновление по умолчанию выключено; администратор может включить его в управляемых настройках через "autoUpdate": true в записи extraKnownMarketplaces.

Готовые плагины есть в официальном маркетплейсе claude-plugins-official, который Claude Code подключает сам при первом запуске. Там — интеграции с GitHub, GitLab, Jira, Figma, Slack, Sentry в виде преднастроенных MCP-серверов, плагины кодовой навигации по языкам (typescript-lsp, pyright-lsp и другие; сам языковой сервер нужно установить отдельно), плагин security-guidance и наборы для работы с PR. Устанавливаются так же: /plugin install github@claude-plugins-official.

О доверии

Плагин выполняет код на вашей машине с вашими правами: хуки — это shell-команды, MCP-серверы — процессы. Anthropic не проверяет содержимое сторонних плагинов. Ставьте только из источников, которым доверяете; для команды это собственный маркетплейс в приватном репозитории. Организация может ограничить список разрешённых маркетплейсов управляемыми настройками.

Попробуйте сами

10–15 мин на рабочем месте
  1. Соберите плагин из своего .claude/: создайте манифест, перенесите навыки и хуки, запустите claude --plugin-dir ./мой-плагин и проверьте каждый компонент. Прогоните claude plugin validate.
  2. Создайте приватный репозиторий с marketplace.json, положите туда плагин и подключите его из другого проекта через /plugin marketplace add. Установите плагин в проектную область и посмотрите, что появилось в .claude/settings.json.
  3. Добавьте в .claude/settings.json тестового проекта extraKnownMarketplaces и enabledPlugins, склонируйте проект в новую папку и откройте в Claude Code. Убедитесь, что маркетплейс зарегистрировался без ваших команд.

Коротко

  • Плагин — папка с манифестом .claude-plugin/plugin.json и папками skills/, agents/, hooks/, файлом .mcp.json; навыки получают префикс /имя-плагина:.
  • Начинайте в .claude/, переводите в плагин, когда нужно нескольким людям или проектам.
  • Локальная проверка — claude --plugin-dir ./путь, /reload-plugins после правок, claude plugin validate перед публикацией.
  • Маркетплейс — git-репозиторий с .claude-plugin/marketplace.json; подключение /plugin marketplace add owner/repo, установка /plugin install имя@маркетплейс.
  • extraKnownMarketplaces и enabledPlugins в .claude/settings.json раздают стандарты на все проекты; обновления — через version.
  • Плагины выполняют код с вашими правами: только доверенные источники.

Видеоверсия

Сценарий озвучки · 528 слов, ≈ 4 мин

За курс у вас накопилось: навык проверки, навык-ревьюер, несколько хуков, правила разрешений. Всё это лежит в папке точка-клод одного проекта. Скопировать в двадцать других можно, но через месяц двадцать копий разойдутся. Плагин решает это: набор упаковывается один раз, кладётся в репозиторий, а проекты подключают его одной строкой в настройках и получают обновления. Разберём, как плагин устроен и как раздать его команде.

Когда плагин, а когда просто папка точка-клод? Папка — для личных сценариев и экспериментов. Плагин — для того, что нужно нескольким людям или проектам, с версиями. Совет из документации: начинайте в папке, быстро итерируйте, и переводите в плагин, когда стало ясно, что это нужно не только вам. Отличие видно в вызове: навык из папки — просто слеш и имя, навык из плагина — слеш, имя плагина, двоеточие, имя навыка.

Из чего состоит плагин. В подпапке точка-клод-плагин лежит манифест — джейсон с именем, описанием и версией. Имя становится пространством имён для навыков. Версия определяет, когда пользователи получат обновление: пока вы её не подняли, у них старая. Дальше, в корне плагина: папка навыков, папка субагентов, папка хуков с файлом хукс-джейсон — формат тот же, что в настройках, — и файл с MCP-серверами. Частая ошибка — положить навыки или хуки внутрь папки с манифестом. Там только манифест.

Соберём плагин командных стандартов. Навыки проверки и ревью переносятся из папки проекта без изменений. Добавим субагента — ревьюера по безопасности: короткий файл с описанием, списком инструментов и инструкцией, что искать: инъекции, ошибки авторизации, секреты в коде. Хуки переезжают из настроек в файл плагина; скрипты адресуются через переменную с корнем плагина, чтобы путь не зависел от того, куда он установлен.

Проверяем локально. Флаг «плагин-дир» подключает плагин на одну сессию. В сессии вызываем навык с префиксом, смотрим, появился ли субагент в списке контекста, пробуем отредактировать защищённый файл и убеждаемся, что хук сработал. После правок — команда «релоад-плагинс», перезапуск не нужен. Перед публикацией — команда валидации: она проверяет структуру и манифест.

Теперь раздача. Маркетплейс — это каталог плагинов: гит-репозиторий с файлом маркетплейс-джейсон в той же служебной подпапке. В файле — имя каталога, владелец и список плагинов с путями внутри репозитория или ссылками на другие репозитории. Репозиторий может быть приватным — Claude Code использует ваши обычные учётные данные гита. Разработчик подключает каталог командой «плагин маркетплейс эдд» с именем репозитория и ставит плагин командой «плагин инсталл» с именем через собачку. При установке выбирается область: для всех своих проектов, для всех участников этого репозитория или только для себя в нём.

Но лучше не заставлять каждого выполнять команды. В проектный файл настроек добавляются два ключа: известные маркетплейсы — со ссылкой на репозиторий каталога, и включённые плагины. Когда участник команды открывает проект и подтверждает доверие папке, Claude Code регистрирует каталог сам и подсказывает команду установки. Двадцать проектов агентства получают стандарты через один и тот же фрагмент настроек, а обновление — через поднятие версии.

Управлять плагинами можно через менеджер — команда «плагин» открывает вкладки: что доступно, что установлено, каталоги, ошибки. Есть и официальный каталог Anthropic, который подключается сам при первом запуске: интеграции с GitHub, Jira, Figma, Slack, плагины кодовой навигации по языкам, плагин проверки безопасности.

И о доверии. Плагин выполняет код на вашей машине с вашими правами: хуки — это шелл-команды, MCP-серверы — процессы. Anthropic не проверяет содержимое сторонних плагинов. Ставьте только из источников, которым доверяете. Для команды это свой каталог в приватном репозитории, а организация может ограничить список разрешённых каталогов.

Отметка хранится только в вашем браузере