Methodik · Korpus v1
Jede Zahl auf dieser Website lässt sich mit drei Befehlen reproduzieren
Korpus-Manifest, Runner-Skripte und aggregierte Ergebnisse sind öffentlich. Die Rohausgabe der Engines je Skill wird lokal neu erzeugt statt weitergegeben, weil sie fremden Code zitiert.
Wie die Skills ausgewählt wurden
Suche. GitHub-Codesuche nach filename:SKILL.md, kombiniert mit sprachspezifischen Formulierungen (Russisch: навык, используй, когда пользователь; Deutsch: verwende, wenn der Benutzer, Anleitung; Chinesisch: 技能, 使用, 当用户; Englisch: Use this skill when, Instructions, Workflow). Kandidatendateien werden roh geladen; vor der Messung des Skriptanteils werden Codeblöcke entfernt, und die Sprache wird aus dem verbleibenden Text bestimmt (Kyrillisch ≥ 50 % → Russisch; CJK ≥ 30 % → Chinesisch; Lateinisch ≥ 80 % → Deutsch, wenn die Dichte deutscher Funktionswörter über 4 % liegt und Umlaute vorkommen, sonst Englisch).
Zulassung. Frontmatter mit name und description; kein Fork; mindestens 400 Bytes; erkannte Sprache liegt in der Zielmenge.
Auswahl. Höchstens drei Skills pro Repository, reihum über die Besitzer, damit kein produktiver Autor dominiert; lizenzierte Skills bevorzugt, dann größere. Jeder Eintrag ist per git ls-remote auf den HEAD des Repositories zum Auswahlzeitpunkt festgeschrieben.
Speicherung. Skills unter einer permissiven oder Copyleft-SPDX-Lizenz werden als Kopie gespeichert; alle anderen als Zeiger (URL + SHA) und zur Laufzeit geladen. Das Manifest hält Quell-URL, Commit, Lizenz, Sprachanteile, das Vorhandensein von Codeblöcken und die Suchanfragen fest, die den Skill gefunden haben.
Angriffsmuster. Zehn Muster × vier Sprachen, aus je einer Vorlage pro Sprache erzeugt, sodass sich nur die Sprache unterscheidet. Jedes Muster ist entschärft — Platzhalter-Hosts, wirkungslose Befehle, ein Hinweis nach dem Frontmatter — und liegt unter benchmark/corpus/malicious/synthetic/. Sie werden nie ausgeführt; nichts im Korpus wird ausgeführt.
| Korpus v1 | en | ru | de | zh | gesamt |
|---|---|---|---|---|---|
| legitim | 39 | 38 | 30 | 39 | 146 |
| synthetische Angriffsmuster | 10 | 10 | 10 | 10 | 40 |
Wie die Engines ausgeführt wurden
# 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 # unser Kontrollprüfer python3 -I scripts/check_hidden_chars.py <dir>
Jedes Paket wird isoliert mit einem Timeout von 900 Sekunden gescannt. Einträge ohne auswertbaren Bericht werden aus jeder Quote ausgeschlossen und unter „Laufzeitfehler“ mit ihrer Größe aufgeführt. Engine-Versionen, Timeouts und die Historie von Teilläufen stehen neben den Ergebnissen in results/raw/<engine>/_run.json.
Metriken
- FP auf Urteilsebene — Anteil legitimer Skills, die die Engine selbst nicht als SAFE eingestuft hat (SkillSpector
risk_assessment.recommendation; Ciscois_safe). FN auf Urteilsebene — Anteil der Angriffsmuster, die sie als SAFE eingestuft hat. - FP auf Befundebene ab MEDIUM und ab HIGH — Anteil legitimer Skills mit mindestens einem Befund dieser Schwere.
- FP nur Text — dasselbe, aber nur Befunde, die in einer
.md-Datei liegen. Das trennt die Sprache der Anweisungen von der Menge des mitgelieferten Codes. - Matrix Muster × Sprache — höchste gemeldete Schwere je Angriffsmuster und Sprache.
- Score und Codemenge — SkillSpector-Score nach Zahl der Code-Dateien (
.py .js .ts .sh .mjs .cjs .rb .go .ps1), mit Spearman-Rangkorrelation.
Wer sonst die Scanner misst
Wir sind nicht die Ersten, die fragen, ob man Skill-Scannern trauen kann, und die bisherigen Antworten zeigen in dieselbe Richtung. Was dieser Scorecard hinzufügt, ist der Sprachschnitt — derselbe Angriff in vier Sprachen, dieselben Regeln je Sprache gezählt — und die Beobachtung, dass ein statischer Score der Codemenge eines Pakets folgt.
- SkillTrustBench (CUHK-Shenzhen und Tencent Zhuque Lab, Juni 2026) — 5 520 Testfälle aus 62 652 Marktplatz-Skills, neun Bedrohungskategorien, ein öffentliches Leaderboard. Testet dieselben Engines wie wir (Cisco Skill Scanner, NVIDIA SkillSpector) plus Skill Vetter und vergleicht das LLM hinter dem Scanner. Dreißigmal unser Korpus; keine Analyse je Sprache.
- MalSkillBench (Guo et al., Juni 2026) — 3 944 bösartige Skills, zur Laufzeit in einer Sandbox verifiziert, 4 000 passende gutartige, Datensatz und Baselines veröffentlicht. Sein Schluss deckt sich mit unserem: Detektoren, die Code lesen, verpassen Angriffe, die in Anweisungen stecken, und die beiden Hälften werden nie zusammen betrachtet.
- AI Agent Skill Scanners: Bypassed Across the Board (Research Note der Cloud Security Alliance zur Arbeit von Trail of Bits, Juni 2026) — jeder getestete Scanner wurde binnen einer Stunde umgangen; die Fortsetzung SkillCloak (Juli 2026) zeigt speziell die Umgehung von Marktplatz-Scannern.
- OWASP Agentic Skills Top 10 — AST08 „Poor Scanning“ — benennt das Risiko, das dieser Scorecard misst.
- OASB Skills Security Benchmark (OpenA2A) — Precision/Recall-Tabellen für die eigenen Pipelines dieses Anbieters. Der Vollständigkeit halber aufgeführt; ein Benchmark, den der Hersteller der von ihm gerankten Scanner betreibt, beantwortet eine andere Frage als diese.
Wer einen Benchmark von Skill-Scannern betreibt, der hier fehlt, schreibt an andrey@skillverdict.dev.
Code und Daten öffnen am 12. November 2026
Das Repository AndreyVomKeg/skillverdict-benchmark — Korpus-Manifest, Angriffsmuster, Runner-Skripte, Lauflogs und der aggregierte Scorecard — wird an diesem Tag zusammen mit den Antworten der Engine-Maintainer veröffentlicht; das siebentägige Offenlegungsfenster läuft. Die Befehle stehen schon jetzt hier, damit das Verfahren gelesen werden kann, bevor der Code es ist.
Drei Befehle
git clone https://github.com/AndreyVomKeg/skillverdict-benchmark cd skillverdict-benchmark python3 -I scripts/fetch_corpus.py # festgeschriebene SHAs → corpus/_work/ python3 -I scripts/run_engines.py # results/raw/<engine>/*.json python3 -I scripts/report.py # results/scorecard.md + .json
Führen Sie die Leser mit python3 -I und von außerhalb des Korpus-Verzeichnisses aus: Skill-Inhalte sind per Definition feindliche Eingaben. Installieren Sie zuerst die Engines (pip install git+https://github.com/NVIDIA/skillspector.git@6d0b7c8 cisco-ai-skill-scanner==2.3.2).
Lizenzen
Benchmark-Code: Apache-2.0. Korpus-Manifest, synthetische Muster und aggregierte Ergebnisse: CC BY 4.0 — frei weiterverwendbar, skillverdict.dev als Quelle nennen. Kopierte Skills behalten ihre eigenen Lizenzen, je Eintrag vermerkt.
Offenlegungsregel
Engine-Maintainer erhalten die Befunddatei mindestens sieben Tage, bevor das Repository geöffnet wird (5. November 2026 → 12. November 2026 für Korpus v1). Ihre Antworten werden unverändert veröffentlicht. Befunde zu einzelnen legitimen Skills werden nur aggregiert berichtet; eine Liste „durchgefallener Skills“ veröffentlichen wir nicht. Autoren von Skills im Korpus können die Entfernung erbitten unter andrey@skillverdict.dev; der Eintrag wird zum Zeiger oder in der nächsten Korpusversion gestrichen.
Bescheid bekommen, wenn die Skill-Seiten öffnen
Eine E-Mail, wenn Phase 2 live ist, sonst nichts. Wählen Sie Ihren Mail-Dienst; die Nachricht ist vorgeschrieben, senden Sie sie so ab.
Oder schreiben Sie an andrey@skillverdict.dev. Wer einen Scanner betreut und die Rohergebnisse vor der Veröffentlichung möchte: dieselbe Adresse.