AIDive

Я превратил каждую привычку Claude Code в команду

AIDive · Опубликовано

Кодинг-агентыАвтоматизация и workflow

Пять привычек, пять команд

Каждый список привычек для Claude Code говорит, что делать. Этот превращает каждую привычку в команду, которую запускает сам Claude Code, так что привычка работает независимо от того, прочитала ли её модель. Мы прогнали все пять на реальном репозитории, ledgerly: небольшом API для выставления счетов на Node 20 и TypeScript, с Claude Code 2.1.294.

Причина описана в собственных рекомендациях Anthropic: строка вроде "Always typecheck before you finish" в вашем CLAUDE.md "срабатывает в большинстве случаев, но не всегда". Пять команд ниже: /goal, хук PreToolUse, /context вместе с /clear, /skill-doctor и субагент-ревьюер только для чтения.

Почему записанная привычка не срабатывает

CLAUDE.md это файл инструкций, который Claude читает в начале каждой сессии, что-то вроде readme для нового коллеги: команды, соглашения и правила. Именно туда попадает большинство привычек, причём самые важные часто набраны капсом, например "NEVER edit src/store/migrations.ts".

В документации Anthropic по памяти прямо сказано, чем является этот файл: Claude читает его как контекст, а не как принудительную конфигурацию. Каждая строка это совет, который взвешивается на фоне текущей задачи. Разница такая же, как между чек-листом код-ревью на странице вики и проверкой в вашем CI: первая работает, только если кто-то её прочитал, вторая запускается всегда.

Что сделать: откройте свой CLAUDE.md и отметьте каждую строку, которая должна выполняться каждый раз без исключений. Остальное оставьте на месте, ведь файл по-прежнему подходит для того, что Claude не может вывести из вашего кода, а в документации рекомендуется держать файл короче 200 строк.

Привычка первая: скажите, как выглядит «готово»

Claude останавливается, когда работа выглядит законченной. Если ничего не говорит ему, закончена ли она на самом деле, отмечают рекомендации Anthropic, тестовым набором становитесь вы.

/goal задаёт финишную черту один раз. После каждого хода небольшая быстрая модель читает диалог и возвращает один из ответов: выполнено, ещё не выполнено или невозможно. Она не умеет запускать команды и читать файлы, поэтому формулируйте условие так, чтобы его мог подтвердить собственный вывод Claude, например полный вывод тестов.

Запуск на ledgerly Что мы увидели
Обычная сессия, тот же запрос на фичу Тесты шли внутри свёрнутого вызова инструмента; в ответе было "pnpm test passes (37/37)"
С /goal и условием "full pnpm test output printed" Ответ вывел весь прогон, "Tests 44 passed (44)", затем "Goal achieved (45s · 1 turn · 5.1k tokens)"

Введите /goal без аргументов, чтобы увидеть статус, и /goal clear, чтобы снять цель. Для правки в одну строку она не нужна; в документации сказано, что больше всего она важна на длинных прогонах, где Claude иногда завершает ход, оставив пункты незакрытыми.

Привычка вторая: правило, которое нельзя нарушить

Правило, набранное капсом, соблюдается в большинстве случаев, и в этом как раз проблема. Хук это небольшой скрипт, который Claude Code сам запускает в заданный момент; хук PreToolUse срабатывает перед каждым вызовом инструмента. Наш читает путь к файлу и, если это src/store/migrations.ts, печатает "migrations.ts is append-only: add a new migration file instead" и завершается с кодом 2. В руководстве по хукам сказано, что код 2 блокирует вызов и возвращает сообщение Claude, причём блокировка действует даже при отключённых запросах разрешений.

В наших прогонах: когда правило стояло в CLAUDE.md, Claude сам отказался от правки. Когда правило убрали, Claude дважды полез в файл миграций, и хук заблокировал обе правки; Claude изменил остальное и сообщил: "A project hook blocked both of my edits to that file." В двух последующих прогонах он сначала прочитал скрипт хука и больше не трогал этот файл.

Хук блокирует только то, что может распознать: путь или команду. Правила, требующие суждения, вроде "пиши чистый код", остаются в CLAUDE.md, а узкое условие срабатывания не даёт хуку мешать вашей собственной работе.

Привычка третья: одна задача, один контекст

Контекст это всё, что модель видит на каждом ходу: ваши инструкции, прочитанные файлы и весь диалог. /context показывает его в виде сетки; /clear очищает диалог, а файлы и настройки остаются.

/context на ledgerly Всего Сообщения
После завершённой задачи 57.5k из 1m токенов 26.4k токенов
После /clear 31.1k из 1m токенов 130 токенов

Из документации: /clear между несвязанными задачами ничего не стоит, а после двух неудачных исправлений нужно очистить контекст и написать промпт получше. В середине задачи вместо этого используйте /compact с указанием фокуса.

Привычка четвёртая: загружайте только то, чем пользуетесь

Навык (skill) это упакованная инструкция, которую Claude загружает, когда задача ей соответствует. Целиком навык загружается только при запуске, но его однострочное описание в списке попадает в промпт на каждом ходу, а бюджет списка составляет около 1% окна контекста, поэтому описания наименее используемых навыков отбрасываются первыми.

/skill-doctor перечисляет все навыки с их стоимостью в контексте и тем, как часто вы ими пользовались. На нашей машине он показал:

Вид Загружено, но ни разу не вызвано
Личные навыки 13
Синхронизированные из claude.ai 14
Навыки плагинов 25

Он также перечислил 4 плагина, которыми давно не пользовались. Отключайте навык в /skills; синхронизированные навыки возвращаются, если их удалить, поэтому отключайте их на claude.ai; навыки плагинов настраиваются через менеджер плагинов. Одна строка списка невелика, так что это убирает шум, а не освобождает половину контекста.

Привычка пятая: свежий взгляд на diff

Субагент это вторая сессия Claude, запущенная для одной задачи, с собственным пустым контекстом, которая возвращает краткую сводку. Документация Anthropic говорит прямо: передача той же задачи субагенту не улучшает ответ, но свежий ревьюер полезен, потому что не видел ваших рассуждений.

Наш ревьюер лежит в .claude/agents/reviewer.md и имеет инструменты только для чтения: Read, Grep, Glob, Bash(git diff:*) и Bash(git status:*). На diff с просроченными счетами собственное ревью сессии-автора нашло настоящий баг: счета с одинаковой датой оплаты сортировались по id как по тексту. Ревьюер нашёл тот же баг и отсутствующий тест за 28 секунд, а затем один за другим проверил все соглашения из README. Он также заявил, что проверка типов прошла чисто, хотя его инструменты не могли её запустить, и основная сессия пометила это как непроверенное. Вызывайте его один раз на фичу, перед слиянием.

С какой привычки начать

Начните с хука, на правиле, которое в вашем репозитории уже нарушали не раз. /clear и /skill-doctor ничего не стоят. /goal оставьте для длинных прогонов, а ревьюера для слияния. Правило, которое стоит запомнить: если привычка должна выполняться каждый раз, сделайте её тем, что Claude Code запускает, а не тем, что Claude читает.

Бесплатные материалы

Источники

Частые вопросы

Почему Claude Code игнорирует правила в CLAUDE.md?
Claude читает CLAUDE.md как контекст, а не как принудительную конфигурацию, поэтому правило там срабатывает в большинстве случаев, но не всегда. Для правила, которое должно выполняться всегда, используйте хук.
Как запретить Claude Code редактировать конкретный файл?
Добавьте в .claude/settings.json хук PreToolUse на Edit и Write, скрипт которого завершается с кодом 2, если путь совпадает. Вызов блокируется, а сообщение возвращается Claude.
Что делает команда /goal в Claude Code?
Она задаёт условие готовности; после каждого хода небольшая модель читает диалог и сообщает, выполнено оно или ещё нет. Формулируйте условие так, чтобы Claude должен был что-то показать, например полный вывод тестов.
Что такое /skill-doctor в Claude Code?
Команда, которая перечисляет каждый загруженный навык с его стоимостью в контексте и использованием и отмечает те, что ни разу не вызывались, чтобы вы могли их отключить.
Субагент-ревьюер лучше, чем ревью Claude своего же кода?
Свежий ревьюер полезен, потому что не видел рассуждений вашей сессии. Дайте ему инструменты только для чтения, вызывайте один раз на фичу и всё равно запускайте проверки сами.

Похожие видео