Туториал
Что такое 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.