SkillSpector Browser-Portierungs- und Upgrade-Methodik
Diese Fähigkeit bietet eine schrittweise Anleitung zur Portierung einer neuen Version des SkillSpector-Python-Sicherheitsscanners in eine vollständig im Browser ausgeführte WebAssembly-/JavaScript-Webanwendung (SkillSpectorWeb).
🎯 Architektonische Prinzipien
-
100% Clientseitige Browser-Ausführung:
- Der Scanner muss vollständig im Browser des Benutzers ausgeführt werden, ohne dass ein Backend-Server erforderlich ist.
- Alle GitHub-Repository-Inhalte werden über die GitHub-REST-APIs (
api.github.comundraw.githubusercontent.com) abgerufen.
-
Strenge Modultrennung:
- Core Scanner Engine (
docs/js/skillspector-engine.js): Reine übersetzte statische Analyse-Regeln, die den Python-nodes/analyzers/entsprechen. - Isolierter Repo-Filter (
docs/js/repo-filter.js): Behält benutzerdefinierte Nicht-Skill-Dateifilterungen (README.md,CHANGELOG.md,.git/usw.) getrennt vom übersetzten Scanner-Code. - GitHub-Fetcher (
docs/js/github-fetcher.js): Übernimmt URL-Parsing, Baum-Erweiterung und Batch-Download.
- Core Scanner Engine (
-
Multi-Skill-Repository-Unterstützung:
- Muss
src/skillspector/multi_skill.pyspiegeln, um alle verschachtelten Fähigkeiten in einem Repository zu entdecken (resources/skills/*.md,skills/*.md,agents/*.md).
- Muss
-
Lizenz- und Versionsparität:
- Behalte exakte Versionsnummern (
vX.Y.Z) bei, die mit der aktuellen Python-SkillSpector-Version übereinstimmen. - Bewahre die unveränderte upstream-
LICENSE-Datei (Apache 2.0).
- Behalte exakte Versionsnummern (
📋 Schritt-für-Schritt-Portierungs-Workflow
Phase 1: Extraktion von Regeln und AST-Analyse
- Untersuche neue Analyzer-Regeln im upstream
src/skillspector/nodes/analyzers/:pattern_defaults.py(Regel-IDs:P1-P8,E1-E5,PE1-PE3,SC1-SC7,EA1-EA4,OH1-OH3,MP1-MP3,TM1-TM4,RA1-RA2,TR1-TR3,MCP1).
- Übersetze neue Python-Regexes und AST-Prüfungen in JavaScript
RegExp-Muster innerhalb vondocs/js/skillspector-engine.js. - Aktualisiere Kategorielisten, Regelbeschreibungen, Erklärungen und Anleitungen zur Behebung.
Phase 2: GitHub-Fetcher und Baum-Erweiterung
- Stelle sicher, dass
docs/js/github-fetcher.jsrekursive Baumstrukturen viahttps://api.github.com/repos/{owner}/{repo}/git/trees/{branch}?recursive=1abruft. - Begrenze das Abrufen NICHT auf kleine willkürliche Dateilimits (verwende einen hohen Schwellenwert von bis zu 250 Dateien, um große Multi-Skill-Repositories zu unterstützen).
- Verwende paralleles Batch-Abrufen (z.B. 10 Dateien pro Batch) mit Live-UI-Fortschritts-Callbacks (
onProgress(current, total, filename)).
Phase 3: Multi-Skill-Erkennungs-Engine
- Implementiere
discoverSkills(filesMap)inskillspector-engine.js. - Parse YAML-Frontmatter von Markdown-Dateien (
--- name: ... description: ... ---) für alle.md-Dateien im Repository. - Rendere eine Multi-Skill-Auswahlleiste in
index.html, die es Benutzern erlaubt, Ergebnisse nach einzelnen entdeckten Fähigkeiten zu filtern oder den gesamten Repository-Kontext zu inspizieren.
Phase 4: Isolierte Repository-Dateifilterung
- Halte
docs/js/repo-filter.jsvollständig getrennt von der Kern-Scanner-Engine. - Biete UI-Kontrollkästchen in
index.htmlan:Repository-Standarddokumente auslassen (README, CHANGELOG, LICENSE)System-Metadaten auslassen (.git/, .github/, Punktdateien)
- Protokolliere ausgelassene Dateien im Inspection Ledger als
übersprungenmit expliziten Gründen.
Phase 5: GitHub-Pages-Verpackung (docs/)
- Stelle sicher, dass alle statischen Website-Assets innerhalb von
SkillSpectorWeb/docs/liegen:docs/index.htmldocs/css/styles.cssdocs/js/*.jsdocs/CNAME(skillspector.niyogilabs.com)docs/sitemap.xmldocs/robots.txtdocs/.nojekylldocs/LICENSE
- Stelle sicher, dass
server.pystandardmäßig dasdocs/-Verzeichnis bereitstellt.
🧪 Verifikations-Checkliste
-
python3 server.py 8090startet und liefert sauber ausdocs/aus. - Das Scannen eines Multi-Skill-Repositories (z.B.
Bhanunamikaze/Agentic-SEO-Skill) entdeckt alle verschachtelten Fähigkeiten. - Helles Farbschema ist als Standard gesetzt; Dunkles Farbschema-Umschalter funktioniert und speichert in
localStorage. - SEO-Endpunkte (
/sitemap.xml,/robots.txt,/CNAME) geben200 OKzurück. - Export-Funktionen für SARIF 2.1.0, JSON und Markdown laufen sauber.
- Die unveränderte root-
LICENSE-Datei ist intakt.