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

Agent Skill

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

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

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

Сам скилл написан по-английски: его читает модель, а не человек.

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

svir устроен не так, как LLM SDK, под которые написана большая часть кода. Диалог — это запрос, системный промпт — поле, ответ — один поток, последний элемент которого — весь ответ целиком, а ошибка — вид, по которому делают match. Ассистент, пишущий по привычке, тянется к сообщению с ролью system, к choices[0].delta.content или к клиенту, который помнит чат. Такой код здесь не компилируется — или, что хуже, компилируется и теряет вызовы инструментов.

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

Что внутри​

ФайлО чём
SKILL.mdОпределение версии и фич, работающие вызов и цикл инструментов, обязательные правила, маршрутизация
references/requests.mdСистемный промпт, сообщения и части, вложения, глубина рассуждений, структурированный вывод, диалоги, сохранение и восстановление
references/streaming.mdСобытия, итоговый ответ и причины завершения, рассуждения, расход токенов и скорость, отмена, строгий и мягкий режимы, лимиты, сбои
references/tools.mdTool, реестр Tools, схемы из типов, цикл, цикл с потоком, обязательный или запрещённый вызов, свой Toolbox
references/client.mdБазовый URL, API-ключи, дополнительные заголовки, таймауты, список моделей, слои, провайдеры TLS, собственный HTTP-бэкенд, тесты без сервера
references/codec.mdПрокси, ретранслирующий поток, Encoder и Decoder сами по себе, собственный транспорт
references/errors.mdВиды ошибок и «симптом → причина» во время выполнения и при компиляции

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

Установка​

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

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

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

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

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

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

For Rust code that talks to LLMs with the `svir` crate, read
`.agents/skills/svir/SKILL.md` and the reference file it routes you to.

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

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

Код на этом сайте проходит ту же проверку. Запустить её самостоятельно после правок:

python3 ci/check-snippets.py --docs-dir skill

Версия​

Скилл соответствует svir 0.1.5: OpenAI-совместимый Chat Completions, потоком. Это записано во frontmatter, чтобы ассистент мог понять, подходит ли скилл к крейту перед ним:

metadata:
svir-version: "0.1.5"
msrv: "1.85"
wire-api: "OpenAI-compatible Chat Completions, streaming"

Ещё он рассказывает ассистенту, что менялось между релизами 0.1, — для проекта, зафиксированного на более старом.