Гайд · файл AGENTS.md

Как написать AGENTS.md, чтобы агент не гадал

Один файл вместо десяти брифов: роли, запреты и handoff

Читать гайд

Вы уже десятый раз вставляете в чат одно и то же: «не публикуй сразу», «секреты не в git», «черновик клади сюда». Агент кивает и снова делает по-своему. Проблема не в модели. Ей каждый раз не хватает короткой конституции проекта.

AGENTS.md — обычный текстовый файл в корне папки с проектом. Его читают ИИ-агенты в Cursor, Codex и десятках других инструментов. README вы пишете людям. AGENTS.md — агенту: какие команды запускать, куда не лезть, когда работа считается готовой.

AGENTS.md
# конституция проекта
запрет: не публиковать без команды
куда: draft.md + handoff.md
готово: файл есть и не пустой

Маркер: простыми словами. AGENTS.md — это табличка на двери офиса для нейросети: «у нас так принято, вот чего нельзя, вот как проверить, что ты закончил».

Ниже — как написать файл за один вечер, подружить его с Claude Code и не превратить конституцию в простыню.

Зачем агенту отдельный файл, если уже есть README

README отвечает на вопрос «как человеку зайти в проект». Там быстрый старт, ссылки, скриншоты. Агент из этого редко понимает запреты. Он не видит, что вы «и так все знаете»: не трогать прод, не выкладывать черновик, не коммитить ключи.

Отдельный файл нужен, чтобы не повторять бриф. Открыли папку — агент уже знает правила. Закрыли чат, открыли новый — правила на месте. Это и есть настройка ИИ-агента без очередного эссе в промпте.

Практический критерий: если одно и то же ограничение вы произносите третий раз за неделю, оно должно жить в AGENTS.md, а не в голове.

Чем AGENTS.md отличается от CLAUDE.md, rules и SKILL.md

Путаница начинается с имён. Все похожи на «файл с правилами», но слои разные.

ФайлКогда срабатываетКто читаетКуда класть
AGENTS.mdпочти всегда, как конституция репозиторияCursor, Codex, Copilot, OpenCode и другиекорень проекта, при необходимости вложенно
CLAUDE.mdпамять/правила Claude Codeв первую очередь Claude Codeкорень или ~/.claude/
.cursor/rules/*.mdcпо типу файлов или всегдатолько Cursorпапка .cursor/rules/
SKILL.mdкогда задача совпала с описанием навыкаClaude Code, Cursor Skills и совместимые клиенты.cursor/skills/имя/ или аналог

Маркер: простыми словами. AGENTS.md — закон проекта. Skills — должностная инструкция на одну задачу. Rules в Cursor — таблички «для этой папки». CLAUDE.md — тот же закон, но в конверте, который привык открывать Claude Code.

Визуальный блок статьи

Закон не листают. Журнал — да

AGENTS.md держит запреты и критерий «готово». handoff.md живёт один цикл задачи: цель, блокер, следующий шаг. Путать их — значит переписывать конституцию после каждого абзаца.

Слева лоток стабильный. Справа страницы журнала меняются. Курьер только носит статус, не публикует.

Когда хватит одного AGENTS.md

Один репозиторий, одна команда, агенты из разных редакторов. Вы не хотите поддерживать пять копий «не клади секреты в git».

Когда оставить Cursor rules или Claude skills

Разные правила для frontend/ и content/; повторяемый сценарий «собери семантику → положи в brief.md». Skill не заменяет конституцию. Конституция не должна содержать весь playbook навыка.

Системный промпт в настройках чата — ещё один сосед. Он живёт у вас в аккаунте, а не в git. Команда его не увидит. Для общего проекта берите файл в репозитории.

Что положить в файл: секции, которые агент реально читает

Спецификация не требует YAML и обязательных полей: это просто Markdown. Имеет смысл писать то, чего агент не выведет сам из кода.

Минимум

Пять секций, без которых агент снова спрашивает бриф

Проект, команды, запреты, куда класть результат, критерий готово. Всё остальное — в skills и wiki.

1–2

предложения «что это за проект»

0

секретов в git-файле

Если команды проверки нет — так и напишите: «тестов нет, критерий готово — файл X существует и не пустой».

  1. Что это за проект — одно-два предложения: контент-завод, лендинг, бот. Без истории компании.
  2. Команды — точные строки: как поставить зависимости, как прогнать проверку.
  3. Запретные зоны — прод, секреты, сгенерированные папки, чужие роли.
  4. Куда класть результатdraft.md, handoff.md, не в чат.
  5. Критерий готово — что должно быть на диске, прежде чем агент скажет «сделал».

Маркер: простыми словами. Критерий готово — не «мне кажется, готово», а проверяемая штука: файл есть, статус черновик, ссылка не ведёт в прод.

Команды сборки и проверки

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

Запретные зоны и секреты

В AGENTS.md пишите куда их класть (переменные окружения, секреты облака), а не сами ключи. Файл попадёт в git.

Шаблон AGENTS.md на одну страницу

Скопируйте, замените скобки. Это пример для контент-команды, не для монорепы на тысячу пакетов.

# AGENTS.md

## Проект
Русскоязычный контент-завод: лонгриды и страницы для сайта. Язык ответов — русский.

## Куда писать
- Черновик текста — `draft.md`
- Короткий статус после работы — `handoff.md`
- Не публиковать на сайт и не выкладывать в Telegram без явной команды человека

## Запреты
- Не коммитить ключи, пароли, токены
- Не выдумывать частоты Wordstat и цифры «экономии часов»
- Не переписывать этот файл без просьбы

## Как проверить работу
1. Открыть `draft.md` — есть H1 и текст длиннее 500 знаков
2. Открыть `handoff.md` — есть статус, что сделано, что блокирует
3. Секретов в git-диффе нет

## Команды
Отдельного теста нет. Не запускай деплой.

Шаги, чтобы файл начал работать:

1

Имя ровно AGENTS.md

Создайте в корне проекта файл с именем латиницей и заглавными буквами.

2

Вставьте шаблон

Уберите лишнее, добавьте свои запреты одной строкой каждый.

3

Сохраните и перезапустите чат

В Cursor перезапустите агент-чат или окно, если файл не подхватился сразу.

4

Короткая задача

«Напиши абзац в draft.md, в Telegram не публикуй».

5

Проверьте диск, не ответ

Появился ли файл и не полез ли агент «для полноты» в публикацию.

Признак успеха: агент создал draft.md и в handoff.md написал, что публикацию не делал. Если он сразу предлагает «выложить» — запрет сформулирован слабо, усильте глаголом «нельзя» и местом, куда класть результат.

Типичные осечки новичка: файл назвали agents.md в другой папке; положили в .cursor/ вместо корня; написали «будь осторожен с публикацией» вместо «не публиковать».

Как подружить Cursor, Codex и Claude Code без двух конституций

Cursor читает AGENTS.md в корне и во вложенных папках. CLI Cursor дополнительно подхватывает CLAUDE.md рядом с правилами .cursor/rules. Codex и многие другие клиенты ждут именно AGENTS.md. Claude Code исторически заточен на CLAUDE.md.

Не ведите две полные копии: они разъедутся через неделю.

Рабочая схема mix-команды:

Маркер: простыми словами. Символическая ссылка — ярлык: один текст, два имени файла. Меняете AGENTS.md — Claude Code видит то же самое.

Оплата и доступ из РФ: Cursor и Claude Code часто требуют иностранную карту или посредника. Codex завязан на экосистему OpenAI. AGENTS.md от этого не зависит: файл лежит у вас в git и работает в том клиенте, который команда реально открывает. Не копируйте конституцию в каждый SaaS «на всякий случай».

Вложенные AGENTS.md в большом репозитории: кто побеждает

Если папок много, в подпроекте можно положить второй AGENTS.md. Агент берёт ближайший к файлу, с которым работает. Более узкий файл побеждает широкий. Сообщение в чате побеждает оба.

Для контент-завода это удобно так:

Не плодите десять файлов «на будущее». Второй файл появляется, когда корневой начинает спорить сам с собой: «в теме можно править PHP, в текстах нельзя».

Handoff и память: что не пихать в конституцию проекта

Маркер: простыми словами. Handoff — вахтовый журнал: что сделали, где остановились, какой следующий шаг. Его читает новый чат. AGENTS.md — трудовой кодекс, его не переписывают после каждого абзаца.

Конституция не меняется каждый час. Состояние задачи — меняется. Их мешать нельзя.

В handoff.md держите: цель, статус, блокеры, путь к артефакту. Не копируйте туда весь чат. Не кладите в AGENTS.md фразы вроде «сегодня пишем про скидку 20%» — это сгорит завтра и будет врать агенту неделю.

Отдельные базы памяти и wiki — следующий уровень. Сначала заставьте работать два файла: конституция + короткий журнал. Если агент снова просит бриф, журнал пустой или конституция слишком общая.

Как проверить, что агент слушается файла, а не чат

Не верьте ответу «я учёл правила». Устройте контрольную.

  1. В AGENTS.md напишите запрет, который легко нарушить: «не используй слово “уникальный” в draft.md».
  2. Попросите написать короткий абзац в draft.md.
  3. Откройте файл. Если слово на месте — агент файл не применил (не тот путь, не тот клиент, слишком длинный AGENTS.md, запрет спрятан в конце простыни).
  4. Исправьте файл, не промпт. Повторите на новом чате без копипаста правил.

Второй тест: попросите «опубликуй на сайт». Правильный агент откажется и укажет на запрет. Если сразу ищет пароль — конституция не сработала.

Типичные ошибки: простыня, секреты, «будь полезным»

Простыня на 80 экранов

Агент либо обрежет, либо начнёт игнорировать середину. Держите закон коротким. Подробности — в skills и в wiki, не в конституции.

Секреты в тексте

Токен Wordstat, пароль хостинга, ключ Telegram в AGENTS.md — это утечка, которую вы сами положили в git. Пишите только имена переменных.

«Будь полезным и проактивным»

Такая фраза разрешает нарушить запрет «ради пользы». Заменяйте на проверяемые правила.

Две конституции

CLAUDE.md говорит «можно в прод», AGENTS.md — «нельзя». Победит случай. Один источник правды.

Файл только в чате. Сгенерировали шаблон, не сохранили в корень — следующий агент его не увидит.

Первый вечер: контент-команда без разработчика

Сценарий: вы ведёте Telegram и черновики в папке Google-диска или git. Агент в Cursor или Codex должен писать посты, но не слать их сам.

  1. Соберите в одну папку: бренд (тон, стоп-слова), 2–3 удачных поста, пустой draft.md.
  2. Положите AGENTS.md из шаблона выше. В запреты добавьте названия каналов: «не писать в @maya_pro и MAX».
  3. Напишите в чат: «прочитай AGENTS.md, сделай черновик поста в draft.md по теме X, в каналы не публикуй».
  4. Откройте draft.md глазами. Проверьте стоп-слова и факты.
  5. Только после этого копируете текст в Telegram сами или отдельным сценарием Make/n8n — это уже другой слой, не конституция.

Признак успеха вечера: новый чат без копипаста брифа всё равно не лезет в публикацию и кладёт текст в тот же файл. Если агент снова спрашивает «куда писать» — в AGENTS.md нет секции «Куда писать» или файл лежит не в корне открытой папки.

Ошибка «я не программист, мне это не для меня»: вам не нужен монорепозиторий и 88 вложенных файлов. Нужен один markdown на русском и привычка не держать правила только в чате.

Когда конституция лежит в git, следующий шаг — не ручной копипаст в Telegram, а сценарий. Разбор Make и агентных цепочек: обучение по автоматизации на kv-ai.ru. Тема Cursor/IDE: редактор — Cursor по реферальной ссылке.

FAQ

Короткие ответы, которые агент и человек должны видеть одинаково

Нужен ли CLAUDE.md, если уже есть AGENTS.md?

Если команда сидит в Claude Code — да, тонкий файл-мост. Если только Cursor/Codex — часто хватает AGENTS.md.

Как назвать файл?

Ровно AGENTS.md в корне. agent.md, agents.txt, правила.md стандарт не обещает подхватить.

Можно ли писать по-русски?

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

Что, если чат противоречит файлу?

Побеждает чат. Поэтому не отменяйте запрет публикации фразой «ну выложи уже» в том же окне, где тестируете конституцию.

Это системный промпт?

По смыслу похоже, по месту жительства нет: системный промпт сидит в настройках аккаунта, AGENTS.md — в репозитории и едет вместе с проектом.

Когда хватит README?

Когда агентов нет. Как только кто-то делегирует «сделай черновик», README перестаёт быть достаточным.

Что проверяли по источникам

  • Канон формата и FAQ (ближайший файл побеждает, чат перекрывает) — agents.md
  • Как Cursor видит AGENTS.md и вложенные файлы — документация Cursor Rules
  • Зачем отделять журнал сессии от постоянных правил — разбор handoff на Хабре

Beget — надёжный хостинг и VPS