Metodología de Portabilidad y Actualización de SkillSpector Web
Este skill proporciona instrucciones detalladas para portar una nueva versión del SkillSpector (escáner de seguridad Python) a una aplicación web (SkillSpectorWeb) que se ejecuta al 100% en el navegador mediante WebAssembly/JavaScript.
🎯 Principios Arquitectónicos
-
Ejecución 100% en el Lado del Cliente (Navegador):
- El escáner debe ejecutarse completamente en el navegador del usuario, sin requerir un servidor backend.
- Todo el contenido del repositorio de GitHub se obtiene mediante las APIs REST de GitHub (
api.github.comyraw.githubusercontent.com).
-
Aislamiento Estricto de Módulos:
- Motor Central del Escáner (
docs/js/skillspector-engine.js): Contiene las reglas de análisis estático traducidas, que coinciden connodes/analyzers/de Python. - Filtro de Repositorio Aislado (
docs/js/repo-filter.js): Mantiene separado el filtrado personalizado de archivos no relacionados con skills (README.md,CHANGELOG.md,.git/, etc.) del código traducido del escáner. - Descargador de GitHub (
docs/js/github-fetcher.js): Gestiona el análisis de URL, la expansión de árboles y la descarga por lotes.
- Motor Central del Escáner (
-
Soporte para Repositorios Multi-Skill:
- Debe reflejar
src/skillspector/multi_skill.pypara descubrir todos los skills anidados en un repositorio (resources/skills/*.md,skills/*.md,agents/*.md).
- Debe reflejar
-
Paridad de Licencia y Versión:
- Conservar los números de versión exactos (
vX.Y.Z) que coincidan con la versión upstream de SkillSpector (Python). - Conservar sin editar el archivo
LICENSEupstream (Apache 2.0).
- Conservar los números de versión exactos (
📋 Flujo de Trabajo de Portabilidad Paso a Paso
Fase 1: Extracción de Reglas y Análisis AST
- Inspeccionar las nuevas reglas del analizador en
src/skillspector/nodes/analyzers/del upstream:pattern_defaults.py(IDs de regla:P1-P8,E1-E5,PE1-PE3,SC1-SC7,EA1-EA4,OH1-OH3,MP1-MP3,TM1-TM4,RA1-RA2,TR1-TR3,MCP1).
- Traducir las nuevas expresiones regulares de Python y las comprobaciones AST a patrones
RegExpde JavaScript dentro dedocs/js/skillspector-engine.js. - Actualizar las listas de categorías, las descripciones de las reglas, las explicaciones y las guías de corrección.
Fase 2: Descargador de GitHub y Expansión de Árboles
- Asegurarse de que
docs/js/github-fetcher.jsobtiene estructuras de árbol recursivas mediantehttps://api.github.com/repos/{owner}/{repo}/git/trees/{branch}?recursive=1. - NO limitar la obtención a límites de archivos pequeños arbitrarios (usar un umbral alto de hasta 250 archivos para admitir repositorios multi-skill grandes).
- Usar obtención por lotes en paralelo (por ejemplo, 10 archivos por lote) con callbacks de progreso en vivo en la interfaz de usuario (
onProgress(current, total, filename)).
Fase 3: Motor de Descubrimiento Multi-Skill
- Implementar
discoverSkills(filesMap)enskillspector-engine.js. - Analizar el YAML del frontmatter de Markdown (
--- name: ... description: ... ---) para todos los archivos.mddel repositorio. - Renderizar una barra de selección multi-skill en
index.htmlque permita a los usuarios filtrar los hallazgos por skill individual descubierto o inspeccionar el contexto completo del repositorio.
Fase 4: Filtrado Aislado de Archivos del Repositorio
- Mantener
docs/js/repo-filter.jscompletamente separado del motor central del escáner. - Proporcionar casillas de verificación en la interfaz de usuario en
index.html:Omitir documentos estándar del repositorio (README, CHANGELOG, LICENSE)Omitir metadatos del sistema (.git/, .github/, dotfiles)
- Registrar los archivos omitidos en el Registro de Inspección como elementos
skippedcon razones explícitas.
Fase 5: Empaquetado para GitHub Pages (docs/)
- Asegurarse de que todos los activos del sitio web estático se encuentren dentro de
SkillSpectorWeb/docs/:docs/index.htmldocs/css/styles.cssdocs/js/*.jsdocs/CNAME(skillspector.niyogilabs.com)docs/sitemap.xmldocs/robots.txtdocs/.nojekylldocs/LICENSE
- Asegurarse de que
server.pysirva el directoriodocs/por defecto.
🧪 Lista de Verificación
-
python3 server.py 8090se inicia y sirve limpiamente desdedocs/. - El escaneo de un repositorio multi-skill (por ejemplo,
Bhanunamikaze/Agentic-SEO-Skill) descubre todos los skills anidados. - El tema claro está configurado como predeterminado; el cambio al tema oscuro funciona y persiste en
localStorage. - Los endpoints SEO (
/sitemap.xml,/robots.txt,/CNAME) devuelven200 OK. - Las funciones de exportación a SARIF 2.1.0, JSON y Markdown se ejecutan sin problemas.
- El archivo
LICENSEraíz sin editar está intacto.