Написать пакет lang
01Пакет lang учит агента писать на языке или в нотации: идиомы, ограничения, форма хорошего файла. Эта страница пишет такой пакет и объясняет, как vibe распознаёт в нём языковую дисциплину.
Создай пакет lang org.acme/sql-style в текущем проекте VibeVM, как пакет в дереве под vibevm/vibepacks/: руководство о том, как наша команда пишет SQL. Дай ему стартовый фрагмент, который называет три правила, которым агент должен следовать всегда, и документ-руководство с полными идиомами, примерами и причинами. Запусти на нём vibe check.
навык vibevm, установленный у вашего агента; проект с vibe.toml в корне
vibevm/vibepacks/org.acme/sql-style/v0.1.0/vibe.toml объявляет kind = "lang" со стартовым фрагментом; у руководства под vibevm/vibespecs/ разделы с якорями, которые цитирует фрагмент; vibe check не находит ошибок
vibe check --path vibevm/vibepacks/org.acme/sql-style/v0.1.0 --quietgrep -q "kind = \"lang\"" vibevm/vibepacks/org.acme/sql-style/v0.1.0/vibe.toml
Что происходит
03Агент создаёт скелет пакета, пишет руководство и его фрагмент так же, как пишут их для flow, и ставит вид lang. От flow это отличается жанром, а не механикой. Flow говорит, как работает команда; пакет lang говорит, как писать на чём-то. Вид сообщает агенту, реестру и сайту, что перед ними, ещё до того, как файл открыт.
04kind ∈ {flow, feat, stack, tool, mcp, lang, doc, app}— eight kinds;mcpshipped with PROP-027;docandappadmitted by PROP-057 through theVIBEVM-SPEC.md§4.1 amendment of 2026-09-12 (pending the owner's ratification at the merge of the docs-2026-09 branch; the code learns the two kinds in that campaign's phase 2). (§InvariantsINV-VOCABULARYin this file carries the same list.)
Что такое пакет lang, а что нет
05Жанр шире языков программирования: подходит руководство по языку запросов, нотации конфигурации, диалекту документации или домашнему стилю языка. Не подходит связка инструментов; это stack. Примеры в публичном реестре — руководства по языкам AI-Native для Rust, TypeScript и Go, каждое поставляет руководство, набор карточек и запускаемый тулчейн.
06Язык AI-Native распознаётся ровно по одному признаку: по зависимости от общего ядра дисциплины, org.vibevm.ai-native/core-ai-native. Не по группе и не по имени. Третья сторона может опубликовать собственную языковую дисциплину в своей группе, и её распознают так же, так что дисциплина — не закрытый клуб.
07core-ai-native(flow) — the language-neutral discipline core. It stands ALONE: it is the shared foundation every language family requires, not itself an aggregator (there is nothing to aggregate beneath a foundation), so nocore-ai-native-lang/-mcpexist. Each<family>-langrequires it.
Когда язык приносит инструменты
08Языковое руководство, которое поставляет ещё и инструменты, проверщик, форматер, оракул типов, становится семейством. Пакет руководства — <family>-lang; пакет сервера <family>-mcp обслуживает те же инструменты для агентов; бандл <family> закрепляет оба на одной версии. Участники двигаются в унисон; потребитель требует бандл и получает проверенный набор.
09
A package family is a set of packages sharing a <family> stem and
delivering one coherent capability across three roles:
10 Within a family the members move in unison: a content change to any member bumps EVERY member of that family to one shared version, and the aggregator's version IS that family version.
11Основа семейства ведёт каждую именованную поверхность: крейты, бинарники, навыки и сервер несут префикс <family>, так что всё одного языка сортируется и читается вместе.
12
The family stem is language-FIRST and reaches every named surface a family
ships, not only the package identities. Each crate, binary, agent skill, and
MCP server carries the <family> prefix:
Руками
131. Создайте слот пакета, затем поставьте kind = "lang" в его манифесте:
152. Внутри слота напишите vibevm/vibespecs/boot/sql-style.xml с правилами, которым агент должен следовать каждый раз. Руководство положите под vibevm/vibespecs/lang/sql-style/, с причинами, идиомами и примерами.
163. Объявите [boot_snippet] source = "vibevm/vibespecs/boot/sql-style.xml", category = "stack", чтобы правила языка шли после flow-пакетов команды в списке чтения потребителя.
174. Проверьте: vibe check --path vibevm/vibepacks/org.acme/sql-style/v0.1.0.
Особые случаи и правила
18Что из принесённого языком можно запустить, отвечает vibe tools, а не вид: стартовая полоса говорит, какие дисциплины установлены, реестр инструментов — что они принесли.
19Пока вида lang не было, языковые руководства были stack-пакетами; пакет stack, который на самом деле руководство, должен перейти в lang при следующей версии, чтобы слово значило одно.