theus-cli-linux-x64 0.2.84
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/LICENSE +42 -0
- package/README.md +295 -0
- package/RELEASE.json +18 -0
- package/assets/brand-official/v1.0/logo/theus-lockup-negative-official.png +0 -0
- package/assets/brand-official/v1.0/logo/theus-lockup-primary-dark-official.png +0 -0
- package/assets/fonts/satoshi/satoshi-300.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-400.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-500.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-700.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-900.woff2 +0 -0
- package/assets/windows-store/Square150x150Logo.png +0 -0
- package/assets/windows-store/Square44x44Logo.png +0 -0
- package/assets/windows-store/StoreLogo.png +0 -0
- package/assets/windows-store/theus-store-icon-master.png +0 -0
- package/bin/theus +0 -0
- package/package.json +18 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +6 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +72 -0
- package/vendor/theus-arsenal/.mailmap +2 -0
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +25 -0
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +20 -0
- package/vendor/theus-arsenal/AUTHORS.md +8 -0
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +11 -0
- package/vendor/theus-arsenal/LICENSE +26 -0
- package/vendor/theus-arsenal/PROVENANCE.md +9 -0
- package/vendor/theus-arsenal/README.md +41 -0
- package/vendor/theus-arsenal/THIRD_PARTY.md +80 -0
- package/vendor/theus-arsenal/agents/actualizador-docs.md +123 -0
- package/vendor/theus-arsenal/agents/analista-comentarios.md +53 -0
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +60 -0
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +53 -0
- package/vendor/theus-arsenal/agents/analista-tipos.md +49 -0
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +148 -0
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +79 -0
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +90 -0
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +116 -0
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +219 -0
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +206 -0
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +58 -0
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +76 -0
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +135 -0
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +96 -0
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +257 -0
- package/vendor/theus-arsenal/agents/escaner-secretos.md +196 -0
- package/vendor/theus-arsenal/agents/especialista-seo.md +70 -0
- package/vendor/theus-arsenal/agents/estratega-marketing.md +158 -0
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +214 -0
- package/vendor/theus-arsenal/agents/evaluador-harness.md +217 -0
- package/vendor/theus-arsenal/agents/explorador-codigo.md +79 -0
- package/vendor/theus-arsenal/agents/extractor-specs.md +214 -0
- package/vendor/theus-arsenal/agents/generador-harness.md +139 -0
- package/vendor/theus-arsenal/agents/guia-tdd.md +99 -0
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +162 -0
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +93 -0
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +454 -0
- package/vendor/theus-arsenal/agents/planificador-harness.md +107 -0
- package/vendor/theus-arsenal/agents/planificador.md +221 -0
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +181 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +98 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +209 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +253 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +102 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +274 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +128 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +128 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +214 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +156 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +169 -0
- package/vendor/theus-arsenal/agents/resolutor-builds.md +122 -0
- package/vendor/theus-arsenal/agents/revisor-bd.md +97 -0
- package/vendor/theus-arsenal/agents/revisor-codigo.md +291 -0
- package/vendor/theus-arsenal/agents/revisor-config-red.md +116 -0
- package/vendor/theus-arsenal/agents/revisor-cpp.md +80 -0
- package/vendor/theus-arsenal/agents/revisor-csharp.md +109 -0
- package/vendor/theus-arsenal/agents/revisor-django.md +168 -0
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +82 -0
- package/vendor/theus-arsenal/agents/revisor-flutter.md +251 -0
- package/vendor/theus-arsenal/agents/revisor-go.md +84 -0
- package/vendor/theus-arsenal/agents/revisor-java.md +192 -0
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +171 -0
- package/vendor/theus-arsenal/agents/revisor-ml.md +159 -0
- package/vendor/theus-arsenal/agents/revisor-php.md +108 -0
- package/vendor/theus-arsenal/agents/revisor-python.md +106 -0
- package/vendor/theus-arsenal/agents/revisor-react.md +166 -0
- package/vendor/theus-arsenal/agents/revisor-rust.md +102 -0
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +116 -0
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +95 -0
- package/vendor/theus-arsenal/agents/revisor-swift.md +115 -0
- package/vendor/theus-arsenal/agents/revisor-typescript.md +123 -0
- package/vendor/theus-arsenal/agents/revisor-vue.md +205 -0
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +55 -0
- package/vendor/theus-arsenal/commands/actualizar-docs.md +88 -0
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +78 -0
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +109 -0
- package/vendor/theus-arsenal/commands/aprender.md +74 -0
- package/vendor/theus-arsenal/commands/arreglar-build.md +66 -0
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +153 -0
- package/vendor/theus-arsenal/commands/build-cpp.md +173 -0
- package/vendor/theus-arsenal/commands/build-flutter.md +164 -0
- package/vendor/theus-arsenal/commands/build-go.md +183 -0
- package/vendor/theus-arsenal/commands/build-gradle.md +75 -0
- package/vendor/theus-arsenal/commands/build-kotlin.md +176 -0
- package/vendor/theus-arsenal/commands/build-react.md +187 -0
- package/vendor/theus-arsenal/commands/build-rust.md +187 -0
- package/vendor/theus-arsenal/commands/campana-marketing.md +125 -0
- package/vendor/theus-arsenal/commands/checkpoint.md +78 -0
- package/vendor/theus-arsenal/commands/cobertura-tests.md +73 -0
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +86 -0
- package/vendor/theus-arsenal/commands/consulta.md +164 -0
- package/vendor/theus-arsenal/commands/control-calidad.md +50 -0
- package/vendor/theus-arsenal/commands/crear-skill.md +77 -0
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +30 -0
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +17 -0
- package/vendor/theus-arsenal/commands/epica-descomponer.md +22 -0
- package/vendor/theus-arsenal/commands/epica-publicar.md +21 -0
- package/vendor/theus-arsenal/commands/epica-reclamar.md +25 -0
- package/vendor/theus-arsenal/commands/epica-revisar.md +22 -0
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +21 -0
- package/vendor/theus-arsenal/commands/epica-validar.md +21 -0
- package/vendor/theus-arsenal/commands/evolucionar.md +176 -0
- package/vendor/theus-arsenal/commands/funcionalidad.md +49 -0
- package/vendor/theus-arsenal/commands/guardar-sesion.md +278 -0
- package/vendor/theus-arsenal/commands/harness-build.md +111 -0
- package/vendor/theus-arsenal/commands/harness-diseno.md +46 -0
- package/vendor/theus-arsenal/commands/informe-costos.md +90 -0
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +36 -0
- package/vendor/theus-arsenal/commands/instintos-estado.md +53 -0
- package/vendor/theus-arsenal/commands/instintos-exportar.md +69 -0
- package/vendor/theus-arsenal/commands/instintos-importar.md +120 -0
- package/vendor/theus-arsenal/commands/lienzo-planes.md +48 -0
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +84 -0
- package/vendor/theus-arsenal/commands/modo-seguro.md +96 -0
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +36 -0
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +38 -0
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +36 -0
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +40 -0
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +44 -0
- package/vendor/theus-arsenal/commands/orq-revisar.md +135 -0
- package/vendor/theus-arsenal/commands/plan-prd.md +160 -0
- package/vendor/theus-arsenal/commands/plan.md +198 -0
- package/vendor/theus-arsenal/commands/podar.md +31 -0
- package/vendor/theus-arsenal/commands/pr.md +181 -0
- package/vendor/theus-arsenal/commands/promover.md +41 -0
- package/vendor/theus-arsenal/commands/proyectos.md +33 -0
- package/vendor/theus-arsenal/commands/prp-commit.md +112 -0
- package/vendor/theus-arsenal/commands/prp-implementar.md +385 -0
- package/vendor/theus-arsenal/commands/prp-planificar.md +501 -0
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +160 -0
- package/vendor/theus-arsenal/commands/revisar-codigo.md +289 -0
- package/vendor/theus-arsenal/commands/revisar-cpp.md +132 -0
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +39 -0
- package/vendor/theus-arsenal/commands/revisar-flutter.md +115 -0
- package/vendor/theus-arsenal/commands/revisar-go.md +148 -0
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +140 -0
- package/vendor/theus-arsenal/commands/revisar-pr.md +37 -0
- package/vendor/theus-arsenal/commands/revisar-python.md +297 -0
- package/vendor/theus-arsenal/commands/revisar-react.md +170 -0
- package/vendor/theus-arsenal/commands/revisar-rust.md +142 -0
- package/vendor/theus-arsenal/commands/revisar-vue.md +174 -0
- package/vendor/theus-arsenal/commands/salud-skills.md +52 -0
- package/vendor/theus-arsenal/commands/sesiones.md +345 -0
- package/vendor/theus-arsenal/commands/test-cpp.md +252 -0
- package/vendor/theus-arsenal/commands/test-flutter.md +143 -0
- package/vendor/theus-arsenal/commands/test-go.md +268 -0
- package/vendor/theus-arsenal/commands/test-kotlin.md +312 -0
- package/vendor/theus-arsenal/commands/test-react.md +265 -0
- package/vendor/theus-arsenal/commands/test-rust.md +309 -0
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +43 -0
- package/vendor/theus-arsenal/hooks/hooks.json +274 -0
- package/vendor/theus-arsenal/package.json +6 -0
- package/vendor/theus-arsenal/rules/angular/coding-style.md +182 -0
- package/vendor/theus-arsenal/rules/angular/hooks.md +25 -0
- package/vendor/theus-arsenal/rules/angular/patterns.md +249 -0
- package/vendor/theus-arsenal/rules/angular/security.md +87 -0
- package/vendor/theus-arsenal/rules/angular/testing.md +164 -0
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +153 -0
- package/vendor/theus-arsenal/rules/arkts/hooks.md +80 -0
- package/vendor/theus-arsenal/rules/arkts/patterns.md +236 -0
- package/vendor/theus-arsenal/rules/arkts/security.md +141 -0
- package/vendor/theus-arsenal/rules/arkts/testing.md +126 -0
- package/vendor/theus-arsenal/rules/common/agents.md +49 -0
- package/vendor/theus-arsenal/rules/common/code-review.md +123 -0
- package/vendor/theus-arsenal/rules/common/coding-style.md +90 -0
- package/vendor/theus-arsenal/rules/common/development-workflow.md +44 -0
- package/vendor/theus-arsenal/rules/common/git-workflow.md +24 -0
- package/vendor/theus-arsenal/rules/common/hooks.md +32 -0
- package/vendor/theus-arsenal/rules/common/patterns.md +31 -0
- package/vendor/theus-arsenal/rules/common/performance.md +53 -0
- package/vendor/theus-arsenal/rules/common/security.md +29 -0
- package/vendor/theus-arsenal/rules/common/testing.md +57 -0
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +44 -0
- package/vendor/theus-arsenal/rules/cpp/hooks.md +39 -0
- package/vendor/theus-arsenal/rules/cpp/patterns.md +51 -0
- package/vendor/theus-arsenal/rules/cpp/security.md +51 -0
- package/vendor/theus-arsenal/rules/cpp/testing.md +44 -0
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +72 -0
- package/vendor/theus-arsenal/rules/csharp/hooks.md +25 -0
- package/vendor/theus-arsenal/rules/csharp/patterns.md +50 -0
- package/vendor/theus-arsenal/rules/csharp/security.md +58 -0
- package/vendor/theus-arsenal/rules/csharp/testing.md +50 -0
- package/vendor/theus-arsenal/rules/dart/coding-style.md +159 -0
- package/vendor/theus-arsenal/rules/dart/hooks.md +68 -0
- package/vendor/theus-arsenal/rules/dart/patterns.md +261 -0
- package/vendor/theus-arsenal/rules/dart/security.md +135 -0
- package/vendor/theus-arsenal/rules/dart/testing.md +215 -0
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +112 -0
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +26 -0
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +111 -0
- package/vendor/theus-arsenal/rules/fsharp/security.md +76 -0
- package/vendor/theus-arsenal/rules/fsharp/testing.md +62 -0
- package/vendor/theus-arsenal/rules/golang/coding-style.md +32 -0
- package/vendor/theus-arsenal/rules/golang/hooks.md +17 -0
- package/vendor/theus-arsenal/rules/golang/patterns.md +45 -0
- package/vendor/theus-arsenal/rules/golang/security.md +34 -0
- package/vendor/theus-arsenal/rules/golang/testing.md +31 -0
- package/vendor/theus-arsenal/rules/java/coding-style.md +114 -0
- package/vendor/theus-arsenal/rules/java/hooks.md +18 -0
- package/vendor/theus-arsenal/rules/java/patterns.md +147 -0
- package/vendor/theus-arsenal/rules/java/security.md +101 -0
- package/vendor/theus-arsenal/rules/java/testing.md +133 -0
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +86 -0
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +17 -0
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +146 -0
- package/vendor/theus-arsenal/rules/kotlin/security.md +82 -0
- package/vendor/theus-arsenal/rules/kotlin/testing.md +128 -0
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +47 -0
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +39 -0
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +54 -0
- package/vendor/theus-arsenal/rules/nuxt/security.md +48 -0
- package/vendor/theus-arsenal/rules/nuxt/testing.md +49 -0
- package/vendor/theus-arsenal/rules/php/coding-style.md +40 -0
- package/vendor/theus-arsenal/rules/php/hooks.md +24 -0
- package/vendor/theus-arsenal/rules/php/patterns.md +33 -0
- package/vendor/theus-arsenal/rules/php/security.md +37 -0
- package/vendor/theus-arsenal/rules/php/testing.md +38 -0
- package/vendor/theus-arsenal/rules/python/coding-style.md +42 -0
- package/vendor/theus-arsenal/rules/python/fastapi.md +58 -0
- package/vendor/theus-arsenal/rules/python/hooks.md +19 -0
- package/vendor/theus-arsenal/rules/python/patterns.md +39 -0
- package/vendor/theus-arsenal/rules/python/security.md +30 -0
- package/vendor/theus-arsenal/rules/python/testing.md +38 -0
- package/vendor/theus-arsenal/rules/react/coding-style.md +109 -0
- package/vendor/theus-arsenal/rules/react/hooks.md +187 -0
- package/vendor/theus-arsenal/rules/react/patterns.md +194 -0
- package/vendor/theus-arsenal/rules/react/security.md +180 -0
- package/vendor/theus-arsenal/rules/react/testing.md +208 -0
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +55 -0
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +71 -0
- package/vendor/theus-arsenal/rules/react-native/hooks.md +28 -0
- package/vendor/theus-arsenal/rules/react-native/patterns.md +88 -0
- package/vendor/theus-arsenal/rules/react-native/performance.md +45 -0
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +51 -0
- package/vendor/theus-arsenal/rules/react-native/security.md +43 -0
- package/vendor/theus-arsenal/rules/react-native/testing.md +52 -0
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +46 -0
- package/vendor/theus-arsenal/rules/ruby/hooks.md +37 -0
- package/vendor/theus-arsenal/rules/ruby/patterns.md +44 -0
- package/vendor/theus-arsenal/rules/ruby/security.md +51 -0
- package/vendor/theus-arsenal/rules/ruby/testing.md +51 -0
- package/vendor/theus-arsenal/rules/rust/coding-style.md +151 -0
- package/vendor/theus-arsenal/rules/rust/hooks.md +16 -0
- package/vendor/theus-arsenal/rules/rust/patterns.md +168 -0
- package/vendor/theus-arsenal/rules/rust/security.md +141 -0
- package/vendor/theus-arsenal/rules/rust/testing.md +154 -0
- package/vendor/theus-arsenal/rules/swift/coding-style.md +47 -0
- package/vendor/theus-arsenal/rules/swift/hooks.md +20 -0
- package/vendor/theus-arsenal/rules/swift/patterns.md +66 -0
- package/vendor/theus-arsenal/rules/swift/security.md +33 -0
- package/vendor/theus-arsenal/rules/swift/testing.md +45 -0
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +199 -0
- package/vendor/theus-arsenal/rules/typescript/hooks.md +22 -0
- package/vendor/theus-arsenal/rules/typescript/patterns.md +52 -0
- package/vendor/theus-arsenal/rules/typescript/security.md +28 -0
- package/vendor/theus-arsenal/rules/typescript/testing.md +18 -0
- package/vendor/theus-arsenal/rules/vue/coding-style.md +54 -0
- package/vendor/theus-arsenal/rules/vue/hooks.md +45 -0
- package/vendor/theus-arsenal/rules/vue/patterns.md +56 -0
- package/vendor/theus-arsenal/rules/vue/security.md +46 -0
- package/vendor/theus-arsenal/rules/vue/testing.md +53 -0
- package/vendor/theus-arsenal/rules/web/coding-style.md +108 -0
- package/vendor/theus-arsenal/rules/web/design-quality.md +75 -0
- package/vendor/theus-arsenal/rules/web/hooks.md +141 -0
- package/vendor/theus-arsenal/rules/web/patterns.md +91 -0
- package/vendor/theus-arsenal/rules/web/performance.md +76 -0
- package/vendor/theus-arsenal/rules/web/security.md +69 -0
- package/vendor/theus-arsenal/rules/web/testing.md +67 -0
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +192 -0
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +556 -0
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +92 -0
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +16 -0
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +171 -0
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +132 -0
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +110 -0
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +158 -0
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +208 -0
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +280 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +87 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +24 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +60 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +94 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +54 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +110 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +98 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +447 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +232 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +27 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +101 -0
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +49 -0
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +168 -0
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +271 -0
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +749 -0
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +161 -0
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +340 -0
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +906 -0
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +263 -0
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +286 -0
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +289 -0
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +1278 -0
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +96 -0
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +66 -0
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +79 -0
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +185 -0
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +54 -0
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +237 -0
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +120 -0
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +434 -0
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +86 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +285 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +238 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +534 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +274 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +546 -0
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +451 -0
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +193 -0
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +101 -0
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +138 -0
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +483 -0
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +155 -0
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +137 -0
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +555 -0
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +86 -0
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +501 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +414 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +285 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +22 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +200 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +157 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +246 -0
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +232 -0
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +205 -0
- package/vendor/theus-arsenal/scripts/lib/utils.js +658 -0
- package/vendor/theus-arsenal/scripts/plan-canvas.js +341 -0
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +46 -0
- package/vendor/theus-arsenal/scripts/skills-health.js +143 -0
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +444 -0
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +144 -0
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +72 -0
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +771 -0
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +137 -0
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +233 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +335 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +374 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +188 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +153 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +253 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +8 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +594 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +325 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +1918 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +23 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +1420 -0
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +275 -0
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +340 -0
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +112 -0
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +53 -0
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +257 -0
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +180 -0
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +243 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +180 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +89 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +87 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +71 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +90 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +409 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +86 -0
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +176 -0
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +174 -0
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +173 -0
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +92 -0
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +120 -0
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +125 -0
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +184 -0
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +111 -0
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +160 -0
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +118 -0
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +138 -0
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +104 -0
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +115 -0
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +69 -0
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +206 -0
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +224 -0
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +201 -0
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +78 -0
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +119 -0
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +169 -0
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +92 -0
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +95 -0
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +284 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +46 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +86 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +29 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +173 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +100 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +78 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +172 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +104 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +75 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +146 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +126 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +229 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +152 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +68 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +138 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +130 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +67 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +67 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +34 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +143 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +106 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +11 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +20 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +179 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +19 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +122 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +52 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +171 -0
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +270 -0
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +78 -0
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +128 -0
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +206 -0
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +469 -0
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +369 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +42 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +47 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +53 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +61 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +62 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +54 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +50 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +133 -0
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +230 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +263 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +58 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +129 -0
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +220 -0
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +89 -0
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +522 -0
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +282 -0
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +879 -0
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +289 -0
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +91 -0
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +493 -0
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +548 -0
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +727 -0
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +389 -0
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +95 -0
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +165 -0
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +129 -0
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +714 -0
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +343 -0
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +584 -0
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +298 -0
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +224 -0
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +5 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +123 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +53 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +53 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +48 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +39 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +166 -0
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +296 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +156 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +258 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +235 -0
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +208 -0
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +204 -0
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +64 -0
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +252 -0
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +212 -0
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +296 -0
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +254 -0
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +120 -0
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +264 -0
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +144 -0
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +307 -0
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +299 -0
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +96 -0
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +164 -0
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +820 -0
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +307 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +312 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +87 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +76 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +60 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +102 -0
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +53 -0
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +150 -0
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +194 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +87 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +57 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +170 -0
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +87 -0
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +59 -0
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +161 -0
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +100 -0
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +82 -0
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +111 -0
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +116 -0
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +241 -0
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +375 -0
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +101 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +44 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +24 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +152 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +40 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +214 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +36 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +210 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +402 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +238 -0
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +131 -0
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +430 -0
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +244 -0
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +86 -0
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +592 -0
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +136 -0
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +249 -0
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +244 -0
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +51 -0
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +159 -0
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +123 -0
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +142 -0
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +110 -0
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +143 -0
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +100 -0
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +124 -0
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +103 -0
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +110 -0
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +70 -0
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +182 -0
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +191 -0
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +75 -0
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +374 -0
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +37 -0
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +36 -0
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +38 -0
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +36 -0
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +134 -0
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +49 -0
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +117 -0
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +237 -0
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +153 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +160 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +410 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +86 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +59 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +91 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +117 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +97 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +67 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +72 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +120 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +83 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +43 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +80 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +63 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +101 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +59 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +61 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +67 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +86 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +122 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +44 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +77 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +52 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +45 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +87 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +68 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +795 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +94 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +114 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +65 -0
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +432 -0
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +560 -0
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +249 -0
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +148 -0
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +443 -0
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +298 -0
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +566 -0
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +426 -0
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +739 -0
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +456 -0
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +363 -0
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +321 -0
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +168 -0
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +513 -0
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +655 -0
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +674 -0
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +156 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +717 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +724 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +694 -0
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +754 -0
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +414 -0
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +66 -0
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +420 -0
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +229 -0
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +99 -0
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +508 -0
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +141 -0
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +399 -0
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +750 -0
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +400 -0
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +729 -0
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +339 -0
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +325 -0
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +401 -0
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +504 -0
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +314 -0
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +261 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +281 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +90 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +60 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +99 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +64 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +97 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +72 -0
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +449 -0
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +469 -0
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +148 -0
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +254 -0
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +236 -0
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +60 -0
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +102 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +189 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +330 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +122 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +419 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +418 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +96 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +153 -0
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +263 -0
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +168 -0
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +220 -0
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +117 -0
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +121 -0
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +164 -0
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +242 -0
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +126 -0
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +103 -0
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +153 -0
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +236 -0
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +81 -0
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +221 -0
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +388 -0
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +567 -0
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +442 -0
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +191 -0
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +302 -0
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +56 -0
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +505 -0
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +361 -0
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +83 -0
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +163 -0
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +143 -0
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +122 -0
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +145 -0
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +166 -0
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +648 -0
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +945 -0
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +507 -0
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +474 -0
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +279 -0
- package/vendor/theus-arsenal/skills/seo/SKILL.md +166 -0
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +81 -0
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +375 -0
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +65 -0
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +735 -0
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +673 -0
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +817 -0
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +165 -0
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +328 -0
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +321 -0
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +325 -0
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +719 -0
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +829 -0
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +479 -0
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +196 -0
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +815 -0
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +421 -0
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +506 -0
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +252 -0
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +121 -0
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +141 -0
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +211 -0
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +470 -0
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +142 -0
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +184 -0
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +485 -0
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +237 -0
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +374 -0
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +550 -0
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +407 -0
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +101 -0
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +443 -0
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +331 -0
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +564 -0
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +65 -0
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +230 -0
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +406 -0
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +118 -0
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +279 -0
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +91 -0
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +52 -0
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +108 -0
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +106 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: validacion-config-red
|
|
3
|
+
description: Verificaciones previas al despliegue de configuración de routers y switches — comandos peligrosos, direcciones duplicadas, solapamiento de subredes, referencias huérfanas, riesgo del plano de gestión e higiene de seguridad estilo IOS.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Validación de configuración de red
|
|
7
|
+
|
|
8
|
+
Usa esta skill para revisar configuración de red antes de una ventana de cambio o
|
|
9
|
+
antes de que una corrida de automatización toque dispositivos de producción.
|
|
10
|
+
|
|
11
|
+
## Cuándo usarla
|
|
12
|
+
|
|
13
|
+
- Al revisar fragmentos estilo Cisco IOS o IOS-XE antes del despliegue.
|
|
14
|
+
- Al auditar configuración generada por scripts o plantillas.
|
|
15
|
+
- Al buscar comandos peligrosos, direcciones IP duplicadas o solapamientos de subredes.
|
|
16
|
+
- Al comprobar si hay ACL, route-maps, prefix-lists o políticas de línea referenciadas
|
|
17
|
+
pero no definidas.
|
|
18
|
+
- Al construir scripts ligeros de pre-vuelo para automatización de red.
|
|
19
|
+
|
|
20
|
+
## Cómo funciona
|
|
21
|
+
|
|
22
|
+
Trata la validación de configuración como evidencia por capas, no como un parser
|
|
23
|
+
completo. Las comprobaciones con regex sirven para advertencias de pre-vuelo,
|
|
24
|
+
pero la aprobación final sigue requiriendo que un ingeniero de red revise la
|
|
25
|
+
intención, la sintaxis de la plataforma y los pasos de rollback.
|
|
26
|
+
|
|
27
|
+
Valida en este orden:
|
|
28
|
+
|
|
29
|
+
1. Comandos destructivos.
|
|
30
|
+
2. Exposición de credenciales y del plano de gestión.
|
|
31
|
+
3. Direcciones duplicadas y subredes solapadas.
|
|
32
|
+
4. Referencias huérfanas a ACL, route-maps, prefix-lists e interfaces.
|
|
33
|
+
5. Higiene operativa: NTP, timestamps, logging remoto y banners.
|
|
34
|
+
|
|
35
|
+
## Detección de comandos peligrosos
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import re
|
|
39
|
+
|
|
40
|
+
DANGEROUS_PATTERNS: list[tuple[re.Pattern[str], str]] = [
|
|
41
|
+
(re.compile(r"\breload\b", re.I), "reload provoca una caída del servicio"),
|
|
42
|
+
(re.compile(r"\berase\s+(startup|nvram|flash)", re.I), "borra almacenamiento persistente"),
|
|
43
|
+
(re.compile(r"\bformat\b", re.I), "formatea un sistema de archivos del dispositivo"),
|
|
44
|
+
(re.compile(r"\bno\s+router\s+(bgp|ospf|eigrp)\b", re.I), "elimina un proceso de enrutamiento"),
|
|
45
|
+
(re.compile(r"\bno\s+interface\s+\S+", re.I), "elimina configuración de una interfaz"),
|
|
46
|
+
(re.compile(r"\baaa\s+new-model\b", re.I), "cambia el comportamiento de autenticación"),
|
|
47
|
+
(re.compile(r"\bcrypto\s+key\s+(zeroize|generate)\b", re.I), "cambia las llaves SSH del dispositivo"),
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
def find_dangerous_commands(lines: list[str]) -> list[dict[str, str | int]]:
|
|
51
|
+
findings = []
|
|
52
|
+
for line_number, line in enumerate(lines, start=1):
|
|
53
|
+
stripped = line.strip()
|
|
54
|
+
for pattern, reason in DANGEROUS_PATTERNS:
|
|
55
|
+
if pattern.search(stripped):
|
|
56
|
+
findings.append({
|
|
57
|
+
"line": line_number,
|
|
58
|
+
"command": stripped,
|
|
59
|
+
"reason": reason,
|
|
60
|
+
})
|
|
61
|
+
return findings
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## IPs duplicadas y solapamiento de subredes
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import ipaddress
|
|
68
|
+
import re
|
|
69
|
+
from collections import Counter
|
|
70
|
+
|
|
71
|
+
IP_ADDRESS_RE = re.compile(
|
|
72
|
+
r"^\s*ip address\s+"
|
|
73
|
+
r"(?P<ip>\d{1,3}(?:\.\d{1,3}){3})\s+"
|
|
74
|
+
r"(?P<mask>\d{1,3}(?:\.\d{1,3}){3})\b",
|
|
75
|
+
re.I | re.M,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def extract_interfaces(config: str) -> list[dict[str, str]]:
|
|
79
|
+
results = []
|
|
80
|
+
current = None
|
|
81
|
+
for line in config.splitlines():
|
|
82
|
+
if line.startswith("interface "):
|
|
83
|
+
current = line.split(maxsplit=1)[1]
|
|
84
|
+
continue
|
|
85
|
+
match = IP_ADDRESS_RE.match(line)
|
|
86
|
+
if current and match:
|
|
87
|
+
ip = match.group("ip")
|
|
88
|
+
mask = match.group("mask")
|
|
89
|
+
network = ipaddress.ip_interface(f"{ip}/{mask}").network
|
|
90
|
+
results.append({"interface": current, "ip": ip, "network": str(network)})
|
|
91
|
+
return results
|
|
92
|
+
|
|
93
|
+
def find_duplicate_ips(config: str) -> list[str]:
|
|
94
|
+
ips = [entry["ip"] for entry in extract_interfaces(config)]
|
|
95
|
+
counts = Counter(ips)
|
|
96
|
+
return sorted(ip for ip, count in counts.items() if count > 1)
|
|
97
|
+
|
|
98
|
+
def find_subnet_overlaps(config: str) -> list[tuple[str, str]]:
|
|
99
|
+
networks = [ipaddress.ip_network(entry["network"]) for entry in extract_interfaces(config)]
|
|
100
|
+
overlaps = []
|
|
101
|
+
for index, left in enumerate(networks):
|
|
102
|
+
for right in networks[index + 1:]:
|
|
103
|
+
if left.overlaps(right):
|
|
104
|
+
overlaps.append((str(left), str(right)))
|
|
105
|
+
return overlaps
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Comprobaciones del plano de gestión
|
|
109
|
+
|
|
110
|
+
Parsea los bloques VTY por sección para que las comprobaciones de access-class no
|
|
111
|
+
se derramen sobre líneas no relacionadas.
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
import re
|
|
115
|
+
|
|
116
|
+
def iter_blocks(config: str, starts_with: str) -> list[str]:
|
|
117
|
+
blocks = []
|
|
118
|
+
current: list[str] = []
|
|
119
|
+
for line in config.splitlines():
|
|
120
|
+
if line.startswith(starts_with):
|
|
121
|
+
if current:
|
|
122
|
+
blocks.append("\n".join(current))
|
|
123
|
+
current = [line]
|
|
124
|
+
continue
|
|
125
|
+
if current:
|
|
126
|
+
if line and not line.startswith(" "):
|
|
127
|
+
blocks.append("\n".join(current))
|
|
128
|
+
current = []
|
|
129
|
+
else:
|
|
130
|
+
current.append(line)
|
|
131
|
+
if current:
|
|
132
|
+
blocks.append("\n".join(current))
|
|
133
|
+
return blocks
|
|
134
|
+
|
|
135
|
+
def check_vty_blocks(config: str) -> list[str]:
|
|
136
|
+
issues = []
|
|
137
|
+
for block in iter_blocks(config, "line vty"):
|
|
138
|
+
if re.search(r"transport\s+input\s+.*telnet", block, re.I):
|
|
139
|
+
issues.append("Las líneas VTY permiten Telnet; exige solo SSH.")
|
|
140
|
+
if not re.search(r"\baccess-class\s+\S+\s+in\b", block, re.I):
|
|
141
|
+
issues.append("El bloque VTY no restringe el origen con un access-class entrante.")
|
|
142
|
+
if not re.search(r"\bexec-timeout\s+\d+\s+\d+\b", block, re.I):
|
|
143
|
+
issues.append("El bloque VTY no tiene un exec-timeout explícito.")
|
|
144
|
+
return issues
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Comprobaciones de higiene de seguridad
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
SECURITY_PATTERNS = [
|
|
151
|
+
(re.compile(r"\bsnmp-server community\s+(public|private)\b", re.I),
|
|
152
|
+
"community SNMP por defecto configurada"),
|
|
153
|
+
(re.compile(r"\bsnmp-server community\s+\S+", re.I),
|
|
154
|
+
"community string SNMPv2 configurada; prefiere SNMPv3 authPriv"),
|
|
155
|
+
(re.compile(r"\bip ssh version 1\b", re.I),
|
|
156
|
+
"SSH versión 1 habilitado"),
|
|
157
|
+
(re.compile(r"\benable password\b", re.I),
|
|
158
|
+
"hay un enable password; usa enable secret"),
|
|
159
|
+
(re.compile(r"\busername\s+\S+\s+password\b", re.I),
|
|
160
|
+
"un usuario local usa password en lugar de secret"),
|
|
161
|
+
]
|
|
162
|
+
|
|
163
|
+
BEST_PRACTICE_PATTERNS = [
|
|
164
|
+
(re.compile(r"\bntp server\b", re.I), "servidor NTP"),
|
|
165
|
+
(re.compile(r"\bservice timestamps\b", re.I), "timestamps en los logs"),
|
|
166
|
+
(re.compile(r"\blogging\s+\S+", re.I), "destino o buffer de logging"),
|
|
167
|
+
(re.compile(r"\bsnmp-server group\s+\S+\s+v3\s+priv\b", re.I), "grupo SNMPv3 authPriv"),
|
|
168
|
+
(re.compile(r"\bbanner\s+(login|motd)\b", re.I), "banner de inicio de sesión"),
|
|
169
|
+
]
|
|
170
|
+
|
|
171
|
+
def check_security(config: str) -> list[str]:
|
|
172
|
+
return [message for pattern, message in SECURITY_PATTERNS if pattern.search(config)]
|
|
173
|
+
|
|
174
|
+
def check_missing_hygiene(config: str) -> list[str]:
|
|
175
|
+
return [
|
|
176
|
+
f"Falta {description}"
|
|
177
|
+
for pattern, description in BEST_PRACTICE_PATTERNS
|
|
178
|
+
if not pattern.search(config)
|
|
179
|
+
]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Ejemplos
|
|
183
|
+
|
|
184
|
+
### Pre-vuelo de ventana de cambio
|
|
185
|
+
|
|
186
|
+
1. Ejecuta las comprobaciones de comandos peligrosos sobre el fragmento exacto que se va a pegar.
|
|
187
|
+
2. Ejecuta las comprobaciones de IPs duplicadas y solapamiento de subredes contra la configuración candidata completa.
|
|
188
|
+
3. Confirma que toda ACL, route-map y prefix-list referenciada existe.
|
|
189
|
+
4. Confirma los comandos de rollback y el acceso fuera de banda antes de cualquier
|
|
190
|
+
cambio del plano de gestión.
|
|
191
|
+
|
|
192
|
+
### Pre-vuelo de automatización
|
|
193
|
+
|
|
194
|
+
Usa la validación como compuerta bloqueante antes de que Netmiko, NAPALM, Ansible
|
|
195
|
+
o la API del fabricante empujen una configuración generada. Falla en cerrado ante
|
|
196
|
+
comandos peligrosos y credenciales. Advierte sobre brechas de buenas prácticas
|
|
197
|
+
que estén fuera del alcance del cambio.
|
|
198
|
+
|
|
199
|
+
## Antipatrones
|
|
200
|
+
|
|
201
|
+
- Tratar la validación con regex como un parser del dispositivo.
|
|
202
|
+
- Aplicar configuración generada sin un diff de simulación (dry-run).
|
|
203
|
+
- Recomendar community strings SNMPv2 como requisito de monitoreo.
|
|
204
|
+
- Comprobar bloques VTY con regex que pueden abarcar secciones no relacionadas por accidente.
|
|
205
|
+
- Probar el comportamiento del firewall deshabilitando ACL en lugar de leer contadores y logs.
|
|
206
|
+
|
|
207
|
+
## Ver también
|
|
208
|
+
|
|
209
|
+
- Agente: `revisor-config-red`
|
|
210
|
+
- Agente: `diagnosticador-redes`
|
|
211
|
+
- Skill: `salud-interfaces-red`
|
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verificacion-django
|
|
3
|
+
description: Bucle de verificación para proyectos Django; migraciones, linting, tests con
|
|
4
|
+
cobertura, escaneos de seguridad y comprobaciones de preparación para el despliegue antes
|
|
5
|
+
de un release o un PR.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Bucle de verificación Django
|
|
9
|
+
|
|
10
|
+
Ejecútalo antes de abrir un PR, después de cambios importantes y antes de desplegar, para garantizar la calidad y seguridad de la aplicación Django.
|
|
11
|
+
|
|
12
|
+
## Cuándo usarla
|
|
13
|
+
|
|
14
|
+
- Antes de abrir un pull request en un proyecto Django.
|
|
15
|
+
- Después de cambios importantes en modelos, actualizaciones de migraciones o upgrades de dependencias.
|
|
16
|
+
- Verificación previa al despliegue en staging o producción.
|
|
17
|
+
- Para ejecutar el pipeline completo: entorno → lint → tests → seguridad → preparación de despliegue.
|
|
18
|
+
- Para validar la seguridad de las migraciones y la cobertura de tests.
|
|
19
|
+
|
|
20
|
+
## Fase 1: verificación del entorno
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Verifica la versión de Python
|
|
24
|
+
python --version # Debe coincidir con los requisitos del proyecto
|
|
25
|
+
|
|
26
|
+
# Comprueba el entorno virtual
|
|
27
|
+
which python
|
|
28
|
+
pip list --outdated
|
|
29
|
+
|
|
30
|
+
# Verifica las variables de entorno
|
|
31
|
+
python -c "import os; import environ; print('DJANGO_SECRET_KEY definida' if os.environ.get('DJANGO_SECRET_KEY') else 'FALTA: DJANGO_SECRET_KEY')"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Si el entorno está mal configurado, detente y corrígelo antes de seguir.
|
|
35
|
+
|
|
36
|
+
## Fase 2: calidad de código y formato
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Chequeo de tipos
|
|
40
|
+
mypy . --config-file pyproject.toml
|
|
41
|
+
|
|
42
|
+
# Linting con ruff
|
|
43
|
+
ruff check . --fix
|
|
44
|
+
|
|
45
|
+
# Formato con black
|
|
46
|
+
black . --check
|
|
47
|
+
black . # Corrección automática
|
|
48
|
+
|
|
49
|
+
# Orden de imports
|
|
50
|
+
isort . --check-only
|
|
51
|
+
isort . # Corrección automática
|
|
52
|
+
|
|
53
|
+
# Chequeos específicos de Django
|
|
54
|
+
python manage.py check --deploy
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Problemas comunes:
|
|
58
|
+
- Anotaciones de tipo faltantes en funciones públicas.
|
|
59
|
+
- Violaciones de formato PEP 8.
|
|
60
|
+
- Imports sin ordenar.
|
|
61
|
+
- Configuración de debug olvidada en los settings de producción.
|
|
62
|
+
|
|
63
|
+
## Fase 3: migraciones
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Busca migraciones sin aplicar
|
|
67
|
+
python manage.py showmigrations
|
|
68
|
+
|
|
69
|
+
# Detecta migraciones faltantes
|
|
70
|
+
python manage.py makemigrations --check
|
|
71
|
+
|
|
72
|
+
# Simulación de la aplicación de migraciones
|
|
73
|
+
python manage.py migrate --plan
|
|
74
|
+
|
|
75
|
+
# Aplica migraciones (entorno de prueba)
|
|
76
|
+
python manage.py migrate
|
|
77
|
+
|
|
78
|
+
# Comprueba conflictos de migraciones
|
|
79
|
+
python manage.py makemigrations --merge # Solo si existen conflictos
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Reporta:
|
|
83
|
+
- Número de migraciones pendientes.
|
|
84
|
+
- Conflictos de migraciones, si los hay.
|
|
85
|
+
- Cambios de modelos sin migración asociada.
|
|
86
|
+
|
|
87
|
+
## Fase 4: tests + cobertura
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Ejecuta todos los tests con pytest
|
|
91
|
+
pytest --cov=apps --cov-report=html --cov-report=term-missing --reuse-db
|
|
92
|
+
|
|
93
|
+
# Tests de una app concreta
|
|
94
|
+
pytest apps/users/tests/
|
|
95
|
+
|
|
96
|
+
# Con marcadores
|
|
97
|
+
pytest -m "not slow" # Omite los tests lentos
|
|
98
|
+
pytest -m integration # Solo tests de integración
|
|
99
|
+
|
|
100
|
+
# Informe de cobertura
|
|
101
|
+
open htmlcov/index.html
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Reporta:
|
|
105
|
+
- Total de tests: X aprobados, Y fallidos, Z omitidos.
|
|
106
|
+
- Cobertura global: XX %.
|
|
107
|
+
- Desglose de cobertura por app.
|
|
108
|
+
|
|
109
|
+
Objetivos de cobertura:
|
|
110
|
+
|
|
111
|
+
| Componente | Objetivo |
|
|
112
|
+
|-----------|--------|
|
|
113
|
+
| Modelos | 90 %+ |
|
|
114
|
+
| Serializers | 85 %+ |
|
|
115
|
+
| Vistas | 80 %+ |
|
|
116
|
+
| Servicios | 90 %+ |
|
|
117
|
+
| Global | 80 %+ |
|
|
118
|
+
|
|
119
|
+
## Fase 5: escaneo de seguridad
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Vulnerabilidades en dependencias
|
|
123
|
+
pip-audit
|
|
124
|
+
safety check --full-report
|
|
125
|
+
|
|
126
|
+
# Chequeos de seguridad de Django
|
|
127
|
+
python manage.py check --deploy
|
|
128
|
+
|
|
129
|
+
# Linter de seguridad Bandit
|
|
130
|
+
bandit -r . -f json -o bandit-report.json
|
|
131
|
+
|
|
132
|
+
# Escaneo de secretos (si gitleaks está instalado)
|
|
133
|
+
gitleaks detect --source . --verbose
|
|
134
|
+
|
|
135
|
+
# Verificación de variables de entorno
|
|
136
|
+
python -c "from django.core.exceptions import ImproperlyConfigured; from django.conf import settings; settings.DEBUG"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Reporta:
|
|
140
|
+
- Dependencias vulnerables encontradas.
|
|
141
|
+
- Problemas de configuración de seguridad.
|
|
142
|
+
- Secretos hardcodeados detectados.
|
|
143
|
+
- Estado del modo DEBUG (debe ser False en producción).
|
|
144
|
+
|
|
145
|
+
## Fase 6: comandos de gestión de Django
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Comprueba problemas en los modelos
|
|
149
|
+
python manage.py check
|
|
150
|
+
|
|
151
|
+
# Recolecta archivos estáticos
|
|
152
|
+
python manage.py collectstatic --noinput --clear
|
|
153
|
+
|
|
154
|
+
# Crea un superusuario (si los tests lo necesitan)
|
|
155
|
+
echo "from apps.users.models import User; User.objects.create_superuser('admin@example.com', 'admin')" | python manage.py shell
|
|
156
|
+
|
|
157
|
+
# Integridad de la base de datos
|
|
158
|
+
python manage.py check --database default
|
|
159
|
+
|
|
160
|
+
# Verificación de caché (si usas Redis)
|
|
161
|
+
python -c "from django.core.cache import cache; cache.set('test', 'value', 10); print(cache.get('test'))"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Fase 7: chequeos de rendimiento
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Salida de Django Debug Toolbar (busca consultas N+1)
|
|
168
|
+
# Ejecuta en modo dev con DEBUG=True y visita una página
|
|
169
|
+
# Revisa consultas duplicadas en el panel SQL
|
|
170
|
+
|
|
171
|
+
# Análisis de número de consultas
|
|
172
|
+
django-admin debugsqlshell # Si django-debug-sqlshell está instalado
|
|
173
|
+
|
|
174
|
+
# Busca índices faltantes
|
|
175
|
+
python manage.py shell << EOF
|
|
176
|
+
from django.db import connection
|
|
177
|
+
with connection.cursor() as cursor:
|
|
178
|
+
cursor.execute("SELECT table_name, index_name FROM information_schema.statistics WHERE table_schema = 'public'")
|
|
179
|
+
print(cursor.fetchall())
|
|
180
|
+
EOF
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Reporta:
|
|
184
|
+
- Número de consultas por página (idealmente < 50 en páginas típicas).
|
|
185
|
+
- Índices de base de datos faltantes.
|
|
186
|
+
- Consultas duplicadas detectadas.
|
|
187
|
+
|
|
188
|
+
## Fase 8: assets estáticos
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Comprueba dependencias npm (si aplica)
|
|
192
|
+
npm audit
|
|
193
|
+
npm audit fix
|
|
194
|
+
|
|
195
|
+
# Compila los archivos estáticos (si usas webpack/vite)
|
|
196
|
+
npm run build
|
|
197
|
+
|
|
198
|
+
# Verifica los archivos estáticos
|
|
199
|
+
ls -la staticfiles/
|
|
200
|
+
python manage.py findstatic css/style.css
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Fase 9: revisión de configuración
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
# Ejecuta en el shell de Python para verificar los settings
|
|
207
|
+
python manage.py shell << EOF
|
|
208
|
+
from django.conf import settings
|
|
209
|
+
import os
|
|
210
|
+
|
|
211
|
+
# Chequeos críticos
|
|
212
|
+
checks = {
|
|
213
|
+
'DEBUG es False': not settings.DEBUG,
|
|
214
|
+
'SECRET_KEY definida': bool(settings.SECRET_KEY and len(settings.SECRET_KEY) > 30),
|
|
215
|
+
'ALLOWED_HOSTS definido': len(settings.ALLOWED_HOSTS) > 0,
|
|
216
|
+
'HTTPS habilitado': getattr(settings, 'SECURE_SSL_REDIRECT', False),
|
|
217
|
+
'HSTS habilitado': getattr(settings, 'SECURE_HSTS_SECONDS', 0) > 0,
|
|
218
|
+
'Base de datos configurada': settings.DATABASES['default']['ENGINE'] != 'django.db.backends.sqlite3',
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
for check, result in checks.items():
|
|
222
|
+
status = '✓' if result else '✗'
|
|
223
|
+
print(f"{status} {check}")
|
|
224
|
+
EOF
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Fase 10: configuración de logging
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# Prueba la salida de logs
|
|
231
|
+
python manage.py shell << EOF
|
|
232
|
+
import logging
|
|
233
|
+
logger = logging.getLogger('django')
|
|
234
|
+
logger.warning('Mensaje de advertencia de prueba')
|
|
235
|
+
logger.error('Mensaje de error de prueba')
|
|
236
|
+
EOF
|
|
237
|
+
|
|
238
|
+
# Revisa los archivos de log (si están configurados)
|
|
239
|
+
tail -f /var/log/django/django.log
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Fase 11: documentación de la API (si usas DRF)
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Genera el esquema
|
|
246
|
+
python manage.py generateschema --format openapi-json > schema.json
|
|
247
|
+
|
|
248
|
+
# Valida el esquema
|
|
249
|
+
# Comprueba que schema.json sea JSON válido
|
|
250
|
+
python -c "import json; json.load(open('schema.json'))"
|
|
251
|
+
|
|
252
|
+
# Accede a Swagger UI (si usas drf-yasg)
|
|
253
|
+
# Visita http://localhost:8000/swagger/ en el navegador
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Fase 12: revisión del diff
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Estadísticas del diff
|
|
260
|
+
git diff --stat
|
|
261
|
+
|
|
262
|
+
# Cambios reales
|
|
263
|
+
git diff
|
|
264
|
+
|
|
265
|
+
# Archivos modificados
|
|
266
|
+
git diff --name-only
|
|
267
|
+
|
|
268
|
+
# Busca problemas comunes
|
|
269
|
+
git diff | grep -i "todo\|fixme\|hack\|xxx"
|
|
270
|
+
git diff | grep "print(" # Sentencias de depuración
|
|
271
|
+
git diff | grep "DEBUG = True" # Modo debug
|
|
272
|
+
git diff | grep "import pdb" # Depurador
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Lista de verificación:
|
|
276
|
+
- Sin sentencias de depuración (print, pdb, breakpoint()).
|
|
277
|
+
- Sin comentarios TODO/FIXME en código crítico.
|
|
278
|
+
- Sin secretos ni credenciales hardcodeadas.
|
|
279
|
+
- Migraciones incluidas para los cambios de modelos.
|
|
280
|
+
- Cambios de configuración documentados.
|
|
281
|
+
- Manejo de errores presente en llamadas externas.
|
|
282
|
+
- Gestión de transacciones donde corresponda.
|
|
283
|
+
|
|
284
|
+
## Plantilla de salida
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
INFORME DE VERIFICACIÓN DJANGO
|
|
288
|
+
==============================
|
|
289
|
+
|
|
290
|
+
Fase 1: Entorno
|
|
291
|
+
✓ Python 3.11.5
|
|
292
|
+
✓ Entorno virtual activo
|
|
293
|
+
✓ Variables de entorno definidas
|
|
294
|
+
|
|
295
|
+
Fase 2: Calidad de código
|
|
296
|
+
✓ mypy: sin errores de tipos
|
|
297
|
+
✗ ruff: 3 problemas encontrados (corregidos automáticamente)
|
|
298
|
+
✓ black: sin problemas de formato
|
|
299
|
+
✓ isort: imports ordenados
|
|
300
|
+
✓ manage.py check: sin problemas
|
|
301
|
+
|
|
302
|
+
Fase 3: Migraciones
|
|
303
|
+
✓ Sin migraciones pendientes
|
|
304
|
+
✓ Sin conflictos de migraciones
|
|
305
|
+
✓ Todos los modelos tienen migración
|
|
306
|
+
|
|
307
|
+
Fase 4: Tests + cobertura
|
|
308
|
+
Tests: 247 aprobados, 0 fallidos, 5 omitidos
|
|
309
|
+
Cobertura:
|
|
310
|
+
Global: 87 %
|
|
311
|
+
users: 92 %
|
|
312
|
+
products: 89 %
|
|
313
|
+
orders: 85 %
|
|
314
|
+
payments: 91 %
|
|
315
|
+
|
|
316
|
+
Fase 5: Seguridad
|
|
317
|
+
✗ pip-audit: 2 vulnerabilidades encontradas (corrección requerida)
|
|
318
|
+
✓ safety check: sin problemas
|
|
319
|
+
✓ bandit: sin problemas de seguridad
|
|
320
|
+
✓ Sin secretos detectados
|
|
321
|
+
✓ DEBUG = False
|
|
322
|
+
|
|
323
|
+
Fase 6: Comandos de Django
|
|
324
|
+
✓ collectstatic completado
|
|
325
|
+
✓ Integridad de base de datos OK
|
|
326
|
+
✓ Backend de caché accesible
|
|
327
|
+
|
|
328
|
+
Fase 7: Rendimiento
|
|
329
|
+
✓ Sin consultas N+1 detectadas
|
|
330
|
+
✓ Índices de base de datos configurados
|
|
331
|
+
✓ Número de consultas aceptable
|
|
332
|
+
|
|
333
|
+
Fase 8: Assets estáticos
|
|
334
|
+
✓ npm audit: sin vulnerabilidades
|
|
335
|
+
✓ Assets compilados correctamente
|
|
336
|
+
✓ Archivos estáticos recolectados
|
|
337
|
+
|
|
338
|
+
Fase 9: Configuración
|
|
339
|
+
✓ DEBUG = False
|
|
340
|
+
✓ SECRET_KEY configurada
|
|
341
|
+
✓ ALLOWED_HOSTS definido
|
|
342
|
+
✓ HTTPS habilitado
|
|
343
|
+
✓ HSTS habilitado
|
|
344
|
+
✓ Base de datos configurada
|
|
345
|
+
|
|
346
|
+
Fase 10: Logging
|
|
347
|
+
✓ Logging configurado
|
|
348
|
+
✓ Archivos de log escribibles
|
|
349
|
+
|
|
350
|
+
Fase 11: Documentación de API
|
|
351
|
+
✓ Esquema generado
|
|
352
|
+
✓ Swagger UI accesible
|
|
353
|
+
|
|
354
|
+
Fase 12: Revisión del diff
|
|
355
|
+
Archivos modificados: 12
|
|
356
|
+
+450, -120 líneas
|
|
357
|
+
✓ Sin sentencias de depuración
|
|
358
|
+
✓ Sin secretos hardcodeados
|
|
359
|
+
✓ Migraciones incluidas
|
|
360
|
+
|
|
361
|
+
RECOMENDACIÓN: ADVERTENCIA: corrige las vulnerabilidades de pip-audit antes de desplegar
|
|
362
|
+
|
|
363
|
+
PRÓXIMOS PASOS:
|
|
364
|
+
1. Actualizar las dependencias vulnerables
|
|
365
|
+
2. Reejecutar el escaneo de seguridad
|
|
366
|
+
3. Desplegar a staging para la prueba final
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
## Lista de verificación pre-despliegue
|
|
370
|
+
|
|
371
|
+
- [ ] Todos los tests pasan.
|
|
372
|
+
- [ ] Cobertura ≥ 80 %.
|
|
373
|
+
- [ ] Sin vulnerabilidades de seguridad.
|
|
374
|
+
- [ ] Sin migraciones pendientes.
|
|
375
|
+
- [ ] DEBUG = False en los settings de producción.
|
|
376
|
+
- [ ] SECRET_KEY correctamente configurada.
|
|
377
|
+
- [ ] ALLOWED_HOSTS bien definido.
|
|
378
|
+
- [ ] Backups de base de datos habilitados.
|
|
379
|
+
- [ ] Archivos estáticos recolectados y servidos.
|
|
380
|
+
- [ ] Logging configurado y funcionando.
|
|
381
|
+
- [ ] Monitoreo de errores (Sentry u otro) configurado.
|
|
382
|
+
- [ ] CDN configurado (si aplica).
|
|
383
|
+
- [ ] Backend de caché/Redis configurado.
|
|
384
|
+
- [ ] Workers de Celery en ejecución (si aplica).
|
|
385
|
+
- [ ] HTTPS/SSL configurado.
|
|
386
|
+
- [ ] Variables de entorno documentadas.
|
|
387
|
+
|
|
388
|
+
## Integración continua
|
|
389
|
+
|
|
390
|
+
### Ejemplo con GitHub Actions
|
|
391
|
+
|
|
392
|
+
```yaml
|
|
393
|
+
# .github/workflows/verificacion-django.yml
|
|
394
|
+
name: Verificacion Django
|
|
395
|
+
|
|
396
|
+
on: [push, pull_request]
|
|
397
|
+
|
|
398
|
+
jobs:
|
|
399
|
+
verify:
|
|
400
|
+
runs-on: ubuntu-latest
|
|
401
|
+
services:
|
|
402
|
+
postgres:
|
|
403
|
+
image: postgres:14
|
|
404
|
+
env:
|
|
405
|
+
POSTGRES_PASSWORD: postgres
|
|
406
|
+
options: >-
|
|
407
|
+
--health-cmd pg_isready
|
|
408
|
+
--health-interval 10s
|
|
409
|
+
--health-timeout 5s
|
|
410
|
+
--health-retries 5
|
|
411
|
+
|
|
412
|
+
steps:
|
|
413
|
+
- uses: actions/checkout@v3
|
|
414
|
+
|
|
415
|
+
- name: Configurar Python
|
|
416
|
+
uses: actions/setup-python@v4
|
|
417
|
+
with:
|
|
418
|
+
python-version: '3.11'
|
|
419
|
+
|
|
420
|
+
- name: Cachear pip
|
|
421
|
+
uses: actions/cache@v3
|
|
422
|
+
with:
|
|
423
|
+
path: ~/.cache/pip
|
|
424
|
+
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
425
|
+
|
|
426
|
+
- name: Instalar dependencias
|
|
427
|
+
run: |
|
|
428
|
+
pip install -r requirements.txt
|
|
429
|
+
pip install ruff black mypy pytest pytest-django pytest-cov bandit safety pip-audit
|
|
430
|
+
|
|
431
|
+
- name: Chequeos de calidad de código
|
|
432
|
+
run: |
|
|
433
|
+
ruff check .
|
|
434
|
+
black . --check
|
|
435
|
+
isort . --check-only
|
|
436
|
+
mypy .
|
|
437
|
+
|
|
438
|
+
- name: Escaneo de seguridad
|
|
439
|
+
run: |
|
|
440
|
+
bandit -r . -f json -o bandit-report.json
|
|
441
|
+
safety check --full-report
|
|
442
|
+
pip-audit
|
|
443
|
+
|
|
444
|
+
- name: Ejecutar tests
|
|
445
|
+
env:
|
|
446
|
+
DATABASE_URL: postgres://postgres:postgres@localhost:5432/test
|
|
447
|
+
DJANGO_SECRET_KEY: test-secret-key
|
|
448
|
+
run: |
|
|
449
|
+
pytest --cov=apps --cov-report=xml --cov-report=term-missing
|
|
450
|
+
|
|
451
|
+
- name: Subir cobertura
|
|
452
|
+
uses: codecov/codecov-action@v3
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
## Referencia rápida
|
|
456
|
+
|
|
457
|
+
| Chequeo | Comando |
|
|
458
|
+
|-------|---------|
|
|
459
|
+
| Entorno | `python --version` |
|
|
460
|
+
| Tipos | `mypy .` |
|
|
461
|
+
| Linting | `ruff check .` |
|
|
462
|
+
| Formato | `black . --check` |
|
|
463
|
+
| Migraciones | `python manage.py makemigrations --check` |
|
|
464
|
+
| Tests | `pytest --cov=apps` |
|
|
465
|
+
| Seguridad | `pip-audit && bandit -r .` |
|
|
466
|
+
| Chequeo Django | `python manage.py check --deploy` |
|
|
467
|
+
| Collectstatic | `python manage.py collectstatic --noinput` |
|
|
468
|
+
| Estadísticas del diff | `git diff --stat` |
|
|
469
|
+
|
|
470
|
+
Recuerda: la verificación automatizada detecta problemas comunes, pero no sustituye la revisión de código manual ni las pruebas en un entorno de staging.
|