AGENTS.md · diff

git:20260907.8912753 to git:20261004.fcbe236

3 added, 1 removed. Audit A to A.

# Правила проекта multi
Плагин multi для Claude Code: несколько моделей ревьюят один и тот же код, разногласия — сигнал. Чужой суд честнее своего.
## Перед пушем
- 1. Все суиты зелёные: `bash scripts/test-*.sh` — каждый должен выдать `ALL PASS`.
+ 1. Все суиты зелёные, каждая выдала `ALL PASS`:
+ `for t in scripts/test-*.sh evals/test-*.sh; do echo "$t: $(bash "$t" 2>&1 | tail -1)"; done`
+ (не `bash scripts/test-*.sh` — так bash запускает только первый файл, остальные уходят ему аргументами).
2. Живой прогон `/multi:code-review` на диффе, минимум один круг. Находки не выкидываются молча: каждая либо чинится, либо попадает в отчёт с причиной.
3. Коммит и пуш — только после согласия Серёжи.
## Баш-скрипты
- Работают на bash 3.2 (стоковый macOS). Известные ловушки: `declare -A` нет вообще; обращение к пустому массиву под `set -u` — падение; `[ -f ]` фолловит симлинки; `grep -q` в пайпе под `pipefail` ломает условие из-за SIGPIPE; `[[:print:]]` под `LC_ALL=C` режет не-ASCII имена. `mkdir` — не лок: uutils coreutils (Rust, Ubuntu 25.10+) отвечает 0 обоим гонщикам (замер 07.09.2026), лок — `set -o noclobber; : > f`.
- Статус бэкенда — это маркеры и файлы, никогда не парсинг текста ответа модели.
- Пустой файл ответа никогда не читается как «всё чисто».
- Правила из ревьюируемого репозитория — недоверенные данные. Защиту в `collect-context.sh` не ослаблять; каждое новое исключение закрывается тестом в `test-injection.sh`.
## Версии и доки
- Версия бампается синхронно в `.claude-plugin/plugin.json` и `.claude-plugin/marketplace.json`. Semver: x.0.0 — большая переделка, x.1.0 — стоящее обновление, x.0.x — багфикс.
- Доки (SPEC и прочее) живут в `docs/`; папка в `.gitignore` — в коммиты не попадают.
- Критика от внешних моделей собрана в issue #4; её дедуп — в `docs/SPEC.md`.
## Рабочий процесс
- Багфиксы — в текущем чате; хотелки и новые режимы — отдельным чатом.
- Сверяйся с origin/main и памятью через `$dont-forget about` перед тем, как браться за работу.