Открытая практика / Блог
Сайт, который читают агенты: как мы опубликовали навыки GreenLight в открытом стандарте
GreenLight публикует каталог навыков и визитку агента в открытом стандарте. Разбираем, как это работает, и показываем живые endpoints — установка навыка одной командой.
Вы, возможно, уже видели в логах сервера строчку вида
GET /.well-known/skills/index.json 200. Ещё год назад такой запрос означал бы,
что кто-то ошибся адресом. Сегодня это сигнал нового слоя веба — сайта, который
говорит с ИИ-агентами напрямую, без API-ключей, без регистрации и документации
для людей.
Мы в GreenLight решили не писать об этом стандарте абстрактно, а сначала внедрить его у себя. Эта статья — о том, что уже работает на нашем сайте, и о том, как ваш агент может подключить GreenLight одной командой.
Что происходит
Сайт сам объявляет: «Вот навыки, которыми я могу наделить твоего агента.
Забери их одной командой». Механика опирается на старую проверенную идею —
well-known URI (RFC 8615): зарезервированный путь в корне домена, где
публикуется машиночитаемый JSON. Тот же принцип, что у robots.txt (для
краулеров) и .well-known/openid-configuration (для OAuth).
Спецификация развивается. Текущая версия — 0.2.0 (Cloudflare RFC поверх
формата Anthropic): путь /.well-known/agent-skills/index.json, поля
$schema, type (skill-md | archive), url и digest (SHA-256 для
целостности). Предыдущая версия 0.1.0 использовала путь
/.well-known/skills/index.json и поле files[]. Мы публикуем оба пути:
канонический — для современных клиентов, legacy — для старых.
Обе версии делают одно: дают агенту или «хабу навыков» одним GET-запросом узнать, чем сайт может его наделить.
Как это работает на нашем сайте
Мы опубликовали четыре endpoint'а:
GET /.well-known/agent-skills/index.json — каталог навыков (канонический, v0.2.0)
GET /.well-known/agent-skills/greenlight-chat-widget/SKILL.md — сам навык
GET /.well-known/skills/index.json — legacy-каталог (v0.1.0)
GET /.well-known/agent-card.json — визитка агента
Шаг за шагом:
- Агент запрашивает каталог по
/.well-known/agent-skills/index.json. - В ответ — JSON с именем, описанием, адресом и digest навыка.
- Агент забирает
SKILL.md— обычный Markdown с инструкцией. - Навык встроен в контекст агента и готов к работе.
Каталог отдаётся с Content-Type: application/json, а в индексе agentskills.io
рядом с адресом лежит digest — SHA-256 содержимого. Это первая линия защиты:
клиент обязан проверить целостность перед применением навыка.
Навык — это просто папка
В основе простая абстракция: навык — это директория с файлом SKILL.md
(обязательно) и опциональными scripts/, references/, assets/. Навык
начинается с YAML frontmatter (name, description) и дальше содержит
инструкции, как выполнить задачу. Никакого бинарного формата и рантайма.
Здесь включается progressive disclosure: агент держит в контексте только
name и description каждого навыка (по 50–100 токенов), а полный текст
SKILL.md загружает только когда задача совпала с описанием. Справочные
файлы читаются с диска по мере надобности.
Навыки против MCP: рецепты против глаголов
Чтобы не путать:
- MCP (Model Context Protocol) — это глаголы: доступ к внешним инструментам и данным (базам, API, файловым системам).
- Skills — это рецепты: знание, что делать с этими инструментами и данными.
MCP не передаёт процедурное знание, а навык не даёт доступа к внешним системам. Вместе они закрывают задачу, по отдельности — нет.
Каталог навыков
Сейчас опубликованы два навыка:
greenlight-chat-widget— установка и настройка чат-виджета.evidence-logic— проверка рассуждений по доказательствам: разбор утверждения на посылки, метки Fact/Record/Inference/Assumption, скан логических ошибок, тест фальсификации.
Оба устанавливаются одной командой:
npx skills add https://greenlight.ru
Живой пример: навык нашего чат-виджета
Чтобы не быть абстрактными, вот что уже опубликовано:
- Имя:
greenlight-chat-widget - Что умеет: установка и настройка чат-виджета GreenLight — сниппет, SSE-стриминг, темы оформления, передача диалога оператору, диагностика 502.
- Установка одной командой:
npx skills add https://greenlight.ru
Агент, который умеет ставить навыки, подтянет наш навык и будет знать, как правильно встроить виджет на сайт клиента. Сам сниппет таков:
<script type="module"
src="https://cdn.greenlight.ru/web.js"
data-tenant="<TENANT_ID>"
data-bot="<BOT_ID>"
data-api-host="https://api.greenlight.ru"></script>
Виджет — один ES-модуль с CDN. data-tenant и data-bot выдаются для каждого
клиента; для быстрой проверки есть демо-тенант romashka / main. Стриминг
идёт через SSE поверх POST-запроса к /api/chat — поэтому EventSource
не подходит, а ответ читается потоково.
Полный текст навыка — в открытом доступе:
https://greenlight.ru/.well-known/agent-skills/greenlight-chat-widget/SKILL.md.
Визитка агента
Помимо навыков мы публикуем /.well-known/agent-card.json — визитку агента:
название, версию, возможности, endpoint и список навыков. По ней агент узнаёт,
как с нами соединиться. Вместе каталог навыков и визитка дают полноценное
A2A-открытие (agent-to-agent) — по аналогии с протоколом Google A2A.
Человекочитаемый каталог
Endpoint'ы — для агентов. Для людей мы сделали страницу
/agents/: она объясняет, как работает сервис, и содержит
каталог наших публичных навыков с описанием и командой установки. Если у вас
есть навык, который пригодится партнёрам, — пришлите его, мы рассмотрим.
Тёмная сторона: цепочка поставок
Простота формата — его же уязвимость. Навык — это инструкции и код, которые агент выполняет по доверию. Волна supply-chain атак уже прошла по экосистеме.
Практическое правило: ставьте навыки только из доверенных источников, а из
малознакомых — аудируйте: читайте SKILL.md, смотрите на скрипты и любые
обращения к внешним сетям. digest в индексе — ваша первая линия защиты.
Что дальше
Мы развиваем это направление: MCP-сервер, каталог навыков, партнёрская
программа. Сайт, который не умеет разговаривать с агентами, через пару лет
будет выглядеть так же странно, как сайт без robots.txt в 2005-м.
Подключайтесь: установите наш навык, пришлите свой, обсудите подключение клиента — /contacts/.