Зелёный СветТехнологический партнёр

Открытая практика / Блог

Сайт, который читают агенты: как мы опубликовали навыки 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                  — визитка агента

Шаг за шагом:

  1. Агент запрашивает каталог по /.well-known/agent-skills/index.json.
  2. В ответ — JSON с именем, описанием, адресом и digest навыка.
  3. Агент забирает SKILL.md — обычный Markdown с инструкцией.
  4. Навык встроен в контекст агента и готов к работе.

Каталог отдаётся с 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/.