7 кроків — збережіть, знадобиться, коли агент скаже «код став чистішим».
1. Зафіксуйте версію інструмента. «До» і «після» порівнювані лише на одній версії: голий npx jscpd може підхопити закешовану стару, а вона рахує інакше.
npx jscpd@5.3.1 --health --reporters ai .
2. Зніміть baseline у чистому чекауті, без локальних файлів. Запишіть health і три субоцінки: duplication, dead-code, complexity. Найнижча з них — це місце, куди йти першим.
3. Поставте скіл, який задає процедуру, а не побажання:
npx skills add https://github.com/kucherenko/jscpd --skill codebase-refactoring
4. Промпт — чотири речі й жодного прикметника: зробити рефакторинг за скілом, прогнати jscpd --health до й після, описати результат, задокументувати перебіг. «Зроби код чистішим» — не інструкція, бо в ній немає міри.
5. Цикл, який має тримати агент: тести навколо коду, який чіпає (немає — спершу характеризаційні) → один крок — одне перетворення → тести → окремий коміт → свіжий замір у чистому git worktree. І знову.
6. Перевіряйте докази, а не звіт. Після кожного коміту: оцінка зрушила? тести зелені? білд збирається? модулі імпортуються? Кожну знахідку dead-code агент має підтвердити кодом, а не видаляти заради числа: в моєму проході 596 знахідок лишились на місці, а оцінка все одно зросла з 86 до 95.
7. Знайте, де зупинитись. cx не впав — код просто переїхав. Файл без тестів — не чіпати, поки їх немає. У мене агент зупинився перед middleware на 6 388 рядків — і це було правильно.
Що очікувати: перший прохід дорогий — на 200 000 рядків це 12 комітів і 50 (D) → 61 (C). Далі той самий замір запускається після кожної зміни агента, і рефакторинг тримайте окремо від фічевих дифів.
Повний розбір з таблицею по кожному коміту — у статті на DOU: https://dou.ua/forums/topic/62369/
🔥 — зберіг
👀 — перешлю тімліду
👏 — вже так роблю