# Навыки (Skills): Agent Skills через MCP

Как сервер отдаёт агенту готовые навыки

> Страница сайта MCP Docs — неофициального перевода документации Model Context Protocol (https://modelcontextprotocol.io/) на русский. Перевод и пересказ: https://modelcontextprotocol.io/extensions/skills/overview (обращение 26.10.2026). Лицензия перевода — Apache 2.0.

Расширение `io.modelcontextprotocol/skills` позволяет серверу MCP отдавать клиенту **навыки агента** (Agent Skills) — папки с файлом `SKILL.md` и приложениями. Клиент находит навыки, читает их описание и загружает инструкции только тогда, когда задача их требует.

## Что это

Навык — каталог с файлом `SKILL.md` и необязательными файлами, по [спецификации Agent Skills](https://agentskills.io/specification). Расширение не меняет формат навыка, а описывает, как найти и получить его по MCP: инструкции хранятся рядом с сервисом, который они описывают. Удобно для повторяемых сценариев, которые сочетают несколько инструментов или требуют справочных материалов, — проверка кода, обработка документов.

Само чтение `SKILL.md` через `resources/read` навык не включает. Хост пропускает чтение через свой путь загрузки навыков: проверяет содержимое и, если нужно, спрашивает согласие пользователя. Кто выбирает навык — модель по описанию или пользователь явно — решает хост; расширение этого не предписывает.

**Заметка переводчика.** Расширение описано в [SEP-2640](https://modelcontextprotocol.io/seps/2640-skills-extension.md) со статусом Final; его ведёт рабочая группа Skills Over MCP. Поддержка в SDK и хостах ещё внедряется — смотрите [матрицу клиентов](https://modelcontextprotocol.io/extensions/client-matrix). Сам формат Agent Skills с 22.10.2026 — проект Agentic AI Foundation, как MCP и A2A.

## Объявление возможности

Сервер, который поддерживает навыки, ОБЯЗАН объявить в ответе [`server/discover`](https://mcpdocs.ru/concepts/discovery/) и возможность `resources`, и расширение `io.modelcontextprotocol/skills`:

```json
{
  "capabilities": {
    "resources": {},
    "extensions": {
      "io.modelcontextprotocol/skills": {
        "directoryRead": true
      }
    }
  }
}
```

Объявив расширение, сервер ОБЯЗАН реализовать `skills/list` и `skills/get`; файлы навыков отдаются через `resources/read`. Необязательный флаг `directoryRead` (по умолчанию `false`) говорит, что сервер поддерживает `resources/directory/read`. Пустой объект расширения — поддержка без чтения каталогов. Клиент вызывает `skills/list` и `skills/get` только после того, как увидел объявление.

В примерах ниже для краткости опущены поля `_meta`; в настоящих запросах они обязательны ([подробнее](https://mcpdocs.ru/protocol/#polya-meta)).

## Список навыков

Запрос `skills/list` поддерживает постраничную выдачу и кэширование:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "skills/list",
  "params": {}
}
```

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "resultType": "complete",
    "skills": [
      {
        "uri": "skill://code-review/SKILL.md",
        "frontmatter": {
          "name": "code-review",
          "description": "Review code using the team's checklist."
        },
        "resources": [
          {
            "uri": "skill://code-review/SKILL.md",
            "digest": "sha256:d2489d6c182e8df9c178563ff9f2eac7998a0c1bb1278c52a7fd5306e4259160",
            "size": 149
          },
          {
            "uri": "skill://code-review/references/checklist.md",
            "digest": "sha256:dbab2de7bf7db9cc95cb6ce681c3690b26184db39f75b958a0287ca6d9e24e20",
            "size": 65
          }
        ]
      }
    ],
    "ttlMs": 300000,
    "cacheScope": "public"
  }
}
```

### Поля записи

| Поле | Что значит |
|---|---|
| `uri` | Адрес ресурса `SKILL.md` этого навыка. |
| `frontmatter` | Все поля YAML-заголовка без изменений, в том числе `name` и `description`. |
| `resources` | Полный манифест файлов — у каждого адрес, дайджест SHA-256 и размер в байтах; либо `"dynamic"` для генерируемого содержимого. |

Манифест ОБЯЗАН включать `SKILL.md` и каждый вспомогательный файл. Запись из `skills/list` полная: дозапрашивать её через `skills/get` не нужно. Если в ответе есть `nextCursor`, клиент передаёт его в `params.cursor`. Ответы ОБЯЗАНЫ содержать `resultType: "complete"`, `ttlMs` и `cacheScope` — они описывают свежесть, а не целостность.

Навык определяется парой «сервер + адрес». Имена — только метки и могут совпадать. Серверам СЛЕДУЕТ использовать схему `skill://`, но МОЖНО и другую; хост НЕ ДОЛЖЕН считать ресурс навыком только по схеме адреса.

## Один навык по адресу

Запрос `skills/get` возвращает запись навыка в `result.skill` — той же формы, что в списке. Адрес может прийти от пользователя, другого навыка или из указаний сервера:

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "skills/get",
  "params": {
    "uri": "skill://code-review/SKILL.md"
  }
}
```

Сервер МОЖЕТ отдавать пустой или неполный список, но ОБЯЗАН отвечать на `skills/get` для каждого навыка, который обслуживает. Хост ОБЯЗАН уметь загружать навык по адресу, даже если его нет в списке.

## Чтение содержимого

Инструкции и файлы читаются обычным [`resources/read`](https://mcpdocs.ru/concepts/resources/):

```json
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "resources/read",
  "params": {
    "uri": "skill://code-review/SKILL.md"
  }
}
```

В ответе — текст `SKILL.md` (`mimeType: "text/markdown"`). Файл ОБЯЗАН начинаться с YAML-заголовка с полями `name` и `description`, а последняя часть пути к его папке ОБЯЗАНА совпадать с `name`:

```
---
name: code-review
description: Review code using the team's checklist.
---

# Code review

Read `references/checklist.md`, then review the diff.
```

Относительные ссылки разрешаются от корня навыка: `references/checklist.md` превращается в `skill://code-review/references/checklist.md` и читается с того же сервера. Хост НЕ ДОЛЖЕН получать файлы заранее — при подключении, получении списка или согласии; согласие привязывается к манифесту, а не к скачанным файлам.

## Чтение каталогов

Метод `resources/directory/read` необязателен: клиент НЕ ДОЛЖЕН вызывать его без `directoryRead: true`. Он возвращает только прямых потомков каталога; адрес каталога пишется без завершающего слэша, вложенные каталоги помечены `mimeType: "inode/directory"`. Живой список каталога НЕ расширяет сохранённый манифест: новые файлы становятся частью навыка только после обновления записи и, если нужно, нового согласия.

## Проверка целостности

Пока навык используется, хост хранит запись, по которой его загрузил. Для навыков с манифестом хост ОБЯЗАН:

- читать только адреса из сохранённого манифеста;
- перед использованием сверять размер и SHA-256 каждого файла;
- разбирать YAML-заголовок `SKILL.md` и сравнивать его с `frontmatter` записи поле за полем.

Содержимое, не прошедшее проверку, использовать НЕЛЬЗЯ; устаревшую запись обновляют через `skills/get`. Сохранённое согласие привязано ко всему набору адресов и дайджестов: изменённый, добавленный или удалённый файл его отменяет.

**Заметка переводчика.** Дайджест доказывает, что файл совпадает с манифестом сервера, но не то, что содержимому можно доверять. Навык — текст, который исполняет модель. Отсюда требования к хосту: считать содержимое навыка недоверенным, не давать навыкам с одинаковыми именами молча подменять друг друга, помечать загруженное сервером-источником и спрашивать отдельное согласие на выполнение кода и на разрешения вроде `allowed-tools`. Про подсказки-ловушки — в разделе [«Безопасность»](https://mcpdocs.ru/security/lovushki/).

## Требования и ограничения

- Сервер отдаёт корректные Agent Skills, сохраняет все поля заголовка и публикует полные манифесты, посчитанные по отдаваемым байтам (кроме `"dynamic"`).
- Запись навыка атомарна: манифест НЕ ДОЛЖЕН разрываться между страницами списка.
- Серверу НЕ СЛЕДУЕТ превышать **512 файлов или 16 МиБ** на навык; хост ОБЯЗАН поддерживать навыки до этих пределов.
- Навыки с `"resources": "dynamic"` хост МОЖЕТ отклонить; приняв, всё равно сверяет заголовок и не распространяет прежнее согласие на будущее содержимое.

## Ошибки

| Ситуация | Обработка |
|---|---|
| Неизвестный навык или файл, неверный адрес каталога | JSON-RPC `-32602` (Invalid params) |
| Внутренний сбой сервера | JSON-RPC `-32603` (Internal error) |
| Не сошлись дайджест, размер, заголовок или манифест | Хост отклоняет содержимое и обновляет запись — это проверка на стороне хоста, а не ошибка протокола |

Общие коды — на странице [«Ошибки»](https://mcpdocs.ru/protocol/errors/).

## Навыки сайта без MCP

Помимо MCP, есть черновик Cloudflare [Agent Skills Discovery](https://github.com/cloudflare/agent-skills-discovery-rfc): сайт публикует список навыков по адресу `/.well-known/agent-skills/index.json`. Это не часть MCP. Наличие такого файла, а также карточки MCP-сервера `/.well-known/mcp/server-card.json`, справочно показывает сканер [agentreadyscan.ru](https://agentreadyscan.ru/). Что такое навыки агента простыми словами — на [ии-навыки.рф](https://xn----8sbgvadnv2k.xn--p1ai/agenty/navyki-agenta/), термин — в словаре [Агентономики](https://agentonomika.ru/terminy/navyki-agenta/).
