Что такое мод: обработчики событий внутри плагина
По документации Anthropic, мод — это плагин, который меняет внешний вид и поведение Claude Code и состоит из обработчиков событий на JavaScript или TypeScript. Claude Code вызывает их, когда Claude собирается использовать инструмент, вы отправляете промпт или рисуется часть интерфейса. В документации эти обработчики называются хуками, а прежние хуки из файла настроек теперь называются settings hooks.
Хук срабатывает до того, как Claude Code обработает событие, и решает, что будет дальше: наблюдать (отметить событие и пропустить его), изменить (поправить событие и пропустить) или ответить (обработать самому, например отказать в команде). Всё, что выходит за пределы кода хука, — рисование, команды, вызовы модели, файлы, процессы, сеть — идёт только через API модов, тот самый $ в коде. Поэтому Claude Code и может показать, что делает мод, ещё до установки. Моды на одном событии выполняются в порядке загрузки, так что моды разных авторов складываются.
Часть встроенных функций уже стала модами: /diff рисует встроенный cc-plugin-diff. Его можно отключить в /plugin (тогда /diff обслуживает прежняя встроенная версия) или заменить своим. Anthropic планирует со временем перевести на моды и другие встроенные функции.
Что умеют моды и не умеют хуки, skills и MCP
Settings hooks, skills, строки состояния и MCP-серверы работают снаружи Claude Code. Мод работает внутри, поэтому он может:
- Рисовать интерфейс: панель рядом с лентой диалога или полосу над полем ввода — с вкладками, кнопками и полями;
- Перерисовывать интерфейс самого Claude Code: строку вызова инструмента, спиннер, окно, в котором Claude задаёт вопросы;
- Вмешиваться в вызов инструмента или запрос: придержать вызов и спросить вас, ответить без запуска инструмента, отправить один запрос другой модели;
- Запускать свой код по команде: /команда сразу выполняет вашу функцию без хода Claude, даже пока Claude работает;
- Делиться данными между хуками: один хук записывает, другой показывает.
В анонсе Anthropic есть ещё примеры: переписать промпт до отправки модели, повторить вызов инструмента, одобрить или отклонить запрос разрешения, вычистить секреты из вывода инструмента до того, как его прочтёт Claude. Сравнение из документации:
| Мод | Settings hook | Skill | MCP-сервер | |
|---|---|---|---|---|
| Что это | Функции в плагине, которые Claude Code вызывает в своём процессе | Shell-команда, HTTP-запрос или промпт на событии жизненного цикла | Файл SKILL.md с инструкциями, которые читает Claude | Внешний процесс или сервис, дающий Claude инструменты |
| Что может менять | Вызовы инструментов, промпты, команды, ходы и то, что рисует интерфейс | Пройдёт ли вызов инструмента или промпт, аргументы и результат вызова, контекст для Claude | Что Claude знает и делает | Какие инструменты есть у Claude |
| Рисует в интерфейсе | Да | Нет | Нет | Нет |
| На чём пишется | JavaScript или TypeScript | Скрипт и запись в settings.json | Markdown | Сервер на любом языке |
| Когда выбирать | Нужна панель, полоса над полем ввода, своя команда или перезапись события | Нужно заблокировать, разрешить или записать событие готовым скриптом | Вы постоянно вставляете в чат одни и те же инструкции | Claude нужен доступ к внешней системе |
В одном плагине может быть всё сразу, так что мод можно поставлять вместе со skill и MCP-сервером. Совет Anthropic: если задачу уже решают settings hook, skill или MCP, сначала сравните варианты, а потом пишите мод.
Перед началом: проверьте версию
- Терминал: Claude Code v2.1.287 или новее; проверьте командой
claude --versionи при необходимости обновитесь. - Приложение Desktop: встроенный в него Claude Code поддерживает моды с v2.1.286; введите
/statusв локальной сессии на вкладке Code и посмотрите строку Claude Code. - Включены по умолчанию. Если во время раннего доступа вы задавали
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS, уберите её: с v2.1.287 переменная игнорируется, и 0 уже не выключает моды. - Что загружено:
/pluginпоказывает под вкладками бледную строку вроде1 mod active · first-mod.
Сначала попробуйте готовый мод
В репозитории anthropics/claude-code-playground, в каталоге claude-code/mods, Anthropic выкладывает примеры модов. Каждый — полноценный плагин с README о том, как он сделан; поставляются как есть, без поддержки:
token-weather— рисует над полем ввода «прогноз погоды» для вашего контекстного окнаblast-radius— придерживает рискованную shell-команду (например, rm -rf или force push), показывает, что она изменит, и даёт кнопки «продолжить» и «отменить»replay-theater— добавляет команду /replay, которая пошагово показывает правки файлов, сделанные Claude за последний ход
Загрузите пример на одну сессию через --plugin-dir или добавьте каталог claude-code/mods из клона как маркетплейс, чтобы оставить мод насовсем (если переместить или удалить клон, мод перестанет загружаться):
# Попробовать на одну сессию
git clone https://github.com/anthropics/claude-code-playground
claude --plugin-dir ./claude-code-playground/claude-code/mods/token-weather
# Оставить насовсем: в сессии Claude Code добавить каталог как маркетплейс и установить
/plugin marketplace add ./claude-code-playground/claude-code/mods
/plugin install token-weather@claude-code-playground-modsСамый простой путь: попросите Claude
Опишите нужный мод в интерактивной сессии, и Claude его напишет. Он опирается на встроенный skill plugin-authoring: там сказано, где лежат моды, какие события и методы есть в вашей версии и как моды загружаются. Claude подключает его сам, а можно и вручную — командой /plugin-authoring.
- Опишите задачу, например make a mod that shows the current git branch above the prompt (можно и своими словами по-русски). Claude пишет мод в каталог сессии
~/.claude/dev-mods/плюс ID сессии; так как~/.claude— защищённый путь, в режимах default и acceptEdits перед созданием каждого файла будет вопрос. - Выберите горячую перезагрузку при первом сохранении: Enable for this session загружает моды в конце хода и перезагружает после каждой правки, Not now откладывает загрузку до следующего запуска этой сессии.
- Проверьте и доработайте:
/plugin→ Installed покажет мод; попросите Claude о правках — они применятся в конце хода.
Такой мод загружается только в своей сессии, а каталог удаляется после срока cleanupPeriodDays; чтобы сохранить мод, скопируйте его, скажем, в ~/mods/git-branch и запускайте claude --plugin-dir ~/mods/git-branch. Он не загрузится в claude -p и режиме dontAsk, в недоверенном рабочем каталоге, при --safe-mode, --bare или disableAllHooks и там, где это запрещают управляемые настройки. И помните: это обычная сессия Claude Code, она расходует лимит тарифа.
Первый мод своими руками: три файла
Учебный мод Anthropic first-mod считает вызовы инструментов, показывает число рядом со спиннером и добавляет команду /tally. Node.js, сборщик и шаг сборки не нужны: Claude Code загружает .js и .ts напрямую. Файлы: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.js.
first-mod/
├── .claude-plugin/
│ └── plugin.json
└── hooks/
├── hooks.json
└── register.js1. Создайте каталоги, затем 2. сохраните манифест first-mod/.claude-plugin/plugin.json. Особых полей для мода не нужно, но имя, похожее на имена Anthropic (например, начинающееся с claude-), не пройдёт проверку:
mkdir -p first-mod/.claude-plugin first-mod/hooks{
"name": "first-mod",
"version": "0.1.0",
"description": "Counts Claude's tool calls, shows the count beside the spinner, and adds a /tally command",
"author": { "name": "Your Name" }
}3. Укажите, где код: ключ modules в first-mod/hooks/hooks.json содержит один путь относительно этого файла. Именно он делает плагин модом.
{
"description": "The first-mod hooks module",
"modules": ["./register.js"]
}4. Напишите first-mod/hooks/register.js. Claude Code вызывает экспортированную функцию register и передаёт ей on; каждый вызов on регистрирует хук на одно событие:
// Счётчик, общий для хуков ниже
let calls = 0
// Claude Code вызывает register один раз при загрузке мода
export function register(on) {
// Старт сессии: регистрируем /tally и пропускаем событие дальше (наблюдение)
on('session.start', async ($, e, next) => {
await $.command.register({
name: 'tally',
description: 'Show how many tool calls Claude has made',
})
return next(e)
})
// Перед каждым вызовом инструмента: +1 и перерисовка (наблюдение)
on('tool.call', async ($, e, next) => {
calls += 1
$.ui.invalidate('ui.render')
return next(e)
})
// Только для /tally: возвращаем свой текст (ответ)
on('command.run', { command: 'tally' }, async () => {
return { text: 'Claude has made ' + calls + ' tool calls since this mod loaded' }
})
// Оставляем спиннер Claude Code и дописываем счётчик (изменение)
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
})
}Каждый хук получает $ (API модов), e (событие в виде обычных данных) и next (передаёт событие дальше и возвращает результат). session.start и tool.call наблюдают; command.run отвечает сам и не вызывает next, а фильтр { command: 'tally' } ограничивает его командой /tally; ui.render изменяет событие, дописывая счётчик в suffix спиннера.
5. Загрузите и попробуйте:
# Загрузить first-mod только на эту сессию
claude --plugin-dir ./first-mod
# Проверить команду без интерактивной сессии
claude -p "/tally" --plugin-dir ./first-mod
# first-mod: Claude has made 0 tool calls since this mod loadedДайте задачу на несколько вызовов инструментов (list the files here and read the README): спиннер покажет Thinking · tool calls: 2…, а /tally затем выведет first-mod: Claude has made 2 tool calls since this mod loaded с вашим числом. Нет /tally в списке команд — значит, модуль не загрузился.
6. Правьте на лету: замените ' · tool calls: ' на ' · tools used: ' и сохраните. first-mod перезагрузится, и следующий спиннер покажет новый текст; при каждой перезагрузке register выполняется заново, поэтому счётчик обнуляется.
Хотите TypeScript? Назовите файл register.ts и укажите в modules значение ["./register.ts"]. При загрузке через --plugin-dir Claude Code записывает в .claude-plugin/types/ файлы .d.ts под вашу точную версию, так что редактор подсказывает и проверяет типы. Если страница документации и эти файлы расходятся, верьте файлам.
Установка, проверка, тесты, отключение, распространение
Установка: /plugin install <plugin>@<marketplace> в сессии или claude plugin install <plugin>@<marketplace> в shell; если сессия уже открыта, выполните в ней /reload-plugins.
Проверка: claude plugin validate выполняет те же проверки и статический анализ, что и Claude Code при загрузке мода, не запуская ваш код. Строка hooks: перечисляет события (фильтры в фигурных скобках), calls: — все вызванные методы API модов; если модуль читает или задаёт переменные окружения, появятся строки env reads: / env writes::
claude plugin validate ./first-mod
❯ ./register.js hooks: session.start, tool.call, command.run{command=tally}, ui.render{component=Spinner}
❯ ./register.js calls: $.command.register, $.ui.invalidate
✔ Validation passedПропавшее событие обычно означает опечатку ("tool.calls" is not an event). Пишите вызовы API полностью, как $.store.get('notes'), без псевдонимов и деструктуризации $, а имена событий — строковыми литералами.
Тесты: claude plugin test запускает автотесты мода без сессии, входа в аккаунт и сети.
Отключение: один мод — на вкладке Installed в /plugin; все установленные моды на одну сессию — запуском с --safe-mode (отключатся и другие ваши настройки); все установленные моды везде — строкой "disableAllHooks": true в ~/.claude/settings.json (остановятся также settings hooks и своя строка состояния). Встроенные моды вроде /diff отключаются отдельно в /plugin.
Распространение: каталог или .zip для пары человек, свой маркетплейс для команды, управляемые настройки для всей организации, публичный маркетплейс или каталог плагинов Anthropic для всех. Разрабатывайте через --plugin-dir: установленные плагины кешируются по версии, и правки доходят до них только после смены версии и переустановки.
Безопасность: к чему мод имеет доступ
Anthropic пишет прямо: у модов тот же доступ к компьютеру, что и у самого Claude Code, они работают без песочницы, ставить их стоит только из доверенных источников. После загрузки мод может:
- Действовать от вашего имени: читать и менять ваши файлы, запускать программы, ходить в сеть;
- Читать секреты: переменные окружения и файлы настроек, включая API-ключи;
- Видеть сессию: каждый ваш промпт и каждый вызов инструмента;
- Менять сессию: переписывать промпты и вызовы инструментов, отправлять промпт как будто от вас, писать в другую вашу сессию;
- Действовать без спроса: одобрить вызов инструмента раньше, чем вас спросят;
- Тратить лимит: вызывать модель по вашему тарифу или API-ключу.
Песочница здесь не поможет: она изолирует Bash-команды, которые запускает Claude, а процесс, запущенный модом, работает вне её. Мод может одобрить вызов, о котором правило ask спросило бы вас, или вызов, заблокированный вашим собственным хуком PreToolUse. Не может он только одного — изменить то, что показывает запрос разрешения.
- Ставьте моды только от авторов и из маркетплейсов, которым доверяете.
- Сначала клонируйте и выполните
claude plugin validate ./some-mod: перечисленные события и вызовы должны соответствовать заявленной функции мода. - Берегите ключи: мод видит переменные окружения, а по справке Anthropic при заданной
ANTHROPIC_API_KEYClaude Code авторизуется этим ключом и тарифицирует по API, а не по подписке. - Если что-то ведёт себя странно, запустите Claude Code с
--safe-mode, чтобы исключить моды.
Где работают моды
Хуки выполняются в любой сессии, которая загрузила плагин, но нарисованное модом видно только в терминале и в приложении Desktop:
| Где запущен Claude Code | Хуки работают | Нарисованное модом видно |
|---|---|---|
claude в терминале, включая встроенные терминалы редакторов и плагин JetBrains | Да | Да |
| Вкладка Code в приложении Desktop, кроме WSL-сессий | Да | Да, кроме элементов только для терминала |
| WSL-сессия в приложении Desktop | Нет: в WSL-сессиях плагины недоступны | Нет |
| Панель чата расширения VS Code | Да | Нет |
claude -p и Agent SDK | Да | Нет |
| Remote Control с claude.ai или из мобильного приложения | Да, в сессии на вашем компьютере | В терминале на вашем компьютере |
| Облачная сессия | Да, если плагин попадает в облачную сессию | Нет |
Мод, который рисует, может определить, где запущен, и перейти на текст, так что логика защиты и логирования работает и в VS Code, и в CI-запусках claude -p.
Команды и компании
- Действуют правила для плагинов: администраторы разрешают или блокируют маркетплейсы — на Team и Enterprise это делает владелец в консоли администратора, на Claude API и сторонних API администраторы рассылают управляемые настройки.
- sec-default загружается первым на Team, Enterprise и любом компьютере с управляемыми настройками и не даёт установленным пользователем модам рисковать, например обходить ваши правила deny. Если администратор загружает свои моды первыми, sec-default стоит оставить в списке.
- Только моды организации: с
allowManagedModsOnlyсобственные моды пользователей не загружаются, а skills, команды, агенты и MCP-серверы их плагинов продолжают работать. - Идеи для команд от Anthropic: панель статуса CI/CD, подтверждение перед любой командой, затрагивающей продакшен-конфигурацию, и мод аудита, который загружается первым и записывает все вызовы других модов.
Какой тариф нужен и кому что покупать
Моды бесплатны — документация задаёт только требование к версии, — но работают внутри Claude Code, а он, по странице цен Anthropic, есть в Pro и Max и отсутствует во Free. Claude Code расходует общий лимит с приложениями Claude, и просьба написать мод, как и мод, вызывающий модель, тратит этот лимит.
- Claude Pro ($20 в месяц у Anthropic): на свой аккаунт 3 112 ₽ ≈ 37.11 USDT · готовый 4 112 ₽ ≈ 49.04 USDT
- Claude Max 5x ($100 в месяц у Anthropic): на свой аккаунт 12 487 ₽ ≈ 148.89 USDT · готового нет в наличии
- Claude Max 20x ($200 в месяц у Anthropic): на свой аккаунт 22 486 ₽ ≈ 268.11 USDT · готового нет в наличии
- Попробовать моды, Claude Code время от времени: хватит Claude Pro.
- Агентная работа каждый день, Pro постоянно упирается в лимит: справка Anthropic советует Max 5x ($100 в месяц, примерно в 5 раз больше лимита Pro на сессию).
- И на Max 5x не хватает: Max 20x ($200 в месяц, примерно в 20 раз больше Pro). Лимит сессии на Max сбрасывается каждые пять часов, плюс есть недельный лимит.
- Команда в компании, которой нужен централизованный контроль маркетплейсов и модов: тарифы Team или Enterprise от Anthropic.
На свой аккаунт или готовый. Если карта не проходит, оплатите у нас в USDT (TRC20 или BEP20); USDT обычно покупают через P2P, а рубли на странице показаны по текущему курсу для ориентира. Подключение на свой аккаунт: вставьте экспорт cookie claude.ai (JSON из Cookie-Editor) на странице заказа — он проверяется до оплаты, обычно всё готово за 5–30 минут, а после выдачи данные удаляются. Для Max аккаунт должен нормально входить и не быть заблокированным; бесплатный аккаунт, за который ни разу не платили банковской картой, Max не подключит, а совсем новым аккаунтам нужно подождать 3–15 дней до Max 20x. Иначе берите готовый аккаунт: один на заказ, для одного пользователя, по описанию товара можно привязать свою почту. После оплаты подтвердите почту для выдачи (письмо приходит от Cloudflare); готовый Max выдаётся вручную (страница заказа показывает от 30 минут до ~4 часов), для готового Pro отправьте его Organization ID на странице заказа. Затем войдите в Claude Code этим аккаунтом. Подробнее: Claude Pro и Max в России, готовый аккаунт и оплата USDT. Готовых Max 5x / Max 20x сейчас нет в наличии, поэтому Max 5x / Max 20x — через подключение на свой аккаунт (Max 5x / Max 20x) по условиям выше.
Продление и возвраты. Каждый заказ — на 30 дней, напоминания приходят за 7, 3 и 1 день до окончания. Готовый аккаунт продлевается через Telegram @ccnb1937 по номеру заказа, по цене подключения того же тарифа; подключение на свой аккаунт продлевается новым заказом. Если сервис стал недоступен из-за региональной политики Anthropic, неиспользованные дни возвращаются в USDT; блокировки за нарушение правил использования Anthropic не возмещаются; возврат обрабатывается в течение 1 рабочего дня. При любых проблемах сразу пишите в онлайн-чат в правом нижнем углу или на support@claudemax.shop.
ClaudeMax — независимый сервис: не Anthropic и не авторизованный реселлер; работаем с ноября 2024 года и обслужили более 20 000 пользователей (наша собственная статистика). Статья сверена с документацией Anthropic 2026-10-07; по событиям и API модов приоритет за актуальной официальной документацией.