Туториал

Что такое Google Agent Plugins в 2026? Skills, MCP-серверы, плагин и JSON Schema в следующем стеке инструментов агента

Скилл написан, MCP работает, а следующий coding-агент всё равно просит другую обёртку. В 2026 не хватает не инструментов. Не хватает ящика, который едет вместе.

6 августа 2026 Google в Developers Blog объявил, что входит в технический комитет Agent Plugins и подключает формат к своим продуктам. 10 сентября вышел Google Cloud Developer Plugin: auth, проекты, ограждения gcloud и MCP Developer Knowledge в одном устанавливаемом пакете для Antigravity, Claude Code, Codex и Cursor. Легко услышать «Google снова придумал протокол инструментов». Нет. Agent Skills уже говорит, как писать скилл. MCP уже говорит, как вызывать инструмент. Не хватало ящика, который держит оба в одном каталоге и не ветвится при смене клиента. Контракт ящика — два закрытых JSON: plugin.json и mcp.json. Что такое MCP — про протокол; MCP и JSON Schema — про inputSchema. Здесь только четыре слоя: Plugin, Skills, MCP-сервер, JSON Schema. Спека: Agent Plugins 1.0.0.

Не ещё один букварь MCP: плагин — это ящик

Слои зафиксировать. Скилл — это бриф, который читает модель: когда применять, как идти, какие скрипты и справки рядом. MCP-сервер — рука рантайма: tools/list отдаёт инструменты, tools/call исполняет, аргументы — JSON. Плагин не изобретает ни то ни другое. Он говорит: в корне должен быть plugin.json; скиллы ищут только среди прямых детей skills/; MCP читают только из корневого mcp.json. v1 признаёт ровно эти два типа. Команды, субагенты, хуки — в каталог с обратным доменом вроде com.example.client/; другие клиенты могут его игнорировать.

Google пишет то же публично: не каждый скилл должен стать плагином. Один MCP-сервер для одного клиента проще оставить нативной конфигурацией. Одинокий SKILL.md ящик не нужен. Плагин окупается, когда несколько частей должны ехать вместе: MCP, который ищет счета, скилл, который делает из них недельную сводку, и контракт обнаружения, которому нельзя жить в третьем файле. Смена Cursor, Claude Code или Antigravity не должна означать вторую раскладку каталогов и второй диалект манифеста.

Спека намеренно не описывает установку, раздачу, права, песочницу и доверие. Это обязанности IDE, CLI или корпоративной платформы; зашить их в переносимые поля — развилка в первый день. Agent Plugins — формат пакета. Обнаружение может сидеть в другом слое (Google упоминает Agentic Resource Discovery и AI Catalog). Исполнение по-прежнему MCP и Agent Skills. Взять один слой не значит купить следующий. Запомните: ящик переносим; UX установки — нет.

Слой Что это Где контракт
PluginРаздаваемый каталог для частей, которые должны идти вместеplugin.json (закрытые поля)
SkillПовторно используемый текст процесса, скрипты, справкиskills/<name>/SKILL.md
MCP-серверРантайм и транспорт инструментов и ресурсовКорневой mcp.json плюс протокол MCP
JSON SchemaФорма манифеста, MCP-конфига и аргументов инструментаОфициальные plugin.schema.json / mcp.schema.json и inputSchema

plugin.json: закрытый манифест и JSON Schema

Клиент обязан прочитать корневой plugin.json до поиска компонентов. Файл — JSON-объект, схема закрыта: только $schema, name, version, description, author, homepage, repository, license, keywords, extensions. Лишние поля верхнего уровня сообщают и игнорируют; из-за них плагин не отвергают. Смертельно — нет обязательного поля, неверный тип или нелегальный name: тогда весь пакет не грузят. Для 1.0.0 $schema должен быть https://agent-plugins.org/schemas/1.0.0/plugin.schema.json. Клиенты выбирают по нему локальные правила и не должны качать схему во время загрузки.

name — не свободная подпись. Длина 1–64, только строчные буквы, цифры, дефисы и точки; первый и последний символы буквенно-цифровые; нельзя -- и ... My-Plugin и -start нелегальны. SemVer для version рекомендуют, но клиент не должен отвергать манифест только потому, что строка «не похожа на SemVer». Объект author допускает только name, email, url. Приват клиента — в extensions.com.example.client. Не выдумывайте пятый ключ верхнего уровня под хуки.

Заметьте, чего манифест не умеет: переносить компоненты и встраивать скиллы или MCP внутрь. Нет настраиваемого пути обнаружения и нет порядка приоритета. Есть skills/ — грузите; нет — пропускайте, это не ошибка. Ниже чуть более полный, всё ещё легальный манифест. Сначала убедитесь, что он парсится, затем сверьте поля с официальной схемой.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "reports-plugin",
  "version": "1.0.0",
  "description": "Query invoices and write the weekly finance summary",
  "license": "Apache-2.0",
  "keywords": ["finance", "reports", "mcp"],
  "homepage": "https://example.com/plugins/reports",
  "repository": "https://github.com/example/reports-plugin"
}

Skills: SKILL.md в фиксированном каталоге

Agent Plugins не переписывает формат скилла. Agent Skills владеет frontmatter, телом и раскладкой scripts/, references/, assets/. Plugins задаёт только обнаружение. Фиксированное место — skills/. Каждый прямой дочерний каталог с обычным файлом ровно SKILL.md — один скилл. Клиенты не должны рекурсировать глубже: второй скилл в skills/deploy/extra/SKILL.md невидим.

Если один скилл невалиден, клиент должен его пропустить, продолжить грузить остальные скиллы и типы и должен сообщить, какой упал. Это противоположность «один краш MCP убивает пакет». Формула Google: независимые компоненты падают независимо. Сломанный скилл недельной сводки не должен валить MCP счетов, и наоборот. Для coding-агента это важно: опечатка во frontmatter скилла документации не должна снимать ограждения gcloud.

Скилл владеет контекстом, не транспортом. Он говорит модели: «сначала проект, потом биллинг, ключи в git не коммить». Менять облачные ресурсы по-прежнему MCP-инструменты или локальные скрипты. Вставить целый мануал в системный промпт — съесть окно. Скиллы грузятся по требованию — тот пункт, который повторяет текст Cloud Developer Plugin. Ставить скиллы по одному становится грязно; связанные скиллы и MCP должны ехать пакетом. Плагин — этот шнур, не второй Tool Calling.

mcp.json: как находят серверы и какой слой у JSON Schema

Проводной протокол MCP остаётся MCP: initialize, tools/list, tools/call, stateless HTTP. Agent Plugins отвечает только куда коннектиться. Конфиг обязан жить в корневом mcp.json, не inline в plugin.json и не по другому ядерному пути. На верхнем уровне только $schema и mcpServers. Для 1.0.0 $schema должен быть https://agent-plugins.org/schemas/1.0.0/mcp.schema.json и совпадать с версией манифеста. Расхождение отключает MCP этого плагина и оставляет скиллы.

У каждого сервера явный type. Клиент не должен угадывать транспорт по форме объекта. stdio требует command (один токен исполняемого, не shell-строка) плюс опциональные args / env / cwd; вложенный бинарь — путь от корня плагина с ./. streamable-http и опциональный устаревший sse требуют абсолютный URL. Не loopback — только HTTPS. Спека прямолинейна: секреты не класть в headers; OAuth и учётные данные — дело клиента, не переносимые поля. Невалидная запись, неподдерживаемый транспорт или сбой handshake пропускают только этот сервер.

JSON Schema появляется трижды. Не сминайте в один файл. Сначала контракты упаковки: plugin.schema.json и mcp.schema.json — можно ли обнаружить плагин. Затем входы инструмента: MCP inputSchema — похожи ли arguments модели. Затем OpenAPI или structured output вашей бизнес-API. Падает первое — клиент не входит в ящик. Падает второе — tools/call гибнет в рантайме. Цепочка проверки — в статье MCP Schema выше. Ниже mcp.json с локальным stdio и удалённым Streamable HTTP.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
  "mcpServers": {
    "invoice-tools": {
      "type": "stdio",
      "command": "./bin/invoice-mcp",
      "args": ["--data", "${PLUGIN_DATA}/invoices"],
      "cwd": "${PLUGIN_ROOT}"
    },
    "docs": {
      "type": "streamable-http",
      "url": "https://docs.example.com/mcp"
    }
  }
}
{
  "name": "searchInvoices",
  "description": "Query invoices by date range and status",
  "inputSchema": {
    "type": "object",
    "properties": {
      "startDate": { "type": "string", "format": "date" },
      "endDate": { "type": "string", "format": "date" },
      "status": { "type": "string", "enum": ["draft", "sent", "paid"] }
    },
    "required": ["startDate", "endDate"]
  }
}

Что Google выпустил в 2026: Developer Plugin, Agents CLI, Data Agent Kit

Сложите два анонса. Август: войти в TSC (Amazon, Cursor, Microsoft, OpenAI, Vercel уже были core maintainers) и начать поддерживать формат в продуктах Google. Сентябрь: флагман google-cloud-developer на google/skills. Это не «ещё одна обёртка gcloud». Это базовый плагин: auth, проекты, ограждения gcloud плюс MCP Developer Knowledge, чтобы агент опирался на актуальные официальные доки, а не на блог годичной давности. Установка — через marketplace или CLI клиента. Ключи в переменных окружения, не в headers у mcp.json — ровно так спека выносит секреты из переносимого контракта.

Ещё две линии в той же экосистеме. Agents CLI пакует каркас ADK, оценку, деплой, наблюдаемость и публикацию, чтобы Antigravity, Gemini CLI, Claude Code и Cursor умели строить агентов на Google Cloud. Data Agent Kit пакует скиллы и MCP для BigQuery, Spanner, Cloud SQL и плоскости данных. Оба и раньше могли отдавать скиллы. Теперь они используют раскладку каталогов, которая не принадлежит Google. Ваш плагин счетов и облачный плагин Google проверяются одними схемами.

Не мешайте с A2A. Плагин отвечает «как этот агент получает набор скиллов и инструментов». A2A Agent Card отвечает «как находят и делегируют другого агента». MCP внутри ящика — по-прежнему рука вниз. Боковые коллеги — Agent Card и Task. Слои: A2A vs MCP. Завернуть целого удалённого агента одним tool в mcp.json — и многоходовые уточнения плюс асинхронные колбэки разорвут форму вызова функции.

Что выпускает Google Что в ящике Зачем вам это
google-cloud-developerБазовые облачные скиллы + MCP Developer KnowledgeЛюбой совместимый клиент, которому нужны GCP-auth и доки
Плагин Agents CLIСкиллы жизненного цикла ADK (каркас / оценка / деплой)Coding-агент, которому нужна инженерия агентов в Cloud
Data Agent KitСкиллы и MCP BigQuery, Spanner, Cloud SQLПайплайны и запросы, которые едут за агентом, а не за одной IDE

Проверить оба контракта в JSONVue

Перед публикацией оставьте четыре фикстуры: легальный plugin.json, манифест с лишним полем верхнего уровня, легальный mcp.json, запись с command ../bin/escape. Первая должна пройти официальную схему. Вторую сообщают и игнорируют — плагин всё равно грузится. Если CI считает это фатальным, вы строже клиента; знайте это. Третья проверяет type и пути. Четвёртая должна упасть: относительный путь за корень плагина — жёсткая ошибка.

Пятая фикстура: inputSchema инструмента и реальный объект arguments tools/call. Зелёный контракт пакета не значит, что модель верно заполнила даты. Не пихайте обе схемы в один файл «общей проверки». Один — обнаружение, другой — вызов. MCP Developer Knowledge берёт API-ключ в рантайме клиента. В git вы проверяете mcp.json без секретов.

В браузере достаточно:Форматировать JSON— парсятся ли оба манифеста;Проверить JSON Schema— $schema, name, mcpServers;JSON Diff— сравнить mcp.json репозитория с нативным экспортом клиента. Данные не уходят с этой машины. Дальше:MCP и JSON Schema, что такое MCP, и как A2A и MCP делят работу.

Связанное: Что такое MCP, MCP и JSON Schema, A2A vs MCP, Что такое AI Agent.

FAQ

Agent Plugins — проприетарный формат Google?

Нет. 1.0.0 публикует открытый TSC. Core maintainers — Amazon, Cursor, Microsoft, OpenAI, Vercel; Google вошёл в августе 2026. Google Cloud Developer Plugin — один соответствующий пакет, не сама спека. Вашему плагину не обязательно жить в google/skills, чтобы называться Agent Plugin.

У меня один скилл. Заворачивать в плагин?

Обычно нет. Google так и написал: один скилл, один MCP или один клиент проще ставить нативно. Упаковывайте, когда вместе должны ехать две и больше вещи — MCP, который тянет цифры, и скилл, который пишет недельную сводку. Ранняя упаковка только добавляет манифест на поддержку.

plugin.json — это то же, что gemini-extension.json у Gemini CLI?

Нет. У Gemini CLI по-прежнему свой манифест расширения, MCP можно держать в gemini-extension.json. Agent Plugins гонит MCP в корневой mcp.json; манифест закрыт и не умеет inline компонентов. Клиенты проецируют переносимый формат на нативный конфиг. Сравните два файла в JSONVue, а не угадывайте псевдонимы полей.

Проверка plugin.json заменяет проверку inputSchema?

Нет. Схема манифеста отвечает только «можно ли обнаружить пакет». Схема инструмента отвечает «легальны ли arguments этого хопа». Первая может пройти, а startDate всё ещё нет. Два контракта, две проверки. Не делите хелпер «просто распарсить».

Итог и следующие шаги

Google Agent Plugins в 2026 сжимается в одно предложение: открытый формат пакета, который кладёт уже переносимые Skills и MCP-серверы в фиксированные каталоги. Google пользуется им, чтобы выпустить Cloud Developer Plugin, Agents CLI и Data Agent Kit — не чтобы изобрести четвёртый протокол инструментов.

Порядок выпуска: сначала plugin.json парсится, name легален, $schema на 1.0.0; затем решить, нужны ли skills/ и mcp.json; контракты пакета — официальными схемами, аргументы инструмента — второй схемой. Фикстуры оставьте в JSONVue. Протокол — в статьях MCP; делегирование между агентами — в статье A2A.