# Участие в проекте

Набор — это документ плюс линтер, поэтому вклад в основном о том, чтобы документ оставался честным,
а две языковые версии — согласованными.

## Перед pull request

```bash
python tools/prompt_lint.py
```

Требуется код `0`. Линтер проверяет последовательность модулей, строки самопроверки, число
инвариантов, парность переводов, неразрешённые заготовки, относительные ссылки, секреты, абсолютные
пути машины, висячие ссылки на модули и согласие версии с журналом изменений.

## Правила

- **Идентификаторы модулей — интерфейс.** На `M0`…`M13` ссылаются `docs/`, ревью и линтер. Не
  перенумеровывайте; новый модуль добавляйте только при действительно новом вопросе.
- **Модуль без строки `**Check:**` не принимается.** Если нельзя сказать, как он проверяется, это
  мнение, а не инструкция.
- **Меняйте `PROMPT.md` и `PROMPT.ru.md` одним коммитом.** Отстающий перевод — дефект: тексты должны
  говорить одно и то же, а линтер сравнивает только структуру.
- **Поднимайте `version` и добавляйте запись в журнал.** Линтер сравнивает заголовок со свежей
  версией журнала и падает при расхождении.
- **Никаких имён инструментов в промпте.** Возможности — это классы, их сопоставляет рантайм. Имя
  продукта привязывает набор к одному поставщику и одной версии.
- **Никакого домена в промпте.** Домены живут в карточке домена и в `examples/`; смысл набора в том,
  что новый домен стоит одну карточку, а не переписывание.

## Добавление языка

1. Скопируйте английский файл в `<имя>.<язык>.md`.
2. Переведите; идентификаторы модулей и строки `**Check:**` сохраните по форме.
3. Дополните правила парности в `tools/prompt_lint.py`, если суффикс новый.

## Сообщение о проблеме с самим промптом

Опишите ситуацию, ответ агента и модуль, который не сработал. Минимальное воспроизведение — один
запрос плюс строка ворот, которую агент напечатал; без строки ворот проверять нечего.

## Сообщения коммитов

Conventional Commits: `feat:`, `fix:`, `docs:`, `test:`, `chore:`. Ломающее изменение набора
модулей помечается `!` и описывается в журнале в разделе `Изменено`.

## Язык

Английский основной; `*.ru.md` несёт перевод. Оба рецензируются вместе.
