# Lab 05: Бриф для рефакторинга с агентом

## Цель

Собрать один практический бриф, который можно дать AI-агенту перед небольшим рефакторингом:
цель, контекст, дизайн-план, критерии приёмки и безопасный цикл проверки.

## Мини-пример

Слабая просьба:

```text
Посмотри этот код и сделай его лучше.
```

Проблема: агент сам выберет, что значит “лучше”: переименует, разобьет на файлы, создаст слой или поменяет тесты,
но не обязательно уменьшит сложность.

## Задание

Выберите маленькую задачу: вынести правила скидки, упростить загрузку файла, собрать ошибки формы в один модуль,
спрятать детали провайдера или уменьшить pass-through слой.

Составьте бриф агенту из пяти частей:

1. цель и пользовательское поведение;
2. контекст и важные файлы;
3. дизайн-план до кода;
4. критерии приёмки;
5. безопасный цикл: маленький шаг, проверка, дифф, вывод.

## Хороший ответ

```text
Нужно уменьшить сложность вокруг расчёта скидки.

Цель:
- внешний сценарий не меняется: пользователь видит корректную скидку и понятную ошибку;
- правила скидки должны быть ближе к одному модулю, а не размазаны по UI и API.

Контекст:
- сначала найди текущие callers расчёта скидки;
- назови публичный интерфейс, через который callers должны получать результат;
- не создавай новый seam, если нет второй реализации или реальной вариативности.

Перед кодом:
- предложи один маленький дизайн-план;
- объясни, какое знание будет спрятано внутри модуля;
- укажи риск pass-through слоя.

Критерии приёмки:
- существующее поведение скидок сохранено;
- недопустимая скидка возвращает понятную ошибку;
- callers знают меньше правил, чем до изменения;
- тесты проверяют публичное поведение;
- дифф не затрагивает unrelated файлы.

Цикл работы:
1. Покажи план.
2. Сделай один маленький шаг.
3. Запусти проверку.
4. Покажи, что изменилось в диффе.
5. Предложи следующий шаг отдельно, если он нужен.
```

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

- В брифе есть цель, а не только команда.
- Есть контекст и границы.
- Есть просьба о дизайн-плане до кода.
- Есть критерии приёмки.
- Есть проверка поведения и диффа.
- Есть защита от scope creep: следующий шаг не смешивается с текущим.
