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

Схема вайбкодинга: бриф → генерация → проверка → релиз

Коротко

Вайбкодинг — не «магическая фраза», а дисциплина: чёткая задача, границы среды, формат результата и проверка качества. В материале — структура промпта, шаблоны для Cursor и Claude Code, примеры под веб‑приложения и агентов, CONFIG‑блок. В финале — чеклист приёмки кода и таблица ограничений платформ.

Введение — зачем это нужно и как устроен вайбкодинг

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

Четыре шага вайбкодинга: бриф → генерация → проверка → релиз
Четыре шага вайбкодинга: бриф → генерация → проверка → релиз

В материале — структура рабочего промпта, примеры для Cursor и Claude Code, готовые заготовки под веб‑приложения, шаблоны под агентов, CONFIG‑блок и чеклист для приёмки кода от AI. В конце — сравнительная таблица инструментов и статическая форма‑генератор, чтобы сразу копировать и запускать работу.

Почему из промпта выходит слабый код: 7 типичных ошибок

Коротко: модель домысливает всё, чего вы не уточнили. Типовые промахи и что с ними делать:

  1. Нет контекста домена и стека
  • Ошибка: «Сделай калькулятор цен» — без указания валюты ₽, точности, налогов.
  • Исправление: зафиксируйте стек (Next.js + PostgreSQL в Yandex Cloud), локаль ru‑RU, формат дат dd.mm.yyyy, требования по доступности (ARIA) и бизнес‑правила.
  1. Путаете артефакт vs проект (песочница)
  • Ошибка: просите переписать 5 файлов в артефакте, где разрешён один self‑contained файл без IO/сети.
  • Исправление: явно задавайте режим. Для песочницы — single‑file, без сетевых вызовов; для проекта — перечислите директории, формат диффа и ограничения по файлам.
  1. Не фиксируете версии и «границы мира»
  • Ошибка: «установи библиотеку X» в закрытой корпоративной сети.
  • Исправление: опишите версии Node/PNPM, доступные реестры, локальные зеркала, лимиты токенов/запросов, доступ к CDN.
  1. Смешиваете несколько целей в одном запросе
  • Ошибка: «Сгенерируй архитектуру, напиши тесты и задеплой» в одной реплике.
  • Исправление: один промпт — один минимальный инкремент. Для больших задач попросите план, дальше выполняйте шаги последовательно.
  1. Не задаёте формат вывода
  • Ошибка: длинная «болтовня» без пригодных к копированию блоков кода.
  • Исправление: требуйте строгое форматирование: только diff/patch, только JSON или список изменённых файлов.
  1. Нет критериев приёмки
  • Ошибка: «сделай быстрее». Сколько — непонятно.
  • Исправление: зафиксируйте метрики: TTFB < 200 мс, размер бандла < 200 КБ, Lighthouse A11y ≥ 90, Postgres‑запрос ≤ 100 мс.
  1. Игнорируете безопасность и приватность
  • Ошибка: секреты в коде, отсутствие валидации ввода.
  • Исправление: выносите секреты в переменные окружения, опишите политику 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 для расчётов", "без сетевых вызовов"]
*/

Зачем: модель видит границы среды и правила, а вы экономите итерации и токены.

CONFIG‑блок и строгий формат ответа экономят токены
CONFIG‑блок и строгий формат ответа экономят токены

Промпты для вайбкодинга: быстрый старт и практика

Дальше — рабочие примеры под реальные сценарии. Их можно вставлять в 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/PRAgent, шаги/планированиеПроект: как в 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‑инъекции), доступность, производительность и инженерная гигиена (линтер, минимальный дифф).