theus-cli-darwin-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,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: metodologia-benchmarks
|
|
3
|
+
description: Puntúa un set de competidores ya escalonado en nueve dimensiones ponderadas con rúbricas explícitas de 1 a 5 y un plano de tensión estratégica. Usa esta skill después de analisis-plataformas-competencia y antes de estructura-informes-competencia.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Metodología de benchmarks
|
|
7
|
+
|
|
8
|
+
Usa esta skill para convertir un set acotado de competidores en **puntuaciones comparables y defendibles**. Cada competidor se evalúa en las mismas nueve dimensiones, con rúbricas explícitas de 1 a 5, y se captura en una ficha de perfil uniforme. La consistencia es el punto: las puntuaciones solo sirven si la misma evidencia obtendría el mismo número para cualquier competidor.
|
|
9
|
+
|
|
10
|
+
## Cuándo activarla
|
|
11
|
+
|
|
12
|
+
- Hay un set de competidores acotado y escalonado (de `analisis-plataformas-competencia`) listo para puntuar.
|
|
13
|
+
- Se necesitan puntuaciones comparables y ancladas en evidencia — no rankings por intuición.
|
|
14
|
+
- La tensión estratégica del cliente (los ejes pareados que definen su espacio blanco objetivo) ya está establecida.
|
|
15
|
+
- Se preparan fichas de perfil para ensamblarlas en `estructura-informes-competencia`.
|
|
16
|
+
|
|
17
|
+
## Brief de posicionamiento del cliente (establécelo primero)
|
|
18
|
+
|
|
19
|
+
Antes de puntuar, establece el brief de posicionamiento del cliente. Aporta:
|
|
20
|
+
|
|
21
|
+
- **Tensión estratégica** — los dos ejes (p. ej., memorabilidad × contratabilidad) cuya intersección marca el espacio blanco objetivo del cliente. La dimensión 9 es siempre la tensión nombrada por el cliente; reporta ambos polos por separado, nunca promediados.
|
|
22
|
+
- **Diferenciador** — qué constituye el foso competitivo del cliente. Informa qué dimensiones importan más para su argumento de posicionamiento.
|
|
23
|
+
- **Balance de marca** — la mezcla prevista de énfasis estratégicos distintos. Las recomendaciones estratégicas no deben romper ese balance sin señalarlo.
|
|
24
|
+
|
|
25
|
+
## Por qué estas dimensiones
|
|
26
|
+
|
|
27
|
+
El cliente compite sobre una **tensión específica sostenida entre dos polos**, no sobre amplitud de servicios. Las dimensiones se ponderan para reflejar ese foso. Dos dimensiones — los polos de la tensión — se puntúan **por separado y nunca se promedian**, porque la pregunta estratégica del cliente es precisamente si un rival logra ambos a la vez.
|
|
28
|
+
|
|
29
|
+
## Las nueve dimensiones (con pesos)
|
|
30
|
+
|
|
31
|
+
Los pesos guían el énfasis de la síntesis, no una puntuación única combinada (evita un compuesto falso — ver Controles de sesgo). Suma = 100 %.
|
|
32
|
+
|
|
33
|
+
1. **Claridad y distintividad del posicionamiento** (18 %) — ¿La posición del estudio es nítida, apropiable e instantáneamente legible? ¿O genérica?
|
|
34
|
+
2. **Voz de marca / distintividad verbal** (15 %) — ¿La redacción tiene un registro propio, o es jerga de agencia intercambiable?
|
|
35
|
+
3. **Identidad visual y factura del sitio** (15 %) — Calidad y propiedad del sistema visual; el sitio como prueba de oficio.
|
|
36
|
+
4. **Oferta de servicios y empaquetado** (12 %) — Productizado y legible (sprints/auditorías con nombre) vs. vago. Madurez del empaquetado.
|
|
37
|
+
5. **Evidencia y credibilidad** (12 %) — Clientes nombrados, resultados cuantificados, profundidad de los casos de estudio. Prueba más allá de la afirmación.
|
|
38
|
+
6. **Preparación enterprise / madurez comercial** (10 %) — Señales de que pueden ganar y sostener trabajo SaaS/fintech/B2B/enterprise (proceso, logos, escala, contratos).
|
|
39
|
+
7. **Liderazgo de opinión / presencia de contenido** (8 %) — Punto de vista propio: escritura, charlas, newsletters, frameworks. Profundidad sobre volumen.
|
|
40
|
+
8. **Transparencia de precios y modelo de contratación** (5 %) — ¿El precio/modelo es legible? ¿Productizado, a medida u opaco?
|
|
41
|
+
9. **[Tensión estratégica del cliente]** (5 % como bandera; **puntúa AMBOS polos, repórtalos por separado**) — Lee el nombre de la tensión y las descripciones de los ejes del brief de posicionamiento. Grafica ambos; la brecha es el hallazgo. El cuadrante objetivo del cliente es el hallazgo más importante: ¿quién más está ya ahí?
|
|
42
|
+
|
|
43
|
+
## Rúbrica de puntuación (1–5, aplica a las dimensiones 1–8)
|
|
44
|
+
|
|
45
|
+
Ancla cada puntuación a evidencia observable. Los descriptores siguientes son genéricos; adapta los detalles por dimensión pero mantén constante el significado de cada nivel.
|
|
46
|
+
|
|
47
|
+
- **1 — Ausente / genérico.** Sin posición ni oficio discernibles; indistinguible de una plantilla. Un lastre activo.
|
|
48
|
+
- **2 — Por debajo del estándar.** Hay intención pero es inconsistente, derivativa o poco convincente. No sobreviviría una comparación lado a lado.
|
|
49
|
+
- **3 — Competente / lo esperable.** Sólido, profesional, anodino. Cumple la expectativa, no lo posee nadie.
|
|
50
|
+
- **4 — Fuerte / distintivo.** Claramente por encima de sus pares; una fortaleza real que un comprador notaría y citaría.
|
|
51
|
+
- **5 — Define la categoría.** El mejor de su clase, apropiable, difícil de imitar. Pone el listón al que otros reaccionan.
|
|
52
|
+
|
|
53
|
+
### Ejes de la tensión (dimensión 9) — puntúa cada uno de 1 a 5
|
|
54
|
+
|
|
55
|
+
Lee las etiquetas de los ejes y sus anclas 1/3/5 del brief de posicionamiento del cliente. Anclas de ejemplo para una tensión memorabilidad × credibilidad:
|
|
56
|
+
|
|
57
|
+
- **Memorabilidad** — 1: se olvida al instante · 3: reconocible en contexto · 5: inolvidable, comentado, distintivamente propio.
|
|
58
|
+
- **Credibilidad** — 1: se percibe riesgoso/amateur · 3: seguro, competente, sin emoción · 5: confianza enterprise, la opción segura obvia.
|
|
59
|
+
|
|
60
|
+
Grafica a los competidores en la matriz 2×2 de la tensión. El cuadrante objetivo del cliente está nombrado en el brief. Quién más ocupa ese cuadrante es el hallazgo más importante del benchmark.
|
|
61
|
+
|
|
62
|
+
## Cómo recolectar los datos
|
|
63
|
+
|
|
64
|
+
Por cada competidor, trabaja las dimensiones en este orden (la señal más barata primero):
|
|
65
|
+
|
|
66
|
+
1. **El sitio del propio competidor** — posicionamiento, voz, empaquetado de la oferta, postura de precios, clientes nombrados, manifiesto/punto de vista. Captura la home + un caso de estudio.
|
|
67
|
+
2. **Casos de estudio / trabajos** — profundidad de la evidencia, resultados cuantificados, nombres de clientes. Distingue lo *afirmado* ("entregamos X") de lo *probado* (métricas, con nombre, verificable).
|
|
68
|
+
3. **Directorios de reseñas** — corrobora clientes, tamaño de proyectos, modelo de contratación → credibilidad y preparación enterprise (p. ej., Clutch.co o el equivalente del nicho).
|
|
69
|
+
4. **LinkedIn** — tamaño/modelo del equipo, narrativa de los fundadores, cadencia de contenido → liderazgo de opinión, modelo.
|
|
70
|
+
5. **Plataformas de portafolio / oficio** — registro del oficio (usa el escaparate nativo del nicho: tableros de diseño, showreels, muestras publicadas, etc.).
|
|
71
|
+
6. **Canales de contenido** — newsletter/charlas/escritura → profundidad del liderazgo de opinión.
|
|
72
|
+
|
|
73
|
+
**Qué registrar por dimensión:** la puntuación, una justificación de una línea y el enlace/captura de la fuente que la sustenta. Sin evidencia no hay puntuación.
|
|
74
|
+
|
|
75
|
+
## Controles de sesgo
|
|
76
|
+
|
|
77
|
+
- **Sin puntuación compuesta única.** Reporta las puntuaciones por dimensión y el plano de tensión por separado. Un promedio ponderado esconde la asimetría que importa.
|
|
78
|
+
- **Afirmado vs. probado.** Rebaja las puntuaciones de credibilidad/evidencia para afirmaciones autorreportadas sin corroboración. La redacción del sitio es marketing, no un hecho.
|
|
79
|
+
- **Sesgo de afinidad estética.** Los revisores pueden sobrepuntuar estudios cuya estética comparten y subestimar la fortaleza comercial de los rivales. Puntúa oficio y credibilidad de forma independiente; un sitio "aburrido" puede estar ganando clientes más grandes.
|
|
80
|
+
- **Sesgo de novedad / vistosidad.** El trabajo premiado y vistoso deslumbra pero puede carecer de profundidad comercial — verifica con directorios/clientes antes de puntuar credibilidad.
|
|
81
|
+
- **Supervivencia.** Los estudios visibles y bien comercializados no son todo el mercado; anota a los operadores fuertes-pero-discretos encontrados vía directorios/reseñas.
|
|
82
|
+
- **Calibra sobre el set, no en aislamiento.** Antes de cerrar, relee las puntuaciones lado a lado — un "4" debe significar lo mismo para todos los competidores. Ajusta los atípicos.
|
|
83
|
+
|
|
84
|
+
## Ficha de perfil de competidor (formato de salida)
|
|
85
|
+
|
|
86
|
+
Produce una ficha por competidor perfilado — la unidad atómica de la que se ensambla el informe:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
## <Nombre del competidor>
|
|
90
|
+
- **Perfil / Tier:** <postura de posicionamiento · especialización · banda de tamaño> / <Directo | Adyacente | Aspiracional>
|
|
91
|
+
- **En una línea:** <cómo se posicionan, en sus propias palabras>
|
|
92
|
+
- **Modelo / tamaño / geografía:** <solo|micro|boutique> · <región> · <modelo de precios/contratación>
|
|
93
|
+
- **Clientes notables / evidencia:** <nombrados, con etiqueta probado/afirmado>
|
|
94
|
+
|
|
95
|
+
### Puntuaciones por dimensión
|
|
96
|
+
| Dimensión | Puntuación (1–5) | Justificación (1 línea) | Fuente |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| Claridad y distintividad del posicionamiento | | | |
|
|
99
|
+
| Voz de marca / distintividad verbal | | | |
|
|
100
|
+
| Identidad visual y factura del sitio | | | |
|
|
101
|
+
| Oferta de servicios y empaquetado | | | |
|
|
102
|
+
| Evidencia y credibilidad | | | |
|
|
103
|
+
| Preparación enterprise / madurez comercial | | | |
|
|
104
|
+
| Liderazgo de opinión / presencia de contenido | | | |
|
|
105
|
+
| Transparencia de precios y modelo de contratación | | | |
|
|
106
|
+
|
|
107
|
+
### Plano de tensión
|
|
108
|
+
- **[Eje 1 del brief de posicionamiento]:** <1–5> — <por qué>
|
|
109
|
+
- **[Eje 2 del brief de posicionamiento]:** <1–5> — <por qué>
|
|
110
|
+
- **Cuadrante:** <alto/alto | alto-1/bajo-2 | bajo-1/alto-2 | bajo/bajo>
|
|
111
|
+
|
|
112
|
+
### Lectura para [cliente]
|
|
113
|
+
- **Fortaleza de la que aprender:** <…>
|
|
114
|
+
- **Debilidad a explotar / espacio blanco que expone:** <…>
|
|
115
|
+
- **Amenaza para [cliente]:** <…>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Entrega las fichas completas más el plano de tensión a `estructura-informes-competencia`.
|
|
119
|
+
|
|
120
|
+
## Antipatrones
|
|
121
|
+
|
|
122
|
+
- **Promediar los ejes de la tensión.** Los dos polos de la tensión estratégica del cliente deben puntuarse y reportarse por separado. Promediarlos destruye el hallazgo — la brecha entre polos es el resultado.
|
|
123
|
+
- **Puntuar sin evidencia.** Cada puntuación requiere una justificación de una línea y un enlace fuente. Una puntuación sin evidencia es una opinión, no un benchmark.
|
|
124
|
+
- **Crear una puntuación compuesta única.** Reporta las dimensiones individualmente. Un promedio ponderado oculta las fortalezas asimétricas que importan para el posicionamiento.
|
|
125
|
+
- **Aplicar las anclas genéricas de la rúbrica sin adaptarlas.** Las anclas 1–5 deben calibrarse a la dimensión específica y al set de competidores. Las descripciones genéricas son punto de partida, no estándar fijo.
|
|
126
|
+
- **Ejecutar antes de acotar el set de competidores.** Usa primero `analisis-plataformas-competencia` para producir un set escalonado y depurado. Puntuar una lista sin acotar desperdicia esfuerzo en competidores irrelevantes.
|
|
127
|
+
|
|
128
|
+
## Skills relacionadas
|
|
129
|
+
|
|
130
|
+
- `analisis-plataformas-competencia` — el prerrequisito; produce el set escalonado de competidores que esta skill puntúa.
|
|
131
|
+
- `estructura-informes-competencia` — el siguiente paso; ensambla las fichas puntuadas en un informe entregable al cliente.
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: migraciones-bd
|
|
3
|
+
description: Buenas prácticas de migraciones de base de datos para cambios de esquema, migraciones de datos, rollbacks y despliegues sin downtime en PostgreSQL, MySQL y los ORMs habituales (Prisma, Drizzle, Kysely, Django, TypeORM, golang-migrate).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Patrones de migración de bases de datos
|
|
7
|
+
|
|
8
|
+
Cambios de esquema seguros y reversibles para sistemas en producción.
|
|
9
|
+
|
|
10
|
+
## Cuándo activarla
|
|
11
|
+
|
|
12
|
+
- Al crear o alterar tablas de base de datos
|
|
13
|
+
- Al agregar o eliminar columnas o índices
|
|
14
|
+
- Al ejecutar migraciones de datos (backfill, transformación)
|
|
15
|
+
- Al planificar cambios de esquema sin downtime
|
|
16
|
+
- Al configurar la tooling de migraciones para un proyecto nuevo
|
|
17
|
+
|
|
18
|
+
## Principios fundamentales
|
|
19
|
+
|
|
20
|
+
1. **Todo cambio es una migración** — nunca alteres bases de datos de producción a mano
|
|
21
|
+
2. **En producción las migraciones solo van hacia adelante** — los rollbacks se hacen con nuevas migraciones hacia adelante
|
|
22
|
+
3. **Las migraciones de esquema y de datos van separadas** — nunca mezcles DDL y DML en una misma migración
|
|
23
|
+
4. **Prueba las migraciones contra datos de tamaño de producción** — una migración que funciona con 100 filas puede bloquear con 10 M
|
|
24
|
+
5. **Las migraciones son inmutables una vez desplegadas** — nunca edites una migración que ya corrió en producción
|
|
25
|
+
|
|
26
|
+
## Checklist de seguridad de migraciones
|
|
27
|
+
|
|
28
|
+
Antes de aplicar cualquier migración:
|
|
29
|
+
|
|
30
|
+
- [ ] La migración tiene UP y DOWN (o está marcada explícitamente como irreversible)
|
|
31
|
+
- [ ] Sin locks de tabla completa en tablas grandes (usa operaciones concurrentes)
|
|
32
|
+
- [ ] Las columnas nuevas tienen default o son nullable (nunca agregues NOT NULL sin default)
|
|
33
|
+
- [ ] Los índices se crean de forma concurrente (no inline con CREATE TABLE para tablas existentes)
|
|
34
|
+
- [ ] El backfill de datos es una migración separada del cambio de esquema
|
|
35
|
+
- [ ] Probada contra una copia de los datos de producción
|
|
36
|
+
- [ ] Plan de rollback documentado
|
|
37
|
+
|
|
38
|
+
## Patrones de PostgreSQL
|
|
39
|
+
|
|
40
|
+
### Agregar una columna de forma segura
|
|
41
|
+
|
|
42
|
+
```sql
|
|
43
|
+
-- BIEN: columna nullable, sin lock
|
|
44
|
+
ALTER TABLE users ADD COLUMN avatar_url TEXT;
|
|
45
|
+
|
|
46
|
+
-- BIEN: columna con default (en Postgres 11+ es instantáneo, sin reescritura)
|
|
47
|
+
ALTER TABLE users ADD COLUMN is_active BOOLEAN NOT NULL DEFAULT true;
|
|
48
|
+
|
|
49
|
+
-- MAL: NOT NULL sin default en una tabla existente (exige reescritura completa)
|
|
50
|
+
ALTER TABLE users ADD COLUMN role TEXT NOT NULL;
|
|
51
|
+
-- Esto bloquea la tabla y reescribe todas las filas
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Agregar un índice sin downtime
|
|
55
|
+
|
|
56
|
+
```sql
|
|
57
|
+
-- MAL: bloquea las escrituras en tablas grandes
|
|
58
|
+
CREATE INDEX idx_users_email ON users (email);
|
|
59
|
+
|
|
60
|
+
-- BIEN: no bloquea, permite escrituras concurrentes
|
|
61
|
+
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);
|
|
62
|
+
|
|
63
|
+
-- Nota: CONCURRENTLY no puede ejecutarse dentro de un bloque de transacción
|
|
64
|
+
-- La mayoría de las herramientas de migración necesitan manejo especial para esto
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Renombrar una columna (sin downtime)
|
|
68
|
+
|
|
69
|
+
Nunca renombres directamente en producción. Usa el patrón expandir-contraer:
|
|
70
|
+
|
|
71
|
+
```sql
|
|
72
|
+
-- Paso 1: agregar la columna nueva (migración 001)
|
|
73
|
+
ALTER TABLE users ADD COLUMN display_name TEXT;
|
|
74
|
+
|
|
75
|
+
-- Paso 2: backfill de datos (migración 002, migración de datos)
|
|
76
|
+
UPDATE users SET display_name = username WHERE display_name IS NULL;
|
|
77
|
+
|
|
78
|
+
-- Paso 3: actualizar el código de la aplicación para leer/escribir ambas columnas
|
|
79
|
+
-- Desplegar los cambios de la aplicación
|
|
80
|
+
|
|
81
|
+
-- Paso 4: dejar de escribir en la columna vieja y eliminarla (migración 003)
|
|
82
|
+
ALTER TABLE users DROP COLUMN username;
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Eliminar una columna de forma segura
|
|
86
|
+
|
|
87
|
+
```sql
|
|
88
|
+
-- Paso 1: eliminar todas las referencias a la columna en la aplicación
|
|
89
|
+
-- Paso 2: desplegar la aplicación sin la referencia a la columna
|
|
90
|
+
-- Paso 3: eliminar la columna en la siguiente migración
|
|
91
|
+
ALTER TABLE orders DROP COLUMN legacy_status;
|
|
92
|
+
|
|
93
|
+
-- Para Django: usa SeparateDatabaseAndState para quitarla del modelo
|
|
94
|
+
-- sin generar DROP COLUMN (y elimínala en la siguiente migración)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Migraciones de datos grandes
|
|
98
|
+
|
|
99
|
+
```sql
|
|
100
|
+
-- MAL: actualiza todas las filas en una sola transacción (bloquea la tabla)
|
|
101
|
+
UPDATE users SET normalized_email = LOWER(email);
|
|
102
|
+
|
|
103
|
+
-- BIEN: actualización por lotes con progreso
|
|
104
|
+
DO $$
|
|
105
|
+
DECLARE
|
|
106
|
+
batch_size INT := 10000;
|
|
107
|
+
rows_updated INT;
|
|
108
|
+
BEGIN
|
|
109
|
+
LOOP
|
|
110
|
+
UPDATE users
|
|
111
|
+
SET normalized_email = LOWER(email)
|
|
112
|
+
WHERE id IN (
|
|
113
|
+
SELECT id FROM users
|
|
114
|
+
WHERE normalized_email IS NULL
|
|
115
|
+
LIMIT batch_size
|
|
116
|
+
FOR UPDATE SKIP LOCKED
|
|
117
|
+
);
|
|
118
|
+
GET DIAGNOSTICS rows_updated = ROW_COUNT;
|
|
119
|
+
RAISE NOTICE 'Actualizadas % filas', rows_updated;
|
|
120
|
+
EXIT WHEN rows_updated = 0;
|
|
121
|
+
COMMIT;
|
|
122
|
+
END LOOP;
|
|
123
|
+
END $$;
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Prisma (TypeScript/Node.js)
|
|
127
|
+
|
|
128
|
+
### Flujo de trabajo
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Crear una migración a partir de cambios en el esquema
|
|
132
|
+
npx prisma migrate dev --name add_user_avatar
|
|
133
|
+
|
|
134
|
+
# Aplicar las migraciones pendientes en producción
|
|
135
|
+
npx prisma migrate deploy
|
|
136
|
+
|
|
137
|
+
# Reiniciar la base de datos (solo dev)
|
|
138
|
+
npx prisma migrate reset
|
|
139
|
+
|
|
140
|
+
# Generar el cliente tras cambios en el esquema
|
|
141
|
+
npx prisma generate
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Ejemplo de esquema
|
|
145
|
+
|
|
146
|
+
```prisma
|
|
147
|
+
model User {
|
|
148
|
+
id String @id @default(cuid())
|
|
149
|
+
email String @unique
|
|
150
|
+
name String?
|
|
151
|
+
avatarUrl String? @map("avatar_url")
|
|
152
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
153
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
154
|
+
orders Order[]
|
|
155
|
+
|
|
156
|
+
@@map("users")
|
|
157
|
+
@@index([email])
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Migración con SQL personalizado
|
|
162
|
+
|
|
163
|
+
Para operaciones que Prisma no puede expresar (índices concurrentes, backfills de datos):
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Crear una migración vacía y luego editar el SQL a mano
|
|
167
|
+
npx prisma migrate dev --create-only --name add_email_index
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```sql
|
|
171
|
+
-- migrations/20240115_add_email_index/migration.sql
|
|
172
|
+
-- Prisma no puede generar CONCURRENTLY, así que lo escribimos a mano
|
|
173
|
+
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_users_email ON users (email);
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Drizzle (TypeScript/Node.js)
|
|
177
|
+
|
|
178
|
+
### Flujo de trabajo
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Generar una migración a partir de cambios en el esquema
|
|
182
|
+
npx drizzle-kit generate
|
|
183
|
+
|
|
184
|
+
# Aplicar migraciones
|
|
185
|
+
npx drizzle-kit migrate
|
|
186
|
+
|
|
187
|
+
# Empujar el esquema directamente (solo dev, sin archivo de migración)
|
|
188
|
+
npx drizzle-kit push
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Ejemplo de esquema
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
import { pgTable, text, timestamp, uuid, boolean } from "drizzle-orm/pg-core";
|
|
195
|
+
|
|
196
|
+
export const users = pgTable("users", {
|
|
197
|
+
id: uuid("id").primaryKey().defaultRandom(),
|
|
198
|
+
email: text("email").notNull().unique(),
|
|
199
|
+
name: text("name"),
|
|
200
|
+
isActive: boolean("is_active").notNull().default(true),
|
|
201
|
+
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
202
|
+
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Kysely (TypeScript/Node.js)
|
|
207
|
+
|
|
208
|
+
### Flujo de trabajo (kysely-ctl)
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Inicializar el archivo de configuración (kysely.config.ts)
|
|
212
|
+
kysely init
|
|
213
|
+
|
|
214
|
+
# Crear un archivo de migración nuevo
|
|
215
|
+
kysely migrate make add_user_avatar
|
|
216
|
+
|
|
217
|
+
# Aplicar todas las migraciones pendientes
|
|
218
|
+
kysely migrate latest
|
|
219
|
+
|
|
220
|
+
# Revertir la última migración
|
|
221
|
+
kysely migrate down
|
|
222
|
+
|
|
223
|
+
# Mostrar el estado de las migraciones
|
|
224
|
+
kysely migrate list
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Archivo de migración
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// migrations/2024_01_15_001_create_user_profile.ts
|
|
231
|
+
import { type Kysely, sql } from 'kysely'
|
|
232
|
+
|
|
233
|
+
// IMPORTANTE: usa siempre Kysely<any>, no tu interfaz de BD tipada.
|
|
234
|
+
// Las migraciones quedan congeladas en el tiempo y no deben depender
|
|
235
|
+
// de los tipos del esquema actual.
|
|
236
|
+
export async function up(db: Kysely<any>): Promise<void> {
|
|
237
|
+
await db.schema
|
|
238
|
+
.createTable('user_profile')
|
|
239
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
240
|
+
.addColumn('email', 'varchar(255)', (col) => col.notNull().unique())
|
|
241
|
+
.addColumn('avatar_url', 'text')
|
|
242
|
+
.addColumn('created_at', 'timestamp', (col) =>
|
|
243
|
+
col.defaultTo(sql`now()`).notNull()
|
|
244
|
+
)
|
|
245
|
+
.execute()
|
|
246
|
+
|
|
247
|
+
await db.schema
|
|
248
|
+
.createIndex('idx_user_profile_avatar')
|
|
249
|
+
.on('user_profile')
|
|
250
|
+
.column('avatar_url')
|
|
251
|
+
.execute()
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export async function down(db: Kysely<any>): Promise<void> {
|
|
255
|
+
await db.schema.dropTable('user_profile').execute()
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Migrador programático
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
import { Migrator, FileMigrationProvider } from 'kysely'
|
|
263
|
+
import { promises as fs } from 'fs'
|
|
264
|
+
import * as path from 'path'
|
|
265
|
+
// Solo ESM — en CJS puedes usar __dirname directamente
|
|
266
|
+
import { fileURLToPath } from 'url'
|
|
267
|
+
const migrationFolder = path.join(
|
|
268
|
+
path.dirname(fileURLToPath(import.meta.url)),
|
|
269
|
+
'./migrations',
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
// `db` es tu instancia de base de datos Kysely<any>
|
|
273
|
+
const migrator = new Migrator({
|
|
274
|
+
db,
|
|
275
|
+
provider: new FileMigrationProvider({
|
|
276
|
+
fs,
|
|
277
|
+
path,
|
|
278
|
+
migrationFolder,
|
|
279
|
+
}),
|
|
280
|
+
// ADVERTENCIA: habilítalo solo en desarrollo. Desactiva la validación
|
|
281
|
+
// de orden por timestamp, lo que puede causar drift de esquema
|
|
282
|
+
// entre entornos.
|
|
283
|
+
// allowUnorderedMigrations: true,
|
|
284
|
+
})
|
|
285
|
+
|
|
286
|
+
const { error, results } = await migrator.migrateToLatest()
|
|
287
|
+
|
|
288
|
+
results?.forEach((it) => {
|
|
289
|
+
if (it.status === 'Success') {
|
|
290
|
+
console.log(`la migración "${it.migrationName}" se ejecutó correctamente`)
|
|
291
|
+
} else if (it.status === 'Error') {
|
|
292
|
+
console.error(`falló la ejecución de la migración "${it.migrationName}"`)
|
|
293
|
+
}
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
if (error) {
|
|
297
|
+
console.error('la migración falló', error)
|
|
298
|
+
process.exit(1)
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Django (Python)
|
|
303
|
+
|
|
304
|
+
### Flujo de trabajo
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# Generar una migración a partir de cambios en los modelos
|
|
308
|
+
python manage.py makemigrations
|
|
309
|
+
|
|
310
|
+
# Aplicar migraciones
|
|
311
|
+
python manage.py migrate
|
|
312
|
+
|
|
313
|
+
# Mostrar el estado de las migraciones
|
|
314
|
+
python manage.py showmigrations
|
|
315
|
+
|
|
316
|
+
# Generar una migración vacía para SQL personalizado
|
|
317
|
+
python manage.py makemigrations --empty app_name -n description
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Migración de datos
|
|
321
|
+
|
|
322
|
+
```python
|
|
323
|
+
from django.db import migrations
|
|
324
|
+
|
|
325
|
+
def backfill_display_names(apps, schema_editor):
|
|
326
|
+
User = apps.get_model("accounts", "User")
|
|
327
|
+
batch_size = 5000
|
|
328
|
+
users = User.objects.filter(display_name="")
|
|
329
|
+
while users.exists():
|
|
330
|
+
batch = list(users[:batch_size])
|
|
331
|
+
for user in batch:
|
|
332
|
+
user.display_name = user.username
|
|
333
|
+
User.objects.bulk_update(batch, ["display_name"], batch_size=batch_size)
|
|
334
|
+
|
|
335
|
+
def reverse_backfill(apps, schema_editor):
|
|
336
|
+
pass # Migración de datos, no necesita reversa
|
|
337
|
+
|
|
338
|
+
class Migration(migrations.Migration):
|
|
339
|
+
dependencies = [("accounts", "0015_add_display_name")]
|
|
340
|
+
|
|
341
|
+
operations = [
|
|
342
|
+
migrations.RunPython(backfill_display_names, reverse_backfill),
|
|
343
|
+
]
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### SeparateDatabaseAndState
|
|
347
|
+
|
|
348
|
+
Elimina una columna del modelo de Django sin borrarla de la base de datos de inmediato:
|
|
349
|
+
|
|
350
|
+
```python
|
|
351
|
+
class Migration(migrations.Migration):
|
|
352
|
+
operations = [
|
|
353
|
+
migrations.SeparateDatabaseAndState(
|
|
354
|
+
state_operations=[
|
|
355
|
+
migrations.RemoveField(model_name="user", name="legacy_field"),
|
|
356
|
+
],
|
|
357
|
+
database_operations=[], # No tocar la BD todavía
|
|
358
|
+
),
|
|
359
|
+
]
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## golang-migrate (Go)
|
|
363
|
+
|
|
364
|
+
### Flujo de trabajo
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
# Crear el par de migraciones
|
|
368
|
+
migrate create -ext sql -dir migrations -seq add_user_avatar
|
|
369
|
+
|
|
370
|
+
# Aplicar todas las migraciones pendientes
|
|
371
|
+
migrate -path migrations -database "$DATABASE_URL" up
|
|
372
|
+
|
|
373
|
+
# Revertir la última migración
|
|
374
|
+
migrate -path migrations -database "$DATABASE_URL" down 1
|
|
375
|
+
|
|
376
|
+
# Forzar versión (arreglar estado dirty)
|
|
377
|
+
migrate -path migrations -database "$DATABASE_URL" force VERSION
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Archivos de migración
|
|
381
|
+
|
|
382
|
+
```sql
|
|
383
|
+
-- migrations/000003_add_user_avatar.up.sql
|
|
384
|
+
ALTER TABLE users ADD COLUMN avatar_url TEXT;
|
|
385
|
+
CREATE INDEX CONCURRENTLY idx_users_avatar ON users (avatar_url) WHERE avatar_url IS NOT NULL;
|
|
386
|
+
|
|
387
|
+
-- migrations/000003_add_user_avatar.down.sql
|
|
388
|
+
DROP INDEX IF EXISTS idx_users_avatar;
|
|
389
|
+
ALTER TABLE users DROP COLUMN IF EXISTS avatar_url;
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## Estrategia de migración sin downtime
|
|
393
|
+
|
|
394
|
+
Para cambios críticos en producción, sigue el patrón expandir-contraer:
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
Fase 1: EXPANDIR
|
|
398
|
+
- Agregar la columna/tabla nueva (nullable o con default)
|
|
399
|
+
- Deploy: la app escribe en AMBAS, la vieja y la nueva
|
|
400
|
+
- Backfill de los datos existentes
|
|
401
|
+
|
|
402
|
+
Fase 2: MIGRAR
|
|
403
|
+
- Deploy: la app lee de la NUEVA, escribe en AMBAS
|
|
404
|
+
- Verificar la consistencia de los datos
|
|
405
|
+
|
|
406
|
+
Fase 3: CONTRAER
|
|
407
|
+
- Deploy: la app solo usa la NUEVA
|
|
408
|
+
- Eliminar la columna/tabla vieja en una migración separada
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Ejemplo de cronograma
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
Día 1: la migración agrega la columna new_status (nullable)
|
|
415
|
+
Día 1: deploy de la app v2 — escribe en status y new_status
|
|
416
|
+
Día 2: ejecutar la migración de backfill para las filas existentes
|
|
417
|
+
Día 3: deploy de la app v3 — lee solo de new_status
|
|
418
|
+
Día 7: la migración elimina la columna status vieja
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
## Antipatrones
|
|
422
|
+
|
|
423
|
+
| Antipatrón | Por qué falla | Mejor enfoque |
|
|
424
|
+
|-------------|--------------|-----------------|
|
|
425
|
+
| SQL manual en producción | Sin trazabilidad, irrepetible | Usa siempre archivos de migración |
|
|
426
|
+
| Editar migraciones desplegadas | Causa drift entre entornos | Crea una migración nueva en su lugar |
|
|
427
|
+
| NOT NULL sin default | Bloquea la tabla, reescribe todas las filas | Agrega nullable, haz backfill y luego agrega la restricción |
|
|
428
|
+
| Índice inline en tabla grande | Bloquea escrituras durante la construcción | CREATE INDEX CONCURRENTLY |
|
|
429
|
+
| Esquema + datos en una migración | Difícil de revertir, transacciones largas | Migraciones separadas |
|
|
430
|
+
| Eliminar la columna antes de quitar el código | La aplicación falla por columna inexistente | Quita el código primero, elimina la columna en el siguiente deploy |
|