Работа с крупными кодовыми базами ставит перед нами иные задачи, чем разработка небольших проектов. Опираясь на наш опыт масштабирования собственной кодовой базы Cursor и на опыт клиентов, управляющих огромными репозиториями, мы выделили несколько полезных шаблонов для работы с растущей сложностью. В этом гайде мы разберём техники, которые показали себя полезными для крупных кодовых баз.

Используй Chat, чтобы быстро разобраться в незнакомом коде

Ориентироваться в большом кодовом базе, особенно если она для тебя новая, непросто. Часто приходится грепать, искать и щёлкать по файлам, чтобы найти нужные части кодовой базы. С Chat ты можешь просто начать задавать вопросы, чтобы найти то, что нужно, и получить подробное объяснение, как всё устроено. Здесь мы просим помочь найти детали реализации индексирования кодовой базы в Cursor и даже примеры, чтобы было проще понять.

Пиши правила для знаний, специфичных для домена

Если бы ты онбордил нового участника в свою кодовую базу, какой контекст ты бы дал, чтобы человек сразу мог вносить осмысленный вклад? Твой ответ на этот вопрос, скорее всего, тоже ценная информация для Cursor. В каждой организации или проекте есть неявные знания, которые не всегда полностью отражены в документации. Эффективное использование правил — лучший способ обеспечить, что Cursor получает полную картину. Например, если ты пишешь инструкции по реализации новой фичи или сервиса, добавь короткое правило, чтобы задокументировать это на будущее.
Шаблон
---
description: Добавь новый фронтенд‑сервис VSCode
---

1. **Определение интерфейса:**
   - Определи новый интерфейс сервиса с помощью `createDecorator` и убедись, что `_serviceBrand` добавлен, чтобы избежать ошибок.

2. **Реализация сервиса:**
   - Реализуй сервис в новом файле TypeScript, унаследуй его от `Disposable` и зарегистрируй как singleton через `registerSingleton`.

3. **Подключение сервиса:**
   - Создай contribution‑файл для импорта и загрузки сервиса и зарегистрируй его в главной точке входа.

4. **Интеграция в контекст:**
   - Обнови контекст, чтобы добавить новый сервис и обеспечить к нему доступ во всём приложении.
Если есть типовые шаблоны форматирования, которым ты хочешь, чтобы Cursor всегда следовал, подумай о авто‑подключении правил на основе glob‑паттернов.
Форматирование
---
globs: *.ts
---
- Используй bun как менеджер пакетов. Смотри [package.json](mdc:backend/reddit-eval-tool/package.json) со списком скриптов
- Используй kebab-case для названий файлов
- Используй camelCase для названий функций и переменных
- Используй UPPERCASE_SNAKE_CASE для хардкодно заданных констант
- Предпочитай `function foo()` вместо `const foo = () =>`
- Используй `Array<T>` вместо `T[]`
- Используй именованные экспорты вместо экспорта по умолчанию, например (`export const variable ...`, `export function`)

Держись ближе к процессу планирования

Для крупных изменений стоит потратить больше обычного времени на продуманный, точный и хорошо очерченный план — это может заметно улучшить результат Cursor. Если после нескольких вариантов одного и того же запроса ты всё ещё не получаешь нужный результат, попробуй сделать шаг назад и составить более детальный план с нуля, как будто пишешь PRD для коллеги. Часто самое сложное — понять, какие изменения вообще нужно внести — и это как раз задача для людей. С правильными инструкциями часть реализации можно поручить Cursor. Один из способов использовать ИИ для усиления процесса планирования — режим Ask. Чтобы создать план, включи в Cursor режим Ask и выгрузи любой контекст, который у тебя есть: из систем управления проектами, внутренних документов или разрозненных мыслей. Подумай, какие файлы и зависимости в кодовой базе ты уже точно хочешь включить. Это может быть отдельный файл с фрагментами кода, с которыми нужно интегрироваться, или даже целая папка. Вот пример запроса:
Промпт для планирования
- составь план, как мы будем реализовывать новую фичу (по аналогии с @existingfeature.ts)
- задай мне вопросы (не более 3), если что-то непонятно
- обязательно проверь кодовую базу

@Прошлые чаты (мои ранние исследовательские промпты)

вот дополнительный контекст из [project management tool]:
[вставленное описание тикета]
Мы просим модель составить план и собрать контекст: задавать вопросы человеку, ссылаться на ранние исследовательские промпты и на описания тикетов. Рекомендуется использовать мыслящие модели вроде claude-3.7-sonnet, gemini-2.5-pro или o3, поскольку они лучше понимают намерения изменений и качественнее синтезируют план. На основе этого ты можешь итеративно проработать план с помощью Cursor перед началом реализации.

Выбирай подходящий инструмент под задачу

Одно из самых важных умений для эффективной работы в Cursor — выбирать правильный инструмент под конкретную задачу. Подумай, чего хочешь добиться, и выбери подход, который не выбьет тебя из потока.
ToolUse caseStrengthLimitation
TabБыстрые ручные измененияПолный контроль, высокая скоростьОдин файл
Inline EditТочечные изменения в одном файлеСфокусированные правкиОдин файл
ChatКрупные, многофайловые измененияАвтосбор контекста, глубокие правкиМедленнее, требует контекста
У каждого инструмента есть свои сильные стороны:
  • Tab — твой выбор для быстрых правок, когда хочешь сам рулить процессом
  • Inline Edit отлично подходит, когда нужно точечно изменить конкретный участок кода
  • Chat идеален для крупных изменений, когда важно, чтобы Cursor понимал более широкий контекст
Когда используешь Chat (он может казаться чуть медленнее, но невероятно мощный), помоги ему помочь тебе — дай хороший контекст. Используй @files, чтобы указать на похожий код, который хочешь повторить, или @folder, чтобы дать лучшее понимание структуры проекта. И не бойся разбивать крупные изменения на небольшие части — новые чаты помогают держать фокус и работать эффективнее.

Выводы

  • Сужай изменения по объёму и не пытайся охватить всё сразу
  • Добавляй уместный контекст, когда это возможно
  • Используй Chat, Inline Edit и Tab по их сильным сторонам
  • Чаще создавай новые чаты
  • Планируй в Ask mode, реализуй в Agent mode