Скилл для локальной сверки классов операций MCP маркетплейсов
Скилл сопоставляет классы операций в локальном каталоге MCP и двух маршрутах вызова: через каталог и напрямую по HTTP-методу. Он выдаёт JSON с различиями и требуемыми подтверждениями до подключения токенов; это не проверка безопасности работающего сервера (код, границы).
Редакция Кометы протестировала собственный анализатор в деле на закреплённых публичных исходниках и учебном JSON; задача — локальная сверка для разработчика интеграции магазина (запись запуска). Он работает с явно переданными файлами закреплённой версии marketplaces-mcp-ru либо с учебным JSON, не устанавливает чужой MCP и не исполняет его Python (SKILL.md, запись локального прогона в data/tests).
Что нужно для запуска
| Поле | Условия |
|---|---|
| Задача и вид | Скилл с локальным CLI: найти несогласованные классы операций перед разбором прав интеграции (SKILL.md). |
| Автор и источник | Редакция Кометы: оригинальные код, инструкция и архив. |
| Версия и лицензия | Наш пакет 0.1.1 под MIT. Чужие исходники в архив не входят; лицензия относится к нашему коду и учебным данным (LICENSE, README). |
| Среда и модель | Проверен Python 3.14.4/macOS, только стандартная библиотека. Нужны
POSIX dir_fd, O_NOFOLLOW,
O_DIRECTORY, O_NONBLOCK. Модель для CLI не
нужна; обнаружение скилла агентским клиентом не проверено (запись запуска, README). |
| Стоимость | Для одной локальной сверки лицензия и платный API — 0 рублей: API не вызывается. Время и оборудование не оценены. Запуск через агента добавляет стоимость его модели (код, LICENSE, README). |
| Доступ из России | Локальному анализатору не нужны сеть, регистрация или зарубежный платёж (код). |
| Поддерживаемый источник | Семь явно переданных файлов marketplaces-mcp-ru, commit
a633bb8…596c1; полный commit и SHA каждого файла находятся
в профиле. Новые версии
автоматически не поддерживаются (README). |
| Статус проверки | Протестировано в деле: локальный анализ публичного закреплённого источника и синтетические сценарии, не подключение кабинета (запись локального прогона в data/tests). |
Что покажет отчёт
records содержит заявленный класс каталога, вычисленные
классы двух маршрутов и требуемые подтверждения. sources и
policy_evidence связывают вывод с файлом, строкой, commit и
SHA; учебный JSON использует указатель JSON вместо номера строки (код, пример отчёта).
| Ситуация | Как читать результат |
|---|---|
| Прямой маршрут получает более слабый класс | raw_weaker — повод разобрать операцию и подтверждения,
не доказанный обход или удаление (контракт). |
| POST-чтение в каталоге, write в прямом маршруте | raw_stricter — справочное различие. Сам HTTP-метод не
доказывает изменение данных (контракт, контроль POST-read). |
| Назначение противоречит классу | internal_semantic_flags — заранее вручную размеченные
сигналы закреплённого источника, не полный автоматический смысловой
аудит (профиль). |
| Изменились commit, SHA или поддерживаемая policy | unsupported, а не положительная проверка новой версии
(код, негативные проверки). |
В сохранённом полном прогоне обработаны 1024 записи закреплённого
источника. В README
того же commit указаны 1022 метода, в том числе 441 Ozon Seller. Наш
подсчёт локального каталога — 1024 записи, из них 443 Ozon; причина
расхождения не установлена (запись
прогона). Получено 21 различие raw_weaker; отдельные
333 POST-read/raw-write различия справочные и не названы ошибками только
по методу (запись запуска, результаты). Первый
confirm_write в raw-write сохранён; параметры модели не
доказывают самостоятельное одобрение человеком (код анализатора, закреплённая
policy).
Как запустить
Скачайте архив, распакуйте и откройте терминал в его корневой папке. Пакеты устанавливать не нужно (README).
Запустите учебный пример из этой папки (инструкция):
python3 -B scripts/check.py examples/teaching-manifest.jsonОжидается JSON supported-findings и код завершения
4: в собственном синтетическом примере намеренно есть
различие классов. Это не сбой команды (сохранённый выход).
- Для закреплённого источника скопируйте
examples/pinned-manifest.template.json. Укажите явные абсолютные пути к пяти каталогам иcore/safety.py/core/tools.py; полный перечень уже задан шаблоном. Не меняйте commit и ожидаемые SHA (шаблон). Получите эти публичные файлы из закреплённого репозитория, не запускайте его модули. Для этого режима требуется Python 3.14 (README).
python3 -B scripts/check.py my-explicit-manifest.jsonРезультат — отчёт о переданных файлах; перед анализом их байты
сверяются с ожидаемыми SHA. Пути с симлинками, включая родительские
папки, отклоняются. На macOS /tmp и /var могут
быть ссылками: передавайте проверенный настоящий путь (код, README).
| Код | Что делать |
|---|---|
0 |
supported-pass: объявленные ограниченные проверки
завершены без находок. Не разрешение подключать MCP (контракт). |
4 |
supported-findings: разберите различия и сигналы по
файлам отчёта (контракт). |
2 |
error: исправьте неполный или некорректный вход;
полнота неизвестна (код). |
3 |
unsupported: версия Python, источник или формат не
поддержаны. Не переносите прежний результат на новые байты (код). |
Как проверяли
Редакция Кометы провела локальный прогон версии 0.1.1 на Python 3.14.4/macOS с системным запретом сети: 51 из 51 проверки прошли. На Python 3.9.6 прошли 41 из 41 — учебные сценарии и отказ неподдерживаемого AST-профиля, не полный анализ закреплённого источника (запись локального прогона в data/tests, полные результаты, Python 3.9).
Входы — собственные синтетические операции и отдельно переданные
публичные исходники. Проверены контроль POST-чтения, первый флаг записи,
различия классов, некорректные поля, дубли, чужие SHA и commit,
динамическая policy, опасные файловые пути и запрет исполнения upstream.
Отказ сети подтверждён попыткой соединения (запись запуска, runner). Повтор учебных сценариев:
python3 -B tests/run.py; для полного закреплённого входа
добавьте --pinned-input MANIFEST.json по README.
Текущие контракты Seller API, dispatch работающего сервера, реальные изменения данных, CI, нормализация загрузчика и полнота смыслового аудита не проверены. При другом commit результат прежнего профиля неприменим (границы, запись запуска).
Доступы и риски
Код анализатора 0.1.1 прочитан редакцией: файловый ввод, разбор JSON, ограниченный YAML, AST, расчёт классов и вывод. Он только читает явно перечисленные локальные файлы и печатает JSON; не обращается к сети, не ставит зависимости и не требует токенов WB, Ozon, Я.Маркета, CRM, платежей или почты (код, запись проверки).
Не передавайте реальные токены и файлы кабинета. Используйте публичные исходники или собственные учебные данные; локальность CLI не делает локальным контекст модели, которой передан отчёт. JSON может содержать пути исходников: просмотрите его перед отправкой агенту или публикацией (SKILL.md, README). Сохранение stdout через перенаправление выбираете вы — не записывайте отчёт поверх входного файла (README).
Когда выбрать другое
- Ручная сверка одного маршрута. Подходит, когда
нужен разбор конкретной операции, а не весь машинный инвентарь.
Сопоставьте её назначение и
safetyв каталоге сinfer_safetyиcheck_gate, затем с прямым маршрутом. Сохраните commit и строки; платный API или модель для чтения локальных файлов не нужны (закреплённые safety.py, tools.py). - Собственная таблица прав по задаче магазина. Выберите её, если решаете, какие права дать интеграции, а не проверяете конкретные байты MCP. Разложите сценарии чтения, изменения цены и удаления, затем сверяйте нужные права с документацией площадки. Наш разбор прав агента маркетплейсов помогает поставить вопросы; не заменяет локальный анализ маршрутов (границы анализатора).
Для сверки уже полученного учебного ответа о возврате есть другой скилл. Здесь проверяется каталог до вызова, а не ответ и не движение денег (SKILL.md).
Источники
- Собственные код, SKILL.md, README, MIT, профиль и runner; проверены 12.10.2026.
- Запись локального прогона, результаты, Python 3.9, учебный выход, SHA архива; проверены 12.10.2026.
- Публичный источник входных данных: marketplaces-mcp-ru, закреплённый commit, safety.py, tools.py; проверены 12.10.2026. Это источник для локального анализа, не рекомендация установки.