Раз уже Cursor викотив свій режим планування зі збереженням у файл, то я вирішив дополірнути й викласти свій набір правил для Cursor. Він склався з роботи над кількома десятками проєктів і тепер успішно (ніби) використовується в парі компаній. Використовувався і для коду, і для інфраструктури (Terraform, Ansible, Helm).
Основна ідея — працювати разом з агентом, зберігаючи контроль над процесом і виступаючи guardrail’ом між стадіями, явно перемикаючи їх через @task-*.
Ключові принципи:
- уніфікація інструкцій (в процесі): налаштування нового проєкту має зводитися до вибору правил і правки
main.mdc; - розділення інструкцій на типи:
task-*[Apply Manual] — етапи роботи над задачею;rules-*[Always Apply] — правила роботи: TDD, code style тощо;docs-*[Always Apply] — правила ведення документації;run-commands.mdc[Always Apply] — опис консольних команд для обслуговування проєкту;howto-*[Apply Intelligent] — автоматичні інструкції для ситуативних задач, які можуть виникати у моделі в процесі роботи;
- документація як довга пам’ять агента:
- вся документація проєкту має бути в репозиторії;
- два варіанти схеми документації: cline-bank (7 файлів) і спрощена (Software Requirements Specification + Software Design Specification, 4 файли);
- документація в компактному стилі, і є окрема задача для її компактизації;
- збереження поточної задачі у файл (
./documents/whiteboard.md) для передачі між чатами й стадіями; - максимальний автоматичний контроль регресії: вся перевірка проєкту зводиться до однієї команди (
./run check), щоб агент не міг виконати лише частину перевірок; вона ж використовується в CI; - єдиний список виклику всіх команд проєкту (
./run).
Інструкції далекі від ідеальних і поки немає часу на окреме допилювання, але воно працює — і працює сильно краще, ніж гола IDE.