claude-code
Stemma компилирует CLAUDE.md и AGENTS.md из одного источника
Claude News
claude-codeStemma, детерминированный компилятор контекста для кодовых агентов, собирает файлы инструкций для четырёх провайдеров, среди которых Claude Code и GitHub Copilot, из одного канонического проекта в каталоге .stemma/; код опубликован на GitHub под лицензией MIT, а сам инструмент распространяется одним статическим бинарником.
Коротко
- Инструмент читает существующую конфигурацию агентов командой stemma scan, переносит её в канонический проект командой import и записывает файлы провайдеров транзакционно через apply, откатывая изменения при сбое записи.
- В проекте около 12 000 строк на Go без внешних зависимостей и примерно 230 тестов; языковая модель, сетевые вызовы и телеметрия не используются, каждое решение выводится из явной грамматики.
- Оценка контекста в примере из описания показывает сокращение постоянно активного контекста с ~72 до ~13 токенов, около 82%, при этом автор отмечает приблизительность расчёта и отсутствие токенизатора провайдера.
Для команд, которые держат несколько агентов сразу, дублирование правил выглядит скорее задачей сборки, чем редактуры, и подход Stemma переносит её в привычную модель артефактов с проверкой свежести в CI. Репозитории всё чаще обслуживают Claude Code, Copilot и Codex одновременно, поэтому цена расхождения растёт. Ставка, судя по описанию, сделана на предсказуемость: компилятор отказывается угадывать там, где формат провайдера не выражает исходное намерение, и расхождение копий превращается в ошибку сборки, а не в находку на код-ревью.
Восемь команд закрывают цикл от разбора репозитория до проверки в CI
Цикл начинается с чтения: stemma scan определяет поддерживаемую конфигурацию агентов и ничего не пишет. В примере из описания команда распознаёт github-copilot с высокой уверенностью по пяти файлам, среди них root-instructions, scoped-instructions, prompt и skill, и отчитывается о пяти просмотренных файлах и нуле пропущенных каталогов.
Затем stemma import переносит конфигурацию выбранного провайдера в канонический проект, stemma plan показывает будущие изменения в режиме только для чтения, а stemma apply записывает их транзакционно с откатом. После первого прогона рабочий цикл сводится к правке Markdown и повторному вызову stemma apply --all --yes.
Остальные команды обслуживают проверку: validate разбирает проект, профили и манифест, explain объясняет проекцию одной сущности на конкретную цель, а check --all завершается с ошибкой, когда сгенерированные файлы устарели. В CI автор предлагает связку stemma validate и stemma check --all --warnings-as-errors; все команды принимают --json, коды выхода описаны в docs/diagnostics.md.
Канонический проект хранится как каталог Markdown-файлов с метаданными во front matter
Каталог .stemma/ содержит project.json с именем, целями и бюджетами, подкаталоги context, rules, skills, agents, procedures и decisions, а также provenance.json и manifest.json, которые фиксируют происхождение сущностей и состав сгенерированного. Каждая сущность лежит в отдельном Markdown-файле со структурированными метаданными во front matter.
В примере из описания правило получает заголовок, приоритет must и активацию типа path-scoped с единственным шаблоном src/api/**. Текст до первого известного заголовка считается инструкцией, и только его видит агент, а раздел Rationale остаётся для людей и не расходует токены контекста агента.
Профиль цели пересобирает охват сущности для одного провайдера, не трогая канонический источник. В приведённой оценке постоянно активный канонический контекст занимает около 72 токенов, целевой около 13, крупнейшая целевая область src/** около 39 токенов, худший случай запроса около 52. Автор подчёркивает, что решение о содержимом каждого запроса остаётся за человеком.
Cursor отклоняется с кодом выхода 3, для четырёх остальных провайдеров заявлены импорт и экспорт
Импорт и экспорт объявлены для GitHub Copilot, Claude Code, Codex и Kiro. Cursor присутствует только как объявленный идентификатор: запрос такой цели завершается с кодом выхода 3. Каждое утверждение о возможностях провайдера сопровождается ссылкой на официальную документацию и датой проверки в docs/provider-compatibility.md.
В Copilot поле applyTo не поддерживает отрицательные шаблоны, поэтому исключения при экспорте теряются. В Claude Code правила ложатся в .claude/rules/ с ключом paths:, а процедуры превращаются в skills. Codex опирается только на расположение файлов по каталогам, у Kiro используется inclusion со значениями always, fileMatch, manual и auto.
Одинаковые вход, конфигурация и версия дают идентичные файлы, диагностику, порядок, хеши и код выхода, а обратное преобразование в тот же формат без смысловых изменений воспроизводит исходные байты вместе с переводами строк и BOM. Записи транзакционные, симлинки отклоняются, файлы, которые Stemma не создавала, она не перезаписывает. Тесты дополняются golden-фикстурами по каждому провайдеру, fuzz-целями и кроссплатформенным CI на Linux, macOS и Windows.
Открытые issue и неподписанные бинарники
Статус проекта автор называет ранним, но рабочим и протестированным. Известные проблемы, включая найденные независимым аудитом, ведутся публично в открытых issue, и две ошибки тихой конверсии он предлагает исправить до того, как инструмент можно будет рекомендовать для задач, результат которых нельзя проверить вручную.
Бинарники не подписаны: сертификат автор называет регулярным расходом, который проект пока не оправдывает, поэтому при ручной установке срабатывают Gatekeeper на macOS и SmartScreen на Windows. Homebrew обходит запрос Gatekeeper, а установочный скрипт для PowerShell сверяет загрузку с опубликованным в релизе SHA-256.
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
