Дайте агенту навык vibevm
01Ваш агент работает лучше, когда знает, что такое vibe и как его вызывать. Эта страница кладёт короткий файл с инструкцией туда, где агент его читает, а для агентов, которые это поддерживают, запускает сервер, к которому агент обращается напрямую.
Подключи vibe ко всем агентам для кода, установленным на этой машине, для проекта VibeVM в текущей папке: установи навык vibevm и запись MCP-сервера, затем покажи мне, что записано и для каких агентов.
vibe в PATH; проект с vibe.toml в текущей папке; хотя бы один поддерживаемый агент: Claude Code, Claude Desktop, Cursor, OpenCode или Codex
vibe mcp status показывает актуальную запись сервера и навык для каждого обнаруженного агента; следующая сессия агента в этом проекте знает команды vibe и может спрашивать о пакетах проекта
vibe mcp statusvibe skill list --quiet
Что происходит
03Агент выполняет vibe mcp install --auto --yes. vibe обнаруживает агентов на машине и записывает для каждого две вещи. Первая — запись в конфигурации агента, которая запускает vibe mcp serve как сервер, к которому агент может обращаться. Вторая — файл навыка (skill), SKILL.md, который учит агента командам vibe и тому, когда ими пользоваться. Обе записи трогают только запись vibevm в каждой конфигурации; всё остальное в этих файлах остаётся как было. Команда идемпотентна: второй запуск сообщает о каждой неизменившейся записи как о неизменившейся.
04 spec: Registration writes touch ONLY the target…
Registration writes touch ONLY the target agent's config files and only managed entries; server processes receive the project root as cwd and NO secrets from vibe.
05Это работает благодаря двум поверхностям. vibe mcp serve — сервер Model Context Protocol, который отдаёт любому агенту состояние проекта, выведенное из лока, в виде инструментов, а команды vibe mcp подключают его к собственной конфигурации каждого агента и пишут его SKILL.md. Набор агентов фиксирован: Claude Code, Claude Code Desktop, Cursor, OpenCode и Codex. Каждый глагол идемпотентен на матрице «агент и область», предлагает --dry-run и спрашивает перед записью.
06 spec: A Model Context Protocol server (vibe…
A Model Context Protocol server (vibe mcp serve) that exposes the
project's lockfile-derived state to any MCP-speaking agent as callable
tools — so the agent queries package identity and pulls subskill content
on demand instead of guessing from the file tree.
07 spec: An agent-integration command family (vibe mcp…
An agent-integration command family (vibe mcp install and friends)
that wires that server into each agent's own configuration and writes a
per-agent skill manifest, so an operator runs one command instead of
hand-editing five different config files.
08 spec: Decision: The integration surface supports…
Decision. The integration surface supports a fixed set of MCP-capable coding agents (Claude Code, Claude Code Desktop, Cursor, OpenCode, Codex).
09 spec: Decision: The agent-integration command family…
Decision. The agent-integration command family is a coherent
lifecycle over the (agent × scope) matrix, every verb idempotent and
every mutating verb offering --dry-run and a confirmation:
10vibe пишет в тот файл, который каждый агент действительно читает при обнаружении: для Claude Code это .mcp.json в проекте или таблица серверов верхнего уровня в ~/.claude.json, и никогда файл настроек, который их только ограничивает. Он вставляет или обновляет свою единственную запись и сохраняет каждый чужой ключ в его порядке, так что большая конфигурация дополняется, а не переписывается; удаление вычищает только запись vibe. Для агентов с папкой навыков, Claude Code, OpenCode и Codex, он также пишет SKILL.md о том, как пользоваться vibe через инструменты.
11 spec: Config path
Config path — resolved per (agent, scope), cross-platform. The path must be the file the agent actually reads for MCP discovery, not merely a settings file it happens to own. For Claude Code that is<project>/.mcp.json(project) and the top-levelmcpServersof~/.claude.json(user) — neversettings.json, which only gates.mcp.jsonservers (enabledMcpjsonServers) and does not define them.
12 spec: Merge discipline
Merge discipline — installing upserts vibevm's one entry under the section key and preserves every foreign key, and their order: the JSON writer round-trips order-preserving (serde_json/preserve_order), so a merge into a large~/.claude.jsonappends rather than re-alphabetising the operator's whole file. Uninstalling strips only vibevm's entry and leaves the rest. The operator's other MCP servers and unrelated config survive every operation.
Руками
141. Сначала посмотрите план; ничего не записывается:
vibe mcp status --path hello-vibe
Detected agents: claude, claude-desktop, opencode, codex
→ would-create mcp claude (project) → <TMP>/work/hello-vibe/.mcp.json (file does not exist yet)
→ would-update mcp claude (user) → <HOME>/.claude.json (mcpServers/vibevm differs)
→ would-update mcp claude-desktop (user) → <HOME>/AppData/Roaming/Claude/claude_desktop_config.json (mcpServers/vibevm absent)
→ would-create mcp cursor (project) → <TMP>/work/hello-vibe/.cursor/mcp.json (file does not exist yet)
→ would-create mcp cursor (user) → <HOME>/.cursor/mcp.json (file does not exist yet)
→ would-create mcp opencode (project) → <TMP>/work/hello-vibe/opencode.json (file does not exist yet)
→ would-update mcp opencode (user) → <HOME>/.config/opencode/opencode.json (mcp/vibevm differs)
→ would-update mcp codex (user) → <HOME>/.codex/config.toml ([mcp_servers.vibevm] absent)
→ would-create skill claude (project) → <TMP>/work/hello-vibe/.claude/skills/vibevm/SKILL.md
→ would-update skill claude (user) → <HOME>/.claude/skills/vibevm/SKILL.md
→ would-create skill opencode (project) → <TMP>/work/hello-vibe/.opencode/skills/vibevm/SKILL.md
→ would-update skill opencode (user) → <HOME>/.config/opencode/skills/vibevm/SKILL.md
→ would-create skill codex (project) → <TMP>/work/hello-vibe/.agents/skills/vibevm/SKILL.md
→ would-create skill codex (user) → <HOME>/.agents/skills/vibevm/SKILL.md
162. Установите для всех обнаруженных агентов или для одного: --agent claude, --agent codex, --agent opencode, --agent cursor, --agent claude-desktop:
vibe mcp install --auto --yes --dry-run --path hello-vibe
→ would mcp claude (project) → <TMP>/work/hello-vibe/.mcp.json (file does not exist yet)
→ would mcp opencode (project) → <TMP>/work/hello-vibe/opencode.json (file does not exist yet)
→ would skill claude (project) → <TMP>/work/hello-vibe/.claude/skills/vibevm/SKILL.md
→ would skill claude-desktop (project) → (no skill loader) (agent `claude-desktop` has no project-scope skill loader)
→ would skill opencode (project) → <TMP>/work/hello-vibe/.opencode/skills/vibevm/SKILL.md
→ would skill codex (project) → <TMP>/work/hello-vibe/.agents/skills/vibevm/SKILL.md
183. Выберите область: --scope project пишет в папки агентов внутри проекта, --scope user — в вашу домашнюю конфигурацию, --scope both — в обе. Без проекта в текущей папке пользовательская область выбирается за вас.
Навыки, которые приносят пакеты
19Пакеты могут объявлять собственные навыки, и пакет может быть любого вида: flow приносит навык-чеклист, языковое руководство — навык обхода, руководство — навык чтения. vibe skill list показывает, что объявляют установленные пакеты, а vibe skill install проецирует их в папки навыков агентов. Установка навыка — это проекция файла, который пакет уже несёт, а не второй механизм доставки.
20 spec: Decision: Installing a skill…
Decision. Installing a skill into an agent is a projection: read the declared skill body from the package (invibedeps/…once installed) or an external source authenticated by the package's matching lock record, and write it into each target agent's skill directory in that agent's own convention (.claude/skills/<name>/…,.opencode/skills/<name>/…,.agents/skills/<name>/…— the paths PROP-015 §2.6 already resolves).
21 цитата из спецификации
vibe skill list — skills declared by installed packages.
22 spec: vibe skill install [--agent …] [--scope…
vibe skill install [--agent …] [--scope project|user|both] [<pkgref>] [<skill>…]— project skills into agents. Default: all declared skills; narrow with explicit skill names or a pkgref. Idempotent,--dry-run, confirm (or--assume-yes), per-(agent, scope) report — the same lifecycle and merge discipline asvibe mcp install(PROP-015 §2.7).
vibe skill list --path hello-vibe
→ wal-status [flow:wal] → agents: all — Read the project WAL end to end and emit a ten-line orientation: phase, attention items, next step; warn on staleness
1 skill(s) declared.
24Навык этого руководства, vibevm-docs, приходит тем же путём, как только руководство оказывается в машинном хранилище (store).
Серверы, которые приносят пакеты
25Пакет вида mcp доставляет сервер, собранный из его собственного кода, например инструменты дисциплины языкового семейства. vibe mcp install регистрирует такие серверы в конфигурациях агентов рядом с сервером самого vibe, с путём к собранному бинарнику; vibe mcp status сообщает, собран ли каждый и актуален ли он. Зарегистрировать сервер — значит, что агент будет запускать код этого пакета в начале сессии, поэтому регистрация спрашивает согласия, как установка.
26 spec: Registering a server schedules package code…
Registering a server schedules package code execution at agent-session start; building its binary compiles package code.
27Каждый установленный пакет вида mcp вносит свои серверы в одну и ту же регистрацию, и она относится к проекту, потому что серверы проекта принадлежат его закоммиченной конфигурации. В JSON-файле vibe держит маленький список vibevm.managed с именами записей, которыми владеет, так что переустановка переписывает только их и никогда не трогает сервер, который вы добавили сами. Ворота согласия те же, что у бинарников: пакеты группы org.vibevm в белом списке, любому другому происхождению нужен --assume-yes. vibe mcp status говорит, собран ли бинарник каждого сервера.
28 spec: It grows package discovery: every installed…
It grows package discovery: every installed package of kindmcpcontributes its[[mcp_server]]entries, written into the target agents' configs with
29 spec: Registration is PROJECT-scope only (the {project_root}…
Registration is PROJECT-scope only (the
{project_root} substitution demands a project, and a project's
servers belong in its committed config), and every project-scope
agent config is JSON — so no TOML sidecar form exists;
30 spec: a managed sidecar: a top-level "vibevm"…
a managed sidecar: a top-level"vibevm": { "managed": [...] }object in the JSON config names the entries vibevm owns (never a key INSIDE a server entry — hosts validate entry shapes), so re-installs rewrite ONLY vibevm-managed entries and operator-owned servers are never touched — the<vibevm>block convention of the boot files, applied to agent configs.
31 spec: One trust model, two verbs: registration…
One trust model, two verbs: registration inherits PROP-025's consent gate verbatim —org.vibevmpackages are allow-listed; any other origin requires the explicit--assume-yes(or is refused with the recipe naming that exact flag).
32 spec: vibe mcp status reports each declared…
vibe mcp statusreports each declared server's artifact state (an unbuilt artifact registers fine and fails at agent launch — the recipe namesvibe bin build <name>);
Особые случаи и правила
33vibe mcp upgrade после обновления vibe приводит существующие интеграции к форме, которую несёт текущий бинарник; ничего нового он не создаёт.
34vibe mcp uninstall удаляет запись и навык vibe и оставляет каждую чужую запись на месте; vibe skill uninstall вычищает только навыки, которые спроецировал vibe.
35 spec: vibe skill uninstall …
vibe skill uninstall … — the inverse; strips only vibevm-projected
skills, leaves foreign skill dirs untouched.
36Cursor и Claude Desktop принимают запись сервера, но папок навыков у них нет; vibe сообщает, что навык для них пропущен, а не выдумывает место.