Каждый новый репозиторий начинается одинаково: открыл Cursor — написал .cursorrules. Переключился на Claude Code — набросал CLAUDE.md. Потом кто-то из команды зашёл через Gemini и снова объясняет модельке, что это за проект, куда нельзя лезть и что считается «готово». Контекст размазан по пяти файлам, половина устарела после первого же рефакторинга, а токены уходят не на задачу, а на пересказ архитектуры.
Я устал от этого цикла и собрал AI Tooling Starter Kit — открытый каркас (MIT), который одной командой раскладывает единую модель контекста под Claude, Cursor, Antigravity/Gemini и Perplexity. Ниже — зачем, как устроено и какую пользу это даёт на практике.
Проблема не в инструментах, а в дублировании
Инструменты сами по себе хорошие. Ломается связка «человек ↔ агент ↔ репозиторий»:
- Нет единого источника истины. Cursor читает одно, Claude — другое, Perplexity вообще живёт вне репо.
- Контекст дрейфует. Поменяли стек или запреты — обновили один файл, забыли второй.
- Онбординг дорогой. Новый человек или новый агент заново «знакомится» с проектом за ваши токены.
- Безопасность размазана. «Не коммить
.env» написано в одном месте, а в другом — нет; агент действует по тому файлу, который открыл.
Нужен не ещё один промпт, а контракт проекта: что это, какой стек, как менять, чего никогда не делать, когда задача считается done.
Модель v2: AGENTS.md как SoT
В ките ядро — файл AGENTS.md. Его уже читают нативно Cursor, Google Antigravity/Gemini и другие AGENTS-совместимые агенты. Остальные файлы — тонкие редиректы и специфика инструмента, а не вторая копия тех же правил.
| Файл | Кто читает | Роль |
|---|---|---|
AGENTS.md |
все агенты | ★ проект, стек, структура, статус, правила изменений, безопасность, DoD |
.cursorrules + .cursor/rules/*.mdc |
Cursor | редирект + детальные правила |
CLAUDE.md + .claude/ |
Claude Code / Cowork | редирект + commands, agents, settings |
GEMINI.md |
Antigravity / Gemini | агент-специфика (при конфликте — приоритет) |
PERPLEXITY.md |
Perplexity | вставляемый бриф: роль, границы, формат ответа |
.ai/ + .<tool>/artifacts/ |
все | карта раскладки и артефакты, переживающие сессию |
Почему не .ai/shared-context.md, как в v1: лишний слой косвенности. Если инструмент умеет читать AGENTS.md сам — пишите туда. Меньше файлов «указателей, которые никто не открывает».
Этот же подход уже стоит у меня на боевом пайплайне блога: агент не угадывает, что секреты только в .env, а wp_id руками не трогать — это в AGENTS.md.
Какая польза на практике
1. Один раз описал — все инструменты говорят на одном языке.
Стек, структура каталогов, текущий приоритет, запреты и Definition of Done живут в одном месте. Смена IDE или агента не обнуляет договорённости.
2. Экономия времени и токенов.
Меньше «расскажи про проект с нуля» в каждом чате. Агент стартует с карты, а не с раскопок по README и git log.
3. Безопасность как код, а не как устная договорённость.
Секции NEVER и human-in-the-loop для необратимых операций попадают в контекст до первой опасной команды — не после инцидента.
4. Онбординг людей и агентов одинаковый.
Новый участник читает AGENTS.md. Новый агент — тоже. Один документ вместо «спроси у Сергея в Telegram».
5. Кросс-платформенность без сюрпризов.
Три эквивалентных скрипта (Bash, Python stdlib, PowerShell 5.1/7) дают побайтово одинаковый результат. CI гоняет ubuntu + windows-latest, dry-run, идемпотентность и сравнение деревьев. На Windows не нужно «чуть-чуть другой» scaffold.
6. Идемпотентность.
Без --force / -Force существующие файлы не трогаются. Можно запускать повторно и начинать с -DryRun.
Быстрый старт
Репозиторий: github.com/sbezpalov/ai-tooling-starter-kit.
# macOS / Linux
./init-ai-tooling.sh --name my-project --desc "Что это за проект"
# Windows (PowerShell)
.\init-ai-tooling.ps1 -Name my-project -Desc "Что это за проект"
# Любая ОС, Python 3 без зависимостей
python3 ./init_ai_tooling.py --name my-project --desc "Что это за проект"
Сначала удобно посмотреть план:
.\init-ai-tooling.ps1 -Name my-project -Desc "Пилот" -DryRun
После прогона:
- Заполните
TODOвAGENTS.md— стек, структура, статус, маршруты доставки, проектные запреты. - При необходимости добавьте доменные правила в
.cursor/rules/*.mdcи роль вPERPLEXITY.md. - Закоммитьте scaffold отдельным коммитом — это инфраструктура команды, не «мелочь в том же PR, что фича».
Глобально можно повесить алиас или положить скрипт в ~/bin — тогда новый git-клон получает AI-каркас за одну команду.
Когда ставить не «в лоб»
Скрипт ничего не удаляет и без force не перезаписывает. Но на проекте со своей зрелой раскладкой (свои .cursor/rules, уже жирный AGENTS.md, скиллы) возможны частичные дубли вроде 00-project.mdc рядом с генерик 000-project.mdc. Тогда правильный путь: сделать ваш контент основой AGENTS.md и убрать дубли вручную — не --force поверх живого соглашения.
Миграция с v1 (хаб в .ai/shared-context.md): снести v1-хвосты и накатить v2 с --force — команды есть в README репозитория.
Takeaway
AI-инструменты размножаются быстрее, чем команды успевают договориться о контексте. Побеждает не тот, у кого «самый умный» агент, а тот, у кого у агента есть явный контракт проекта: что это, как менять, чего не трогать, когда done.
AI Tooling Starter Kit — способ зафиксировать этот контракт одной командой и переиспользовать его в каждом новом репозитории. Открытый MIT: берите, форкайте, встраивайте. Если найдёте расхождение между тремя скриптами — это баг: CI как раз для того и стоит.
Дальше ценность не в самом scaffold, а в том, насколько честно и коротко вы заполните AGENTS.md. Пустой шаблон не экономит токены. Заполненный — да.