Погружение в чужой проект — одна из самых трудоёмких частей работы разработчика. Родион, фронтенд-разработчик с опытом в стартапах и на фрилансе, в первый день на новом месте потратил около часа только на то, чтобы понять, где лежат файлы для создания виджета. Задача звучала элементарно, но «исторические особенности» структуры проекта превратили её в квест. Решением стал Cursor — ИИ-редактор кода, который умеет анализировать всю кодовую базу целиком.

Cursor — это не просто чат поверх редактора. При открытии проекта он индексирует файлы: разбивает их на смысловые блоки (функции, классы, экспорты) и превращает в векторные представления. Когда разработчик задаёт вопрос, инструмент ищет релевантные фрагменты по этим индексам и отправляет их в модель вместе с промптом. Под капотом работают ChatGPT, Claude, Deepseek и Grok. Это принципиально отличает Cursor от автодополнения кода в духе GitHub Copilot: он способен рассуждать об архитектуре, а не только дописывать следующую строку.

Неудачный промптУдачный промпт
Исправь эту функциюЭта функция отвечает за авторизацию и падает при пустом токене. Добавь проверку и верни понятную ошибку. Меняй только этот файл
Создай компонентСоздай компонент карточки товара. Проект на React + TypeScript, стили — CSS Modules, именование — PascalCase. Объясни решение в двух предложениях
Объясни архитектуруЯ стажер, работаю два дня. Помоги понять, где файлы и папки, связанные с созданием виджетов

Первый промпт Родиона был намеренно простым: он представился стажером, объяснил, что работает два дня, и попросил разобраться со структурой папок для виджетов. Cursor не написал ни строчки кода, но чётко описал, какой файл за что отвечает, куда добавляются компоненты и где лежат типы. На это ушло меньше минуты. Позже тот же приём сработал с незнакомой функцией на 80 строк без комментариев: за 30 секунд Cursor объяснил логику трансформации и предупредил, что функция используется ещё в трёх местах. Однако когда Родион попробовал тот же подход на модуле с нетривиальной асинхронной логикой, ответ оказался уверенным, но частично неточным — это выяснилось только при ревью сеньора. Cursor хорошо справляется с читаемым кодом, но сложность повышает вероятность галлюцинаций.

Инструмент показывает правки как патч до применения: зелёным — добавляемые строки, красным — удаляемые.

Отдельного внимания заслуживает работа с промптами. Родион выработал четыре правила. Первое — давать контекст: не «исправь функцию», а объяснить, что она делает и почему падает. Без контекста Cursor добавит технически верную заглушку, которая не вписывается в логику обработки ошибок по всему проекту. Второе — указывать границы: явно писать «меняй только этот компонент», иначе инструмент может затронуть смежные модули. Третье — описывать стек и соглашения: React + TypeScript, Zustand для стейта, CSS Modules, ESLint с правилами airbnb. Без этого предложенные решения могут быть корректными сами по себе, но чужеродными для кодовой базы. Четвёртое — просить объяснения: добавление «объясни решение в двух предложениях» помогает оценить правки перед применением.

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

Чтобы не объяснять стек и соглашения в каждом новом диалоге, правила проекта можно зафиксировать в папке .cursor/rules/ в корне репозитория. Файлы с расширением .mdc работают как системный промпт и читаются автоматически при каждом запросе. Создать правило можно через «Cmd+Shift+P → New Cursor Rule». Это особенно полезно в командной работе: один раз описанные соглашения применяются ко всем запросам без дополнительных усилий.

Одно ограничение Cursor стоит учитывать заранее: на больших монорепозиториях или при работе с очень крупными файлами индексация замедляется, а качество предложений падает. Инструмент лучше всего работает на проектах с разумной структурой и читаемым кодом.