~/guides/cursorrules-legacy-migration

AI Agents

.cursorrules устарел: как перейти на .cursor/rules с несколькими .mdc файлами

Практическая миграция с плоского .cursorrules на папку .cursor/rules с glob-скоупингом по темам.

Плоский файл .cursorrules был первым форматом инструкций Cursor, но со временем уступил место папке .cursor/rules с отдельными .mdc файлами. Формат по-прежнему работает для обратной совместимости, но считается legacy — новую функциональность вроде точного скоупинга по путям файлов старый формат не поддерживает вообще.

Проблема одного большого файла

Правило про стиль кода фронтенда не должно загружаться в контекст, когда агент правит миграцию базы данных бэкенда — но именно так происходит с одним монолитным .cursorrules, где всё смешано без разбора по области применения.

## Stack
Next.js, TypeScript strict

## Frontend conventions
Use functional components, named exports

## Testing
Run npm test before committing

Как выглядит новая структура

Вместо одного файла — папка с несколькими .mdc, каждый со своим frontmatter:

---
description: Frontend conventions
globs: src/components/**/*.tsx, src/pages/**/*.tsx
alwaysApply: false
---

Use functional components, named exports.

Практический алгоритм миграции

Разбейте старый файл по логическим темам — обычно это уже естественные markdown-заголовки. Для каждой темы определите, привязана ли она к конкретной части кодовой базы (тогда нужен glob) или применима ко всему проекту сразу (тогда alwaysApply true без ограничения путей).

Секция старого файла Куда переносится Настройка
Общий стек и общие принципы Отдельный .mdc alwaysApply: true
Frontend-специфичные конвенции Отдельный .mdc globs по путям фронтенда
Backend-специфичные конвенции Отдельный .mdc globs по путям бэкенда
Правила тестирования Отдельный .mdc alwaysApply: true или свой glob

Частая ошибка при миграции

Скопировать содержимое каждой секции в отдельный файл, но забыть указать glob или alwaysApply вообще — тогда поведение по умолчанию непредсказуемо и может отличаться между версиями Cursor. Явно решите для каждого нового файла, к чему он применяется, а не оставляйте это на волю умолчания.

Автоматизация первого прохода

Разбивать текст руками по секциям и придумывать имена файлов утомительно для сколько-нибудь длинного .cursorrules. .cursorrules to .cursor/rules Migration Splitter делает первый черновой проход автоматически по markdown-заголовкам, glob-паттерны в результате всё равно стоит вручную сверить под структуру конкретного проекта.

Итоговый чеклист

.cursorrules продолжает работать для обратной совместимости, но не поддерживает точный скоупинг по путям файлов — новую функциональность стоит проектировать сразу под .cursor/rules.

Каждый новый .mdc файл должен явно указывать либо glob, либо alwaysApply true — не полагайтесь на неявное поведение по умолчанию.

Автоматическое разбиение по заголовкам — хорошая отправная точка, но glob-паттерны в результате практически всегда требуют ручной доводки.