Вайбкодинг на Claude Code
Что делать, чтобы код был лучше, а токенов уходило меньше. Без теории — только приёмы.
Fable думает, агенты делают
Сиди на Fable. Сам он файлы не трогает — только планирует.
Всю работу раздавай агентам: Opus — где надо думать, Sonnet — где надо просто делать, Haiku — поиск и рутина.
Зачем. Anthropic это померила: 96% качества за 46% денег. Работает лучше, стоит вдвое дешевле.
96%
качества
46%
цены
2.2×
экономия
Почему. Контекст забивается быстро, и агент тупеет. Когда файлы читают агенты, в твой контекст приходит только вывод — не сто файлов. Работать можно долго.
Какую модель на что
| Модель | Что даёшь |
|---|---|
| Fable | План, архитектура, приёмка. Файлы не трогает. |
| Opus | Сложный баг, схема БД, ревью. |
| Sonnet | Правки, тесты, рефакторинг. 80% работы. |
| Haiku | Поиск по файлам, бойлерплейт. |
Агенты по умолчанию берут модель главной сессии. Сидишь на Fable — даже поиск по файлам идёт по цене Fable. Две строчки чинят это:
export CLAUDE_CODE_SUBAGENT_MODEL=haiku
И создай файл — он перекроет встроенный поисковый агент, который иначе жрёт по премиум-тарифу:
--- name: Explore description: Поиск по репозиторию. model: haiku effort: low --- Ищи и докладывай факты. Решений не принимай.
Что отдавать агенту, а что нет
Найти файл, прочитать, пересказать код, глянуть логи, прогнать тесты, рутинные правки, бойлерплейт.
Архитектура, границы задачи, компромиссы, финальная приёмка. И никогда не отдавай: авторизацию, оплату, миграции, безопасность.
Правило: задача меньше 5 минут — делай сам. Гонять агента ради одной строчки дороже, чем написать её.
Каждый агент — новый контекст, он заново читает всё, чтобы сориентироваться. На линейной задаче шесть агентов просто шесть раз переучивают одно и то же и сжигают лимит. Дроби только то, что реально идёт параллельно.
Не хочешь настраивать — включи /model opusplan, он делает примерно то же из коробки.
Настройка проекта
CLAUDE.md — держи коротким
Максимум 200 строк. Чем длиннее файл, тем хуже его слушают: важное тонет.
Проверка каждой строки: «если убрать — он ошибётся?» Нет — удаляй.
«Пиши чистый код и следуй хорошим практикам.»
«Миграции только через npm run db:migrate. Файлы в migrations/ руками не трогать.»
Плохое исполнение = файл раздут, а не правил мало. У одного парня файл вырос с 45 до 190 строк — стало хуже. Почистил до 123 — сразу лучше.
Почему он забывает правила к концу сессии
CLAUDE.md грузится один раз в начале, а не каждый ход. Чем дольше разговор, тем дальше правила уезжают назад — и тем слабее работают.
Вывод: что важно соблюдать всегда — вешай хуком, а не пиши текстом. Текст можно проигнорировать, хук — нет.
4 правила, которые реально работают
1. «В конце скажи, чего ты НЕ сделал»
Лучшее правило вообще. Взрывается ночью не тот код, что написан, а тот случай, что молча пропущен.
2. «Сначала опиши подход в 2 строках и скажи, что он усложнит потом»
Иначе Клод напишет простейшее, что проходит тест, и загонит в тупик через три файла. Это ловит тупик до того, как написано 200 строк.
3. «Не трогай файлы, о которых я не просил»
Запреты работают лучше разрешений. «Никогда не делай X» сильнее, чем «всегда делай Y».
4. «Видишь путь лучше — скажи до реализации, в 2–4 пунктах. Если моя просьба разумна — просто делай»
Без этого он либо молча кивает, либо спорит по каждой мелочи.
Ошибся — скажи: «обнови свой CLAUDE.md, чтобы больше так не делать». Он сформулирует сам.
.claudeignore
node_modules/ .next/ dist/ build/ coverage/ *.log *.lock .env*
Он вытянет всё подряд и забьёт контекст. Всегда указывай конкретные файлы или папку.
Не получается сделать задачу с одного промпта? Значит одно из трёх: код превратился в кашу, ты сам не понимаешь систему, или задача слишком большая. Все три — повод остановиться, а не давить дальше.
Дизайн
Почему AI-интерфейсы узнаются сразу: модель не имеет вкуса, у неё есть статистика. Не задал шрифт — получишь Inter. Не задал цвет — фиолетовый градиент. Не задал разделение — серую рамку вокруг всего.
Просить «сделай красивее» бесполезно. «Красивее» для модели = среднее по интернету. Лечится не уговорами, а записанными ограничениями.
Заведи DESIGN.md
Шесть секций, зафиксировать до первой строчки стилей:
- Шрифты — точные названия и шкала
- Цвета — hex + для чего каждый
- Отступы — базовая единица
- Компоненты — радиусы, тени
- Сетка и ширины
- Характер — прилагательные и анти-примеры
Запретный список работает лучше всего
Запиши дословно в DESIGN.md:
«Не используем: hero на всю ширину с текстом по центру, сетку фич с иконками, карусели отзывов, футер в три колонки. Шрифты Inter, Roboto, Arial — нельзя. Фиолетовые градиенты — нельзя.»
Числа, которые отличают дизайн от слопа
| Что | Как |
|---|---|
| Цвета | Три штуки: фон 60% / поверхность 30% / акцент 10%. Новых не добавлять. |
| Чёрный/белый | Никогда чистые #000 и #fff. |
| Текст | От 16px. Строка 60–80 знаков. Иерархия жирностью, а не новыми шрифтами. |
| Отступы | Сетка 8px. Внутри блока меньше, между блоками больше. |
| Карточки | Без рамок. Разделяй воздухом или сдвигом фона на 3–5%. |
Не описывай дизайн — вытащи его
Вместо того чтобы объяснять словами, забери готовую дизайн-систему с любого сайта:
npx designlang https://stripe.com
Получишь точные цвета, шрифты, отступы и конфиг Tailwind. Дальше: «свёрстай по этой системе». Попадание совсем другое.
Дай Клоду глаза
Главный приём для фронтенда. Ставишь Playwright — и он сам смотрит на результат:
claude mcp add playwright -- npx -y @playwright/mcp@latest npx playwright install
«Сделай дашборд покрасивее.»
«[скриншот] Свёрстай это. Потом скриншоть результат, сравни с оригиналом, перечисли отличия и исправь.»
Обычно хватает 2–3 итераций. Он крутит цикл сам, обновлять страницу руками не надо.
Иначе он запустит Playwright через bash и потеряет половину возможностей.
Скилл — это исполняемая инструкция. Сделать такой, что отправит твои ключи чужому человеку, — элементарно. Читай перед установкой.
Экономия токенов
Главное, что надо понять: контекст забивается — качество падает. Экономия денег тут побочный эффект, основное — чтобы агент не тупел.
Модели по цене
| Модель | Цена / 1M | Когда |
|---|---|---|
| Haiku | $1 / $5 | Рутина, поиск |
| Sonnet | $3 / $15 | Дефолт на всё |
| Opus | $5 / $25 | Архитектура, сложный баг |
Разгон рутины на младшую модель — до 5× экономии.
/compact или /clear
Работай дальше
Та же фича, тот же код.
/compact
Тот же код, но контекст пухнет. Жми на 60%, не позже.
/clear
Новая задача. Старое — балласт.
Поправил его дважды по одному и тому же — не спорь третий раз. Контекст забит неудачными попытками. /clear и заново.
Что ещё режет расходы
- JSON жрёт вдвое больше токенов, чем тот же смысл текстом. Отдавай контекст текстом или таблицей.
- Выход дороже входа в 5 раз. Проси вернуть ID или номера — разворачивай их своим кодом. Люди срезают так до 60%.
- Динамическую часть промпта — в конец. Кэш работает по началу: поменял начало — обнулил весь кэш.
- Отключи лишние MCP-серверы. Их описания грузятся в каждый запрос. Проверить:
/context.
Перед /clear — сохрани состояние
Запиши в .claude/session-handoff.md: цель, изменённые файлы,
решения, падающие тесты, следующий шаг.
# потом /clear, и в новой сессии:
Прочитай .claude/session-handoff.md и продолжай.
Один сорвавшийся ночью цикл может стоить больше недели работы. Используй --max-budget-usd.
Испортит состояние — просто откатишься. Коммитишь после — отлаживаешь неизвестно что. И помни: /rewind откатывает файлы, но не откатывает bash — записи в БД и rm уже случились.
Как раздавать работу агентам
Границы — по папкам, а не по идеям
Агент 1: src/api/auth/** Агент 2: src/session/** Агент 3: tests/**
Максимум три агента. Общие файлы (package.json, миграции, конфиг) не трогает никто, кроме назначенного.
Всегда ограничивай агента
«Разберись в авторизации и почини баг.»
«Смотри только src/auth. Верни максимум 15 пунктов. Код не пиши. Вширь не сканируй.»
Пиши код одной сессией, ревьють другой
Сессия A пишет. Сессия B — свежая, ничего не знает — проверяет. Так она непредвзята.
Сверь код с PLAN.md. Всё ли требование реализовано, есть ли тесты на крайние случаи, не изменилось ли лишнее. Пиши про пробелы, а не про вкусовщину.
Ревьюер, которому велели искать проблемы, найдёт их даже в хорошем коде. Поэтому и написано «пробелы, а не вкусовщину» — иначе получишь оверинжиниринг.
Параллельно — только в worktree
claude --worktree backend-auth
Каждому агенту — свою ветку и свой порт (3000, 3001, 3002), иначе подерутся.
Задача меньше 5 минут · файлы пересекаются · контракты между кусками ещё не определены · ты не успеваешь всё это ревьюить. Тогда один агент справится лучше.
Автоматизация
Запуск без человека
| Флаг | Зачем |
|---|---|
--max-turns N | Главный предохранитель. Ставь всегда |
--max-budget-usd N | Потолок по деньгам |
--output-format json | Результат для скрипта |
--allowedTools | Что ему можно |
--permission-mode dontAsk | Не зависать на вопросе |
claude -p "Проверь диф на баги." \ --allowedTools "Read,Grep,Glob" \ --permission-mode dontAsk
for file in $(cat files.txt); do claude -p "Мигрируй $file. Верни OK или FAIL." \ --max-turns 10 --model sonnet done
Сначала обкатай на 2–3 файлах, потом запускай на всех.
Хуки — единственный способ заставить наверняка
CLAUDE.md можно проигнорировать. Хук — нет, это код. Хочешь, чтобы типы проверялись после каждой правки — не проси, повесь хук, который падает и блокирует ход.
Дай Клоду проверку, которую он запустит сам. Для бэкенда — тесты. Для фронтенда — скриншот. Не можешь назвать такую проверку? Значит ты не автоматизируешь, а надеешься.
Как строить сервис
80% времени — план, 20% — код. Звучит как потеря темпа, но так быстрее: хороший план делает кодинг механическим.
Шаг 1. Пусть он тебя допросит
Хочу построить [X]. Задай мне вопросы, чтобы всё понять. Спрашивай про реализацию, UI, крайние случаи, риски. Очевидное не спрашивай — копай в сложное. Потом запиши всё в SPEC.md.
Дальше /clear и в новой сессии: «прочитай SPEC.md и делай». Контекст чистый, план готов.
Перед планированием фичи наскриншоть, как она сделана у других, и кинь картинки в чат. Он видит изображения — это работает сильно лучше описания словами.
Шаг 2. Порядок
- План-режим —
Shift+Tabдважды. Файлы не тронет, пока не утвердишь. - Сначала контракты — типы, схема БД, API. Отдельным коммитом. Потом можно параллелить.
- Раздай по папкам — максимум три агента.
- Фронтенд — циклом со скриншотом.
- Ревью свежей сессией — не той, что писала.
- Перед деплоем — хук с тестами, а не надежда.
Построит систему управления состоянием там, где нужен один useState. Ревью плана до кода должно искать именно это: переусложнено, дублирует существующее, не по-MVP-шному.
Чего не делать
Одна сессия на всё подряд
Фича, потом баг, потом рефакторинг. Контекст превращается в кашу. Одна сессия — одна задача.
Поправлять по третьему кругу
Неудачные попытки остались в контексте и тянут его не туда. Чисти, а не упорствуй.
Верить на слово
Сказал «готово, работает» — требуй доказательство. Скриншот, вывод команды, зелёные тесты.
«Разберись в кодовой базе»
Будет читать, пока окно не забьётся. Работа так и не начнётся.
/btw — задать вопрос мимо истории. /rewind — откатиться. Esc — жми сразу, как понял, что пошло не туда.
Шпаргалка
| Команда | Что делает |
|---|---|
Shift+Tab ×2 | План без правки файлов |
Esc | Стоп |
/rewind | Откатить назад |
/compact | Сжать контекст (на 60%) |
/clear | Новая задача |
/context | Кто ест токены |
/cost | Сколько потрачено |
/btw | Вопрос мимо истории |
/model sonnet | Сменить модель |
claude -p "..." | Один прогон, для скриптов |
claude --worktree X | Агент в своей ветке |
export CLAUDE_CODE_SUBAGENT_MODEL=haiku export MAX_THINKING_TOKENS=8000
Чеклист
CLAUDE.mdкороче 200 строкCLAUDE_CODE_SUBAGENT_MODEL=haikuвыставлен- Свой
Explore.mdсmodel: haikuсоздан - Есть
.claudeignore - Есть
DESIGN.mdс запретным списком - Записано «говори, чего не сделал»
- Записано «не трогай лишние файлы»
- Закоммичено перед запуском агента
--max-turnsна всех автозапусках- Есть проверка, которую агент запустит сам
Можешь объяснить, почему код работает именно так? Если ответ «потому что ИИ так написал» — это слоп. Если можешь объяснить — неважно, кто это написал.