plugin.json, называемый манифестом, который называет плагин. Claude Code загружает директорию как одно целое, поэтому вы можете поделиться ею с коллегами, установить её в несколько проектов или опубликовать на marketplace.
Эта страница предназначена для людей, которые пишут свои собственные плагины.
Эти случаи рассмотрены на других страницах:
- Установка плагина другого человека: см. Установка плагинов
- Не уверены, нужен ли вам плагин: см. Решите, нужен ли вам плагин в обзоре
- Пользователи вашего плагина находятся на claude.ai или в Cowork: одна и та же папка устанавливается там с другим подмножеством компонентов. См. Плагины на claude.ai и в Cowork
- Ничего ещё: следуйте Создайте свой первый плагин, затем Разработка без marketplace и Тестирование и отладка.
- Файлы под
.claude/уже есть: пройдите пошаговое руководство первого плагина один раз, чтобы изучить макет, затем следуйте Преобразование существующей конфигурации.claude/.
Решите, когда использовать плагин
Skills, agents, hooks и MCP серверы работают отдельно в вашем проекте или домашней директории. Сохраняйте эту отдельную конфигурацию, пока она служит одному проекту или только вам. Создайте плагин, когда вы хотите поделиться конфигурацией с коллегами, установить её в несколько проектов или опубликовать версионные релизы. Когда вы перемещаете отдельные skills, agents, hooks и MCP конфигурацию в плагин, их местоположение и имена меняются:- Где находятся файлы: под собственной директорией плагина, называемой корнем плагина, как
skills/,agents/,hooks/hooks.jsonи.mcp.json. - Как они названы: skills и agents плагина получают имя плагина в качестве префикса, например
/my-plugin:hello, поэтому два плагина могут каждый предоставить skillhelloбез конфликтов.
.claude/.
Создайте свой первый плагин
В этом пошаговом руководстве вы создаёте плагин, единственным компонентом которого является один skill — приветствие, и запускаете его с--plugin-dir, который загружает плагин на одну сессию без установки. Плагин может содержать любую комбинацию компонентов, таких как skills, agents, hooks и MCP серверы, и ни один не требуется; один skill — это наименьший пример, который показывает макет.
Вам нужен Claude Code установленный и авторизованный.
Откройте терминал в директории, где вы хотите хранить плагин, например ~/projects, и запустите команды в этих шагах из неё. Вы можете хранить плагин где угодно, потому что вы передаёте его путь Claude Code при запуске сессии.
1
Создайте директорию плагина
Создайте директорию плагина с папкой
.claude-plugin/ внутри неё для хранения манифеста:2
Напишите манифест
Манифест — это JSON файл с именем Четыре поля делают следующее:
plugin.json, который сообщает Claude Code имя плагина и описывает его. Сохраните этот файл как my-first-plugin/.claude-plugin/plugin.json:my-first-plugin/.claude-plugin/plugin.json
name: обязательно. Оно идентифицирует плагин и становится префиксом для каждого skill и agent, который предоставляет плагин. Не ставьте в нём пробелы.description: текст, который пользователи видят для плагина в/plugin.version: опционально. Установка его сохраняет пользователей на этой версии, пока вы не измените её; Выпустить новую версию говорит, когда установить или опустить его.author: кого кредитовать.nameобязателен внутри него;emailиurlопциональны.
plugin.json находится внутри .claude-plugin/. Skill, который вы добавите далее, находится непосредственно под my-first-plugin/, рядом с этой папкой.3
Добавьте skill
Единственным компонентом этого плагина является skill. Каждый skill — это директория под Затем создайте Строка
skills/, которая содержит файл SKILL.md. Создайте директорию skill:my-first-plugin/skills/hello/SKILL.md с этим содержимым:my-first-plugin/skills/hello/SKILL.md
disable-model-invocation: true означает, что Claude не запускает skill самостоятельно, поэтому только вы его запускаете. Удалите эту строку из skill, который вы хотите, чтобы Claude запускал самостоятельно. Команда skill объединяет имя плагина и имя skill, поэтому вы запускаете этот как /my-first-plugin:hello. Для других полей frontmatter см. справочник frontmatter skill.4
Проверьте плагин
Проверьте манифест и frontmatter skill перед запуском чего-либо:Команда выводит путь манифеста, который она проверила, и
✔ Validation passed. Если вместо этого она выводит ✘ Validation failed, каждая строка выше строки результата называет поле для исправления. Посмотрите каждое сообщение под claude plugin validate сообщает об ошибках.5
Запустите Claude Code с плагином
Запустите сессию с загруженным плагином:После запуска Claude Code запустите skill:Claude ответит приветствием.
--plugin-dir. Чтобы продолжить работу над ним без флага или протестировать сборку .zip, см. Разработка без marketplace.
Поделитесь своим плагином
Плагин, который вы создали с помощью Создайте свой первый плагин, существует только на вашей машине. Когда он готов для других людей, есть три способа доставить его им:- Отправьте его нескольким людям напрямую: дайте им директорию плагина или
.zipеё, и ничего не нужно публиковать. См. Поделитесь плагином без marketplace. - Перечислите его в своём собственном marketplace: коллеги добавляют ваш marketplace один раз и устанавливают плагин по имени, и они получают ваши обновления. См. Опубликуйте через свой собственный marketplace.
- Отправьте его на community marketplace Anthropic: после того как он будет указан, любой, кто добавит этот marketplace, сможет его установить. См. Отправьте на community marketplace.
Макет плагина
Каждый вид компонента, такой как skills, agents, hooks и MCP серверы, находится в фиксированной директории под корнем плагина, который является директорией, которую вы передаёте--plugin-dir. Добавляйте только директории, которые вы используете. Чтобы пройти через полную директорию плагина и прочитать, что делает каждый файл, откройте обозреватель плагинов.
Таблица перечисляет директории, с которых начинают большинство плагинов, и полный макет перечисляет остальные.
Разработка без marketplace
Вам не нужен marketplace для запуска плагина, который вы пишете. Загружайте его непосредственно с диска или URL вместо этого:--plugin-dir: загружает директорию или архив.zipна одну сессию.--plugin-url: загружает архив.zipс URL на одну сессию.claude plugin init: создаёт плагин под~/.claude/skills/, который загружается в каждую сессию.
Загрузите плагин на одну сессию
Вы можете загрузить плагин на одну сессию тремя способами: из директории или архива.zip на диске с --plugin-dir, с URL с --plugin-url или из переменной окружения, когда вы не можете добавить флаг. Каждый плагин загружается только на эту сессию, и ничего не записывается в ваши settings для него. Когда вы редактируете файлы плагина во время сессии, запустите /reload-plugins для загрузки изменений.
Из директории или .zip
Когда вы запускаете claude из вашей оболочки, передайте --plugin-dir с корневой директорией плагина или архивом .zip её. Повторите флаг для загрузки нескольких плагинов:
Из папки плагинов
Чтобы загрузить несколько плагинов из одного места, передайте папку, которая их содержит, например--plugin-dir ./plugins. Загрузка папки плагинов требует Claude Code v2.1.265 или позже.
Если папка не имеет директории .claude-plugin/ и нет компонентов плагина на её верхнем уровне, Claude Code рассматривает её как папку плагинов. Каждая непосредственная подпапка, которая имеет манифест .claude-plugin/plugin.json, затем загружается как отдельный плагин. Всё остальное в папке пропускается без ошибки, включая подпапку, которая не имеет манифеста. Если плагин в папке не загружается, проверьте, что его подпапка имеет .claude-plugin/plugin.json.
В интерактивной сессии вы также можете добавлять и удалять плагины в папке после запуска:
- Подпапка, которую вы добавляете, загружается как новый плагин, как только существует её манифест.
- Когда вы удаляете подпапку, её плагин выгружается.
/reload-plugins для применения его.
С URL
Когда вы запускаетеclaude из вашей оболочки, передайте --plugin-url с адресом архива .zip, например артефакта сборки, который ваш CI публикует:
/plugin.
Из переменной окружения
Чтобы загрузить плагины в сессии, где вы не можете добавить флаг--plugin-dir, перечислите их абсолютные пути в переменной окружения CLAUDE_CODE_PLUGIN_DIRS вместо этого. Claude Code загружает каждый путь, как загружает путь --plugin-dir. Эти плагины загружаются в дополнение к любым, которые вы передаёте с --plugin-dir. Параметры проекта и локальные параметры не могут установить эту переменную. CLAUDE_CODE_PLUGIN_DIRS требует Claude Code v2.1.280 или позже.
Управляемые параметры могут отключить --plugin-dir и CLAUDE_CODE_PLUGIN_DIRS. См. Флаги, которые загружают плагин на одну сессию. Чтобы протестировать плагин вместе с плагином, от которого он зависит, см. Протестируйте плагин и его зависимость локально.
Сделайте плагин загружаемым в каждую сессию
Ваша личная директория skills — это~/.claude/skills/. Claude Code загружает любую папку там, которая содержит .claude-plugin/plugin.json как плагин в каждую сессию, без флага и без шага установки. claude plugin init создаёт один из этих плагинов для вас.
Создайте плагин с claude plugin init
claude plugin init пишет стартовый плагин под ~/.claude/skills/. Требует Claude Code v2.1.157 или позже. Создайте один из вашей оболочки:
~/.claude/skills/my-tool/ с .claude-plugin/plugin.json и корневым SKILL.md. Она выводит ✔ Created plugin "my-tool" at ~/.claude/skills/my-tool затем It will auto-load next session as my-tool@skills-dir. Run /reload-plugins to load it now.
Передайте --with skills для того, чтобы claude plugin init создал skill под skills/ для вас. Другие значения --with находятся на справочнике команд плагина.
Назовите skills плагина
Корневой skill в~/.claude/skills/my-tool/SKILL.md также является личным skill, поэтому вы вызываете его как /my-tool, а не /my-tool:my-tool. Skills, которые вы добавляете под skills/ внутри плагина, получают префикс имени плагина, например /my-tool:example.
Остановите загрузку плагина
Чтобы остановить загрузку созданного плагина, удалите его директорию или запуститеclaude plugin disable my-tool@skills-dir в вашей оболочке с именем my-tool@skills-dir, которое claude plugin init вывел. В ID my-tool@skills-dir, skills-dir стоит там, где было бы имя marketplace, потому что плагин загружается из вашей директории skills, а не из marketplace.
Поделитесь плагином через репозиторий
claude plugin init пишет плагин в вашу личную директорию skills в ~/.claude/skills/, поэтому он загружается для вас в каждом проекте. Чтобы сделать плагин загружаемым для всех в одном репозитории, создайте тот же макет самостоятельно в <project>/.claude/skills/<name>/, включая его .claude-plugin/plugin.json. См. Плагины, общие через репозиторий для условий, при которых Claude Code его загружает.
Тестирование и отладка
Когда изменение вашего плагина не отображается, работайте через эти проверки по порядку. Каждая говорит вам, что Claude Code сделал с плагином:- В вашей оболочке запустите
claude plugin validate <path>. Она проверяет манифест и frontmatter каждого файла skill, agent и command, и выходит0наValidation passed. Добавьте--strictдля отказа и на предупреждения. Коды выхода и обработка директорий находятся на справочнике команд плагина. - В запущенной сессии запустите
/reload-pluginsдля применения правок, которые вы сделали на диске. Она выводит одну строкуReloaded:с подсчётами. Затем подтвердите, что skill загружен, введя его команду/plugin-name:skill, или найдя плагин на вкладке Installed в/plugin. - В той же сессии запустите
/plugin. Вкладка Installed перечисляет ваш плагин и, в деталях плагина, компоненты, которые Claude Code нашёл. Вкладка Errors перечисляет то, что не загрузилось и почему, например путь в вашем манифесте, который не существует. - Вернитесь в вашу оболочку и запустите
claude plugin list. Она выводит плагины только для сессии и директории skills в их собственных разделах сStatus: ✔ loadedили ошибкой загрузки. Чтобы включить плагин, который вы разрабатываете, передайте--plugin-dirс его путём передplugin list.
/mcp в сессии для просмотра статуса сервера. Когда сервер здоров, /mcp перечисляет его как подключённый. Если нет, см. MCP серверы, которые не запускаются.
Чтобы проверить hook, запустите событие, которое он соответствует. Например, попросите Claude отредактировать файл для запуска hook PostToolUse. Затем прочитайте журнал отладки, который показывает, какие hooks соответствовали, их коды выхода и их вывод.
Следующие разделы охватывают сбои, которые вы, вероятно, столкнётесь при разработке, и страница устранения неполадок имеет полную запись для каждого.
Путь компонента не найден
Вкладка Errors в/plugin показывает <component> path not found: <path>, например commands path not found. Путь компонента в вашем манифесте, такой как commands, skills, agents или hooks, указывает на ничто. Исправьте путь или создайте директорию, затем запустите /reload-plugins в сессии. См. commands path not found.
--plugin-dir в корне marketplace не загружает плагины под plugins/
--plugin-dir принимает корневую директорию плагина, ту, которая содержит .claude-plugin/plugin.json и директории компонентов, такие как skills/. Если вы вместо этого указываете его на корень marketplace, Claude Code не читает marketplace.json, поэтому плагин под plugins/ не загружается, и вы не видите ошибку. Указывайте флаг на папку одного плагина или добавьте marketplace. См. запись устранения неполадок.
Плагин загружается, но его skills отсутствуют
Директорияskills/ находится внутри .claude-plugin/, или запись skills в манифесте указывает на файл. Переместите skills/ в корень плагина, укажите каждую запись skills на директорию, которая содержит SKILL.md, и запустите /reload-plugins в сессии. См. Плагин загружается, но его skills отсутствуют.
Диалог userConfig никогда не появляется
Диалог для опций userConfig вашего плагина является частью установки через /plugin в сессии. Загрузка с --plugin-dir не показывает его, и claude plugin install в оболочке тоже. С загруженным плагином запустите /plugin configure <plugin-name> в сессии для открытия его. См. Диалог userConfig никогда не появляется.
Проверьте, что плагин изменяет поведение Claude
Плагин, который загружается без ошибок, всё ещё может не направить Claude так, как вы намеревались.claude plugin eval, который вы запускаете в вашей оболочке, запускает ваши тестовые случаи с плагином и без него и оценивает разницу. См. Протестируйте плагины с evals, начиная с Создайте свой первый набор eval.
Преобразование существующей конфигурации .claude/
Если у вас уже есть skills, agents или hooks под директорией .claude/ проекта, вы можете переместить их в плагин без переписывания их.
Запустите команды в этих шагах из корня проекта, который является директорией, которая содержит .claude/, потому что пути cp относительны к нему.
1
Создайте структуру плагина
Создайте директорию плагина и её папку Создайте
.claude-plugin/ рядом с .claude/. Вы можете переместить плагин куда угодно впоследствии.my-plugin/.claude-plugin/plugin.json:my-plugin/.claude-plugin/plugin.json
2
Скопируйте ваши существующие файлы
Скопируйте каждую директорию конфигурации, которая у вас есть, в корень плагина, и пропустите команду для любой директории, которой у вас нет.Запустите
ls -a my-plugin для подтверждения, что каждая директория, которую вы скопировали, появляется рядом с .claude-plugin.3
Переместите ваши hooks
Если у вас есть hooks в Создайте
.claude/settings.json или .claude/settings.local.json, создайте директорию hooks:my-plugin/hooks/hooks.json и скопируйте объект hooks из вашего файла settings в него. Формат тот же.Этот пример показывает форму с одним hook, который запускает linter на каждом файле, который Claude пишет или редактирует. Замените пример на ваш собственный объект hooks.my-plugin/hooks/hooks.json
4
Протестируйте перенесённый плагин
Загрузите плагин на сессию:Проверьте каждый компонент под его новым именем:
- Skills: запустите
/my-plugin:deployдля skill, который был/deploy. - Subagents: попросите Claude использовать agent
my-plugin:reviewerдля agent, который былreviewer. - Hooks: запустите событие, которое каждый hook соответствует.
.claude/, они остаются загруженными рядом с копиями плагина:
- Skills и agents: два набора не конфликтуют, потому что skills и agents плагина несут префикс
my-plugin:./deployи/my-plugin:deployоба работают, и Claude видитreviewerиmy-plugin:reviewerкак два subagents. - Hooks: hooks не имеют префикса, поэтому hook, который находится и в вашем файле settings, и в
hooks/hooks.json, запускается дважды каждый раз, когда его событие срабатывает.
.claude/ и удалите объект hooks из вашего файла settings.
Следующие шаги
- Компоненты плагина: добавьте agents, hooks, MCP серверы, LSP серверы и конфигурацию пользователя в ваш плагин
- Протестируйте плагины с evals: напишите случаи eval и запустите их с
claude plugin evalдля проверки того, насколько надёжно плагин направляет поведение Claude - Опубликуйте плагин: версионируйте его, поместите его в marketplace и отправьте на community marketplace
- Плагины на claude.ai и в Cowork: одна и та же папка плагина устанавливается на claude.ai и в Cowork. Некоторые компоненты только для Claude Code
- Справочник манифеста плагина: каждое поле
plugin.json, правило пути и директория - Skills: напишите skills, которые предоставляет ваш плагин
- Плагины Anthropic в репозитории claude-code: полные рабочие примеры макета на этой странице, такие как
feature-devиcode-review