Перейти к основному содержимому

Agent Skill

Готовый Agent Skill, который учит кодового ассистента писать на neva правильно, — тот же материал, что и на этом сайте, но переупакованный под модель, а не под читателя.

Скачать neva-skill.zip

Исходники: skill/neva.

Зачем это нужно​

Ассистенты уверенно ошибаются в MCP на Rust, и причина структурная: MCP 2026-07-28 сломал совместимость со всем, что было до него, а почти весь материал по MCP, который модель видела, — включая все прочие SDK — описывает предыдущее поколение. Поэтому типичная ошибка — не забытое имя метода. Это ассистент, который пишет рукопожатие initialize, тянется к ping, открывает SSE-поток GET или считает ctx.elicit обычным await в обработчике, который списывает деньги с карты.

Скилл выносит ровно эти ловушки вперёд, а за подробностями отправляет в нужный файл.

Что внутри​

ФайлО чём
SKILL.mdОпределение версии и профиля, API с пространствами имён у клиента и Context, формы обработчиков, список ловушек, минимальные сервер и клиент, маршрутизация
references/server.mdФормы обработчиков (async fn, обычная fn, blocking), инструменты, промпты, ресурсы, схемы, имена аргументов, типы контента, пространства имён Context, возможности клиента в каждом запросе, DI, middleware, логи, подписки, рассылка между экземплярами
references/client.mdПодключение, пространства имён, общий клиент, отмена, вызовы, структурированные результаты, батчи, подписки, ответы на input-запросы, задачи
references/mrtr.mdМодель повторного выполнения, memo / once / on_commit, режимы elicitation, задачи
references/apps.mdMCP Apps: ресурсы ui://, блоки _meta.ui, видимость, блок безопасности, рукопожатие View
references/svir.mdМост svir: RemoteTools, into_toolbox / with_toolbox, ctx.tools().toolbox(), что сообщается модели, промпты и ресурсы как сообщения, сэмплирование ответом модели
references/http.mdТранспорты, TLS, JWT и OAuth 2.1 (обе стороны, DPoP, CIMD, grants), DNS-rebinding, остановка сервера, свои движки, публикация в MCP Registry, фича-флаги, развёртывание на нескольких экземплярах
references/troubleshooting.mdКоды ошибок, «симптом → причина», всё удалённое в этом поколении
references/legacy.mdПрофиль legacy-spec и все пути обновления, с 0.4.x по 0.7.0

SKILL.md намеренно короткий: это точка входа, которую агент читает всегда, и восемь справочников, которые он подгружает только под задачу.

Установка​

Формат SKILL.md — общий стандарт, поэтому установка везде одинаковая: распаковать и скопировать каталог neva/ в папку скиллов инструмента, сохранив имя каталога — оно обязано совпадать с полем name во frontmatter.

ИнструментПерсональноВ проекте
Claude Code~/.claude/skills/neva/.claude/skills/neva/
opencode~/.config/opencode/skills/neva/.opencode/skills/neva/
Codex CLI~/.codex/skills/neva/.codex/skills/neva/
unzip neva-skill.zip
mkdir -p ~/.claude/skills && cp -r neva ~/.claude/skills/

После этого перезапустите ассистента — скиллы обнаруживаются при старте.

opencode дополнительно читает .claude/skills/ и .agents/skills/, так что одной копии внутри проекта может хватить сразу на несколько инструментов.

Всё остальное​

Подойдёт любой ассистент, умеющий читать файлы. Укажите ему на SKILL.md и дайте пройти по ссылкам — или добавьте строку в AGENTS.md проекта:

For Rust MCP work with the `neva` crate, read `.agents/skills/neva/SKILL.md`
and the reference file it routes you to.

Код в нём компилируется​

Каждый Rust-сниппет скилла собирается против опубликованного крейта neva в CI этого репозитория — больше семидесяти штук, — поэтому то, что ассистент оттуда копирует, действительно компилируется. В этом и смысл скилла вместо пересказа: ассистент, вставляющий правдоподобный API, хуже того, который вставляет проверенный.

Запустить проверку самому после правок:

python3 ci/check-snippets.py --docs-dir skill --default-mode compile --default-features full

Версия​

Скилл описывает neva 0.7.0 / MCP 2026-07-28, легаси-поколение вынесено отдельно. Обе версии записаны во frontmatter, чтобы ассистент мог понять, соответствует ли скилл крейту перед ним:

metadata:
neva-version: "0.7.0"
mcp-protocol: "2026-07-28"