# Структура промпта

← [Раздел](README.md) · [Главная](../README.md)

## Цель

Освоить **каноническую структуру** промпта для Agent mode: чтобы агент понимал цель, границы и критерий завершения.

## Предварительно

- [Контекст и токены](../02-effektivnoe-ispolzovanie/kontekst-i-tokens.md)

## Время

**50–70 минут**

---

## Шесть блоков сильного промпта

| # | Блок | Назначение |
|---|------|------------|
| 1 | **Цель** | Что должно измениться в мире/репо |
| 2 | **Контекст** | @файлы, ссылки, предыстория |
| 3 | **Ограничения** | Стек, стиль, scope, запреты |
| 4 | **Шаги** (опционально) | Порядок, если критичен |
| 5 | **Формат ответа** | Язык, структура отчёта |
| 6 | **Definition of Done** | Как проверить готовность |

Не каждый промпт требует все шесть — но **1, 2, 3, 6** желательны почти всегда.

---

## Блок 1: Цель

Одно предложение, **глагол + объект + (место)**:

| Слабо | Сильно |
|-------|--------|
| «Пофикси auth» | «Исправь 401 при refresh token в `auth/middleware.go`» |
| «Сделай красиво» | «Выровняй отступы в `SettingsPage` по design tokens» |

---

## Блок 2: Контекст

Минимальный набор `@`:

```markdown
Контекст:
- @internal/auth/middleware.go — текущая проверка JWT
- @internal/auth/middleware_test.go — падающий тест TestRefreshExpired
- Ошибка в логах: "token expired at ..."
```

Избегайте «весь проект знаешь» — агент не знает.

---

## Блок 3: Ограничения

Типичные категории:

- **Scope:** «Только пакет `auth`, не трогать `main.go`»
- **Зависимости:** «Без новых npm-пакетов»
- **Стиль:** «Следуй patterns из @.cursor/rules/common-coding-style.mdc»
- **Git:** «Не коммить без моего запроса»
- **Безопасность:** «Секреты только из env»

---

## Блок 4: Шаги

Используйте, когда порядок важен:

```markdown
Шаги:
1. Сначала воспроизведи падение теста.
2. Исправь минимальным diff.
3. Добавь regression test для edge case.
4. Краткий отчёт: причина + что изменилось.
```

Для простых задач шаги избыточны — агент сам спланирует.

---

## Блок 5: Формат ответа

```markdown
Формат:
- Краткий отчёт на русском
- Список изменённых файлов
- Команды для проверки (copy-paste)
```

Для ревью: «Таблица: файл | проблема | severity | рекомендация».

---

## Блок 6: Definition of Done

```markdown
Готово когда:
- `go test ./internal/auth/...` — exit 0
- Нет новых `//nolint` без комментария почему
- Публичные функции с godoc
```

Измеримые критерии бьют «когда будет хорошо».

---

## Полный пример

```markdown
Цель: Исправить 401 при валидном refresh token в auth middleware.

Контекст:
- @internal/auth/middleware.go
- @internal/auth/middleware_test.go — TestRefreshValid падает

Ограничения:
- Только пакет auth
- Без новых зависимостей
- Immutable updates (см. project rules)

Шаги:
1. Запусти падающий тест
2. Минимальный fix
3. Убедись, что остальные тесты auth зелёные

Формат: отчёт на русском + команда проверки

Готово когда: `go test ./internal/auth/...` зелёный
```

---

## Чеклист перед отправкой

- [ ] Цель без слов «нормально», «как надо»
- [ ] Есть хотя бы один `@` или явное «файл X в репо Y»
- [ ] Написано, что **не** делать
- [ ] DoD проверяем автоматически или вручную за <5 мин

---

## Самопроверка

1. Какие четыре блока обязательны «почти всегда»?
2. Приведите пример слабой и сильной цели.
3. Когда нужен блок «Шаги»?
4. Чем DoD отличается от цели?

## Дальше

→ [Техники промптинга](tehniki-promtinga.md)
