Моды Claude Code: что это и как сделать свой
Моды как в играх, только для Claude Code: индикатор контекста, страж над rm -rf, свои команды. Как собрать мод одной фразой и не впустить чужой вслепую.
Что такое моды
Знаешь моды в играх? Скачал файл, и в Майнкрафте появились новые блоки, а карта в Скайриме вдруг показывает то, чего не показывала раньше.
Теперь так можно делать и с Claude Code, и называется это так же: моды, в
оригинале mods. Мод это маленькая программа,
которая встраивается прямо в него и меняет, как он выглядит и что умеет.
Индикатор контекста, который убывает, как бензин на приборке, страж, который
ловит агента перед rm -rf и сначала спрашивает тебя, своя команда, которая
за секунду делает то, о чём ты каждый день просишь словами: всё это моды.
Самое приятное: писать код не обязательно. Описываешь словами, чего хочешь, и Claude собирает мод сам, прямо в той же сессии.
Технически мод это разновидность плагина, поэтому дальше в командах будет
мелькать слово plugin. Это не опечатка: моды ставятся, включаются и
выключаются там же, где и остальные плагины Claude Code.
Но есть обратная сторона, о которой легко забыть. Мод получает почти те же права, что и ты: видит твои файлы, твои ключи и всё, что ты пишешь агенту. Так что чужой мод из интернета ближе к человеку, которому ты отдал ключи от квартиры, чем к обоям для рабочего стола.

Зачем это нужно
Обычный день: ты даёшь агенту задачу минут на двадцать и идёшь за чаем. Возвращаешься, а перед тобой стена текста. Сколько он успел, сколько осталось контекста, не собирается ли он прямо сейчас удалить что-то важное, из этой стены не вычитать. Всё нужное где-то там есть, но пролистывается мимо.
Моды вытаскивают нужное на видное место. Над полем ввода может висеть полоска с
тем, что тебе важно: заполненность контекста, ветка git, сколько уже стоила
сессия. Рядом с перепиской может открываться отдельная панель, например со
списком файлов, которые агент поменял. Опасная команда может останавливаться
на полпути и ждать твоего «да». А свою команду вроде /отчёт мод выполняет
мгновенно, без обращения к модели, так что она не тратит ни время, ни лимиты.

Мод умеет и переделывать то, что Claude Code рисует сам. Скажем, дописать к строчке «Thinking…» счётчик, сколько раз агент уже брался за инструменты.
Бывают моды и совсем без пользы, зато весёлые. intermission
решает те самые двадцать минут ожидания по-своему: стоит Claude поработать пару
секунд, рядом с перепиской открывается панель с Doom, и ты попадаешь в общий
дезматч со всеми, кто сейчас тоже ждёт своего агента. Claude закончил, три
секунды обратного отсчёта, и ты снова в переписке. Если агенту нужно твоё
разрешение, игра отпускает тебя сразу. Работает пока на macOS и только в
терминалах Ghostty и kitty: остальные не умеют показывать картинку игры.
Скорее всего, ты уже пользуешься модом и не знаешь об этом. Команда /diff,
которая показывает изменения в отдельной панели, сделана модом, и загрузку
файла AGENTS.md с правилами проекта тоже делает мод. Их список лежит в /plugin: вкладка Installed, раздел
Built-in.
Моды работают начиная с версии 2.1.287 и включены сразу. Свою версию можно
узнать командой claude --version. Если она старше, обнови Claude Code, иначе
моды просто не загрузятся и нигде не появятся.
Готовые моды, которые можно потрогать
Anthropic выложила примеры в открытом репозитории claude-code-playground. Два
самых наглядных:
token-weatherрисует над полем ввода «прогноз погоды» для контекста: от «ясно», пока окно почти пустое, до «скоро сжатие», плюс сколько съел последний ходblast-radiusработает стражем: ловитrm -rf, принудительный push и другие команды, после которых не откатишься, показывает, что они изменят, и ждёт, пока ты нажмёшь Proceed или Cancel
Скачай репозиторий с примерами, это одна команда в терминале, и запусти Claude Code с модом на одну сессию:
git clone https://github.com/anthropics/claude-code-playground
claude --plugin-dir ./claude-code-playground/claude-code/mods/blast-radiusЗакроешь сессию, и мода как не было. Убедиться, что он подхватился, можно
через /plugin: под вкладками появится строчка 1 mod active · blast-radius.
Чтобы увидеть стража в деле, создай тестовую папку с парой файлов и попроси
агента удалить её через rm -rf: страж покажет, что именно пропадёт, и
спросит, продолжать ли.
Насовсем моды ставятся так же, как любые плагины: из маркетплейса, командой
/plugin install имя@маркетплейс прямо в сессии. После этого мод появляется в
/plugin на вкладке Installed, там же его потом и отключают. Примеры
Anthropic тоже можно поставить насовсем: подключи их папку как маркетплейс и
установи нужный мод, обе команды набираются прямо в сессии.
/plugin marketplace add ./claude-code-playground/claude-code/mods
/plugin install blast-radius@claude-code-playground-modsОстальное про установку и доверие к модам есть в официальной документации.
Как сделать свой мод, не написав ни строчки
Делается в той же сессии, где ты работаешь:
- Опиши словами, чего хочешь. Например: «сделай мод, который показывает текущую ветку git над полем ввода». Как устроены моды, Claude знает сам: у него для этого есть встроенная инструкция, подогнанная под твою версию Claude Code.
- В обычном режиме Claude будет спрашивать разрешение на каждый файл мода. Так
и задумано:
моды лежат в служебной папке
~/.claude, а туда он без спроса не пишет. - Когда появится первый файл, Claude Code один раз спросит «Enable hot reloading for this session?». Это и есть выключатель. Выбираешь «Enable for this session», и мод заработает, как только Claude закончит ответ.
- Не понравилось, просто скажи, что поменять. Каждая правка подхватывается сразу после ответа, ничего не нужно перезапускать.
Мод, который собрал Claude, живёт только в той сессии, где родился, и через
какое-то время Claude Code чистит его папку. Понравился, попроси Claude
скопировать его к тебе, например в ~/mods/git-branch, и запускай так:
claude --plugin-dir ~/mods/git-branch. Иначе однажды он просто исчезнет.
Что сделал себе я: квиз на каждую правку
Ради интереса я собрал себе мод-квиз, просто чтобы проверить, на что моды способны.
Перед каждой правкой файла мод останавливает агента и показывает объяснение: что именно меняется и зачем. Потом задаёт вопрос, как я это понял. Ответил верно, и правка принимается. Ответил неверно, и мод объясняет ещё раз, пока не пойму.
Объяснения и вопросы пишет не основная модель, а Хайку, которую мод вызывает сам. Так что квиз тратит лимиты: каждая правка стоит одного вызова маленькой и дешёвой модели.
Под капотом мод держит событие у себя, пока я не отвечу, и только потом решает, отдать его дальше или нет. А со стороны это выглядит как репетитор внутри Claude Code. Для того, кто учится программировать вместе с агентом и не хочет принимать правки вслепую, идея рабочая.
Чем ты за это платишь
Мод работает внутри Claude Code с твоими правами, и это значит, что он может:
- читать и менять файлы, запускать программы и ходить в интернет
- видеть твои ключи доступа, если они лежат в настройках или переменных окружения
- видеть всё, что ты пишешь агенту, и всё, что агент делает
- переписать твою просьбу или отправить сообщение от твоего имени
- нажать «разрешить» за тебя там, где Claude Code обычно спросил бы, а на личном аккаунте даже там, где ты сам поставил запрет в настройках
- тратить твои лимиты, обращаясь к модели

В песочнице мод тоже не сидит. Если ты включал в настройках песочницу, она ограничивает только команды, которые запускает сам Claude, а мод работает мимо неё.
Хороших новостей две. Окно с запросом разрешения мод подделать не может. Он может сделать так, чтобы окно не появилось вовсе, одобрив действие за тебя, но если окно всё-таки появилось, ему можно верить: выглядит оно всегда так, как его рисует сам Claude Code. И всё, что мод делает за своими пределами, он делает через одну-единственную дверь: просит Claude Code. Прочитать файл, сходить в сеть, запустить программу, всё только через эту просьбу. Значит, список его просьб можно увидеть заранее, даже не запуская мод.
Скачай мод и выполни в терминале:
claude plugin validate ./папка-модаСтрока hooks: покажет, на какие события мод подписан, то есть на что он
реагирует, а строка calls: о чём он просит Claude Code:
читать файлы, ходить в сеть, лезть в переменные окружения. Если мод обещает
«рисовать часики», а просит интернет и твои ключи, дальше можно не смотреть.
Обратное не работает: чистый список ещё не значит, что мод безопасен. Он показывает, о чём мод просит, но не зачем.
Отдельно смотри на $.process: так мод запускает программы, а что делает
запущенная программа, validate уже не видит. Doom-мод intermission устроен
именно так. В его calls: нет ни одного сетевого вызова, хотя он качает игру и
играет по сети: всё это делают программы, которые он запускает. Для игры это
нормально, но правило отсюда простое: если в списке есть $.process, дальше ты
доверяешь не списку, а автору.
Мод, который Claude собрал по твоей просьбе, ставь
спокойно: ты знаешь, о чём просил, и всегда можешь попросить Claude показать,
что мод делает. Чужие только после validate и только от тех, кому доверяешь. А на рабочем проекте, где в настройках лежат чужие ключи, подумай
дважды, прежде чем ставить что-то из интернета.
Если мод начал вести себя странно, его легко выключить: /plugin, вкладка
Installed, и отключаешь нужный. А чтобы запустить Claude Code вообще без
установленных модов, есть claude --safe-mode, только учти, что на эту сессию
он выключит и остальную твою настройку: CLAUDE.md, навыки, MCP-серверы,
строку состояния и память.
Где мод ничего не покажет
Работать мод будет везде, где Claude Code загружает плагины. А вот видно его панели и полоски только в терминале, включая терминал внутри редактора, и на вкладке Code в приложении Claude Desktop.
В чате расширения для VS Code, в запуске claude -p (это когда Claude Code
работает из скрипта, без окна) и в облачных сессиях на сайте Claude мод
отработает, но ничего не нарисует. Так что если ты живёшь в панели VS Code и
поставил мод с полоской над полем ввода, не удивляйся пустому месту: открой
Claude Code во встроенном терминале редактора, и всё появится. В сессиях WSL в
приложении Desktop плагинов нет вовсе, а значит, и модов.
Как это устроено внутри
Этот раздел для тех, кому интересно заглянуть под капот. Чтобы пользоваться модами, его можно пропустить.
Всё, что происходит в Claude Code, это события. Агент собирается запустить команду, ты отправил сообщение, на экране рисуется спиннер. Мод подписывается на нужные ему события, и прежде чем сделать своё дело, Claude Code передаёт событие моду. У мода на руках три варианта:
- пропустить: отметить, что произошло, и отдать событие дальше как есть
- переписать: отдать дальше, но уже изменённым
- ответить: обработать событие самому и не отдавать дальше, тогда Claude Code своё обычное действие не выполнит. Так страж и останавливает опасную команду
next(e): мод отмечает событие и пропускает его как есть. Движок делает своё дело, результат возвращается обратно.Вот как выглядит код маленького мода, который считает, сколько раз агент брался за инструменты, и дописывает это число к строчке «Thinking…»:
let calls = 0
// Claude Code вызывает это один раз, когда мод загружается
export function register(on) {
// Агент собирается взять инструмент: считаем и пропускаем дальше
on('tool.call', async ($, e, next) => {
calls += 1
$.ui.invalidate('ui.render')
return next(e)
})
// Claude Code рисует спиннер: переписываем, дописав счётчик
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
})
}on подписывает мод на событие, next(e) отдаёт событие дальше, а $ и есть
та самая единственная дверь наружу: через неё мод рисует, читает файлы и
обращается к модели. В сессии это выглядит как Thinking · tool calls: 3… над
полем ввода.
Кроме этого файла, в моде ещё два коротких: описание и указатель на код.
Собирать ничего не надо, Claude Code читает .js и .ts как есть. А если
пишешь мод руками, держи под рукой две команды: claude plugin validate
ловит опечатку в имени события, из-за которой мод молча ничего не делает, а
claude plugin test гоняет тесты мода без запуска сессии.
Коротко
Моды это первый способ встроить в интерфейс Claude Code свои панели, кнопки, приборы и стражей. Собирается всё это одной фразой в сессии, а цена в том, что мод работает с твоими правами: чужие проверяй, свои собирай спокойно.
Начать можно прямо сейчас, например с того самого квиза. Скопируй это в сессию Claude Code:
Сделай мод-квиз. Перед каждой правкой файла останавливай агента и через Haiku объясняй мне простыми словами, что именно меняется и зачем. Потом задай один вопрос, проверяющий, понял ли я. Ответил верно, пропускай правку. Ответил неверно, объясни ещё раз другими словами и спроси снова.
Такие разборы выходят регулярно
Короткие мысли и находки я публикую в телеграм-канале, а глубокие разборы, курсы и сообщество, где растут инженеры, живут здесь, в Lab.
Заведи аккаунт в ITUZOV LAB и сохраняй материалы и прогресс чтения.
Зарегистрироваться