SKILLVERDICT
RU

Методология · корпус v1

Каждая цифра на этом сайте воспроизводится тремя командами

Манифест корпуса, скрипты запуска и агрегированные результаты открыты. Сырой вывод движков по каждому скиллу не распространяется, а воспроизводится локально, потому что цитирует чужой код.

Корпус186 записей

Как отбирались скиллы

Поиск. Поиск по коду GitHub по filename:SKILL.md в сочетании с характерными для языка фразами (русский: навык, используй, когда пользователь; немецкий: verwende, wenn der Benutzer, Anleitung; китайский: 技能, 使用, 当用户; английский: Use this skill when, Instructions, Workflow). Файлы-кандидаты загружаются в сыром виде; перед измерением доли скриптов блоки кода удаляются, а язык определяется по оставшемуся тексту (кириллица ≥ 50 % → русский; CJK ≥ 30 % → китайский; латиница ≥ 80 % → немецкий, если плотность немецких служебных слов больше 4 % и встречаются умлауты, иначе английский).

Критерии. Frontmatter с name и description; не форк; не меньше 400 байт; определённый язык входит в целевой набор.

Отбор. Не больше трёх скиллов на репозиторий, обход владельцев по кругу, чтобы ни один плодовитый автор не доминировал; предпочтение лицензированным скиллам, затем более крупным. Каждая запись закреплена за HEAD репозитория на момент отбора через git ls-remote.

Хранение. Скиллы под пермиссивной или копилефт-лицензией SPDX хранятся копиями; все остальные — указателями (URL + SHA) и загружаются при запуске. Манифест фиксирует URL источника, коммит, лицензию, языковые доли, наличие блоков кода и запросы, по которым скилл найден.

Образцы атак. Десять паттернов × четыре языка, сгенерированные из одного шаблона на язык, чтобы различался только язык. Каждый образец обезврежен — хосты-заглушки, инертные команды, предупреждение после frontmatter — и лежит в benchmark/corpus/malicious/synthetic/. Они никогда не исполняются; ничто в корпусе не исполняется.

корпус v1enrudezhвсего
легитимные39383039146
синтетические образцы атак1010101040
Движкизакреплены

Как запускались движки

# NVIDIA/skillspector @ 6d0b7c8 (v2.12.0)
skillspector scan <dir> --no-llm --format json
# cisco-ai-skill-scanner==2.3.2 (PyPI)
skill-scanner scan <dir> --format json --policy balanced
skill-scanner scan <dir> --format json --policy quiet
# наш контрольный чекер
python3 -I scripts/check_hidden_chars.py <dir>

Каждый пакет сканируется изолированно с тайм-аутом 900 секунд. Записи, не давшие разбираемого отчёта, исключаются из всех долей и перечисляются в разделе «Ошибки запуска» с указанием размера. Версии движков, тайм-ауты и история частичных прогонов пишутся рядом с результатами в results/raw/<engine>/_run.json.

Метрики

  • FP на уровне вердикта — доля легитимных скиллов, которые сам движок не оценил как SAFE (SkillSpector risk_assessment.recommendation; Cisco is_safe). FN на уровне вердикта — доля образцов атак, оценённых как SAFE.
  • FP на уровне находок при MEDIUM+ и HIGH+ — доля легитимных скиллов хотя бы с одной находкой такой серьёзности.
  • FP только по тексту — то же, но считаются только находки, расположенные в .md-файле. Это отделяет язык инструкций от объёма приложенного кода.
  • Матрица паттерн × язык — максимальная заявленная серьёзность для каждого паттерна атаки на каждом языке.
  • Оценка и объём кода — оценка SkillSpector в зависимости от числа файлов кода (.py .js .ts .sh .mjs .cjs .rb .go .ps1) с ранговой корреляцией Спирмена.
Смежные работы

Кто ещё измеряет сканеры

Мы не первые, кто спросил, можно ли доверять сканерам скиллов, и ответы пока указывают в одну сторону. Что добавляет этот scorecard — языковой срез (одна и та же атака на четырёх языках, одни и те же правила, посчитанные по языкам) и наблюдение, что статическая оценка следует за объёмом кода в пакете.

  • SkillTrustBench (CUHK-Shenzhen и Tencent Zhuque Lab, июнь 2026) — 5 520 тестовых случаев из 62 652 скиллов маркетплейсов, девять категорий угроз, открытый лидерборд. Тестирует те же движки, что и мы (Cisco Skill Scanner, NVIDIA SkillSpector), плюс Skill Vetter, и сравнивает LLM, стоящие за сканером. В тридцать раз больше нашего корпуса; без разреза по языкам.
  • MalSkillBench (Guo et al., июнь 2026) — 3 944 вредоносных скилла, проверенных при исполнении в песочнице, 4 000 сопоставленных безобидных, датасет и базовые модели опубликованы. Вывод совпадает с нашим: детекторы, читающие код, пропускают атаки, переносимые инструкциями, и две половины никогда не рассматриваются вместе.
  • AI Agent Skill Scanners: Bypassed Across the Board (исследовательская заметка Cloud Security Alliance по работе Trail of Bits, июнь 2026) — каждый проверенный сканер обойдён меньше чем за час; продолжение SkillCloak (июль 2026) показывает обход именно сканеров маркетплейсов.
  • OWASP Agentic Skills Top 10 — AST08 «Poor Scanning» — называет риск, который измеряет этот scorecard.
  • OASB Skills Security Benchmark (OpenA2A) — таблицы precision/recall для собственных пайплайнов этого вендора. Приводим для полноты; бенчмарк, который ведёт производитель ранжируемых им сканеров, отвечает на другой вопрос.

Если вы ведёте бенчмарк сканеров скиллов и его здесь нет, напишите на andrey@skillverdict.dev.

Воспроизвести

Код и данные открываются 12 ноября 2026

Репозиторий AndreyVomKeg/skillverdict-benchmark — манифест корпуса, образцы атак, скрипты запуска, журналы запусков и агрегированный scorecard — публикуется в этот день вместе с ответами разработчиков движков; семидневное окно раскрытия идёт. Команды показаны уже сейчас, чтобы процедуру можно было прочитать раньше кода.

Три команды

git clone https://github.com/AndreyVomKeg/skillverdict-benchmark
cd skillverdict-benchmark
python3 -I scripts/fetch_corpus.py     # закреплённые SHA → corpus/_work/
python3 -I scripts/run_engines.py      # results/raw/<engine>/*.json
python3 -I scripts/report.py           # results/scorecard.md + .json

Запускайте скрипты с python3 -I и снаружи директории корпуса: содержимое скиллов — враждебный ввод по определению. Сначала установите движки (pip install git+https://github.com/NVIDIA/skillspector.git@6d0b7c8 cisco-ai-skill-scanner==2.3.2).

Лицензии

Код бенчмарка: Apache-2.0. Манифест корпуса, синтетические образцы и агрегированные результаты: CC BY 4.0 — используйте свободно, ссылайтесь на skillverdict.dev. Скопированные скиллы сохраняют свои лицензии, записанные для каждой записи.

Политика раскрытия

Разработчики движков получают файл с находками не меньше чем за семь дней до открытия репозитория (5 ноября 2026 → 12 ноября 2026 для корпуса v1). Их ответы публикуются без редактирования. Находки по отдельным легитимным скиллам сообщаются только в агрегированном виде; список «скиллов, которые не прошли» мы не публикуем. Авторы скиллов из корпуса могут попросить об удалении по адресу andrey@skillverdict.dev; запись становится указателем или исключается в следующей версии корпуса.

Фаза 2

Узнать, когда откроются страницы скиллов

Одно письмо, когда заработает фаза 2, и больше ничего. Выберите почтовый сервис — письмо уже написано, просто отправьте его.

Сообщить мне об открытии

Или напишите на andrey@skillverdict.dev. Если вы поддерживаете сканер и хотите получить сырые результаты до публикации — тот же адрес.