Собираем рабочие промпты для вайбкодинга: шаблоны и примеры

Коротко
Вайбкодинг — не «магическая фраза», а дисциплина: чёткая задача, границы среды, формат результата и проверка качества. В материале — структура промпта, шаблоны для Cursor и Claude Code, примеры под веб‑приложения и агентов, CONFIG‑блок. В финале — чеклист приёмки кода и таблица ограничений платформ.
Введение — зачем это нужно и как устроен вайбкодинг
Чтобы AI‑IDE вроде Cursor и Claude Code выдавали рабочий код и быстрый PR, им нужен понятный бриф: что именно сделать, в каких границах и в каком формате вернуть результат. Подход держится не на «магической формулировке», а на дисциплине: чёткая постановка задачи, описанные ограничения среды (артефакт или проект), ожидаемый формат и явные проверки качества. Такой промпт сокращает число итераций, экономит токены и даёт предсказуемый итог.

В материале — структура рабочего промпта, примеры для Cursor и Claude Code, готовые заготовки под веб‑приложения, шаблоны под агентов, CONFIG‑блок и чеклист для приёмки кода от AI. В конце — сравнительная таблица инструментов и статическая форма‑генератор, чтобы сразу копировать и запускать работу.
Почему из промпта выходит слабый код: 7 типичных ошибок
Коротко: модель домысливает всё, чего вы не уточнили. Типовые промахи и что с ними делать:
- Нет контекста домена и стека
- Ошибка: «Сделай калькулятор цен» — без указания валюты ₽, точности, налогов.
- Исправление: зафиксируйте стек (Next.js + PostgreSQL в Yandex Cloud), локаль ru‑RU, формат дат dd.mm.yyyy, требования по доступности (ARIA) и бизнес‑правила.
- Путаете артефакт vs проект (песочница)
- Ошибка: просите переписать 5 файлов в артефакте, где разрешён один self‑contained файл без IO/сети.
- Исправление: явно задавайте режим. Для песочницы — single‑file, без сетевых вызовов; для проекта — перечислите директории, формат диффа и ограничения по файлам.
- Не фиксируете версии и «границы мира»
- Ошибка: «установи библиотеку X» в закрытой корпоративной сети.
- Исправление: опишите версии Node/PNPM, доступные реестры, локальные зеркала, лимиты токенов/запросов, доступ к CDN.
- Смешиваете несколько целей в одном запросе
- Ошибка: «Сгенерируй архитектуру, напиши тесты и задеплой» в одной реплике.
- Исправление: один промпт — один минимальный инкремент. Для больших задач попросите план, дальше выполняйте шаги последовательно.
- Не задаёте формат вывода
- Ошибка: длинная «болтовня» без пригодных к копированию блоков кода.
- Исправление: требуйте строгое форматирование: только diff/patch, только JSON или список изменённых файлов.
- Нет критериев приёмки
- Ошибка: «сделай быстрее». Сколько — непонятно.
- Исправление: зафиксируйте метрики: TTFB < 200 мс, размер бандла < 200 КБ, Lighthouse A11y ≥ 90, Postgres‑запрос ≤ 100 мс.
- Игнорируете безопасность и приватность
- Ошибка: секреты в коде, отсутствие валидации ввода.
- Исправление: выносите секреты в переменные окружения, опишите политику PII, правила логирования и проверки на prompt injection.
Базовая структура рабочего промпта (Контекст / Задача / Ограничения / Формат)
Коротко: рабочий промпт = Контекст → Задача → Ограничения → Формат ответа → Проверки.
Шаблон для copy&paste (универсальный для Cursor/Claude Code):
{
"role": "Вы senior full‑stack engineer. Пишите кратко, без воды.",
"context": {
"stack": ["Next.js 14", "TypeScript", "PostgreSQL", "Yandex Cloud"],
"domain": "B2B инструмент ценообразования для ₽, локаль ru-RU, дата dd.mm.yyyy",
"repo_rules": {
"mode": "project|artifact",
"allowed_paths": ["app/", "lib/", "tests/"],
"forbidden_paths": ["node_modules/", "dist/"]
}
},
"task": {
"summary": "Минимальный инкремент: один экран с формой и валидацией, сохранение в БД",
"input": "JSON payload формы",
"output": "Pull Request или patch‑дифф"
},
"constraints": {
"network": "off в артефакте, в проекте — только корпоративные домены",
"performance": {"ttfb_ms": 200, "bundle_kb": 200},
"security": ["sanitize input", "no secrets in code"],
"a11y": ["ARIA", "контраст ≥ 4.5:1", "клавиатурная навигация"]
},
"format": {
"style": "ONLY_PATCH",
"include": ["список изменённых файлов", "комментарий к каждому изменению"],
"exclude": ["лишний текст", "скриншоты"]
},
"checks": [
"юнит‑тесты на ключевые функции",
"линтеры без ошибок",
"миграция Postgres"
]
}
Про CONFIG‑блок в коде. Добавляйте в начало артефакта или файла манифест с параметрами:
/* CONFIG
name: "pricing-form"
mode: "artifact" // или "project"
locale: "ru-RU"
currency: "RUB"
date_format: "dd.MM.yyyy"
limits: { tokens_per_iter: 3000, files_editable: 1 }
notes: ["decimal.js для расчётов", "без сетевых вызовов"]
*/
Зачем: модель видит границы среды и правила, а вы экономите итерации и токены.

Промпты для вайбкодинга: быстрый старт и практика
Дальше — рабочие примеры под реальные сценарии. Их можно вставлять в Cursor, Claude Code и другие AI‑IDE. В конце раздела — заготовки под веб‑приложения.
Быстрый старт: 5 шаблонов промптов для начала проекта (copy&paste)
Промпт: генерация архитектуры проекта
Вы — Principal Engineer. Цель: предложить архитектуру проекта Next.js 14 + TypeScript + PostgreSQL (Yandex Cloud), домен: B2B калькулятор цен в ₽, локаль ru‑RU, дата dd.mm.yyyy.
Ограничения:
- mode: project, менеджер: pnpm, формат ответа: только markdown‑codeblock с деревом директорий и файлами, затем список зависимостей с версиями.
- Без внешних сетевых вызовов. БД — PostgreSQL. Миграции через SQL.
- Без демо‑данных, сразу подготовить scaffolding для unit‑тестов.
Выход:
1) Дерево директорий (app/, lib/, db/, tests/)
2) Список ключевых модулей и их ответственность
3) Минимальный pipeline: линтер, тесты, сборка
4) Риски и trade‑offs (кратко)
Промпт: первый файл / single‑file артефакт
mode: artifact. Стек: чистый JS + HTML. Задача: сделать виджет расчёта цены в ₽ с НДС, точность до копейки. Используйте decimal.js, не используйте сетевые вызовы. Локаль: ru‑RU, dd.mm.yyyy, доступность: ARIA.
Формат ответа: один код‑блок с полным самодостаточным HTML+JS. Вверху поместите CONFIG‑блок с locale, currency, precision:2. Валидация ввода: только числа, запятая и точка. Покройте 3 кейса тестами в комментарии.
Промпты для доработки и рефакторинга (точечные правки)
Промпт: рефакторинг функции
Контекст: TypeScript, функция calculateTotal в lib/pricing.ts, считает сумму в ₽. Проблема: плавающая точка даёт неточные копейки. Замените на decimal.js.
Ограничения: формат ответа — patch (diff) только для lib/pricing.ts и tests/pricing.test.ts. Сохраните сигнатуру функции. Добавьте юнит‑тесты на 3 граничных кейса.
Критерии: сумма и округление по банковскому правилу, 2 знака после запятой.
Промпт: поиск и исправление бага
Стек: Next.js + Postgres. Симптом: при сохранении формы /app/pricing падает 500.
Задача: найдите корень валидации входа (пустая скидка), исправьте обработчик в app/api/pricing/route.ts.
Ограничения: patch только для route.ts и tests/api/pricing.test.ts. Добавьте защиту от SQL‑инъекций, валидацию типов, и возврат 422 с сообщением RU.
Выход: diff + краткое объяснение причины.
Промпты для агентов и мультифайловых изменений (Cursor, Claude Agent)
Агенты (AI agents) полезны, когда задача распадается на шаги с чёткими границами изменений. Используйте промпты с планом и встроенными проверками.
- Пример для Cursor Agent:
Режим: Cursor Agent. Цель: добавить страницу /reports с таблицей заказов и экспортом CSV. Стек: Next.js, Postgres.
Планируй и выполняй по шагам:
1) Обзор текущей структуры app/ и db/
2) Модуль выборки данных с пагинацией (db/reports.ts)
3) Страница app/reports/page.tsx с таблицей, фильтрами по дате (dd.mm.yyyy)
4) Экспорт CSV (серверный обработчик)
5) Юнит‑тесты и e2e‑тест smoke
Ограничения: редактируй только app/reports/*, db/reports.ts, tests/*. Зафиксируй патч. По завершении — сводка изменений и рисков.
- Пример для Claude Code (agent‑like):
Проектный контекст: включи файлы app/, lib/, tests/. Цель: внедрить маскирование ПДн в логах (ФИО, телефон РФ).
Сделай:
- Утилиту maskPII в lib/security.ts с тестами
- Обнови все вызовы логгера, чтобы использовать maskPII
- Добавь правила в SECURITY.md (кратко в ответе)
Формат: список файлов + patch‑дифф. Не меняй публичные API. Покрой кейсы RU‑форматов телефонов и ФИО.
Советы по работе с агентами:
- Требуйте план с контрольными точками и возможностью отката.
- Ограничивайте список разрешённых директорий.
- Просите финальную сводку рисков и TODO на следующий спринт.

Чеклист проверки результата (функциональность, безопасность, тесты, доступность)
Это чеклист для приёмки кода от AI. Добавляйте его в бриф — модель заранее учтёт часть проверок.
Функциональность
- Юнит‑тесты: ключевые функции покрыты, граничные случаи есть.
- Интеграция: happy‑path работает, ошибки обрабатываются, idempotency для POST.
- Локаль: числа/даты в RU, валюта ₽, формат dd.mm.yyyy.
Безопасность
- Валидация ввода, sanitization, строгая типизация.
- Секреты: только .env/сейф, без утечек в код/логи.
- SQL‑инъекции: параметризованные запросы.
- Prompt injection: не исполнять пользовательский текст как инструкции.
Доступность
- ARIA‑атрибуты у интерактивов.
- Контраст ≥ 4.5:1, фокус‑стили видимы, таб‑навигация работает.
- Альтернативы для иконок/графиков, live‑region для ошибок форм.
Производительность
- TTFB < 200 мс на ключевых эндпойнтах.
- Размер бандла < 200 КБ для первого экрана.
- Кэш и компрессия, N+1 исключены, индексы в БД настроены.
Инженерная гигиена
- Линтер/тайпчек чисты.
- Коммиты по правилу Conventional Commits.
- Дифф минимален, в PR — только тема задачи.
Сравнение инструментов и ограничений (таблица: Cursor / Claude / Replit / Windsurf)
Ниже — обзор ключевых различий. Параметры зависят от тарифа/версий; фиксируйте их в вашем CONFIG.
| Платформа | Контекст и файлы | Мультифайл/дифф | Агенты/автодействия | Сеть/песочница | Стоимость/кредиты | Под что подходит |
|---|---|---|---|---|---|---|
| Cursor | Проектный контекст, выбор файлов | Полноценный patch/PR | Agent, шаги/планирование | Проект: как в IDE; артефакт: без сети | Токены по модели, IDE‑фичи | Средние/крупные правки |
| Claude Code | Сильный контекст, чтение многих файлов | Правки по списку файлов | Псевдо‑агент через цепочки | Ограничения сети по настройкам | Кредиты/токены по модели | Анализ и крупные изменения |
| Replit | Онлайн среда/песочница | Ограниченный мультифайл | Базовые | Песочница, выход наружу по настройкам | Токены + compute | Быстрые прототипы |
| Windsurf | Проектный фокус | Дифф и план изменений | Автодействия ограничены | Как локальный проект | Токены по модели | Средние задачи/рефакторинг |
Практический вывод: крупные мультифайловые изменения в Cursor и Claude Code проходят стабильнее, если заранее задать разрешённые директории, формат диффа и чеклист.
Шаблоны для скачивания (JSON/YAML/snippets) и статический генератор
JSON‑шаблон брифа (универсальный)
{
"role": "Senior engineer",
"context": {"stack": ["Next.js", "TS", "Postgres"], "domain": "RU, ₽"},
"task": {"summary": "<что сделать>", "input": "<вход>", "output": "patch|file"},
"constraints": {"mode": "artifact|project", "network": "off|corp", "a11y": true},
"format": {"style": "ONLY_PATCH", "include": ["files", "why"]},
"checks": ["unit", "lint", "perf"],
"notes": ["decimal.js for money"]
}
YAML‑вариант (для .prompt)
role: Senior engineer
context:
stack: [Next.js, TS, Postgres]
domain: [RU, RUB, dd.mm.yyyy]
task:
summary: "<инкремент>"
input: "<входные данные>"
output: patch
constraints:
mode: project
network: corp-only
a11y: true
format:
style: ONLY_PATCH
include: [files, why]
checks: [unit, lint, perf]
notes:
- decimal.js for money
VSCode snippet для «рефакторинг функции»
{
"Refactor with tests": {
"prefix": "refactor-ai",
"body": [
"Контекст: $1 (файл: $2). Проблема: $3.",
"Замените реализацию на безопасную/точную.",
"Ограничения: формат ответа — patch только для $2 и tests/$4.test.ts.",
"Критерии: $5.",
"Добавьте 3 юнит‑теста (граничные кейсы)."
],
"description": "Каркас промпта для точечного рефакторинга"
}
}
Статический генератор (форма‑шаблон для copy&paste)
{
"PROJECT": {"mode": "artifact|project", "stack": "Next.js/TS/Postgres", "locale": "ru-RU"},
"TASK": {"summary": "<что сделать>", "input": "<вход>", "output": "patch|file"},
"LIMITS": {"files": ["app/..."], "network": "off|corp"},
"QUALITY": {"a11y": true, "perf": {"ttfb_ms": 200}},
"CHECKS": ["unit", "lint", "e2e"],
"FORMAT": {"style": "ONLY_PATCH", "include": ["files", "why"]}
}
Инструкция: замените плейсхолдеры, вставьте в начало промпта, затем допишите конкретику по файлам и критериям.
Таблица промптов по задачам (landings, dashboards, internal tools)
| Задача | Каркас промпта (кратко) |
|---|---|
| Landing (B2B услуга) | «Сверстай landing для RU рынка, локаль ru‑RU, формы с валидацией, доступность A11y≥90, без внешних сетей, вывод — один файл или patch, добавь unit‑тесты для утилит форматов дат» |
| Dashboard (операционный) | «Сделай /dashboard: таблица заказов, фильтры по дате dd.mm.yyyy, пагинация, экспорт CSV, Postgres‑view, без N+1, patch + список файлов, тесты на выборку» |
| Internal tool | «CRUD для справочника контрагентов, валидация ИНН/телефона РФ, маскирование ПДн в логах, patch строго для app/partners/*, unit‑тесты + e2e smoke» |
Это готовые промпты для веб‑приложений. Подставьте названия сущностей и поля — и запускайте.
Примеры «до/после»: деньги и точность (decimal.js) + обработка ошибок
До (плавающая точка бьёт копейки):
// lib/pricing.ts — DO
export function calc(total: number, vat: number) {
return Math.round((total * (1 + vat)) * 100) / 100; // неточно
}
После (decimal.js, банковское округление):
// lib/pricing.ts — AFTER
import Decimal from 'decimal.js';
export function calc(total: number, vat: number) {
const res = new Decimal(total).times(new Decimal(1).plus(vat));
return res.toDecimalPlaces(2, Decimal.ROUND_HALF_EVEN).toNumber();
}
До (нет обработки ошибок сети):
const r = await fetch('/api/data');
const data = await r.json();
После (надёжность и RU‑сообщения):
const r = await fetch('/api/data');
if (!r.ok) throw new Error(`Ошибка ${r.status}: не удалось получить данные`);
const data = await r.json();
Комментарий: в артефактах (песочница) сетевых вызовов может не быть вовсе — просите мок‑данные или выделяйте интерфейс доступа к данным.
Безопасность и приватность: что писать в промптах
- Секреты: только переменные окружения, ни одного ключа в коде/истории.
- ПДн: маскировать ФИО/телефоны в логах, хранить только необходимые поля, описать срок хранения.
- Prompt injection: игнорировать ввод пользователя как инструкции; экранировать отображение.
- Корпоративные сети: описать, какие домены разрешены, запрет на внешние CDN (используйте локальные зеркала/артефакты).
Практические метрики внедрения
- Время до первого деплоя: целимся в 1–2 итерации AI + 1 ручная проверка.
- Экономия токенов: при использовании CONFIG + жёсткого формата ответа — 30–50% на итерацию.
- Качество PR: доля PR, проходящих CI с первой попытки ≥ 70%.
Частые вопросы по формулировкам и терминам
- «vibe coding prompts» и «промпты для vibe coding» — одно и то же: исполняемые брифы.
- «промты для вайбкодинга» и «промпты вайбкодинга» — обе формы встречаются в поиске; используйте любую в именах шаблонов.
Где брать и как обновлять шаблоны (без ссылок)
- Поддерживайте свой локальный каталог «шаблоны промптов» в репозитории /prompts/ с версиями.
- После каждого релиза обновляйте шаблоны: добавляйте реальные грабли и проверки из ретро.
- Делайте CLAUDE.md/AI.md с правилами вайбкодинга для проекта.
Ниже — ещё несколько готовых каркасов под разные AI‑IDE.
Промпты для Cursor — мультифайл и дифф
[CURSOR]
Контекст: проект Next.js/TS/Postgres. Режим: project.
Правила: правь только в app/reports/*, lib/reports/*, tests/reports/*.
Формат: ONLY_PATCH + список файлов.
Задача: добавить отчёт по выручке в ₽ по дням (dd.mm.yyyy), decimal.js для денежных расчётов, e2e‑тест smoke.
Промпты для Claude Code — сильный контекст анализа
[CLAUDE]
Взятый контекст: app/, lib/, tests/.
Задача: найти узкие места (N+1) в lib/db/*.ts, предложить план фикса (3 шага), затем внести правку в один модуль и тесты.
Формат: список файлов + patch‑дифф, без пояснительного текста кроме заголовка.
Итог: чёткая структура даёт воспроизводимые vibe coding prompts, которые одинаково работают в разных инструментах.
Частые вопросы
- Чем вайбкодинг отличается от «магических фраз»?
- Подход опирается на дисциплину: контекст домена и стека, чёткая задача, ограничения среды, формат ответа и критерии приёмки. Без этого «удачные фразы» не спасают.
- Когда просить артефакт, а когда — правки в проекте?
- Артефакт — одиночный self‑contained файл без сети и IO. Проект — изменения в репозитории с диффом/PR. Явно указывайте режим и разрешённые пути.
- Как задать формат вывода, чтобы сразу применять результат?
- Требуйте строго: ONLY_PATCH/дифф, JSON или единый файл. Попросите список изменённых файлов и короткие комментарии к правкам — без лишнего текста.
- Что делать с зависимостями и сетевыми ограничениями?
- Фиксируйте версии Node/менеджера пакетов, доступные реестры/зеркала, режим сети (off|corp‑only), лимиты токенов и допустимые домены/CDN.
- Как принимать код от ИИ и не пропустить проблемы?
- Используйте чеклист: функциональность (тесты, локаль), безопасность (валидация, секреты, SQL‑инъекции), доступность, производительность и инженерная гигиена (линтер, минимальный дифф).


