Промпты для Cursor: 7 шаблонов с проверкой
Хороший промпт для Cursor — это контекст (файл, ветка, что уже пробовали) + одна цель + ограничения + формат ответа + проверка (lint/test или явный критерий «готово»). Ниже — семь шаблонов, которые я гоняю с учениками, с антипримерами.
Почему «почини» взрывает diff
Чаще всего вижу одно: Agent получает «сделай нормально» и чинит «заодно» соседние модули. Потом час на откат. Проблема редко в модели — ей не дали границ и definition of done.
Cursor читает открытые файлы, `.cursor/rules` и историю. Пустоты заполняет сам. Промпт — ТЗ на одну итерацию, не заклинание.
| Симптом | Первый фикс |
| --- | --- |
| Правки не там | `@файл` + символ |
| «Сделал», но не работает | Команда теста в промпте |
| Разросся diff | Одна цель на чат |
| Повторяет ошибку | «Попытка 1 → результат» |
Формула CGCFV без аббревиатурной магии
1. **Контекст** — ветка, `@`, stderr, issue.
2. **Цель** — одно действие.
3. **Ограничения** — что нельзя.
4. **Формат** — diff / план / таблица.
5. **Проверка** — команда или ручной сценарий.
Постоянные запреты — в rules. В чате оставляю цель и проверку.
Семь шаблонов
### 1. Баг
```
Контекст: @src/auth/login.ts, падает тест «invalid password».
Цель: починить без регрессии валидного пароля.
Ограничения: не трогать types.ts, без новых зависимостей.
Формат: только login.ts + 2–3 предложения «что было не так».
Проверка: npm test -- login.test.ts
```
Антипример: «Почини логин».
### 2. Рефакторинг
```
Контекст: OrderForm.tsx, дубль валидации 40–90.
Цель: хук useOrderValidation без смены UI/пропсов.
Ограничения: не трогать стили и экспорты.
Формат: план из 3 шагов → после «ок» diff.
Проверка: npm run lint && npm test -- OrderForm
```
### 3. Тесты
```
Контекст: formatPrice без покрытия.
Цель: граничные кейсы 0 / negative / big / null.
Ограничения: Vitest, не менять реализацию.
Проверка: npx vitest run price.test.ts
```
Без «не менять прод-код» агент подгоняет функцию под тест — ловил это не раз.
### 4. Разбор legacy (Ask)
```
Цель: цепочка CSV → БД, без рефакторинга.
Формат: ≤12 шагов с файлами.
Проверка: каждый шаг указывает файл.
```
### 5. План фичи
```
Цель: план i18n без кода, сравнение 2 библиотек.
Формат: шаг | файл | риск | проверка.
```
### 6. Ревью diff
```
Цель: findings high/medium/low по @src/notifications/*.
Ограничения: не править код в том же чате.
```
### 7. Документация API
```
Цель: JSDoc + пример Postman для handleStripeEvent.
Ограничения: не менять логику, ≤15 строк на блок.
```
Ошибки после шаблона
Ask и Agent в одном чате. Нет git checkpoint. Промпт-простыня. Проверка «на глаз». Копипаст чужих путей.
Рабочий цикл у меня: промпт → прогон проверки → уточнение фактами. Три итерации без прогресса — режу цель.
Полная версия с таблицами и FAQ: https://vaybkoder.ru/blog/prompty-dlya-cursor/