Моды Claude Code: как поменять интерфейс агента
Содержание
В Claude Code появились моды. Мод это плагин, вся логика которого может жить в одном файле кода. Он меняет само приложение. Он может открыть свою панель сбоку, повесить строку над полем ввода, показать уведомление, добавить слэш-команду, остановить опасный вызов инструмента или дописать текст в системный промпт.
Главное: мод пишет сам агент. Описываешь словами, что хочешь, и Claude Code собирает мод в той же сессии.
Мне важнее всего, что моды работают в десктопном приложении: Claude Desktop, вкладка Code. Это тот же Claude Code, только в обычном окне, без терминала. Ещё моды работают в терминале и в расширении для VS Code.

Claude Code в десктопном приложении Claude, вкладка Code. Кадр из ролика Anthropic
Я так сделал себе план дня справа от чата. Код руками не писал, файлы не открывал.
Что такое мод, простыми словами
Claude Code это агент, который сам пишет код и запускает команды. Плагин это дополнение к нему. По обзору в документации, мод это плагин, код которого работает внутри Claude Code. Пишут его на JavaScript или TypeScript (тот же JavaScript, только с подсказками, какие данные где лежат). Ставить Node.js (среду для запуска JavaScript) и собирать проект не нужно.
Устроено так. Claude Code сообщает о событиях: агент собрался вызвать инструмент, ты отправил промпт, приложение рисует спиннер. Мод подписывается на них хуками. Хук это функция, которую Claude Code вызывает, когда событие случилось. С событием хук может сделать три вещи: посмотреть и пропустить дальше, поменять его, или ответить сам, и тогда обычное поведение не запускается.
Чтобы сделать что-то за пределами своего кода, мод зовёт API модов. Это набор команд, которые Claude Code даёт моду: нарисовать, добавить команду, вызвать модель, прочитать файл. Другого пути у него нет. Поэтому Claude Code может заранее показать список всего, что мод делает.
Чем мод отличается от соседей. В документации есть сравнение:
- скилл это файл с инструкциями, который читает агент; он меняет то, что агент знает и делает;
- хук из настроек запускает скрипт, HTTP-запрос или промпт на событие; он может пропустить, запретить или записать вызов;
- MCP-сервер даёт агенту инструменты из внешней системы, например из трекера задач;
- мод работает внутри приложения и единственный из четырёх умеет рисовать в интерфейсе.
Коротко: скилл учит агента, мод меняет само приложение.
Что мод может поменять в Claude Code
Событий много, их делят на группы: инструменты, промпты, команды и настройки, ходы агента, сессия, субагенты, интерфейс (справочник). Ниже то, что видно человеку, с одним примером на строку. Примеры взяты из документации и из моего мода.

Мод переписал спиннер: к «Thinking» добавился счётчик вызовов. Кадр из документации Anthropic, терминал
В широком окне десктопа справа от переписки стоят панели: превью, дифф, терминал, задачи, план. Панель мода встаёт в этот же ряд (как мод рисует интерфейс).

Справа встроенные панели Claude Code. Сюда же мод добавляет свою. Кадр из ролика Anthropic
| Что меняет мод | Пример |
|---|---|
| Панель сбоку от переписки | мой план дня «Сегодня» |
| Строка над полем ввода | текущая ветка git над промптом |
| Строка под полем ввода | статус проверок pull request (заявки на правку кода) раз в минуту |
| Всплывающее уведомление (тост) | «Ход закончен», висит 4 секунды |
| Готовые части Claude Code: сообщения, строки вызовов, спиннер (значок «агент работает»), окно вопросов | счётчик вызовов инструментов рядом со спиннером |
| Слэш-команда, которую набираешь через / | /standup со сводкой за день, без хода агента |
| Новый инструмент для агента | поиск задачи в трекере по номеру |
| Вызов инструмента, то есть действие агента | запрет git push --force с объяснением агенту |
| Промпт и системный промпт (скрытая инструкция агенту) | дописать имя ветки, когда в промпте есть pull request |
| Запрос к модели | отправить один запрос другой модели |
Где мод рисует, разобрано на странице про интерфейс. Панель в широком окне стоит справа от переписки, в узком над полем ввода. Строка над полем ввода общая для всех модов. Одно место закрыто: окно разрешений мод не перерисует.
Про вызовы инструментов и промпты есть страница про события. Мод может придержать вызов, пока спрашивает тебя, ответить за инструмент, не запуская его, или отказать с причиной. Может переписать промпт или добавить к нему текст, который прочитает только агент.
Остальное даёт API модов. В нём группы методов: $.ui рисует, $.command и $.tool добавляют команды и инструменты, $.model шлёт свой запрос к модели, $.clock заводит таймеры. Ещё $.fs читает и пишет файлы, $.process запускает программы, $.http ходит в сеть, $.audio играет звук и читает текст вслух. $.store хранит данные, общие для всех сессий на компьютере, $.state держит состояние интерфейса. Запросы к модели идут за счёт твоей подписки или ключа API.
Как получить свой мод: попросить агента
Документация прямо предлагает так: опиши мод своими словами в обычной сессии. Claude возьмёт встроенный скилл plugin-authoring. Скилл знает, куда писать мод, какие события и методы есть в твоей версии и как мод загружается. Его можно вызвать и руками, командой /plugin-authoring.
Свой скилл «знающий API модов» писать не нужно. Когда мод загружается, Claude Code кладёт в его папку описание API ровно той версии, что у тебя стоит. Главный файл с типами у меня около 22 тысяч строк, с комментарием и примером к каждому методу. Поэтому агент знает актуальные события и элементы, даже если документация отстала.
Мой промпт, его можно повторить:
Что дальше происходит:
- Агент пишет мод в папку сессии
~/.claude/dev-mods/. В обычном режиме разрешений Claude Code спросит про каждый файл: эта папка защищённая. - На первом файле Claude Code спросит, включить ли горячую перезагрузку. Отвечай «Enable for this session». Это значит, что мод обновляется без перезапуска: загрузится в конце хода и будет перезагружаться после каждого хода, где агент поменял его файлы.
- В /plugin на вкладке Installed мод появится в списке, там же его можно выключить.
- Если что-то не так, говоришь агенту, что поменять. Если в переписке появилась строка с именем мода о том, что правка не загрузилась, скопируй её агенту: сам он эту строку не видит.
Проверки тоже есть. claude plugin validate показывает, на какие события мод подписан и что вызывает. claude plugin test гоняет тесты мода без сессии, входа и сети.

Учебный мод из документации: команда /tally и строка «reloaded» после правки. Кадр из документации Anthropic, терминал
Мой пример: план дня рядом с чатом
План дня у меня лежит в Markdown-файле. Каждое утро его собирает мой скилл: слоты по времени, задачи с приоритетом P0 (срочно) и P1, блок «Вне часов». Мод читает этот файл и показывает его в Claude Desktop.

Макет моей панели «Сегодня» и строки «Сейчас:» на демо-данных
Справа панель «Сегодня». Сверху шапка с датой, неделей и счётчиком «0/6», кнопка «Обновить». Под ней карточка ближайшего слота в оранжевой рамке: время, название, сколько до начала. Дальше задачи по приоритету: кружок, номер, цветной чип P0 или P1, ссылка на задачу (issue), короткое название вроде «Урок 7: эфир». Клик по кружку отмечает задачу, сделанное зачёркивается и остаётся на месте.
Над полем ввода строка «Сейчас: P0 Урок 7: эфир · до урока 1 ч 20 мин · 1/3 готово» с кнопками «Готово» и «Скрыть». В статус-строке счётчик и время следующего слота, она обновляется раз в минуту. За 15 минут до слота приходит тост, один раз в день.
Команды три. /today открывает панель и возвращает строку. /next называет текущую задачу и отсчёт до слота. /done отмечает текущую и называет следующую.
Отметки «сделано» мод держит в своём хранилище. В файл плана он ничего не пишет: план остаётся таким, каким его собрал скилл. Весь мод уместился в три файла, главный на 247 строк, плюс тест на два случая. Оба проходят.
Сначала макеты, потом мод
Где вообще может жить план дня внутри Claude Desktop, я не знал. Поэтому до мода попросил агента отправить бриф в Claude Design: одна HTML-страница-каталог, все способы показать план дня внутри Claude Desktop. Вышло 11 вариантов на одних и тех же данных.

Четыре из 11 вариантов: панель, доска, таймлайн, строка над полем ввода
Там были панель справа, доска колонками P0, P1 и «Сделано», таймлайн дня, строка над полем ввода, статус-строка, тост, слэш-команды, подсказка в поле ввода, панель для узкого окна, фоновый режим без интерфейса с планом в системном промпте и мобильное приложение. Я выбрал панель и добавил строку над полем ввода.
Приём годится для любого мода. Мест, где мод может что-то показать, много. Посмотреть их на своих данных проще до того, как агент напишет код. Claude Design сейчас переезжает в Artifacts приложения Claude, старый адрес работает до 14 декабря.
Ограничения
Свой набор элементов. Мод рисует из готовых деталей: блоки, текст, кнопки, ссылки, поля ввода, списки выбора, Markdown, код, SVG. Можно задать цвета, рамки, размер текста. Часть элементов работает только в терминале, SVG наоборот только в Desktop и VS Code (таблица в справочнике).
Первая версия расходится с макетом. У меня первая панель вышла сырой: текст из файла плана длинными строками, большие кнопки «Готово». Я написал агенту «это не так, как в дизайне» и приложил скриншот. Агент переверстал по первому макету: шапка, карточка слота, компактные строки с чипами. Структура и иерархия совпали с макетом, до пикселя его не повторить.
Мод работает с твоими правами. Песочницы нет. Мод может читать и писать файлы, видеть промпты и вызовы инструментов, ходить в сеть, тратить твои лимиты на запросы к модели. Чужие моды ставь только от тех, кому доверяешь. До установки claude plugin validate покажет, что мод делает.
Где ничего не нарисуется. В запуске claude -p и в облачных сессиях хуки мода работают, интерфейса нет. В сессиях WSL (Linux внутри Windows) в Claude Desktop моды не грузятся вовсе. Версии: в терминале нужна 2.1.287 или новее, в Claude Desktop моды работают с 2.1.286. У меня 2.1.316.
Как сохранить мод и поделиться
Есть подвох. Мод, который написал Claude, грузится только в той сессии, где его сделали. Папку сессии Claude Code удаляет, когда она старше настройки cleanupPeriodDays.
Чтобы мод остался, его папку копируют к себе, например в ~/mods/. Дальше варианты из документации:
- для себя: запускать Claude Code с флагом
--plugin-dirи путём к папке мода; - для пары человек: отправить им папку или архив;
- для команды: положить мод в свой маркетплейс плагинов, например в приватный репозиторий;
- для всей организации: администратор ставит моды через управляемые настройки;
- для всех: открыть репозиторий маркетплейса или отправить плагин в каталог Anthropic.
У организаций свои рычаги (страница для администраторов). Настройка allowManagedModsOnly пускает только моды организации. На машинах с управляемыми настройками и на планах Team и Enterprise первым грузится встроенный страж: мод пользователя не меняет системный промпт и управляемые хуки и не обходит правила разрешений. Выключить моды у себя можно запуском с --safe-mode на одну сессию или настройкой disableAllHooks насовсем.
Как Claude Desktop хранит сессии, я разбирал в переносе 275 сессий на второй аккаунт. Готовые моды Anthropic лежат в исходниках Claude Code, их удобно показать агенту как образец.
Если хочешь так же: в Кружке разбираем это на практике, с агентами и вживую.
Частые вопросы
Что такое мод в Claude Code?
Мод это плагин Claude Code, код которого работает внутри самого приложения. Он подписывается на события, например вызов инструмента или отрисовку спиннера, и может их наблюдать, менять или обрабатывать сам. Так мод рисует панели, добавляет команды и правит вызовы инструментов.
Чем мод отличается от скилла и обычного хука?
Скилл это файл с инструкциями, который читает агент. Обычный хук из настроек запускает скрипт на событие и может пропустить, запретить или записать вызов. Мод работает внутри Claude Code и единственный из них умеет рисовать в интерфейсе.
Нужно ли уметь программировать, чтобы сделать мод?
Нет. Мод можно попросить словами в обычной сессии. Claude пишет его по встроенному скиллу plugin-authoring, который знает события и методы именно твоей версии Claude Code.
Где работают моды?
В Claude Code в терминале с версии 2.1.287, во вкладке Code в Claude Desktop с версии 2.1.286 и в расширении для VS Code. В сессиях WSL в Claude Desktop моды не грузятся. В запуске claude -p хуки мода работают, но ничего не рисуется.
Безопасно ли ставить чужой мод?
Мод работает с твоими правами и без песочницы: читает файлы, видит промпты и вызовы инструментов, может ходить в сеть. Ставь моды только от авторов, которым доверяешь. Команда claude plugin validate до установки покажет, на какие события мод подписан и что он вызывает.