@saulwade/swl-ses 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +238 -0
- package/README.md +560 -0
- package/_userland/agentes/.gitkeep +0 -0
- package/_userland/habilidades/.gitkeep +0 -0
- package/agentes/.evolved.json +9 -0
- package/agentes/accesibilidad-wcag-swl.md +692 -0
- package/agentes/arquitecto-swl.md +238 -0
- package/agentes/auto-evolucion-swl.md +854 -0
- package/agentes/backend-api-swl.md +470 -0
- package/agentes/backend-csharp-swl.md +418 -0
- package/agentes/backend-go-swl.md +388 -0
- package/agentes/backend-java-swl.md +279 -0
- package/agentes/backend-node-swl.md +477 -0
- package/agentes/backend-python-swl.md +608 -0
- package/agentes/backend-rust-swl.md +362 -0
- package/agentes/backend-workers-swl.md +480 -0
- package/agentes/cloud-infra-swl.md +485 -0
- package/agentes/consolidador-swl.md +539 -0
- package/agentes/datos-swl.md +584 -0
- package/agentes/depurador-swl.md +349 -0
- package/agentes/devops-ci-swl.md +374 -0
- package/agentes/disenador-ui-swl.md +558 -0
- package/agentes/documentador-swl.md +343 -0
- package/agentes/evals/arquitecto-swl.evals.json +56 -0
- package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
- package/agentes/evals/implementador-swl.evals.json +56 -0
- package/agentes/evals/orquestador-swl.evals.json +60 -0
- package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
- package/agentes/evals/red-team-swl.evals.json +59 -0
- package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
- package/agentes/frontend-angular-swl.md +627 -0
- package/agentes/frontend-css-swl.md +720 -0
- package/agentes/frontend-react-swl.md +696 -0
- package/agentes/frontend-swl.md +500 -0
- package/agentes/frontend-tailwind-swl.md +830 -0
- package/agentes/implementador-swl.md +328 -0
- package/agentes/investigador-swl.md +430 -0
- package/agentes/investigador-ux-swl.md +500 -0
- package/agentes/llm-apps-swl.md +276 -0
- package/agentes/migrador-swl.md +417 -0
- package/agentes/mobile-android-swl.md +509 -0
- package/agentes/mobile-cross-swl.md +539 -0
- package/agentes/mobile-ios-swl.md +500 -0
- package/agentes/mobile-testing-swl.md +300 -0
- package/agentes/notificador-swl.md +916 -0
- package/agentes/observabilidad-swl.md +436 -0
- package/agentes/orquestador-swl.md +884 -0
- package/agentes/pagos-swl.md +283 -0
- package/agentes/perfilador-usuario-swl.md +306 -0
- package/agentes/planificador-swl.md +402 -0
- package/agentes/producto-prd-swl.md +587 -0
- package/agentes/red-team-swl.md +216 -0
- package/agentes/release-manager-swl.md +568 -0
- package/agentes/rendimiento-swl.md +714 -0
- package/agentes/resolutor-build-swl.md +243 -0
- package/agentes/revisor-angular-swl.md +276 -0
- package/agentes/revisor-codigo-swl.md +348 -0
- package/agentes/revisor-csharp-swl.md +262 -0
- package/agentes/revisor-go-swl.md +257 -0
- package/agentes/revisor-java-swl.md +255 -0
- package/agentes/revisor-kotlin-swl.md +271 -0
- package/agentes/revisor-nextjs-swl.md +279 -0
- package/agentes/revisor-php-swl.md +269 -0
- package/agentes/revisor-react-swl.md +276 -0
- package/agentes/revisor-rust-swl.md +344 -0
- package/agentes/revisor-seguridad-swl.md +390 -0
- package/agentes/revisor-swift-swl.md +266 -0
- package/agentes/revisor-typescript-swl.md +344 -0
- package/agentes/sre-swl.md +265 -0
- package/agentes/tdd-qa-swl.md +354 -0
- package/agentes/ux-disenador-swl.md +501 -0
- package/bin/lib/bot-comandos.js +1030 -0
- package/bin/lib/bot-discovery.js +182 -0
- package/bin/lib/bot-git.js +142 -0
- package/bin/swl-ses.js +325 -0
- package/bin/swl-telegram-bot.js +442 -0
- package/bin/swl-telegram-bot.plist +21 -0
- package/bin/swl-telegram-bot.service +14 -0
- package/comandos/swl/.evolved.json +23 -0
- package/comandos/swl/actualizar.md +174 -0
- package/comandos/swl/adoptar-proyecto.md +207 -0
- package/comandos/swl/aprender.md +701 -0
- package/comandos/swl/auditar-deps.md +134 -0
- package/comandos/swl/autoresearch.md +170 -0
- package/comandos/swl/ayuda.md +224 -0
- package/comandos/swl/brainstorm.md +50 -0
- package/comandos/swl/checkpoint.md +330 -0
- package/comandos/swl/compactar.md +283 -0
- package/comandos/swl/configurar-ci.md +227 -0
- package/comandos/swl/contexto.md +112 -0
- package/comandos/swl/contribuir.md +233 -0
- package/comandos/swl/crear-skill.md +292 -0
- package/comandos/swl/cron.md +196 -0
- package/comandos/swl/dashboard.md +146 -0
- package/comandos/swl/discutir-fase.md +230 -0
- package/comandos/swl/ejecutar-fase.md +135 -0
- package/comandos/swl/evaluar-skill.md +487 -0
- package/comandos/swl/evolucion-estado.md +142 -0
- package/comandos/swl/evolucionar.md +259 -0
- package/comandos/swl/exportar-vault.md +189 -0
- package/comandos/swl/gateway.md +158 -0
- package/comandos/swl/inbox.md +116 -0
- package/comandos/swl/instalar.md +220 -0
- package/comandos/swl/instintos.md +86 -0
- package/comandos/swl/mapear-codebase.md +312 -0
- package/comandos/swl/mcp-status.md +175 -0
- package/comandos/swl/metricas.md +270 -0
- package/comandos/swl/modelo.md +102 -0
- package/comandos/swl/notificaciones.md +396 -0
- package/comandos/swl/nuevo-proyecto.md +154 -0
- package/comandos/swl/planear-fase.md +221 -0
- package/comandos/swl/plugins.md +256 -0
- package/comandos/swl/reflect-skills.md +125 -0
- package/comandos/swl/release.md +217 -0
- package/comandos/swl/revisar-impacto.md +206 -0
- package/comandos/swl/revisar.md +330 -0
- package/comandos/swl/salud.md +363 -0
- package/comandos/swl/sesiones.md +200 -0
- package/comandos/swl/skill-search.md +113 -0
- package/comandos/swl/verificar.md +585 -0
- package/comandos/swl/wiki.md +620 -0
- package/contextos/dev.md +32 -0
- package/contextos/research.md +30 -0
- package/contextos/review.md +31 -0
- package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
- package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
- package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
- package/habilidades/agent-browser/SKILL.md +218 -0
- package/habilidades/agentes-como-servicio/SKILL.md +218 -0
- package/habilidades/ai-runtime-security/SKILL.md +273 -0
- package/habilidades/angular-avanzado/SKILL.md +164 -0
- package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
- package/habilidades/angular-moderno/SKILL.md +186 -0
- package/habilidades/angular-moderno/evals/evals.json +45 -0
- package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
- package/habilidades/api-rest-diseno/SKILL.md +191 -0
- package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
- package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
- package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
- package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
- package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
- package/habilidades/async-python/SKILL.md +149 -0
- package/habilidades/async-python/evals/evals.json +47 -0
- package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
- package/habilidades/auth-patrones/.evolved.json +9 -0
- package/habilidades/auth-patrones/SKILL.md +413 -0
- package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
- package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
- package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
- package/habilidades/autoresearch/SKILL.md +268 -0
- package/habilidades/autoresearch/evals/evals.json +41 -0
- package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
- package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
- package/habilidades/azure-cloud/SKILL.md +308 -0
- package/habilidades/azure-cloud/recursos/aks.md +327 -0
- package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -0
- package/habilidades/brainstorming/SKILL.md +295 -0
- package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
- package/habilidades/build-errors-cpp/SKILL.md +270 -0
- package/habilidades/build-errors-csharp/SKILL.md +265 -0
- package/habilidades/build-errors-go/SKILL.md +306 -0
- package/habilidades/build-errors-java/SKILL.md +278 -0
- package/habilidades/build-errors-kotlin/SKILL.md +303 -0
- package/habilidades/build-errors-nextjs/SKILL.md +312 -0
- package/habilidades/build-errors-php/SKILL.md +270 -0
- package/habilidades/build-errors-python/SKILL.md +292 -0
- package/habilidades/build-errors-rust/SKILL.md +284 -0
- package/habilidades/build-errors-swift/SKILL.md +272 -0
- package/habilidades/build-errors-typescript/SKILL.md +369 -0
- package/habilidades/checklist-calidad/SKILL.md +271 -0
- package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
- package/habilidades/checklist-seguridad/SKILL.md +285 -0
- package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
- package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
- package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
- package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
- package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
- package/habilidades/cloud-aws/SKILL.md +142 -0
- package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
- package/habilidades/compactacion-contexto/SKILL.md +247 -0
- package/habilidades/contenedores-docker/SKILL.md +137 -0
- package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
- package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
- package/habilidades/context-builder/SKILL.md +170 -0
- package/habilidades/control-profundidad/SKILL.md +128 -0
- package/habilidades/csharp-experto/SKILL.md +322 -0
- package/habilidades/csharp-patrones/SKILL.md +316 -0
- package/habilidades/csharp-testing/SKILL.md +286 -0
- package/habilidades/css-moderno/SKILL.md +166 -0
- package/habilidades/css-moderno/evals/evals.json +43 -0
- package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
- package/habilidades/datos-etl/SKILL.md +129 -0
- package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
- package/habilidades/dbml-experto/SKILL.md +339 -0
- package/habilidades/dbml-experto/evals/evals.json +56 -0
- package/habilidades/dependencias-auditoria/SKILL.md +320 -0
- package/habilidades/deprecacion-migracion/SKILL.md +169 -0
- package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
- package/habilidades/design-tokens/SKILL.md +158 -0
- package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
- package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
- package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
- package/habilidades/discutir-fase/SKILL.md +188 -0
- package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
- package/habilidades/diseno-responsivo/SKILL.md +186 -0
- package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
- package/habilidades/django-experto/SKILL.md +205 -0
- package/habilidades/django-experto/recursos/async-django.md +390 -0
- package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
- package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
- package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
- package/habilidades/django-experto/recursos/testing-django.md +415 -0
- package/habilidades/doc-sync/SKILL.md +280 -0
- package/habilidades/drift-detection/SKILL.md +179 -0
- package/habilidades/ejecutar-fase/SKILL.md +468 -0
- package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
- package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
- package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
- package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
- package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
- package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
- package/habilidades/evaluacion-agentes/SKILL.md +314 -0
- package/habilidades/event-driven/SKILL.md +153 -0
- package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
- package/habilidades/extraccion-documentos/SKILL.md +221 -0
- package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
- package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
- package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
- package/habilidades/fastapi-experto/SKILL.md +221 -0
- package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
- package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
- package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
- package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
- package/habilidades/filament-admin/SKILL.md +290 -0
- package/habilidades/frontend-avanzado/SKILL.md +257 -0
- package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
- package/habilidades/gcp-cloud/SKILL.md +260 -0
- package/habilidades/gcp-cloud/recursos/gke.md +234 -0
- package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
- package/habilidades/generacion-mermaid/SKILL.md +229 -0
- package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
- package/habilidades/go-experto/SKILL.md +305 -0
- package/habilidades/go-patrones/SKILL.md +299 -0
- package/habilidades/go-testing/SKILL.md +291 -0
- package/habilidades/graphql-experto/SKILL.md +323 -0
- package/habilidades/guardrail-semantico/SKILL.md +282 -0
- package/habilidades/harness-claude-code/SKILL.md +299 -0
- package/habilidades/iam-secretos/SKILL.md +265 -0
- package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
- package/habilidades/infra-github-actions/SKILL.md +166 -0
- package/habilidades/instalar-sistema/.evolved.json +9 -0
- package/habilidades/instalar-sistema/SKILL.md +221 -0
- package/habilidades/java-experto/SKILL.md +290 -0
- package/habilidades/java-patrones/SKILL.md +275 -0
- package/habilidades/java-testing/SKILL.md +288 -0
- package/habilidades/kotlin-compose/SKILL.md +278 -0
- package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
- package/habilidades/kotlin-experto/SKILL.md +318 -0
- package/habilidades/kotlin-testing/SKILL.md +267 -0
- package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
- package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
- package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
- package/habilidades/langchain-langraph/SKILL.md +386 -0
- package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
- package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
- package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
- package/habilidades/legacy-code-rescue/SKILL.md +267 -0
- package/habilidades/likec4-experto/SKILL.md +412 -0
- package/habilidades/likec4-experto/evals/evals.json +69 -0
- package/habilidades/manejo-errores/.evolved.json +9 -0
- package/habilidades/manejo-errores/SKILL.md +407 -0
- package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
- package/habilidades/mapear-codebase/SKILL.md +275 -0
- package/habilidades/memoria-busqueda/SKILL.md +194 -0
- package/habilidades/memoria-busqueda/evals/evals.json +44 -0
- package/habilidades/meta-skills-estandar/SKILL.md +298 -0
- package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
- package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
- package/habilidades/microservicios/SKILL.md +155 -0
- package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
- package/habilidades/mobile-flutter/SKILL.md +199 -0
- package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
- package/habilidades/mobile-react-native/SKILL.md +176 -0
- package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
- package/habilidades/mongodb-experto/SKILL.md +302 -0
- package/habilidades/monitoring-alertas/SKILL.md +201 -0
- package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
- package/habilidades/nestjs-experto/SKILL.md +307 -0
- package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
- package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
- package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
- package/habilidades/nextjs-experto/SKILL.md +335 -0
- package/habilidades/nextjs-patrones/SKILL.md +303 -0
- package/habilidades/nextjs-testing/SKILL.md +331 -0
- package/habilidades/node-experto/.evolved.json +9 -0
- package/habilidades/node-experto/SKILL.md +266 -0
- package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
- package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
- package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
- package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
- package/habilidades/nuevo-proyecto/SKILL.md +204 -0
- package/habilidades/orquestacion-async/SKILL.md +303 -0
- package/habilidades/paid-media-tracking/SKILL.md +269 -0
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
- package/habilidades/patrones-python/SKILL.md +228 -0
- package/habilidades/patrones-python/evals/evals.json +56 -0
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
- package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
- package/habilidades/perfil-usuario/SKILL.md +200 -0
- package/habilidades/perfil-usuario/evals/evals.json +55 -0
- package/habilidades/performance-baseline/SKILL.md +297 -0
- package/habilidades/php-experto/SKILL.md +291 -0
- package/habilidades/php-patrones/SKILL.md +306 -0
- package/habilidades/php-testing/SKILL.md +280 -0
- package/habilidades/planear-fase/SKILL.md +269 -0
- package/habilidades/postgresql-experto/SKILL.md +151 -0
- package/habilidades/postgresql-experto/evals/evals.json +53 -0
- package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
- package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
- package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
- package/habilidades/privacy-memoria/SKILL.md +141 -0
- package/habilidades/privacy-memoria/evals/evals.json +43 -0
- package/habilidades/prompt-engineering/SKILL.md +518 -0
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
- package/habilidades/rag-arquitectura/SKILL.md +338 -0
- package/habilidades/rails-experto/SKILL.md +237 -0
- package/habilidades/rails-experto/recursos/active-record.md +260 -0
- package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
- package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
- package/habilidades/react-experto/SKILL.md +209 -0
- package/habilidades/react-experto/evals/evals.json +55 -0
- package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
- package/habilidades/react-optimizacion/SKILL.md +174 -0
- package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
- package/habilidades/redis-experto/SKILL.md +305 -0
- package/habilidades/release-semver/.evolved.json +9 -0
- package/habilidades/release-semver/SKILL.md +248 -0
- package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
- package/habilidades/rust-experto/SKILL.md +400 -0
- package/habilidades/rust-patrones/SKILL.md +296 -0
- package/habilidades/rust-testing/SKILL.md +311 -0
- package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
- package/habilidades/sql-optimizacion/SKILL.md +200 -0
- package/habilidades/sql-optimizacion/evals/evals.json +54 -0
- package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
- package/habilidades/sre-patrones/SKILL.md +333 -0
- package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
- package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
- package/habilidades/stripe-pagos/SKILL.md +550 -0
- package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
- package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
- package/habilidades/structured-outputs/SKILL.md +343 -0
- package/habilidades/swift-experto/SKILL.md +320 -0
- package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
- package/habilidades/swift-patrones/SKILL.md +313 -0
- package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
- package/habilidades/swift-testing/SKILL.md +254 -0
- package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
- package/habilidades/swl-dashboard/SKILL.md +370 -0
- package/habilidades/swl-markitdown/SKILL.md +285 -0
- package/habilidades/swl-markitdown/evals/evals.json +52 -0
- package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
- package/habilidades/tailwind-experto/SKILL.md +240 -0
- package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
- package/habilidades/tdd-workflow/SKILL.md +293 -0
- package/habilidades/terraform-experto/SKILL.md +321 -0
- package/habilidades/testing-python/SKILL.md +340 -0
- package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
- package/habilidades/threat-model-lite/SKILL.md +246 -0
- package/habilidades/tracing-processor/SKILL.md +212 -0
- package/habilidades/tracking-measurement/SKILL.md +239 -0
- package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
- package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
- package/habilidades/typescript-avanzado/SKILL.md +144 -0
- package/habilidades/typescript-avanzado/evals/evals.json +55 -0
- package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
- package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
- package/habilidades/ux-diseno/SKILL.md +116 -0
- package/habilidades/ux-diseno/evals/evals.json +43 -0
- package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
- package/habilidades/verificacion-evidencia/SKILL.md +160 -0
- package/habilidades/verificar-trabajo/SKILL.md +303 -0
- package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
- package/habilidades/wiki-conocimiento/SKILL.md +276 -0
- package/habilidades/wireframes-flujos/SKILL.md +212 -0
- package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
- package/habilidades/workflow-claude-code/SKILL.md +260 -0
- package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
- package/hooks/_run-hook.sh +57 -0
- package/hooks/actualizar-perfil-usuario.js +364 -0
- package/hooks/agente-lifecycle.js +71 -0
- package/hooks/aiisms-detector.js +173 -0
- package/hooks/audit-trail.js +204 -0
- package/hooks/auto-background.js +97 -0
- package/hooks/auto-consolidacion.js +178 -0
- package/hooks/auto-evolucion.js +666 -0
- package/hooks/auto-restaurar-settings.js +360 -0
- package/hooks/calidad-pre-commit.js +929 -0
- package/hooks/calidad-typescript.js +511 -0
- package/hooks/captura-feedback-usuario.js +148 -0
- package/hooks/check-update.js +211 -0
- package/hooks/clasificador-mensajes.js +271 -0
- package/hooks/degradacion-instintos.js +272 -0
- package/hooks/escaneo-secretos.js +389 -0
- package/hooks/extraccion-aprendizajes.js +763 -0
- package/hooks/grafo-contexto.js +129 -0
- package/hooks/graph-update.js +67 -0
- package/hooks/guardrail-modelo.js +247 -0
- package/hooks/inbox-aviso.js +75 -0
- package/hooks/inyeccion-contexto.js +246 -0
- package/hooks/lib/abort-registry.js +214 -0
- package/hooks/lib/agent-backend.js +210 -0
- package/hooks/lib/agent-comms.js +263 -0
- package/hooks/lib/agent-issue-codes.js +284 -0
- package/hooks/lib/agent-matcher.js +189 -0
- package/hooks/lib/async-hook-registry.js +252 -0
- package/hooks/lib/atomic-write.js +130 -0
- package/hooks/lib/auto-consolidator.js +335 -0
- package/hooks/lib/canary-skills.js +187 -0
- package/hooks/lib/consolidation-lock.js +291 -0
- package/hooks/lib/context-builder.js +430 -0
- package/hooks/lib/context-compressor.js +657 -0
- package/hooks/lib/convergence-detector.js +105 -0
- package/hooks/lib/delegation-tracker.js +198 -0
- package/hooks/lib/detectar-package-manager.js +423 -0
- package/hooks/lib/edit-accumulator.js +171 -0
- package/hooks/lib/error-classifier.js +308 -0
- package/hooks/lib/event-bus.js +112 -0
- package/hooks/lib/evolution-tracker.js +442 -0
- package/hooks/lib/execution-state.js +316 -0
- package/hooks/lib/fingerprint-id.js +135 -0
- package/hooks/lib/gateway-notify.js +116 -0
- package/hooks/lib/graph-security.js +75 -0
- package/hooks/lib/guardrail-metrics.js +202 -0
- package/hooks/lib/hook-circuit-breaker.js +206 -0
- package/hooks/lib/loop-detector.js +267 -0
- package/hooks/lib/mcp-health.js +184 -0
- package/hooks/lib/mcp-pool.js +436 -0
- package/hooks/lib/memory-search.js +506 -0
- package/hooks/lib/merkle-audit.js +96 -0
- package/hooks/lib/model-router.js +222 -0
- package/hooks/lib/normalize-error.js +324 -0
- package/hooks/lib/normalize-input.js +65 -0
- package/hooks/lib/nudge-tracker.js +306 -0
- package/hooks/lib/otlp-exporter.js +365 -0
- package/hooks/lib/performance-marks.js +239 -0
- package/hooks/lib/privacy-filter.js +128 -0
- package/hooks/lib/prompt-injection-scanner.js +209 -0
- package/hooks/lib/provenance-tracker.js +183 -0
- package/hooks/lib/rate-limit-tracker.js +253 -0
- package/hooks/lib/reflect-classifier.js +164 -0
- package/hooks/lib/resource-quota.js +122 -0
- package/hooks/lib/retry-jitter.js +165 -0
- package/hooks/lib/risk-engine.js +368 -0
- package/hooks/lib/run-log.js +408 -0
- package/hooks/lib/session-fts.js +379 -0
- package/hooks/lib/session-store.js +293 -0
- package/hooks/lib/singleton-guard.js +159 -0
- package/hooks/lib/skill-auditor.js +588 -0
- package/hooks/lib/sync-status.js +228 -0
- package/hooks/lib/taint-tracker.js +107 -0
- package/hooks/lib/task-service.js +295 -0
- package/hooks/lib/tech-skills-map.js +146 -0
- package/hooks/lib/telegram-cliente.js +159 -0
- package/hooks/lib/telegram-config.js +170 -0
- package/hooks/lib/token-budget.js +156 -0
- package/hooks/lib/token-estimator.js +420 -0
- package/hooks/lib/toon-compressor.js +245 -0
- package/hooks/lib/usage-model.js +183 -0
- package/hooks/lib/variable-resolver.js +230 -0
- package/hooks/linea-estado.js +324 -0
- package/hooks/metricas-evolucion.js +209 -0
- package/hooks/monitor-contexto.js +325 -0
- package/hooks/notificacion-sesion-stop.js +198 -0
- package/hooks/notificacion-telegram-notification.js +4 -0
- package/hooks/notificacion-telegram-subagent.js +4 -0
- package/hooks/notificacion-telegram.js +267 -0
- package/hooks/preservar-estado-pre-compact.js +150 -0
- package/hooks/proteccion-rutas.js +366 -0
- package/hooks/registro-turnos.js +209 -0
- package/hooks/resumen-sesion.js +249 -0
- package/hooks/risk-scoring.js +323 -0
- package/hooks/rotar-audit-auto.js +122 -0
- package/hooks/sugerir-regenerar-inventario.js +170 -0
- package/hooks/telemetria-agentes.js +167 -0
- package/hooks/tracking-costos.js +688 -0
- package/instintos/global.yaml +8 -0
- package/instintos/perfil-usuario.yaml +53 -0
- package/instintos/prompt-appendices.yaml +57 -0
- package/instintos/proyecto.yaml +372 -0
- package/manifiestos/gateway-config.json +77 -0
- package/manifiestos/handoff-context.json +223 -0
- package/manifiestos/hook-profiles.json +44 -0
- package/manifiestos/hooks-config.json +360 -0
- package/manifiestos/modulos.json +1173 -0
- package/manifiestos/perfiles.json +404 -0
- package/package.json +86 -0
- package/plantillas/ESTADO.md +109 -0
- package/plantillas/HOJA-RUTA.md +143 -0
- package/plantillas/PROYECTO.md +122 -0
- package/plantillas/REQUISITOS.md +132 -0
- package/plantillas/auditor-veto-template.md +105 -0
- package/plantillas/github-workflows/README.md +47 -0
- package/plantillas/github-workflows/release-please.yml +44 -0
- package/plantillas/github-workflows/swl-ci.yml +107 -0
- package/plantillas/github-workflows/swl-security.yml +51 -0
- package/plantillas/mcp-mineru.json +13 -0
- package/plantillas/research/ARQUITECTURA.md +220 -0
- package/plantillas/research/FUNCIONALIDADES.md +175 -0
- package/plantillas/research/RESUMEN.md +165 -0
- package/plantillas/research/STACK.md +233 -0
- package/plantillas/research/TRAMPAS.md +299 -0
- package/plantillas/skill-evals-template.json +44 -0
- package/plugin.json +343 -0
- package/reglas/accesibilidad.md +269 -0
- package/reglas/api-diseno.md +400 -0
- package/reglas/arquitectura.md +352 -0
- package/reglas/brevedad-output.md +124 -0
- package/reglas/cloud-infra.md +247 -0
- package/reglas/docs.md +245 -0
- package/reglas/estilo-codigo.md +201 -0
- package/reglas/git-workflow.md +245 -0
- package/reglas/gobernanza.md +271 -0
- package/reglas/harness-claude-code.md +213 -0
- package/reglas/hooks.md +186 -0
- package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
- package/reglas/lenguajes/csharp/hooks.md +281 -0
- package/reglas/lenguajes/csharp/patrones.md +226 -0
- package/reglas/lenguajes/csharp/seguridad.md +258 -0
- package/reglas/lenguajes/csharp/testing.md +176 -0
- package/reglas/lenguajes/go/estilo-codigo.md +195 -0
- package/reglas/lenguajes/go/hooks.md +249 -0
- package/reglas/lenguajes/go/patrones.md +249 -0
- package/reglas/lenguajes/go/seguridad.md +225 -0
- package/reglas/lenguajes/go/testing.md +272 -0
- package/reglas/lenguajes/java/estilo-codigo.md +217 -0
- package/reglas/lenguajes/java/hooks.md +251 -0
- package/reglas/lenguajes/java/patrones.md +226 -0
- package/reglas/lenguajes/java/seguridad.md +233 -0
- package/reglas/lenguajes/java/testing.md +238 -0
- package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
- package/reglas/lenguajes/kotlin/hooks.md +245 -0
- package/reglas/lenguajes/kotlin/patrones.md +201 -0
- package/reglas/lenguajes/kotlin/seguridad.md +202 -0
- package/reglas/lenguajes/kotlin/testing.md +236 -0
- package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
- package/reglas/lenguajes/nextjs/hooks.md +186 -0
- package/reglas/lenguajes/nextjs/patrones.md +225 -0
- package/reglas/lenguajes/nextjs/seguridad.md +216 -0
- package/reglas/lenguajes/nextjs/testing.md +193 -0
- package/reglas/lenguajes/php/estilo-codigo.md +228 -0
- package/reglas/lenguajes/php/hooks.md +165 -0
- package/reglas/lenguajes/php/patrones.md +233 -0
- package/reglas/lenguajes/php/seguridad.md +186 -0
- package/reglas/lenguajes/php/testing.md +205 -0
- package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
- package/reglas/lenguajes/rust/hooks.md +240 -0
- package/reglas/lenguajes/rust/patrones.md +250 -0
- package/reglas/lenguajes/rust/seguridad.md +221 -0
- package/reglas/lenguajes/rust/testing.md +194 -0
- package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
- package/reglas/lenguajes/swift/hooks.md +257 -0
- package/reglas/lenguajes/swift/patrones.md +235 -0
- package/reglas/lenguajes/swift/seguridad.md +248 -0
- package/reglas/lenguajes/swift/testing.md +242 -0
- package/reglas/markitdown.md +60 -0
- package/reglas/memoria-consolidada.md +209 -0
- package/reglas/patrones.md +225 -0
- package/reglas/performance.md +195 -0
- package/reglas/pruebas.md +159 -0
- package/reglas/seguridad-agentes.md +351 -0
- package/reglas/seguridad.md +151 -0
- package/reglas/skills-estandar.md +373 -0
- package/reglas/testing.md +193 -0
- package/schemas/agent-contract.json +176 -0
- package/schemas/agent-frontmatter.schema.json +149 -0
- package/schemas/agent-message.schema.json +53 -0
- package/schemas/agent-output-implementacion.schema.json +85 -0
- package/schemas/agent-output-planificacion.schema.json +113 -0
- package/schemas/agent-output-review.schema.json +78 -0
- package/schemas/diary-entry.schema.json +80 -0
- package/schemas/hook-profiles.schema.json +39 -0
- package/schemas/hooks-config.schema.json +74 -0
- package/schemas/instinct.schema.json +115 -0
- package/schemas/modulos.schema.json +29 -0
- package/schemas/perfiles.schema.json +28 -0
- package/schemas/plugin.schema.json +64 -0
- package/schemas/skill-evals.schema.json +95 -0
- package/schemas/skill-frontmatter.schema.json +170 -0
- package/scripts/actualizar.js +145 -0
- package/scripts/audit-skills.sh +78 -0
- package/scripts/auditar-agentes-gaps.js +149 -0
- package/scripts/auditar-cobertura-frameworks.js +241 -0
- package/scripts/auditar-skills-gaps.js +206 -0
- package/scripts/bootstrap-instintos.js +259 -0
- package/scripts/check-update.js +109 -0
- package/scripts/comandos/agents.js +105 -0
- package/scripts/comandos/info.js +108 -0
- package/scripts/comandos/install-asistido.js +186 -0
- package/scripts/comandos/skills.js +211 -0
- package/scripts/configurar-branch-protection.js +418 -0
- package/scripts/daemon-swl.py +388 -0
- package/scripts/desinstalar.js +130 -0
- package/scripts/doctor.js +559 -0
- package/scripts/field-report.js +199 -0
- package/scripts/generar-inventario.js +317 -0
- package/scripts/inbox-tmux-inject.js +161 -0
- package/scripts/inferir-herramientas-permitidas.js +586 -0
- package/scripts/inicializar.js +133 -0
- package/scripts/instalador.js +1031 -0
- package/scripts/instalar-git-hook.js +122 -0
- package/scripts/lib/agp-frontmatter.js +222 -0
- package/scripts/lib/append-con-marcadores.js +199 -0
- package/scripts/lib/artefactos-python.js +43 -0
- package/scripts/lib/audit-query.js +221 -0
- package/scripts/lib/autostart-linux.js +347 -0
- package/scripts/lib/autostart-macos.js +360 -0
- package/scripts/lib/autostart-windows.js +307 -0
- package/scripts/lib/budget-enforcer.js +252 -0
- package/scripts/lib/claude-sessions.js +285 -0
- package/scripts/lib/configurar-ci.js +380 -0
- package/scripts/lib/console-span-exporter.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -0
- package/scripts/lib/dashboard-widgets.js +290 -0
- package/scripts/lib/detectar-runtime.js +279 -0
- package/scripts/lib/detectar-stack.js +187 -0
- package/scripts/lib/diary-entry.js +234 -0
- package/scripts/lib/drift-detector.js +545 -0
- package/scripts/lib/estado.js +124 -0
- package/scripts/lib/gestor-componentes.js +243 -0
- package/scripts/lib/gitignore-manifest.js +305 -0
- package/scripts/lib/graph-analyze.py +556 -0
- package/scripts/lib/graph-builder.py +485 -0
- package/scripts/lib/graph-cluster.py +259 -0
- package/scripts/lib/health-row.js +168 -0
- package/scripts/lib/hooks-settings.js +789 -0
- package/scripts/lib/manifiestos.js +138 -0
- package/scripts/lib/mc-client.js +137 -0
- package/scripts/lib/notificaciones-telegram.js +1107 -0
- package/scripts/lib/npm-version.js +261 -0
- package/scripts/lib/paquetes-conocidos.js +50 -0
- package/scripts/lib/preservar-usuario.js +586 -0
- package/scripts/lib/prompt-builder.js +264 -0
- package/scripts/lib/resolver-externo.js +332 -0
- package/scripts/lib/schedule-parser.js +305 -0
- package/scripts/lib/scoring-instintos.js +240 -0
- package/scripts/lib/seguridad.js +160 -0
- package/scripts/lib/selector-interactivo.js +152 -0
- package/scripts/lib/semantic-search.js +242 -0
- package/scripts/lib/skill-discovery.js +234 -0
- package/scripts/lib/skill-metrics.js +246 -0
- package/scripts/lib/skill-normalizer.js +112 -0
- package/scripts/lib/skills-hub.js +340 -0
- package/scripts/lib/span-schema.js +134 -0
- package/scripts/lib/tool-cost-analyzer.js +255 -0
- package/scripts/lib/tracing-processor-interface.js +286 -0
- package/scripts/lib/transformadores/base.js +80 -0
- package/scripts/lib/transformadores/claude.js +124 -0
- package/scripts/lib/transformadores/codex.js +115 -0
- package/scripts/lib/transformadores/copilot.js +106 -0
- package/scripts/lib/transformadores/gemini.js +74 -0
- package/scripts/lib/transformadores/index.js +35 -0
- package/scripts/lib/transformadores/opencode.js +75 -0
- package/scripts/lib/ui.js +259 -0
- package/scripts/limpiar-artefactos-python.js +131 -0
- package/scripts/mcp-orchestrator.py +386 -0
- package/scripts/mcp-pool-manager.py +352 -0
- package/scripts/mcp-telemetry.py +378 -0
- package/scripts/poblar-evolvable.js +226 -0
- package/scripts/publicar.js +287 -0
- package/scripts/reflect-skills.js +403 -0
- package/scripts/rotar-audit-logs.js +185 -0
- package/scripts/run-skill-evals.js +242 -0
- package/scripts/smoke-test.js +374 -0
- package/scripts/token-analysis.py +471 -0
- package/scripts/validar-manifest.js +195 -0
- package/scripts/validar-memoria.js +321 -0
- package/scripts/validar-tests-aislamiento.js +184 -0
- package/scripts/validar-tokens-test.js +208 -0
- package/scripts/validar.js +147 -0
- package/scripts/validate-markdown.py +339 -0
- package/scripts/validate-skills.py +385 -0
- package/scripts/vendor/claude-usage/README.md +116 -0
- package/scripts/vendor/claude-usage/cli.py +334 -0
- package/scripts/vendor/claude-usage/dashboard.py +795 -0
- package/scripts/vendor/claude-usage/scanner.py +467 -0
- package/scripts/vendor/markitdown/cli.py +194 -0
- package/scripts/verificar-evolucion.js +289 -0
- package/scripts/verificar-release.js +494 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: swl:revisar
|
|
3
|
+
description: >
|
|
4
|
+
Ejecuta revisión de código especializada por tecnología. Detecta automáticamente
|
|
5
|
+
el stack del proyecto o acepta argumento explícito. Delega al agente revisor
|
|
6
|
+
correspondiente con el skill de lenguaje cargado. Produce reporte con severidades.
|
|
7
|
+
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "Agent"]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /swl:revisar — Revisión de código por tecnología
|
|
11
|
+
|
|
12
|
+
Comando unificado de revisión que detecta la tecnología y delega al revisor especializado.
|
|
13
|
+
Soporta revisión genérica, por lenguaje, por stack y por archivo específico.
|
|
14
|
+
|
|
15
|
+
## Uso
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/swl:revisar — Auto-detecta stack y revisa todo
|
|
19
|
+
/swl:revisar python — Revisión Python (FastAPI, Django, patrones)
|
|
20
|
+
/swl:revisar java — Revisión Java (Spring Boot, JPA, streams)
|
|
21
|
+
/swl:revisar go — Revisión Go (concurrency, error handling, interfaces)
|
|
22
|
+
/swl:revisar rust — Revisión Rust (ownership, unsafe, async)
|
|
23
|
+
/swl:revisar csharp — Revisión C# (ASP.NET Core, EF Core, async)
|
|
24
|
+
/swl:revisar kotlin — Revisión Kotlin (coroutines, Compose, null safety)
|
|
25
|
+
/swl:revisar swift — Revisión Swift (SwiftUI, actors, concurrency)
|
|
26
|
+
/swl:revisar php — Revisión PHP (Laravel, Eloquent, seguridad)
|
|
27
|
+
/swl:revisar nextjs — Revisión Next.js (RSC, Server Actions, caching)
|
|
28
|
+
/swl:revisar react — Revisión React (hooks, state, performance)
|
|
29
|
+
/swl:revisar angular — Revisión Angular (signals, standalone, OnPush)
|
|
30
|
+
/swl:revisar typescript — Revisión TypeScript (tipos, patrones, testing)
|
|
31
|
+
/swl:revisar sql — Revisión SQL/PostgreSQL (queries, indices, N+1)
|
|
32
|
+
/swl:revisar seguridad — Revisión de seguridad OWASP (todos los lenguajes)
|
|
33
|
+
/swl:revisar <archivo> — Revisa un archivo específico (detecta lenguaje por extensión)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Paso 0 — Detección de tecnología
|
|
37
|
+
|
|
38
|
+
Si no se proporciona argumento, detectar automáticamente:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ls package.json pyproject.toml requirements.txt go.mod Cargo.toml \
|
|
42
|
+
*.csproj *.sln build.gradle.kts Package.swift composer.json 2>/dev/null
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Reglas de detección:
|
|
46
|
+
- `package.json` con `"next"` → nextjs
|
|
47
|
+
- `package.json` con `"@angular/core"` → angular
|
|
48
|
+
- `package.json` con `"react"` (sin next ni angular) → react
|
|
49
|
+
- `package.json` sin frameworks conocidos → typescript
|
|
50
|
+
- `pyproject.toml` o `requirements.txt` → python
|
|
51
|
+
- `go.mod` → go
|
|
52
|
+
- `Cargo.toml` → rust
|
|
53
|
+
- `*.csproj` o `*.sln` → csharp
|
|
54
|
+
- `build.gradle.kts` → kotlin
|
|
55
|
+
- `Package.swift` → swift
|
|
56
|
+
- `composer.json` → php
|
|
57
|
+
- Múltiples detectados → revisión en paralelo (ver Paso 3b)
|
|
58
|
+
|
|
59
|
+
Si se proporciona un archivo como argumento, detectar por extension:
|
|
60
|
+
`.py` → python | `.go` → go | `.rs` → rust | `.cs` → csharp |
|
|
61
|
+
`.kt` → kotlin | `.swift` → swift | `.php` → php |
|
|
62
|
+
`.ts` / `.tsx` → typescript | `.sql` → sql |
|
|
63
|
+
`.js` / `.jsx` → typescript
|
|
64
|
+
|
|
65
|
+
## Paso 1 — Determinar alcance
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Archivos cambiados respecto a main (preferido)
|
|
69
|
+
git diff --name-only main...HEAD 2>/dev/null
|
|
70
|
+
|
|
71
|
+
# O archivos staged
|
|
72
|
+
git diff --cached --name-only 2>/dev/null
|
|
73
|
+
|
|
74
|
+
# O commits recientes si lo anterior esta vacio
|
|
75
|
+
git diff --name-only HEAD~10 2>/dev/null
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Filtrar por extensión del lenguaje detectado. Anunciar al usuario:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Revisión [tecnología]: [N] archivos en alcance
|
|
82
|
+
Agente: [nombre-del-revisor]
|
|
83
|
+
Skills: [lista de skills que cargará]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Paso 2 — Tabla de delegación
|
|
87
|
+
|
|
88
|
+
| Argumento | Agente | Skills principales |
|
|
89
|
+
|--------------|---------------------------|-----------------------------------------------------------------|
|
|
90
|
+
| `python` | `revisor-codigo-swl` | `patrones-python`, `fastapi-experto`, `testing-python` |
|
|
91
|
+
| `java` | `revisor-java-swl` | `java-experto`, `java-testing`, `java-patrones` |
|
|
92
|
+
| `go` | `revisor-go-swl` | `go-experto`, `go-testing`, `go-patrones` |
|
|
93
|
+
| `rust` | `revisor-rust-swl` | `rust-experto`, `rust-testing`, `rust-patrones` |
|
|
94
|
+
| `csharp` | `revisor-csharp-swl` | `csharp-experto`, `csharp-testing`, `csharp-patrones` |
|
|
95
|
+
| `kotlin` | `revisor-kotlin-swl` | `kotlin-experto`, `kotlin-testing`, `kotlin-compose` |
|
|
96
|
+
| `swift` | `revisor-swift-swl` | `swift-experto`, `swift-testing`, `swift-patrones` |
|
|
97
|
+
| `php` | `revisor-php-swl` | `php-experto`, `php-testing`, `php-patrones` |
|
|
98
|
+
| `nextjs` | `revisor-nextjs-swl` | `nextjs-experto`, `nextjs-testing`, `nextjs-patrones` |
|
|
99
|
+
| `react` | `revisor-react-swl` | `react-experto`, `react-optimizacion`, `typescript-avanzado` |
|
|
100
|
+
| `angular` | `revisor-angular-swl` | `angular-moderno`, `angular-avanzado`, `typescript-avanzado` |
|
|
101
|
+
| `typescript` | `revisor-typescript-swl` | `typescript-avanzado`, `node-experto` |
|
|
102
|
+
| `sql` | `revisor-codigo-swl` | `postgresql-experto`, `sql-optimizacion` |
|
|
103
|
+
| `seguridad` | `revisor-seguridad-swl` | `checklist-seguridad`, `auth-patrones`, `iam-secretos` |
|
|
104
|
+
|
|
105
|
+
## Paso 3a — Revisión de un solo stack
|
|
106
|
+
|
|
107
|
+
Construir la instrucción al agente y delegarla con `Agent()`:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Revisa el código [tecnología] del proyecto.
|
|
111
|
+
|
|
112
|
+
Archivos a revisar:
|
|
113
|
+
[lista de archivos filtrados por extension]
|
|
114
|
+
|
|
115
|
+
Carga antes de empezar:
|
|
116
|
+
[skills segun tabla del Paso 2]
|
|
117
|
+
|
|
118
|
+
Aplica revision en dos capas:
|
|
119
|
+
|
|
120
|
+
CAPA 1 — Correctitud y spec compliance:
|
|
121
|
+
- La implementación cumple los requisitos visibles (PLAN.md, criterios de aceptación)
|
|
122
|
+
- No hay scope creep ni código muerto
|
|
123
|
+
- Los casos borde están manejados
|
|
124
|
+
|
|
125
|
+
CAPA 2 — Calidad idiomática del lenguaje [tecnología]:
|
|
126
|
+
- Patrones idiomáticos del lenguaje (no anti-patrones)
|
|
127
|
+
- Error handling correcto y explícito
|
|
128
|
+
- Sin código de debug (console.log, print, breakpoints)
|
|
129
|
+
- Cobertura de tests básica
|
|
130
|
+
- Performance obvios: N+1, loops anidados O(n²), carga innecesaria en memoria
|
|
131
|
+
- Seguridad básica: inputs validados, sin secrets hardcodeados, sin SQL crudo
|
|
132
|
+
|
|
133
|
+
Reporta cada hallazgo con:
|
|
134
|
+
- Archivo y línea exacta
|
|
135
|
+
- Severidad: CRITICO | IMPORTANTE | MENOR
|
|
136
|
+
- Descripción clara del problema
|
|
137
|
+
- Corrección recomendada con fragmento de código cuando aplique
|
|
138
|
+
|
|
139
|
+
Al final, produce un veredicto: APROBADO | CON OBSERVACIONES | RECHAZADO
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Paso 3b — Revisión de múltiples stacks (auto-detect)
|
|
143
|
+
|
|
144
|
+
Si el proyecto tiene varios lenguajes, lanzar los revisores en paralelo en un mismo mensaje:
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Agent("revisor-python", description="Revisar archivos Python del proyecto")
|
|
148
|
+
Agent("revisor-frontend", description="Revisar archivos TypeScript/React/Angular del proyecto")
|
|
149
|
+
Agent("revisor-sql", description="Revisar queries SQL y migraciones del proyecto")
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Consolidar los reportes de todos los agentes en un solo reporte final al usuario.
|
|
153
|
+
|
|
154
|
+
## Paso 4 — Verificaciones automáticas por tecnología
|
|
155
|
+
|
|
156
|
+
Ejecutar ANTES de la revisión manual del agente. Los resultados se incluyen en el reporte.
|
|
157
|
+
|
|
158
|
+
### Python
|
|
159
|
+
```bash
|
|
160
|
+
ruff check . --output-format=concise 2>/dev/null
|
|
161
|
+
mypy . --ignore-missing-imports --no-error-summary 2>/dev/null
|
|
162
|
+
pytest --tb=short -q 2>/dev/null
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Go
|
|
166
|
+
```bash
|
|
167
|
+
go vet ./... 2>/dev/null
|
|
168
|
+
go test -race ./... 2>/dev/null
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Rust
|
|
172
|
+
```bash
|
|
173
|
+
cargo clippy -- -D warnings 2>/dev/null
|
|
174
|
+
cargo test 2>/dev/null
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### C#
|
|
178
|
+
```bash
|
|
179
|
+
dotnet build -warnaserror 2>/dev/null
|
|
180
|
+
dotnet test 2>/dev/null
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### TypeScript / React / Angular / Next.js
|
|
184
|
+
```bash
|
|
185
|
+
npx tsc --noEmit 2>/dev/null
|
|
186
|
+
npx eslint src/ --format=compact 2>/dev/null
|
|
187
|
+
npm test -- --watchAll=false --passWithNoTests 2>/dev/null
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### PHP
|
|
191
|
+
```bash
|
|
192
|
+
vendor/bin/phpstan analyse 2>/dev/null
|
|
193
|
+
php artisan test 2>/dev/null
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Kotlin
|
|
197
|
+
```bash
|
|
198
|
+
./gradlew detekt 2>/dev/null
|
|
199
|
+
./gradlew test 2>/dev/null
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Swift
|
|
203
|
+
```bash
|
|
204
|
+
swift build 2>/dev/null
|
|
205
|
+
swift test 2>/dev/null
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### SQL / PostgreSQL
|
|
209
|
+
```bash
|
|
210
|
+
# Buscar queries dentro de loops (potencial N+1)
|
|
211
|
+
grep -rn "execute\|query\|SELECT" --include="*.py" --include="*.ts" . 2>/dev/null | head -40
|
|
212
|
+
# Buscar SQL crudo sin parametrizar
|
|
213
|
+
grep -rn 'f"SELECT\|f"INSERT\|f"UPDATE\|"SELECT.*+\|"INSERT.*+' . 2>/dev/null
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Seguridad (todos los lenguajes)
|
|
217
|
+
```bash
|
|
218
|
+
# Secrets potenciales
|
|
219
|
+
git grep -i "password\|secret\|api_key\|token\s*=" -- "*.py" "*.ts" "*.js" "*.go" 2>/dev/null | grep -v "test\|spec\|\.example" | head -20
|
|
220
|
+
# Funciones peligrosas
|
|
221
|
+
grep -rn "eval(\|exec(\|shell=True\|pickle.loads\|yaml.load(" . 2>/dev/null | grep -v "test\|spec" | head -20
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Paso 5 — Reporte consolidado
|
|
225
|
+
|
|
226
|
+
Produce el reporte directamente en la conversación con este formato:
|
|
227
|
+
|
|
228
|
+
```markdown
|
|
229
|
+
# Revisión de Código — [tecnología]
|
|
230
|
+
|
|
231
|
+
**Proyecto**: [nombre del directorio raíz]
|
|
232
|
+
**Fecha**: [fecha actual]
|
|
233
|
+
**Archivos revisados**: [N]
|
|
234
|
+
|
|
235
|
+
## Resumen
|
|
236
|
+
|
|
237
|
+
| Severidad | Cantidad |
|
|
238
|
+
|------------|----------|
|
|
239
|
+
| Crítico | N |
|
|
240
|
+
| Importante | N |
|
|
241
|
+
| Menor | N |
|
|
242
|
+
|
|
243
|
+
## Verificaciones automáticas
|
|
244
|
+
|
|
245
|
+
| Verificación | Resultado |
|
|
246
|
+
|--------------|------------------------|
|
|
247
|
+
| Linter | PASA / N errores |
|
|
248
|
+
| Type check | PASA / N errores |
|
|
249
|
+
| Tests | N pasan, N fallan |
|
|
250
|
+
| Build | PASA / FALLA |
|
|
251
|
+
|
|
252
|
+
## Hallazgos
|
|
253
|
+
|
|
254
|
+
### Crítico
|
|
255
|
+
|
|
256
|
+
1. **[archivo:línea]** — [descripción]
|
|
257
|
+
```[lang]
|
|
258
|
+
// código problemático
|
|
259
|
+
```
|
|
260
|
+
**Corrección:**
|
|
261
|
+
```[lang]
|
|
262
|
+
// código corregido
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Importante
|
|
266
|
+
|
|
267
|
+
[idem]
|
|
268
|
+
|
|
269
|
+
### Menor
|
|
270
|
+
|
|
271
|
+
[idem]
|
|
272
|
+
|
|
273
|
+
## Veredicto
|
|
274
|
+
|
|
275
|
+
**[APROBADO | CON OBSERVACIONES | RECHAZADO]**
|
|
276
|
+
|
|
277
|
+
[Una línea explicando el veredicto]
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Paso 6 — Revisión multi-agente en paralelo (modo profundo)
|
|
281
|
+
|
|
282
|
+
Cuando el usuario dice `/swl:revisar profundo`, `/swl:revisar --profundo` o
|
|
283
|
+
"revisión completa con todos los agentes":
|
|
284
|
+
|
|
285
|
+
Lanzar **en paralelo** hasta 5 revisores especializados (además del revisor de stack):
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
Agent("revisor-seguridad-swl", "Auditar seguridad OWASP de archivos cambiados")
|
|
289
|
+
Agent("revisor-codigo-swl", "Auditar errores silenciosos: catch vacíos, except:pass, error checks sin log")
|
|
290
|
+
Agent("tdd-qa-swl", "Evaluar cobertura de tests: gaps críticos, tests faltantes para código nuevo")
|
|
291
|
+
Agent("documentador-swl", "Verificar documentación afectada por los cambios: README, CHANGELOG, docstrings")
|
|
292
|
+
Agent("rendimiento-swl", "Detectar N+1, loops O(n²), carga innecesaria en memoria en archivos cambiados")
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Cada agente recibe:
|
|
296
|
+
- Lista de archivos en alcance (del Paso 1)
|
|
297
|
+
- Instrucción de reportar SOLO hallazgos con confianza >= 80%
|
|
298
|
+
- Formato de salida: severidad + archivo:línea + descripción + corrección
|
|
299
|
+
|
|
300
|
+
Consolidar todos los reportes en un solo reporte con secciones por agente:
|
|
301
|
+
|
|
302
|
+
```markdown
|
|
303
|
+
## Revisión multi-agente — [N] agentes, [M] hallazgos
|
|
304
|
+
|
|
305
|
+
### Seguridad (revisor-seguridad-swl)
|
|
306
|
+
[hallazgos o "Sin hallazgos"]
|
|
307
|
+
|
|
308
|
+
### Errores silenciosos (revisor-codigo-swl)
|
|
309
|
+
[hallazgos o "Sin hallazgos"]
|
|
310
|
+
|
|
311
|
+
### Cobertura de tests (tdd-qa-swl)
|
|
312
|
+
[hallazgos o "Sin hallazgos"]
|
|
313
|
+
|
|
314
|
+
### Documentación afectada (documentador-swl)
|
|
315
|
+
[hallazgos o "Sin hallazgos"]
|
|
316
|
+
|
|
317
|
+
### Rendimiento (rendimiento-swl)
|
|
318
|
+
[hallazgos o "Sin hallazgos"]
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Reglas de comportamiento
|
|
322
|
+
|
|
323
|
+
- NUNCA corregir código directamente — solo identificar y recomendar.
|
|
324
|
+
- SIEMPRE ejecutar las verificaciones automáticas del Paso 4 antes de delegar al agente.
|
|
325
|
+
- Si los tests fallan es CRITICO sin excepción, independientemente del lenguaje.
|
|
326
|
+
- Para SQL: buscar siempre N+1 queries y SQL crudo sin parametrizar.
|
|
327
|
+
- Para seguridad: aplicar `Skill("checklist-seguridad")` y verificar OWASP Top 10.
|
|
328
|
+
- Si el argumento es un archivo que no existe, informar y terminar.
|
|
329
|
+
- El reporte se emite siempre en la conversación. No crear archivo a menos que el usuario lo pida.
|
|
330
|
+
- En modo profundo: lanzar los 5 agentes en paralelo para máxima eficiencia.
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: swl:salud
|
|
3
|
+
description: Diagnóstico completo de salud del sistema SWL. Verifica integridad de agentes, skills, comandos, reglas y hooks. Genera un reporte con score por componente y detecta agentes sin versión, skills huérfanos, comandos rotos y reglas contradictorias.
|
|
4
|
+
allowed_tools: ["Read", "Write", "Bash", "Glob", "Grep"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swl:salud — Diagnóstico de salud del sistema SWL
|
|
8
|
+
|
|
9
|
+
Inspector de salud del sistema SWL. Verifica integridad de todos los componentes
|
|
10
|
+
usando **verificaciones deterministas** (conteos, existencia de campos, sintaxis).
|
|
11
|
+
Genera SALUD.md con score objetivo y reproducible.
|
|
12
|
+
|
|
13
|
+
**Carga**: `Skill("validacion-ci-sistema")` — contiene las reglas de validación por componente (agentes, skills, hooks, comandos, reglas), tabla de exit codes para hooks y checklist de integridad. Delega toda lógica de verificación al skill.
|
|
14
|
+
|
|
15
|
+
Este comando es de **solo lectura**. No modifica archivos — solo genera SALUD.md. Para corregir problemas, usar `swl:evolucionar`.
|
|
16
|
+
|
|
17
|
+
## Cuándo usar
|
|
18
|
+
|
|
19
|
+
- Antes de iniciar proyecto nuevo con SWL
|
|
20
|
+
- Después de agregar o modificar agentes/skills manualmente
|
|
21
|
+
- Cuando un agente produce outputs inesperados
|
|
22
|
+
- Después de merge o pull de cambios al repositorio
|
|
23
|
+
- Periódicamente como mantenimiento (mensual)
|
|
24
|
+
|
|
25
|
+
## Paso 0 — Inventario con Bash (determinista)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
echo "=== INVENTARIO ===" && \
|
|
29
|
+
echo "Agentes: $(ls agentes/*.md 2>/dev/null | wc -l)" && \
|
|
30
|
+
echo "Skills: $(ls -d habilidades/*/ 2>/dev/null | wc -l)" && \
|
|
31
|
+
echo "Comandos: $(ls comandos/swl/*.md 2>/dev/null | wc -l)" && \
|
|
32
|
+
echo "Reglas: $(ls reglas/*.md 2>/dev/null | wc -l)" && \
|
|
33
|
+
echo "Hooks: $(ls hooks/*.js 2>/dev/null | wc -l)"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Paso 1 — Diagnóstico de agentes (determinista)
|
|
37
|
+
|
|
38
|
+
Ejecutar script Bash que verifica cada agente mecánicamente:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
errors=0; warns=0; ok=0
|
|
42
|
+
for f in agentes/*.md; do
|
|
43
|
+
name=$(basename "$f" .md)
|
|
44
|
+
has_name=$(head -30 "$f" | grep -c "^name:")
|
|
45
|
+
has_desc=$(head -30 "$f" | grep -c "^description:")
|
|
46
|
+
has_version=$(head -30 "$f" | grep -c "^version:")
|
|
47
|
+
has_riesgo=$(head -30 "$f" | grep -c "^nivelRiesgo:")
|
|
48
|
+
placeholders=$(grep -cE '\[TODO\]|\[COMPLETAR\]|\[TBD\]' "$f" || true)
|
|
49
|
+
|
|
50
|
+
if [ "$has_name" -eq 0 ] || [ "$has_desc" -eq 0 ]; then
|
|
51
|
+
echo "ERROR: $name — falta name o description"
|
|
52
|
+
errors=$((errors+1))
|
|
53
|
+
elif [ "$has_version" -eq 0 ] || [ "$has_riesgo" -eq 0 ]; then
|
|
54
|
+
echo "ADVERTENCIA: $name — falta version o nivelRiesgo"
|
|
55
|
+
warns=$((warns+1))
|
|
56
|
+
elif [ "$placeholders" -gt 0 ]; then
|
|
57
|
+
echo "ADVERTENCIA: $name — placeholders sin reemplazar"
|
|
58
|
+
warns=$((warns+1))
|
|
59
|
+
else
|
|
60
|
+
ok=$((ok+1))
|
|
61
|
+
fi
|
|
62
|
+
done
|
|
63
|
+
echo "Agentes: $ok OK, $warns advertencias, $errors errores"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Score de agentes = `(ok / total) * 100`
|
|
67
|
+
|
|
68
|
+
## Paso 2 — Diagnóstico de skills (determinista)
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
errors=0; warns=0; ok=0
|
|
72
|
+
for d in habilidades/*/; do
|
|
73
|
+
name=$(basename "$d")
|
|
74
|
+
skill="$d/SKILL.md"
|
|
75
|
+
if [ ! -f "$skill" ]; then
|
|
76
|
+
echo "ERROR: $name — sin SKILL.md"
|
|
77
|
+
errors=$((errors+1)); continue
|
|
78
|
+
fi
|
|
79
|
+
lines=$(wc -l < "$skill")
|
|
80
|
+
has_name=$(head -10 "$skill" | grep -c "^name:")
|
|
81
|
+
has_desc=$(head -10 "$skill" | grep -c "^description:")
|
|
82
|
+
content_chars=$(sed -n '/^---$/,/^---$/d; p' "$skill" | wc -c)
|
|
83
|
+
abs_paths=$(grep -cE 'C:\\|/home/|/Users/' "$skill" || true)
|
|
84
|
+
|
|
85
|
+
if [ "$has_name" -eq 0 ] || [ "$has_desc" -eq 0 ]; then
|
|
86
|
+
echo "ERROR: $name — frontmatter sin name o description"
|
|
87
|
+
errors=$((errors+1))
|
|
88
|
+
elif [ "$lines" -gt 300 ]; then
|
|
89
|
+
echo "ADVERTENCIA: $name — $lines lineas (max 300)"
|
|
90
|
+
warns=$((warns+1))
|
|
91
|
+
elif [ "$content_chars" -lt 500 ]; then
|
|
92
|
+
echo "ADVERTENCIA: $name — contenido muy corto ($content_chars chars)"
|
|
93
|
+
warns=$((warns+1))
|
|
94
|
+
elif [ "$abs_paths" -gt 0 ]; then
|
|
95
|
+
echo "ADVERTENCIA: $name — paths absolutos detectados"
|
|
96
|
+
warns=$((warns+1))
|
|
97
|
+
else
|
|
98
|
+
ok=$((ok+1))
|
|
99
|
+
fi
|
|
100
|
+
done
|
|
101
|
+
echo "Skills: $ok OK, $warns advertencias, $errors errores"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Detectar skills huérfanos (no referenciados):
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
grep -r "Skill(" agentes/ comandos/ 2>/dev/null | grep -o '"[^"]*"' | sort | uniq
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Score de skills = `((total - errors*10 - warns*2) / total) * 100`, mínimo 0
|
|
111
|
+
|
|
112
|
+
## Paso 3 — Diagnóstico de comandos (determinista)
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
errors=0; warns=0; ok=0
|
|
116
|
+
for f in comandos/swl/*.md; do
|
|
117
|
+
name=$(basename "$f" .md)
|
|
118
|
+
lines=$(wc -l < "$f")
|
|
119
|
+
has_name=$(head -10 "$f" | grep -c "^name:")
|
|
120
|
+
has_desc=$(head -10 "$f" | grep -c "^description:")
|
|
121
|
+
desc_len=$(head -5 "$f" | grep "^description:" | wc -c)
|
|
122
|
+
|
|
123
|
+
if [ "$has_name" -eq 0 ] || [ "$has_desc" -eq 0 ]; then
|
|
124
|
+
echo "ERROR: $name — frontmatter sin name o description"
|
|
125
|
+
errors=$((errors+1))
|
|
126
|
+
elif [ "$desc_len" -lt 30 ]; then
|
|
127
|
+
echo "ADVERTENCIA: $name — description muy breve"
|
|
128
|
+
warns=$((warns+1))
|
|
129
|
+
elif [ "$lines" -gt 300 ]; then
|
|
130
|
+
echo "ADVERTENCIA: $name — $lines lineas (considerar delegar a skill)"
|
|
131
|
+
warns=$((warns+1))
|
|
132
|
+
else
|
|
133
|
+
ok=$((ok+1))
|
|
134
|
+
fi
|
|
135
|
+
done
|
|
136
|
+
echo "Comandos: $ok OK, $warns advertencias, $errors errores"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Paso 4 — Diagnóstico de reglas (determinista)
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
errors=0; warns=0; ok=0
|
|
143
|
+
for f in reglas/*.md; do
|
|
144
|
+
name=$(basename "$f" .md)
|
|
145
|
+
lines=$(wc -l < "$f")
|
|
146
|
+
has_h1=$(grep -c "^# " "$f" || true)
|
|
147
|
+
has_checklist=$(grep -c "\- \[ \]" "$f" || true)
|
|
148
|
+
|
|
149
|
+
if [ "$lines" -lt 20 ]; then
|
|
150
|
+
echo "ERROR: $name — regla muy corta ($lines lineas)"
|
|
151
|
+
errors=$((errors+1))
|
|
152
|
+
elif [ "$has_h1" -eq 0 ]; then
|
|
153
|
+
echo "ADVERTENCIA: $name — sin titulo H1"
|
|
154
|
+
warns=$((warns+1))
|
|
155
|
+
elif [ "$has_checklist" -eq 0 ]; then
|
|
156
|
+
echo "ADVERTENCIA: $name — sin checklist"
|
|
157
|
+
warns=$((warns+1))
|
|
158
|
+
else
|
|
159
|
+
ok=$((ok+1))
|
|
160
|
+
fi
|
|
161
|
+
done
|
|
162
|
+
echo "Reglas: $ok OK, $warns advertencias, $errors errores"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Paso 5 — Diagnóstico de hooks (determinista)
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
errors=0; warns=0; ok=0
|
|
169
|
+
for f in hooks/*.js; do
|
|
170
|
+
name=$(basename "$f")
|
|
171
|
+
if node --check "$f" 2>/dev/null; then
|
|
172
|
+
if grep -q "$name" .claude/settings.json 2>/dev/null; then
|
|
173
|
+
ok=$((ok+1))
|
|
174
|
+
else
|
|
175
|
+
echo "ADVERTENCIA: $name — no registrado en settings.json"
|
|
176
|
+
warns=$((warns+1))
|
|
177
|
+
fi
|
|
178
|
+
else
|
|
179
|
+
echo "ERROR: $name — error de sintaxis Node.js"
|
|
180
|
+
errors=$((errors+1))
|
|
181
|
+
fi
|
|
182
|
+
done
|
|
183
|
+
echo "Hooks: $ok OK, $warns advertencias, $errors errores"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Paso 5b — Auditoría opcional de skills (opt-in)
|
|
187
|
+
|
|
188
|
+
Si la variable de entorno `SWL_AUDIT_SKILLS=1` está presente, ejecutar:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
bash scripts/audit-skills.sh
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Este paso es **no bloqueante**: si el comando falla por cualquier causa (red,
|
|
195
|
+
dependencia faltante, paquete no publicado), el diagnóstico continúa normalmente.
|
|
196
|
+
|
|
197
|
+
**Qué detecta**:
|
|
198
|
+
- Prompt injection en contenido de SKILL.md (instrucciones que intentan manipular el modelo).
|
|
199
|
+
- Secretos hardcodeados (API keys, tokens, contraseñas en ejemplos).
|
|
200
|
+
- URLs sospechosas embebidas en los skills.
|
|
201
|
+
- Estructura inválida de SKILL.md (frontmatter incompleto, ausencia de secciones requeridas).
|
|
202
|
+
|
|
203
|
+
**Requisito**: `pip install uv` (o `pipx install uv`) antes de activar.
|
|
204
|
+
|
|
205
|
+
**Activación manual**:
|
|
206
|
+
```bash
|
|
207
|
+
SWL_AUDIT_SKILLS=1 bash scripts/audit-skills.sh
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Si `SWL_AUDIT_SKILLS` no está definida, el script imprime instrucciones y sale
|
|
211
|
+
con código 0 — no afecta el score ni el diagnóstico general.
|
|
212
|
+
|
|
213
|
+
## Paso 6 — Score global ponderado
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Score = agentes x 0.30 + skills x 0.25 + comandos x 0.20 + reglas x 0.15 + hooks x 0.10
|
|
217
|
+
|
|
218
|
+
90-100: Excelente
|
|
219
|
+
75-89: Saludable con mejoras menores
|
|
220
|
+
60-74: Funcional con problemas
|
|
221
|
+
<60: Estado crítico
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Paso 5c — Reporte de cobertura de frameworks de seguridad (opt-in)
|
|
225
|
+
|
|
226
|
+
Si la variable de entorno `SWL_AUDIT_FRAMEWORKS=1` está presente, ejecutar el
|
|
227
|
+
auditor de cobertura:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
node scripts/auditar-cobertura-frameworks.js --resumen
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Propósito: reportar cuántos skills declaran mapeos a los 5 frameworks de
|
|
234
|
+
seguridad (NIST CSF 2.0, NIST AI RMF 1.0, MITRE ATLAS v5.4, ATT&CK v18,
|
|
235
|
+
D3FEND v1.3) y qué controles están cubiertos. Útil para:
|
|
236
|
+
|
|
237
|
+
- Verificar que los skills de dominio seguridad declaran mapeos antes de un
|
|
238
|
+
audit de compliance
|
|
239
|
+
- Detectar gaps en la cobertura (ej: ningún skill cubre `PR.DS-11` — data
|
|
240
|
+
integrity — si eso importa para el proyecto)
|
|
241
|
+
- Producir evidencia para auditores (SOC 2, ISO 27001) sobre controles
|
|
242
|
+
implementados
|
|
243
|
+
|
|
244
|
+
El reporte NO marca skills sin mapeos como error — solo skills de dominio
|
|
245
|
+
seguridad necesitan declararlos. Ver `reglas/skills-estandar.md` sección
|
|
246
|
+
"Mapeo a frameworks de seguridad (REC-C01)" para criterios de cuándo declarar
|
|
247
|
+
cada framework.
|
|
248
|
+
|
|
249
|
+
**Filtrado por framework**:
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
SWL_AUDIT_FRAMEWORKS=1 node scripts/auditar-cobertura-frameworks.js --framework=nist_ai_rmf --resumen
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Persistir snapshot**:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
node scripts/auditar-cobertura-frameworks.js --save
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Persiste en `.planning/evolucion/cobertura-frameworks.json` para comparación
|
|
262
|
+
histórica tras incorporar nuevos skills de seguridad.
|
|
263
|
+
|
|
264
|
+
Si `SWL_AUDIT_FRAMEWORKS` no está definida, este paso se omite sin mensaje
|
|
265
|
+
— los reportes son opt-in por diseño (CLAUDE.md: "Variables de entorno
|
|
266
|
+
opt-in para integraciones enterprise").
|
|
267
|
+
|
|
268
|
+
## Paso 5d — Auditoría SAP-Agents (opt-in)
|
|
269
|
+
|
|
270
|
+
Si la variable de entorno `SWL_AUDIT_AGENTES=1` está presente, ejecutar el
|
|
271
|
+
auditor de agentes:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
node scripts/auditar-agentes-gaps.js --resumen
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Propósito: reportar cuántos agentes carecen de Exclusion Clause (campo
|
|
278
|
+
`exclusiones` o sección `## Cuándo NO invocarme`) y Gotchas explícitos.
|
|
279
|
+
Previene agent hijacking por activación tangencial de agentes por similitud
|
|
280
|
+
superficial en `description`.
|
|
281
|
+
|
|
282
|
+
El reporte incluye conteo de excepciones documentadas por ADR (si las hay)
|
|
283
|
+
para separar gaps reales de excepciones por diseño.
|
|
284
|
+
|
|
285
|
+
Si `SWL_AUDIT_AGENTES` no está definida, este paso se omite — los reportes
|
|
286
|
+
son opt-in por diseño (CLAUDE.md: "Variables de entorno opt-in para
|
|
287
|
+
integraciones enterprise").
|
|
288
|
+
|
|
289
|
+
## Paso 6b — Formato de salida enriquecido (HealthRow)
|
|
290
|
+
|
|
291
|
+
El módulo `scripts/lib/health-row.js` genera filas de salud con formato visual enriquecido
|
|
292
|
+
para la salida de terminal. Cada fila sigue el patrón:
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Label valor/max |████████████████████| indicador
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Ejemplo visual (modo con color ANSI):
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
Agentes 59/59 |████████████████████| ✓ ok
|
|
302
|
+
Skills 52/55 |███████████████████░| ✓ ok
|
|
303
|
+
Comandos 37/38 |███████████████████░| ✓ ok
|
|
304
|
+
Reglas 18/18 |████████████████████| ✓ ok
|
|
305
|
+
Hooks 22/25 |█████████████████░░░| ⚠ warn
|
|
306
|
+
Score Global 88/100 |█████████████████░░░| ✓ ok
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Umbrales automáticos
|
|
310
|
+
|
|
311
|
+
| Rango de porcentaje | Estado | Color ANSI |
|
|
312
|
+
|---------------------|--------|-------------|
|
|
313
|
+
| >= 80% | good | Verde `\x1b[32m` |
|
|
314
|
+
| >= 50% y < 80% | warn | Amarillo `\x1b[33m` |
|
|
315
|
+
| < 50% | bad | Rojo `\x1b[31m` |
|
|
316
|
+
|
|
317
|
+
Respetar `NO_COLOR` (https://no-color.org) y la variable `SWL_ASCII_SIMPLE=1`
|
|
318
|
+
para entornos sin soporte Unicode.
|
|
319
|
+
|
|
320
|
+
### Uso para generar el bloque de salud
|
|
321
|
+
|
|
322
|
+
```javascript
|
|
323
|
+
const { formatearBloqueHealth } = require('./scripts/lib/health-row');
|
|
324
|
+
|
|
325
|
+
const filas = [
|
|
326
|
+
{ label: 'Agentes', valor: 59, maximo: 59 },
|
|
327
|
+
{ label: 'Skills', valor: 52, maximo: 55 },
|
|
328
|
+
{ label: 'Comandos', valor: 37, maximo: 38 },
|
|
329
|
+
{ label: 'Reglas', valor: 18, maximo: 18 },
|
|
330
|
+
{ label: 'Hooks', valor: 22, maximo: 25 },
|
|
331
|
+
{ label: 'Score Global', valor: 88, maximo: 100 },
|
|
332
|
+
];
|
|
333
|
+
|
|
334
|
+
console.log(formatearBloqueHealth(filas));
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Para override de estado (forzar bad aunque el valor sea alto):
|
|
338
|
+
|
|
339
|
+
```javascript
|
|
340
|
+
const { formatearHealthRow } = require('./scripts/lib/health-row');
|
|
341
|
+
const fila = formatearHealthRow({ label: 'Seguridad', valor: 100, maximo: 100, estado: 'bad' });
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
La integración real del formato en la ejecución del comando se implementará en el
|
|
345
|
+
código de salida de `/swl:salud`. Este paso solo define la API disponible y la muestra visual.
|
|
346
|
+
|
|
347
|
+
## Paso 7 — Generar SALUD.md
|
|
348
|
+
|
|
349
|
+
Escribe el reporte con tabla resumen, errores, advertencias y recomendaciones. Usa los datos exactos de los scripts. Si el script dice 73%, reportar 73%.
|
|
350
|
+
|
|
351
|
+
## Paso 8 — Resumen en terminal
|
|
352
|
+
|
|
353
|
+
Presenta resumen con los problemas más críticos. Si hay errores, listarlos todos. Si solo advertencias, listar las top 5.
|
|
354
|
+
|
|
355
|
+
## Reglas de comportamiento
|
|
356
|
+
|
|
357
|
+
- SOLO LECTURA. NUNCA modifica archivos excepto SALUD.md.
|
|
358
|
+
- Las verificaciones de Pasos 1-5 son scripts Bash deterministas. NO usar juicio subjetivo.
|
|
359
|
+
- Los scripts miden: existencia de campos, conteo de líneas, sintaxis. NO miden calidad de redacción.
|
|
360
|
+
- Si un check requiere juicio (contradicciones entre reglas), documentar como "requiere revisión manual".
|
|
361
|
+
- Los scores son aritmética pura. No ajustar el score "porque parece un sistema sano".
|
|
362
|
+
- Si no hay git, omitir verificaciones dependientes y notar la omisión.
|
|
363
|
+
- Si detectas un patrón sistémico (mismo error en múltiples componentes), mencionarlo en recomendaciones.
|