# Публикация плагина

Источник: https://razum.sh/docs/customize/publish-plugin

> Как собрать плагин из навыков, правил и подключений и опубликовать его в каталоге «Разума» — формат, проверки и ревью.

Плагин из каталога видят все пользователи «Разума»: они ставят его одной кнопкой в
«Персонализация → Плагины → Магазин». Опубликовать можно набор навыков, правил и
сценариев или удалённое подключение к своему сервису.

## Что можно опубликовать

| Часть       | Где лежит               | Что это                                                                                              |
| ----------- | ----------------------- | ---------------------------------------------------------------------------------------------------- |
| Навыки      | `skills/<имя>/SKILL.md` | Инструкции для типовых задач, `description` во frontmatter обязателен. → [Навыки](https://razum.sh/docs/customize/skills) |
| Правила     | `rules/*.mdc`           | Как работать в области плагина. → [Правила](https://razum.sh/docs/customize/rules)                                        |
| Сценарии    | `playbooks/*.md`        | Пошаговые сценарии работы                                                                            |
| Подключения | `mcp.json`              | Удалённые MCP-серверы по `https`. → [Подключения](https://razum.sh/docs/customize/connections)                            |

**Пока не принимаем:** исполняемый код и локальные (stdio) MCP-серверы, пакеты через
`npx`/`uvx`, hooks, `inProcess`, вход через сессию «Разума» (`auth.session`) и
OAuth-клиенты «Разума» (`clientRef`), `systemAdminOnly`.

## Раскладка

```text
my-plugin/
├── .razum-plugin/
│   └── plugin.json      манифест
├── skills/
│   └── crm/SKILL.md
├── rules/               *.mdc
├── playbooks/           *.md
├── mcp.json
├── assets/              картинки
└── README.md
```

В каталог попадают только эти папки и файлы. Остальное в репозитории — CI, исходники
сервера, тесты — не берётся.

### Манифест

```json title=".razum-plugin/plugin.json"
{
  "name": "my-crm",
  "version": "1.0.0",
  "description": "Клиенты, сделки и задачи из CRM.",
  "author": { "name": "ООО «Пример»", "email": "dev@example.ru" },
  "homepage": "https://example.ru/razum",
  "auth": {
    "token": {
      "header": { "name": "Authorization", "value": "Bearer {token}" },
      "docsUrl": "https://crm.example.ru/settings/api"
    }
  }
}
```

* **`name`** — строчная латиница, цифры, точка и дефис. Имена, начинающиеся с `razum`, и
  имена плагинов «Разума» зарезервированы; имя, занятое другим автором, не пройдёт.
* **`auth.token`** — пользователь вставит свой токен API, а «Разум» подставит его в
  заголовок вместо `{token}`. `docsUrl` — страница, где взять токен; ссылка появится рядом
  с полем ввода. Если сервер сам проводит вход по OAuth, блок `auth` не нужен.

### Подключение

```json title="mcp.json"
{
  "mcpServers": {
    "crm": {
      "url": "https://mcp.crm.example.ru/mcp",
      "mutatingTools": ["create_deal", "update_contact"]
    }
  }
}
```

Отметьте инструменты, которые **меняют данные**: перечислите их в `mutatingTools` или
поставьте `readOnlyHint` у читающих инструментов на стороне сервера. Перед вызовом
пишущего инструмента пользователь подтверждает действие.

## Проверить у себя

Перед отправкой поставьте плагин из папки: «Персонализация → Плагины → Загрузить из
папки» и выберите папку с `.razum-plugin/plugin.json`. Попросите агента выполнить задачу,
ради которой плагин делался, и убедитесь, что навыки подхватываются по описанию.

## Отправить в каталог

<Steps>
  <Step>
    ### Положите плагин на GitHub [#положите-плагин-на-github]

    Нужен публичный репозиторий — плагин может лежать в корне или в подпапке, в любой ветке.
  </Step>

  <Step>
    ### Откройте заявку [#откройте-заявку]

    «Персонализация → Плагины → Магазин → Отправить в каталог». Укажите репозиторий:
    ссылку или `owner/repo`. Ссылка на папку в ветке (или `owner/repo@ветка`) сама заполнит
    папку и ветку.
  </Step>

  <Step>
    ### Пройдите проверку [#пройдите-проверку]

    Нажмите «Проверить»: платформа возьмёт последний коммит ветки и прогонит
    [автоматическую проверку](#автоматическая-проверка). Ошибки исправьте в репозитории и
    проверьте снова.
  </Step>

  <Step>
    ### Заполните карточку [#заполните-карточку]

    * **Карточка** — название, описание в одно-два предложения, категория, автор, страница плагина.
    * **Работа с данными** — какие данные плагин читает, куда отправляет, хранит ли их у себя и
      работает ли с персональными данными.
    * **Соответствие** — почта для связи, компания или ИП и согласие с правилами каталога.
  </Step>

  <Step>
    ### Отправьте на проверку [#отправьте-на-проверку]

    Заявку посмотрит модератор каталога. Статус и переписка с модератором — в «Мои заявки».
  </Step>
</Steps>

| Статус                   | Что значит                                                      |
| ------------------------ | --------------------------------------------------------------- |
| Черновик                 | Заявка ещё не отправлена                                        |
| На проверке              | Заявку смотрит модератор, ответ придёт в «Мои заявки»           |
| Нужны правки             | Модератор просит доработать — подробности в переписке           |
| Опубликован              | Плагин в каталоге                                               |
| Новая версия на проверке | Новый коммит ждёт ревью, пользователи пока видят прежнюю версию |
| Отклонён                 | Заявка не прошла ревью                                          |

## Автоматическая проверка

* **Манифест** `.razum-plugin/plugin.json` на месте, имя допустимо и свободно.
* **Лимиты:** до 400 файлов и 5 МБ всего, файл — до 1 МБ. Без двоичных файлов (картинки
  можно) и символических ссылок.
* **Секреты:** токены GitHub, OpenAI, Anthropic, AWS, Slack, Google, Яндекса, Telegram и
  приватные ключи блокируют заявку. Утёкший ключ выпустите заново — удалить его из
  истории недостаточно.
* **Подключения:** только `https` и не на адрес платформы «Разума».
* **Внешние адреса:** все хосты, которые встречаются в файлах, попадают в отчёт
  проверяющему.

## Критерии ревью

* **Безопасность.** Навыки и правила не велят агенту отправлять данные пользователя туда,
  где они плагину не нужны, обходить подтверждения, запускать команды или скрывать действия.
* **Честность.** Хосты подключений принадлежат заявленному сервису; работа с данными в
  заявке совпадает с файлами. Плагин делает то, что написано в карточке.
* **Польза.** В описании навыков сказано, когда их звать; плагин не заглушка и не копия
  плагина «Разума»; карточка понятна.
* **Права.** У вас есть права на содержимое репозитория.

## Обновления

После публикации выбранная ветка отслеживается: каждый новый коммит проходит
автоматическую проверку и ревью, прежде чем дойдёт до пользователей. Установленные копии
обновляются сами. «Разум» может снять плагин с публикации, если он перестанет
соответствовать правилам каталога.
