Зачем это всё
ИИ-ассистент быстрый, но дрейфует. Он угадывает пути к файлам, придумывает API, который изменился две версии назад, пишет правдоподобный мусор, который компилируется и тихо гниёт, забывает всё между сессиями и либо спрашивает разрешения на каждый чих, либо молча делает не то. По сути - гениальный стажёр с амнезией: печатает быстрее тебя, но к обеду уже не помнит, как тебя зовут.
Лечится это не инструментом, а методом - маленькой операционной системой поверх ассистента: свод правил, роли, жизненный цикл спецификаций и память. Она заставляет его сначала исследовать, потом делать, отделять «что» от «как», планировать проверяемыми шагами, оставаться кратким и честным и накапливать знания между сессиями.
Эта страница показывает, как всё собрано - на примере одного реального проекта, но всё унифицировано и не привязано ни к языку, ни к задачам проекта - и ни к конкретному инструменту или модели. Внизу можно скачать kit и положить в свой git-репозиторий почти на любом стеке.
Кому это всё
- Тем, кто уже живёт с ИИ-агентом и устал в третий раз объяснять одно и то же.
- Тем, кто хочет, чтобы агент проверял, а не угадывал - и сам признавался, где не уверен.
- Соло-разработчикам и маленьким командам: одна общая «операционка» вместо набора привычек в голове одного человека.
- Любому стеку и почти любому инструменту. Claude Code - из коробки; Cursor, Cline, Codex, Aider - с лёгкой адаптацией.
Чего тут нет - серебряной пули. Метод не делает агента умнее; он лишь мешает ему выстрелить себе в ногу и тут же забыть, что нога была.
Метод вырос из зрелого Android-проекта: правила, навыки, роли, спек-каталог и память агентов реально гоняются каждый день. Из kit'а убрано всё про Kotlin, Gradle, PowerShell и локаль - остался переносимый скелет.
Восемь принципов на один экран
Сначала исследуй
Никогда не угадывай путь или поведение. Прочитай карту, потом код. Сохрани находки, не грепай дважды.
Отдели «что» от «как»
Стратегия (проблема, цели, ограничения) пишется до тактики (файлы, сигнатуры, порядок). Самая ценная привычка метода.
Планируй проверяемо
Каждый шаг кончается статической проверкой - «файл есть», «символ объявлен», «команда вернула 0», а не «работает правильно».
Дёшево, когда задача мелкая
Опечатка - это /quick, узкий баг - /fix. Спека только там, где есть реальные решения.
Автономия вместо бюрократии
Не спрашивай разрешения читать, искать, собирать, тестировать. Блокеры - в начале, а не после потраченного хода.
Чисто с самого начала
Не пиши слоп: пустые catch, мусорные комментарии, хардкод вместо токена, мёртвый код. Лови на ревью.
Помни между сессиями
Файловая память хранит то, что рантайм забывает: предпочтения, причины решений, контекст проекта.
Статус - из реальности
Статус тикета истинен, потому что так делает код, а не потому что так написано в имени файла или хочется.
Конституция: всегда-загруженный свод правил
Один файл, который ассистент загружает в начале каждой сессии и который перекрывает его поведение по умолчанию. Это контракт, на который ссылается всё остальное. Он слоистый: стиль общения, автономия, порядок исследования, маршрутизация навыков, правила спек, структура и сборка, строгие правила, анти-слоп, пост-чейндж дисциплина.
Главная идея - всегда загружен и краток. Это не вики: длинные методички живут в docs/, а конституция лишь ссылается на них одной строкой. Внутри же - таблица маршрутизации: какой slash-навык на какой размер задачи. Имя файла зависит от инструмента - CLAUDE.md, AGENTS.md, правило Cursor, GEMINI.md, - но идея одна.
В исходном проекте CLAUDE.md - это ~12 разделов, включая матрицу флейворов и ритуалы PowerShell. Kit оставляет переносимый каркас и выкидывает проектную машинерию: ты заполняешь <PLACEHOLDER> под свой стек.
Навыки: slash-команды
Навык - это переиспользуемый промпт, кодирующий рабочий процесс. Пишешь /spec - ассистент идёт по записанной процедуре, а не импровизирует заново. Хорошая практика записана один раз, а не выводится каждый раз с нуля.
Хребет - пайплайн, который ведёт идею до проверенной реализации:
/research собрать доказательства, сохранить (до всего нетривиального) /spec стратегическое что/зачем Draft → Approved /spec-tech фазовый проверяемый план Approved → Tactical /spec-dev выполнять по шагу, проверять каждый Tactical → Implemented /spec-check аудит против спеки → Verified / Partial / Broken /spec-fix механический ремонт после аудита Partial / Broken → переаудит /spec-all прогнать весь пайплайн целиком idea → verified
Под пайплайном - дешёвые пути: /quick (опечатка), /fix (узкий баг). Перед всем пользовательским - /ui-clarify. Для краткости - /caveman. Плюс /git, /verify, /review.
Субагенты: роли с ограничениями
Это роль-брифы с урезанным набором инструментов. Оркестратор ведёт задачу от запроса к проверенному коду; ресёрчер только читает и выдаёт отчёт; имплементер пишет код по плану; докрайтер - человеческие тексты и UI-копирайт.
- Зачем ограничивать инструменты: ресёрчер, который не умеет писать, не испортит файлы случайно.
- Параллелизм: несколько агентов одновременно копают независимые вопросы - локальный код и внешние доки в один заход.
- Каждому - своя память: заметки ресёрчера не засоряют индекс имплементера.
Жизненный цикл спеки
Спека отвечает на два разных вопроса, которые нельзя путать:
- Стратегия (что/зачем): проблема, цели, ограничения, открытые вопросы. Без имён классов и путей. Если ревьюер не согласен здесь - ты сэкономил реализацию.
- Тактика (как): точные файлы, символы и порядок, каждый шаг кончается проверкой. Если шаг неоднозначен - исполнитель останавливается, а не угадывает.
Draft ─► Approved ─► Tactical ─► In Progress ─► Implemented ─► Verified
│ │
└─ черновик можно грязно └─ аудит может дать вместо этого:
Partial (предупреждения)
Broken (есть отказ)
плюс явные блок-статусы: BlockNeedUserTest, BlockQuestions, BlockExternal, ..
Перед фазами - гейт сложности: мелкая детерминированная правка (≤3 файлов, без новых публичных типов, без миграций и DI) идёт как примитив в три секции и реализуется напрямую; всё остальное - полный пайплайн. Так церемония пропорциональна работе.
Граф фаз проектируется тремя проходами: инвентарь покрытия (каждая цель ложится в фазу или помечается вне-объёма), топология «производит/потребляет» (ни одна фаза не потребляет то, что произведёт более поздняя), фильтр реальной работы (шаг меняет код, а не текст плана). Каждый шаг кончается статической проверкой.
Когда тикет ждёт ручной проверки, в точку входа каждого изменённого потока вставляется временная лог-строка LOG("ID: что доказывает этот путь"). Инвариант: такой тег существует тогда и только тогда, когда тикет в статусе ожидания теста. Во время ручного прогона ты грепаешь лог по ID: и видишь, какие пути реально выполнились. Аудит удаляет теги на переходе в Verified; в постоянных логах id тикета не живёт.
Постоянная память агента
Рантайм забывает всё между сессиями. Код, спеки и git остаются - а вот как ты любишь работать, почему прошлое решение было таким и какие правки ты уже давал - нет. Переучивать это каждую сессию - главный скрытый налог: как каждое утро заново знакомиться с коллегой, который вчера с тобой переписал пол-проекта.
Лечение - маленькая файловая память в memory/ под контролем версий: всегда-загруженный индекс MEMORY.md плюс по файлу на запись. Четыре типа:
user кто человек: роль, опыт, что уже знает → как объяснять feedback как работать здесь - из правок И похвал → не повторять подсказку дважды project живой контекст: кто, что, зачем, к когда → быстро устаревает reference указатель во внешнюю систему и зачем → где искать
Тонкость - сдержанность. Не храни то, что выводится из репозитория, git-истории или рецепты починки - это уже в коде и коммитах. И проверяй перед советом: память, называющая функцию или путь, - это утверждение «так было, когда записали». Перед действием - грепни, существует ли оно сейчас.
Порядок исследования и индекс кода
Самое дорогое, что делает ассистент, - угадывает. Угадка выглядит как прогресс и стоит целой неверной реализации. Лекарство - фиксированный порядок поиска: карта → спека → индекс кода/греп → код → внешние доки. Останавливаешься, как только источник ответил.
Одно правило под всем: если ты назвал путь, символ или API - ты их проверил. Для большого репозитория держат запрашиваемый индекс единиц кода: спрашиваешь индекс до грепа и регенерируешь его после правок. Устаревший индекс хуже отсутствующего.
Лестница валидации
Шаг не сделан, когда ты хотел, чтобы он работал. Он сделан, когда проверка прошла в этом прогоне. Уровень доказательства подбирается под тип изменения:
греп < запуск скрипта < компиляция < точечный тест < полная сборка < запуск-и-наблюдение док скрипт правка типов логика конфиг/ресурсы пользовательское поведение
Бери самую нижнюю ступень, которая реально доказывает это изменение, и не выше. Для каждой проверки записывай ожидал: X | получил: Y - предсказание до чтения результата ловит проверку, которая вернула 0, но напечатала не то. «Работает на моей машине» - не ступень этой лестницы, а суеверие.
Анти-слоп
Семь паттернов, которые ИИ (и уставший человек) выдаёт легко, а они выглядят нормально и тихо гниют - как забытый в глубине холодильника контейнер: снаружи порядок, пока не откроешь. Правило - не писать их с самого начала и ловить на ревью. Все семь - греп-проверяемые:
catch
3 хардкод вместо токена
4 небезопасный async / глобальный scope
5 логирование мимо фасада
6 заглушки в проде (TODO())
7 мёртвый код после правки
Каждый можно механически просканировать в диффе. Сделай проверку частью «готово», а не «когда-нибудь». Если в стеке есть линтер - закодируй паттерны как правила, чтобы гейт был автоматическим.
Как внедрить
Метод не привязан ни к инструменту, ни к модели. Ниже три ситуации - выбери свою.
A · Новый или почти пустой проект
Сначала дай агенту собрать карту кода его штатной командой - /init в Claude Code (или аналог в твоём инструменте). Потом отдай этот промпт, чтобы он поднял проект сразу по методу:
Промпт для нового проекта (на английском)
This is a fresh or mostly empty repository. First run your codebase-init command (/init in Claude Code, or the equivalent in your tool) so you have a rules file and a basic map of the project. Then download https://github.com/SerZhyAle/universal-agent-kit/raw/main/universal-agent-kit.zip into a temp or scratch directory and unpack it locally; it extracts to a `universal-agent-kit/` folder beside a `merge-prompt.txt`. Use those extracted files as the source of truth: read `universal-agent-kit/README.md` first, then use `universal-agent-kit/CLAUDE.md`, `universal-agent-kit/.claude/`, `universal-agent-kit/docs/`, `universal-agent-kit/memory/`, and `merge-prompt.txt`. Do not use the article page as the primary source. If you cannot download files in this environment, stop and ask me to place the archive in the workspace. Set this project up on the method from those files: 1. Write the rules file my tool reads (CLAUDE.md / AGENTS.md / a Cursor rule / GEMINI.md - whatever applies) adopting the kit's structure: communication, research order, skill routing, the spec lifecycle, strict rules, anti-slop, post-change discipline. Fill in what already exists; use sensible defaults otherwise. 2. Create the skill / command files and the role briefs from the kit that fit a project of this kind. 3. Set up the plan directory, the scratch directory, and the memory folder with its index. 4. Pick the build / test / lint / run commands for the stack I name - or propose a stack if none exists yet. Show me the plan first; create nothing until I approve.
B · Существующий проект - быстрый путь
За минуту. Попроси агента прямо в чате скачать архив kit-а, распаковать его локально и импортировать самое полезное:
Промпт для существующего проекта (на английском)
Download https://github.com/SerZhyAle/universal-agent-kit/raw/main/universal-agent-kit.zip into a temp or scratch directory and unpack it locally; it extracts to a `universal-agent-kit/` folder beside a `merge-prompt.txt`. Use those extracted files as the source of truth: read `universal-agent-kit/README.md` first, then use `universal-agent-kit/CLAUDE.md`, `universal-agent-kit/.claude/`, `universal-agent-kit/docs/`, `universal-agent-kit/memory/`, and `merge-prompt.txt`. Do not use the article page as the primary source. If you cannot download files in this environment, stop and ask me to place the archive in the workspace. Then study THIS repository and import what fits it: 1. Draft a CLAUDE.md (or my tool's equivalent rules file) that adopts the method, with every placeholder filled from this repo: project name, chat language, source root, architecture layers, build / test / lint / run commands, logger, plan directory, scratch directory, file-size budget, read-only zones, and ticket-id scheme. 2. Recommend which skills (/research, /spec, /spec-tech, /spec-dev, /spec-check, /spec-fix, /quick, /fix, /verify, /git, /review) and which role agents are worth adding here, and say why for each. 3. Tell me whether my runtime supports persistent agent memory and, if so, how to wire it up. Do not change anything yet. Show me the plan first; on any conflict, my existing files win.
Быстро и сразу по файлам, но менее воспроизводимо, чем путь C: здесь нет явного merge-процесса с инвентарём и остановкой перед записью.
C · Существующий проект - канонический путь
Скачай kit, отдай агенту папку вместе с merge-prompt.txt и скажи: «Влей Universal Agent Kit в этот репозиторий». Промпт заставляет агента сначала сделать инвентарь (что у тебя уже есть, что новое, где конфликт), показать план слияния и остановиться - твоё всегда главнее, ничего не перезаписывается молча. Ты подтверждаешь - он применяет и заполняет <PLACEHOLDER> из твоего репозитория.
Любой инструмент
Каждый агент читает свой файл правил - суть одна, отличается лишь имя:
- Claude Code -
CLAUDE.md+.claude/commands/*(готовые/spec,/research..) +.claude/agents/*как субагенты. - Cursor -
.cursor/rules(или.cursorrules); команды становятся сохранёнными промптами. - Codex, Gemini CLI / Antigravity, Aider, Cline, Windsurf -
AGENTS.md/GEMINI.md/ свой аналог; роли вставляются как системные промпты, навыки - как файлы-промпты, на которые ссылаешься. - Методология в
docs/вообще не зависит от инструмента - это просто Markdown.
Любая модель - от сильной до слабой
Метод не зависит и от мощности модели - меняется не он, а несколько ручек:
- Сильная (фронтир, большой контекст): держит больше в голове. Шаги крупнее, автономии больше; спеки и проверки оставляешь ради корректности, а не чтобы вести за руку.
- Регулярная: золотая середина метода - спеки, мелкие проверяемые шаги и порядок исследования окупаются максимально.
- Слабая, маленькая или локальная: опираешься на правила сильнее всего - крошечные шаги, проверка после каждого, короткий контекст, меньше автономии. Метод - это то, что вообще делает слабую модель пригодной для работы.
Типовые практики и куда смотреть
Этот kit - не единственная истина, а один связный набор привычек. Сами привычки общие - их же советуют команды, которые эти инструменты и делают:
- Держи контекст коротким. Окно контекста забивается быстро, и качество падает по мере заполнения. Между несвязанными задачами начинай свежий чат.
- Сначала план, потом код. Попроси подход и план, утверди - и только потом разрешай править файлы.
- Два агента в петле. Один пишет, другой ревьюит или гоняет тесты; либо сначала тесты, потом код до зелёного.
- Чекпоинты в git. Коммит до и после задачи, чтобы откат был в одно движение.
- Записывай повторяемое. Часто повторяемый промпт - в slash-команду или файл правил, и закоммить в репозиторий, чтобы это было у всей команды.
- Читай дифф. Агент быстрый, но не непогрешимый - не вливай то, что сам не прочитал.
Kit превращает эти советы из «хорошо бы» в записанный процесс. Первоисточники стоит прочитать целиком:
Официальные гайды «ИИ для разработки»
- Anthropic · Claude: Claude Code best practices · Effective context engineering
- OpenAI · Codex: Codex docs и quickstart
- Google · Antigravity: antigravity.google · Docs (преемник Gemini CLI)
Ссылки ведут на официальные ресурсы вендоров и открываются в новой вкладке. Метод из этой статьи работает поверх любого из этих инструментов.
Происхождение и лицензия
Адаптировано из .claude/-сетапа реального Android-проекта FastMediaSorter. Android-, PowerShell- и локаль-специфичная машинерия удалена; переносимый метод оставлен и переписан нейтрально. Исходного кода и проприетарного содержимого здесь нет - только рабочий метод.
Kit - под MIT. Текст этой статьи - под CC BY 4.0. Бери, ремиксуй, адаптируй под свои проекты.