# AGENTS.md — правила для агента, работающего с этим набором

Этот репозиторий поставляет системный промпт, а не программу. Агент, работающий с ним, обязан
держать две вещи верными: промпт остаётся структурно полным, а две языковые версии не расходятся.

Прочитай `PROMPT.ru.md` прежде всего остального. Идентификаторы модулей (`M0`…`M13`) — стабильные
адреса: на них ссылаются ревью, `docs/` и `tools/prompt_lint.py`.

## Проверка

```bash
python tools/prompt_lint.py            # код 0 = структурные контракты держатся
python tools/prompt_lint.py --json     # машинный вывод находок
python tools/experience.py selftest    # хранилище отвергает то, об отказе чему заявляет
python tools/experience.py check       # схема, секреты, дубликаты, устаревание
python tools/install.py --runtime autoclaw2 --check   # установленные файлы и регистрация
```

Линтер падает на: отсутствующем модуле, модуле не по порядку, отсутствующей строке `**Check:**`,
переводе без английской пары, неразрешённом `{{placeholder}}` вне блока кода, битой относительной
ссылке, литерале, похожем на секрет, абсолютном пути машины, висячей ссылке `M<число>`, расхождении
версии между заголовком промпта и журналом, неполном M13, воротах с неверным числом проверок и
отсутствующем хранилище, инструменте или разделе навыка.

## Правка промпта

1. Меняй `PROMPT.md`. Не перенумеровывай модули: нумерация — это интерфейс.
2. Меняй `PROMPT.ru.md` тем же коммитом, сохраняя тот же набор модулей.
3. Поднимай `version` в обоих заголовках и добавляй запись в `CHANGELOG.md`.
4. Гоняй линтер до кода `0`.
5. Если правило можно выполнить только с инструментом — поставляй инструмент: M13 работает потому,
   что доставание — одна команда, а не потому что промпт вежливо просит.

Никогда не правь `.ru.md` в одиночку. Никогда не переводи модуль иначе по существу: перевод,
смягчающий инвариант, — дефект, а не стилистический выбор.

## Что промпт требует от тебя

Когда ты работаешь *под* этим промптом, действует следующее:

| Правило | Источник |
|---|---|
| Объявить тему до действия | M0, M1 |
| Составить карточку задачи и карточку домена | M1, M2 |
| Вести журнал контекста; никаких утверждений без источника | M3 |
| Помечать каждое нетривиальное утверждение | M4 |
| Минимальный проверяемый шаг, проверка после действия | M5 |
| Необратимое — в песочнице; секреты не печатать | M6 |
| Отвечать пятью разделами на языке пользователя | M7 |
| Сообщать десять проверок одной строкой | M8 |
| Искать в хранилище до планирования; записывать после проверки | M13 |

## Ловушки при работе с набором

| Ловушка | Признак | Что делать |
|---|---|---|
| Правка промпта ради нового домена | файл растёт на страницу на каждый проект | заполнять карточку домена (M2, M10) |
| Имя инструмента в промпте | промпт перестаёт работать в другом рантайме | использовать класс возможности (M6) |
| Найденный опыт как истина | старый рецепт применён к изменившемуся окружению | пройти проверку применимости из шести вопросов (M13) |
| Сообщить об установленном без регистрации | файлы есть, следующая сессия ничего не видит | ворота 12: назови шаг регистрации или id |
| Описать специализацию как роль в сессии | просили рабочее место, получили смену тона | M10: результат — каталог плюс передача |
| Записывать каждую задачу | хранилище становится шумом, поиск перестаёт находить | записывать только переиспользуемое, общее, проверенное |
| Удалять устаревшую запись | исчезает след аудита и возвращается неверный подход | помечать устаревшей с `superseded_by` |
| Строка ворот без прогона ворот | ответ выглядит аудируемым и не является | прогнать M8, потом печатать строку |
| Вольный перевод модуля | две версии утверждают разные правила | переводить тем же коммитом, тот же набор модулей |
| Перенумерация модулей | ломаются все ссылки в документации и ревью | держать `M0`…`M13` стабильными |
| Линтер как доказательство качества | он проверяет структуру, не суждение | для содержания — `docs/QA.ru.md` |

## Чего не делать

- Не добавляй домен в сам промпт. Домены живут в карточке домена и в `examples/`.
- Не добавляй имена инструментов в промпт. Возможности — это классы, их сопоставляет рантайм (M6).
- Не показывай строку ворот, не прогнав ворота. Сообщённое «пройдено», которого не было, — ровно
  тот отказ, ради предотвращения которого набор и существует.
- Не публикуй версию, где поле `version` и журнал изменений расходятся.

## Цели переноса

| Рантайм | Как загрузить |
|---|---|
| AutoClaw2 | вставить тело `PROMPT.ru.md` в системный промпт агента; `AGENTS.ru.md` покрывает работу с репозиторием |
| HARNESS | то же через правила проекта |
| SagaAI | то же через поле системного промпта |
| Любой другой агент | вставить тело; если возможности нет — M6 деградирует явно |

## Раскладка

```text
PROMPT.md            промпт, английский (основной)
PROMPT.ru.md         промпт, русский
AGENTS.md            этот файл
docs/                дизайн, адаптация, QA, валидация
examples/            три проработанных домена
skills/experience-reuse/  навык M13: шаблоны, примеры, политика
memory/              хранилище опыта (здесь лежат записи)
tools/prompt_lint.py контракты документа
tools/experience.py  хранилище и доставание одной командой
```

## Лицензия

MIT.
