legacy-characterizelisted
Install: claude install-skill DanielLetto2020/vibe-rules
# Легаси: сначала зафиксировать, потом менять
К старому коду нельзя применить обычный конвейер: там нет спецификации,
поведение неизвестно и частично случайно. Попытка «написать нормальные тесты»
проваливается, потому что неизвестно, что счи��ать правильным.
Решение: **сама текущая система становится эталоном.**
Главный принцип, нарушение которого обесценивает всю работу:
> Агент строит эталон и обслуживает его, но никогда не является эталоном.
> Что считать правильным поведением — решает человек или существующая система,
> но не модель.
## 1. Определи границу
Выбери узкий кусок: один класс, один эндпоинт, одну команду. Найди его вход
и выход. Если у куска нет наблюдаемой границы — сначала вынеси её, не меняя
логику.
Не пытайся охватить весь модуль сразу: характеризационный тест на 200 строк
вывода невозможно чинить, когда он покраснеет.
## 2. Зафиксируй поведение как есть
Прогони код на реальных входах и **запиши выходы как эталон**, не оценивая,
правильные они или нет.
```
Вход → [существующий код] → Выход
└── сохраняется как эталон
```
Правило, которое нарушают чаще всего: **если поведение выглядит багом — оно
всё равно фиксируется.** Задача этого шага не улучшить систему, а поймать её
в текущем состоянии. Баги чинятся потом, отдельно и осознанно.
Найденные странности выпиши списком и покажи пользователю. Не чини их сейчас.
## 3. Набери входы, а не придумай
Источники реальных входов, по убыванию ценности:
- продовые логи и запи