Паттерны опытного вайбкодера
12 паттернов продуктивной работы: трассировка требований, TDD-якоря, atomic commits, cost-awareness и бэклог.
Простым языком
Новичок говорит Claude «сделай сайт» и удивляется почему результат кривой. Опытный вайбкодер знает несколько трюков — как давать задачи, как проверять результат, как не терять прогресс.
Это не теория. Каждый паттерн здесь — конкретный способ работать лучше. Начни с одного или двух — уже почувствуешь разницу.
12 паттернов, которые отличают новичка от про
Эти паттерны выработались в реальных проектах. Каждый решает конкретную проблему, с которой сталкивается любой вайбкодер после первых нескольких проектов.
1. Двунаправленная трассировка требований
Проверяй связь user-spec ↔ tech-spec в обе стороны:
- Forward: каждое требование из user-spec отражено в tech-spec? Ничего не потерялось?
- Reverse: каждая задача в tech-spec обоснована требованием? Нет ли лишнего?
# Промпт для трассировки
claude "Запусти completeness-validator для user-spec.md и tech-spec.md.
Найди:
1. Требования из user-spec, не отражённые в tech-spec
2. Задачи в tech-spec без обоснования из user-spec"2. TDD-якоря в спецификациях
Опиши тесты уже в tech-spec, не жди фазы реализации:
## Task-007: Регистрация пользователя
### TDD-якорь:
- test_register_creates_user_in_db
- test_register_returns_jwt_token
- test_register_duplicate_email_returns_409
- test_register_invalid_email_returns_400
- test_register_weak_password_returns_400
- test_register_missing_field_returns_400Когда Claude видит TDD-якоря — он пишет именно эти тесты, не изобретает своё.
3. Context Files — загрузка по требованию
Не грузи весь проект в контекст. Каждая задача содержит список нужных файлов:
## Task-003: Валидация email
### Context Files:
- src/validators/email.ts # изменить
- src/api/auth.ts # изменить
- tests/validators.test.ts # изменить
# НЕ нужны: вся папка services/, модели, конфиги
# Меньше контекст → быстрее модель → дешевле → точнее4. Decisions.md — журнал решений
Записывай ПОЧЕМУ, не только ЧТО:
## [2026-02-15] PostgreSQL вместо MongoDB
**Контекст:** Нужна БД для транзакций и отчётов.
**Решение:** PostgreSQL 16.
**Альтернативы:**
- MongoDB — отпал из-за отсутствия ACID-транзакций
- SQLite — не подходит для продакшн нагрузки
**Последствия:**
- Нужны миграции (Prisma Migrate)
- Строгая schema, зато гарантии целостности данных5. Wave-параллелизм
# Задачи в одной волне = не пересекаются по файлам
Wave 2 (параллельно):
task-003 → services/user.ts, models/user.ts
task-004 → utils/jwt.ts, config/auth.ts
# OK: файлы разные → запускаем параллельно
# Задачи в разных волнах = есть зависимость
Wave 3 (после Wave 2):
task-005 → импортирует из services/user.ts (task-003)
task-006 → использует utils/jwt.ts (task-004)6. Правило трёх попыток
Жёсткий лимит на любой цикл — не позволяй AI крутиться бесконечно:
Попытка 1: fix → test → fail → углубляемся
Попытка 2: fix → test → fail → диагностика
Попытка 3: fix → test → fail → СТОП
→ Вывести диагностику пользователю
→ Спросить как продолжать
→ Прекратить автоматические попытки7. Восстановление контекста после Compaction
В длинных сессиях контекст сжимается. Hook для восстановления:
#!/bin/bash
# .claude/hooks/reinject-context.sh
# Триггер: Notification:compaction
echo "=== ВОССТАНОВЛЕНИЕ КОНТЕКСТА ==="
echo "--- Текущая задача ---"
cat .claude/current-task.md 2>/dev/null || echo "(нет)"
echo "--- Активные файлы ---"
cat .claude/active-files.txt 2>/dev/null || echo "(нет)"
echo "--- Прогресс (хвост CLAUDE.md) ---"
tail -30 CLAUDE.md8. Промпт = конкретика
# Плохо — расплывчато, Claude будет угадывать
"Добавь авторизацию"
# Хорошо — конкретно, Claude знает что делать
"Добавь JWT авторизацию:
- Стек: Next.js 15 + NextAuth.js 5
- Провайдеры: email/password + Telegram
- Token: httpOnly cookie, 7 дней
- Файлы: src/auth.ts (создать)
src/app/api/auth/[...nextauth]/route.ts (изменить)
- Users коллекция уже есть в Payload CMS"9. Cost-Awareness — следи за расходами
- Sonnet для рутины (~5x дешевле Opus)
- Opus для архитектуры и ревью критичного кода
- Haiku для форматирования и простых правок
- Не грузи лишний контекст — каждый файл стоит токены
- Смотри на дашборд Anthropic Console раз в неделю
# Переключение модели по задаче
claude --model claude-sonnet-4-5 # рутинная реализация
claude --model claude-opus-4-5 # архитектура и ревью
claude --model claude-haiku-4-5 # мелкие правки10. Atomic Commits — один коммит = одно изменение
- Сломалась одна фича — откатываешь только её
- Легко ревьюить — понятно что зачем изменено
- Автогенерация changelog —
git log --onelineсразу читаем
# Conventional Commits — обязательный формат
feat: добавить регистрацию через Telegram
fix: исправить 500 при пустом email в /api/auth/register
test: покрыть UserService.create() unit-тестами
refactor: вынести JWT логику в src/utils/jwt.ts
docs: обновить deployment.md после миграции на Docker11. Бэклог вместо "потом сделаю"
"Потом" никогда не наступает без системы. Все отложенные задачи — в бэклог:
# Добавить в бэклог
claude "/backlog add Оптимизировать запрос в getFeedPage — N+1"
claude "/backlog add Написать тест для edge-case в payment.ts"
# Просмотреть накопленный техдолг
claude "/backlog list"12. Глубинное интервью вместо поверхностного брифа
- Проблема: «Нам нужен дашборд аналитики»
- Глубинный вопрос: «Кто смотрит? Что решает, глядя на него? Главный вопрос, на который должен отвечать?»
- Результат: понимаешь, что нужен не дашборд, а еженедельный email-отчёт — это в 5 раз проще
Субагент business-analyst задаёт десятки вопросов — это дорого по токенам, но на порядок дешевле, чем переделывать проект из-за пропущенных требований.
С чего начать — приоритет по отдаче
- Немедленно: atomic commits (#10) + конкретные промпты (#8)
- После 2–3 проектов: TDD-якоря (#2) + Anti-Mirage проверки
- В крупных проектах: wave-параллелизм (#5) + decisions.md (#4)
- После первой "сломанной" сессии: reinject-context (#7) + правило трёх попыток (#6)
Не пытайся применить все 12 паттернов сразу. Начни с двух — и уже будешь продуктивнее большинства.
> Пока нет комментариев