Генератор

Как писать промпты для Cursor: структура, где писать и готовые шаблоны

Промт для Cursor пишут в панели агента (Cmd+I на Mac, Ctrl+I на Windows и Linux). Рабочий промт отвечает на пять вопросов: что сделать, где в коде, чего не трогать, в каком виде показать результат и как проверить. Для крупной задачи сначала включите режим Plan, для вопросов без правок — Ask. Ниже шаблоны под новую функцию, баг, рефакторинг, тесты, разбор чужого кода, старт проекта и вёрстку страницы.

Инструменты

Промт для Cursor — это не заклинание и не длинное письмо. Это короткое техническое задание агенту, который сам открывает файлы, правит код и запускает команды. Чем точнее вы обозначите цель, границы и проверку, тем меньше правок придётся откатывать.

Ниже — где писать промт, как он выглядит, какой режим выбрать, как давать контекст и что выносить в правила. Шаблоны можно копировать, они собраны под частые задачи. Интерфейс описан по документации Cursor (cursor.com/docs), сверенной 12 октября 2026 года. Названия кнопок могут меняться между версиями, поэтому, если что-то не совпадает, смотрите официальные доки.

Где писать промт в Cursor#

Основное место — панель агента. Она открывается сочетанием Cmd+I на Mac или Ctrl+I на Windows и Linux. В поле ввода этой панели и пишется промт. Там же:

  • переключается режим — выпадающим списком или клавишами Shift+Tab;
  • подключаются файлы, папки, вывод терминала и прошлые чаты через @;
  • выбирается модель (список над полем ввода);
  • вставляется скриншот — перетаскиванием или из буфера обмена.

Второе место — правила проекта. Это тоже промт, только постоянный: Cursor добавляет текст правил в начало контекста модели. Подробнее — в разделе «Промт или правило» ниже.

Как установить сам Cursor, описано в карточке Cursor и в официальной документации.

Почему обычный промт не работает#

Чаще всего промт для Cursor пишут одной фразой: «сделай лендинг для моего сервиса» или «почини форму». Результат непредсказуем: агент сам выбирает стек, структуру и детали, а вы потом переписываете то, что он додумал.

Проблема обычно не в Cursor, а в промте. Агент — исполнитель. Ему нужно короткое техническое задание, а не пожелание. Дальше — как такое задание выглядит.

Как выглядит промт для Cursor: плохой и хороший пример#

Возьмём одну задачу: на сайте форма заявки отправляется даже с пустым телефоном.

Плохой промт:

txt
Почини форму, она плохо работает.

Агент не знает, какую форму, что значит «плохо» и когда остановиться. Он начнёт искать сам, может поправить не то и не скажет, как убедиться, что стало лучше.

Хороший промт:

txt
Цель: форма заявки не должна отправляться, если поле «Телефон» пустое
или в нём меньше 10 цифр. Показывай ошибку под полем.
Где: @src/components/LeadForm.tsx
Не трогай: стили формы и другие компоненты.
Результат: покажи дифф и одной фразой объясни, что изменил.
Проверка: запусти npm test и npm run build, пришли вывод.

Разница не в длине, а в том, что у второго промта есть ответ на каждый вопрос, который агент иначе решал бы наугад.

Формула промта из пяти частей#

Удобно держать в голове пять строк. Не все обязательны в каждой задаче, но если какой-то нет, спросите себя, догадается ли агент сам.

ЧастьЧто писатьПример
Цельчто должно получиться, в терминах поведения«кнопка "Купить" неактивна, пока корзина пуста»
Гдефайлы и папки через @, если вы их знаете@src/cart/
Ограничениячто не менять, какие библиотеки не добавлять«без новых зависимостей, API не трогай»
Результатв каком виде отчитаться«дифф + список изменённых файлов»
Проверкакоманда или сценарий, который покажет успех«npm test, затем открой /cart и проверь кнопку»

Последняя строка — самая недооценённая. В руководстве команды Cursor по работе с агентами прямо сказано: агент не исправит то, о чём не знает, поэтому ему нужен проверяемый сигнал — тесты, типы, линтер. Документация Claude Code советует то же самое: дать агенту проверку, которая возвращает «прошло / не прошло», и просить показать доказательство (вывод команды), а не слово «готово».

Режимы Cursor: какой промт для какого#

По документации Cursor у агента четыре встроенных режима. Переключаются они в одном поле, Shift+Tab перебирает их по кругу.

РежимЧто делаетКогда братьПервая фраза промта
Agentправит файлы, запускает командызадача понятна и небольшая«Добавь…», «Исправь… и запусти тесты»
Askтолько читает код и отвечает, без правокразобраться в проекте или чужом коде«Объясни, как устроена авторизация…»
Planзадаёт уточняющие вопросы, изучает код и пишет план, который можно отредактировать до запускабольшая задача, много файлов, несколько вариантов решения«Составь план, как добавить…»
Debugвыдвигает гипотезы, добавляет логи, просит воспроизвести баг и чинит по фактамбаг воспроизводится, но причина неясна«Ошибка: … Шаги воспроизведения: …»

Пара практических следствий из документации:

  • Plan перед кодом. План открывается как Markdown-файл, его можно поправить руками. Если агент построил не то, Cursor советует не латать результат новыми промтами, а откатить изменения, уточнить план и запустить его заново. Готовый промт для этого шага — «сначала план».
  • Debug любит подробности. Чем точнее описаны шаги воспроизведения, ожидаемое и фактическое поведение, тем полезнее логи, которые агент расставит.

Как давать контекст: @ вместо копипасты#

Наберите @ в поле ввода, и Cursor предложит, что прикрепить:

  • файлы и папки — @auth.ts, @src/components/;
  • @Terminals — вывод терминала, например текст ошибки сборки;
  • @Chats — контекст прошлого разговора;
  • @Commit (Diff of Working State) — ваши незакоммиченные изменения, @Branch (Diff with Main) — весь дифф ветки;
  • @Browser — содержимое встроенного браузера.

Два правила, которые прямо следуют из документации:

  1. Знаете файл — отметьте его. Не знаете — не гадайте. Агент сам ищет по проекту. Лишние файлы в контексте только сбивают его с толку.
  2. Не вставляйте код простынёй. Ссылка через @ короче и всегда актуальна, а вставленный кусок устаревает после первой же правки.

Скриншот — тоже контекст. Для вёрстки и визуальных багов его часто проще вставить, чем описать словами.

Отдельно про длину разговора. У чата фиксированное окно контекста. Когда оно заполняется, Cursor сжимает старые сообщения в краткое резюме, и детали теряются. Поэтому на новую задачу открывайте новый чат, а если нужен прошлый контекст, подключите его через @Chats.

Шаблоны промтов для Cursor#

В квадратных скобках — то, что нужно заменить. У каждого шаблона указан режим и то, как проверить результат.

Новая функция

Режим: Plan, если затронуто больше пары файлов; иначе Agent.

txt
Цель: [что должен уметь пользователь после изменения].
Где: [@файлы или @папка, если знаешь; иначе найди сам и перечисли файлы до правок].
Как сейчас устроено похожее: [@пример существующего компонента или модуля] — следуй этому образцу.
Не трогай: [модули, публичный API, стили].
Без новых зависимостей, если без них можно обойтись.
Результат: список изменённых файлов и дифф.
Проверка: [команда тестов / сборки]; пришли вывод.

Что получится: изменение в стиле уже существующего кода, а не «своя архитектура» агента.

Исправить ошибку

Режим: Agent; если причина неясна — Debug.

txt
Ошибка: [текст ошибки или @Terminals].
Где проявляется: [страница, команда, шаги воспроизведения].
Ожидаю: [как должно быть]. Сейчас: [как есть].
Сначала назови 2–3 гипотезы причины и проверь их, потом правь.
Не глуши ошибку try/catch и не отключай проверки — найди причину.
Проверка: [команда или шаги], пришли вывод.

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

Рефакторинг без изменения поведения

Режим: Plan, затем Agent.

txt
Задача: [вынести логику / разбить файл / переименовать] в [@файл].
Поведение не меняется: те же входы — те же выходы, тот же публичный API.
Сначала запусти [команда тестов] и запомни результат.
Делай шагами, после каждого шага снова запускай тесты.
Тесты не правь и не удаляй. Если тест мешает — остановись и спроси.
Результат: краткий список шагов и итоговый дифф.

Что получится: изменения маленькими порциями, каждая подтверждена тестами.

Написать тесты

Режим: Agent.

txt
Напиши тесты для [@файл], сценарий: [какой случай, например «пользователь вышел из аккаунта»].
Используй тот же стиль и фреймворк, что в [@папка с тестами].
Без моков там, где можно проверить реально.
Код [@файл] не меняй. Если тест падает из-за бага в коде — опиши баг, но не чини.
Проверка: запусти только новые тесты, пришли вывод.

Так советуют и в Cursor: вместо «добавь тесты для auth.ts» назвать конкретный случай, указать образец в проекте и попросить обойтись без моков. Если хотите идти от тестов, разделите работу на два промта: сначала тесты, которые падают, потом код, который их проходит, с запретом трогать тесты.

Объяснить чужой код

Режим: Ask.

txt
Объясни, как работает [функция / поток / модуль] в [@файл или @папка].
Нужно: по шагам, с путями файлов и названиями функций.
Отдельно: какие внешние сервисы и переменные окружения используются.
Ничего не меняй.

Что получится: карта кода, по которой потом удобно писать промт для правки.

Первый промт нового проекта по ТЗ

Режим: Plan.

txt
Прочитай ТЗ: [@docs/spec.md].
1. Задай вопросы по всему, что неясно или противоречиво. Не пиши код.
2. После ответов составь план: структура проекта, шаги, у каждого шага — критерий готовности.
3. Правила проекта (стек, команды, запреты) предложи вынести в AGENTS.md.
Начнём с первого шага только после моего «ок».

Сам текст ТЗ лучше собрать заранее: шаблон есть на странице ТЗ для нейросети, а промт для первого шага с разбором — «сначала план». Если проект — сайт или бот, загляните в задачи: там цепочка от ТЗ до результата.

Вёрстка страницы или лендинга

Режим: Plan. Этот шаблон — развитие первой версии этой статьи: тогда мы разбирали промт для лендинга из пяти элементов, и они по-прежнему работают.

txt
Контекст: [что за проект и для кого]. Стек: [например, Astro или Next.js, Tailwind].
Структура страницы, блоки по порядку:
1. Шапка: [логотип, пункты меню, кнопка].
2. Первый экран: заголовок «[текст]», подзаголовок «[текст]», кнопка «[текст]» → [куда ведёт].
3. [Следующий блок: что в нём, сколько карточек].
...
Для каждого блока: тексты как указано, без «рыбы»; вёрстка от 360 px до десктопа;
семантические теги (header, main, section, footer), один h1 на странице.
Оформление: цвета [основной, фон, акцент], шрифт [название], скругления [есть / нет].
SEO: title «[текст]», description «[текст]», alt у всех изображений.
Не делай: [онлайн-оплату, личный кабинет, анимации — что не нужно].
Сначала покажи план файлов. Проверка: npm run build без ошибок, страница
нормально выглядит на ширине 360 px.

Что получится: страница с теми блоками и текстами, которые вы задали, а не с теми, что агент посчитал типичными. Полная цепочка от структуры до публикации — в промте для создания сайта и на странице как сделать сайт с помощью нейросети.

Промт или правило: что вынести, чтобы не повторять#

Если вы третий раз пишете в промте «у нас TypeScript, тесты через vitest, не добавляй библиотеки», это пора вынести в правила. Модель не помнит прошлые разговоры, а правила Cursor подставляет в начало контекста каждый раз.

Варианты по документации Cursor:

  • Project Rules — файлы .mdc в папке .cursor/rules, хранятся в репозитории. Можно сделать правило всегда активным, привязать к маске файлов (например, только к src/components/**/*.tsx), дать агенту подключать его по описанию или вызывать вручную через @.
  • AGENTS.md — обычный Markdown в корне проекта, более простая альтернатива .cursor/rules. Тот же файл понимают и другие агенты, подробнее — на странице AGENTS.md.
  • User Rules — ваши личные правила для всех проектов.

Создать правило можно прямо из чата командой /create-rule. Что туда класть, команда Cursor формулирует коротко: команды сборки и тестов, принятые в проекте шаблоны, ссылки на образцовые файлы. Чего не класть: весь стайлгайд (для этого есть линтер), описание каждой команды и правила под редкие случаи. Добавлять правило стоит тогда, когда агент повторяет одну и ту же ошибку.

Пусть агент сам составит AGENTS.md по вашему проекту: для этого есть отдельный промт.

Как писать промты эффективно: семь частых ошибок#

  1. Слишком общий запрос. «Сделай форму лучше» — агенту не на что опереться. Опишите поведение: что должно происходить и когда.
  2. Всё сразу. Пять задач в одном промте — и половина будет сделана поверхностно. Одна задача — один промт, большая задача — через Plan.
  3. Нет критериев готовности. Агент останавливается, когда ему кажется, что всё готово. Напишите, по какому признаку работа считается законченной.
  4. Нет запретов. Если что-то трогать нельзя (стили, API, тесты, конфиги), скажите об этом прямо. Иначе агент может «улучшить» и это.
  5. Один бесконечный диалог. После многих сообщений и сжатий контекст засоряется. Новая задача — новый чат, прошлое подключайте через @Chats.
  6. Нет команды проверки. Без npm test, сборки или сценария вы сами становитесь проверкой и ловите ошибки после агента.
  7. «Сделай красиво». Вкус не передаётся словом «красиво». Дайте скриншот, образец на сайте или конкретные требования: отступы, цвета, поведение на мобильном.

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

Чек-лист перед отправкой промта в Cursor#

  • Выбран режим: Ask для вопросов, Plan для большой задачи, Agent для понятной правки, Debug для неясного бага.
  • Цель описана как поведение: что должно происходить и когда.
  • Нужные файлы отмечены через @, лишние не подключены.
  • Указано, что трогать нельзя.
  • Есть критерий готовности и команда проверки.
  • Сказано, в каком виде нужен результат: дифф, список файлов, короткое объяснение.
  • Повторяющееся (стек, команды, запреты) вынесено в правила, а не переписано в промт.
  • Промт разбит на строки или пункты, а не написан сплошным текстом.

Что ещё почитать#

Источники: документация Cursor об агенте, о промтах и @-упоминаниях, о режиме Plan, о режиме Debug, о правилах, справка о режиме Ask; руководство Cursor «Best practices for coding with agents»; рекомендации Anthropic для Claude Code.

Вопросы и ответы

Где писать промт в Cursor?

В поле ввода панели агента. Открыть её можно сочетанием Cmd+I на Mac или Ctrl+I на Windows и Linux. В том же поле переключаются режимы (Shift+Tab или выпадающий список), подключаются файлы через @ и вставляются скриншоты.

Как выглядит хороший промт для Cursor?

Это несколько коротких строк: цель, место в коде (файлы через @), ограничения, формат результата и команда проверки. Например: «Добавь валидацию email в @src/forms/signup.ts, другие формы не трогай, после правки запусти npm test и покажи вывод».

Чем промт для режима Agent отличается от вопроса в Ask?

Ask работает только на чтение: агент изучает код и отвечает, но ничего не меняет. В Agent он правит файлы и запускает команды, поэтому промту нужны границы (что не трогать) и способ проверки. Если вы пока не знаете, что менять, начните с Ask или Plan.

Нужно ли каждый раз писать длинный промт?

Нет. Всё, что повторяется в каждой задаче (стек, команды сборки и тестов, стиль кода, запреты), вынесите в правила проекта: .cursor/rules или AGENTS.md. Тогда в самом промте остаются только цель, место и проверка.

Чем промт для Cursor отличается от запроса в обычный чат с нейросетью?

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

Что писать в блоке «проверка», если тестов в проекте нет?

Любую проверку, которая даёт явный результат: сборку (npm run build), линтер, запуск скрипта с известным выводом, ручной сценарий из двух-трёх шагов. Можно попросить агента сначала написать тест, который воспроизводит задачу, и только потом менять код.

Что делать, если я не знаю, как правильно назвать то, что нужно?

Опишите поведение своими словами и попросите агента в режиме Ask найти, где это реализовано, и назвать файлы. Следующий промт пишите уже с этими файлами и терминами. Скриншот экрана тоже подходит как контекст.