Промпты для вайбкода
1. План перед кодом
Прежде чем писать код — остановись и составь план. Код не трогай, пока я не подтвержу.
- Понимание задачи — переформулируй своими словами, что нужно сделать.
Если в задаче есть неоднозначность — назови её и предложи безопасное допущение. - Список файлов, которые затронешь, с пометкой создать / изменить / удалить
и одной строкой — что именно меняется в каждом. - Порядок действий — пронумерованные шаги в той последовательности,
в которой будешь их выполнять. - Риски — где может сломаться: затронутые зависимости, обратная совместимость,
побочные эффекты, граничные случаи. - Что НЕ входит в работу — чего ты сознательно не будешь трогать, чтобы не выйти за рамки.
Не пиши код, псевдокод и диффы на этом шаге — только план.
Жди моего «ОК», и только потом приступай к реализации.
2. Ревью и баги
Сделай детальное ревью указанного кода. Ничего не исправляй — только находи и объясняй.
(Что ревьюим: <вставь файл / функцию / диапазон строк или приложи блок>)
Для каждой найденной проблемы укажи:
- Где — файл и строка (или фрагмент кода).
- Категория — логическая ошибка / необработанный край (null, пустой ввод, ошибка сети) /
гонка или порядок выполнения / утечка ресурса / неверная обработка ошибок / типобезопасность. - Серьёзность — критично / важно / мелочь.
- В чём суть — почему это баг и при каких входных данных он проявится (конкретный сценарий).
- Как починить — короткое предложение или фрагмент исправленного кода.
Отдельно проверь: что происходит при неожиданном вводе (пустое, null, очень большое,
некорректный формат, дубли, конкурентные вызовы).
Отсортируй находки от самой критичной к самой мелкой.
Если серьёзных проблем нет — скажи прямо, не выдумывай замечания ради объёма.
3. Тесты на бизнес-логику
Покрой тестами ключевую бизнес-логику проекта. Цель — ловить реальные баги в важных местах,
а не гнаться за покрытием.
Сначала (до написания тестов) дай короткий список кандидатов:
- какие функции/модули считаешь критическими и почему
(поломка ломает приложение, содержит нетривиальную логику или правила безопасности); - что сознательно НЕ покрываешь (тривиальные прокладки, геттеры, баррелы, конфиг) — одной строкой.
Жди моего «ОК» по списку, потом пиши тесты.
- Используй тестовый стек проекта (Vitest), файл рядом с кодом (*.test.ts).
- Внешние зависимости и env — мокать, реальные ключи не нужны.
- Покрывай: happy path + граничные случаи + пути ошибок (ветвления, лимиты, классификация ошибок).
- Каждый тест — с понятным названием, описывающим проверяемое поведение.
Для каждого покрытого модуля одной строкой объясни: что проверяет тест и почему это важно.
В конце убедись, что npm test зелёный.
4. Аудит безопасности
Проведи аудит безопасности проекта. Ничего не исправляй автоматически — сначала отчёт.
- Эндпоинты: какие открыты без авторизации, где отсутствует или неверна проверка доступа,
есть ли утечка чужих данных (нарушение скоупа по user_id). - Инъекции: SQL/NoSQL, командные инъекции (особенно вызовы внешних утилит), path traversal.
- Валидация и санитизация входных данных на границе системы (API, формы).
- Секреты: хардкод ключей/токенов в коде вместо env.
- Зависимости с известными уязвимостями.
- Обработка ошибок: не утекают ли в ответ стектрейсы, внутренние пути, детали окружения.
- (Если есть веб-вывод) XSS и небезопасный рендер пользовательских данных.
- Критичность — Critical / High / Medium / Low (по влиянию + простоте эксплуатации).
- Где — файл и строка.
- Сценарий атаки — как именно это можно проэксплуатировать.
- Как исправить — конкретно, с фрагментом кода или указанием подхода.
В начале дай сводку: число находок по уровням и топ-3, что чинить первым.
Если категория чистая — отметь это явно. Не раздувай отчёт ложными срабатываниями.
5. Нагрузочный тест (анализ масштабируемости)
Проанализируй поведение проекта под нагрузкой при 100, 500 и 1000 одновременных пользователях.
Это аналитический разбор по коду и архитектуре, а не запуск реального нагрузочного теста
(если хочешь предложить сценарий/скрипт для k6/autocannon — предложи отдельно).
- Какой путь нагружаем — основной эндпоинт/флоу и что он делает по шагам.
- Где в этом флоу синхронные блокирующие или долгие операции
(внешние API, скачивание, транскрипция, запросы к БД, работа с файлами/диском).
Для каждого уровня (100 / 500 / 1000) опиши:
- Что произойдёт — где копятся очереди, растёт latency, исчерпываются ресурсы
(CPU, память, пул соединений к БД, файловые дескрипторы, лимиты внешних API, диск). - Узкое место — что упрётся в потолок первым и при каком примерно числе пользователей.
- Назови компонент, который ляжет первым, и почему.
- Для каждого слабого места дай конкретное решение
(очередь/воркеры, кэш, пул соединений, rate limiting, бэкпрешер,
горизонтальное масштабирование, перевод синхронного флоу в асинхронный)
с оценкой эффекта и сложности внедрения.
Приоритизируй рекомендации: что даст наибольший прирост устойчивости при наименьших усилиях.