Раз уж cursor выкатил свой режим планирования с хранением в файле, то решил допричесать и выложить свой набор правил для cursor. Он сложился из работы над парой десятков проектов и теперь успешно (вроде бы) используется в паре компаний. Использовался и для кода, и для инфраструктуры (Terraform, Ansible, Helm).
Основная идея в том, чтобы работать совместно с агентом, сохраняя контроль над процессом и выступая guardrail’ом между стадиями, явно переключая их с помощью @task-*.
Ключевые принципы:
- унификация инструкций (в процессе): настройка нового проекта должна сводиться к выбору правил и правке
main.mdc; - разделение инструкций на типы:
task-*[Apply Manual] — этапы работы над задачей;rules-*[Always Apply] — правила работы: tdd, code style, etcdocs-*[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.