theus-cli-linux-arm64 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/higiene-motor/PARCHES.md +244 -0
- package/vendor/higiene-motor/audit_dir.py +166 -0
- package/vendor/higiene-motor/audit_lib.py +333 -0
- package/vendor/higiene-motor/audit_website.py +635 -0
- package/vendor/higiene-motor/av_meta.py +498 -0
- package/vendor/higiene-motor/check_staged.py +71 -0
- package/vendor/higiene-motor/clean_ctrlregen.py +212 -0
- package/vendor/higiene-motor/clean_file.py +237 -0
- package/vendor/higiene-motor/clean_image.py +218 -0
- package/vendor/higiene-motor/clean_staged.py +143 -0
- package/vendor/higiene-motor/clean_text.py +108 -0
- package/vendor/higiene-motor/common.py +486 -0
- package/vendor/higiene-motor/container_meta.py +2522 -0
- package/vendor/higiene-motor/detect_gumbel.py +308 -0
- package/vendor/higiene-motor/detect_text_watermark.py +613 -0
- package/vendor/higiene-motor/format_dispatch.py +157 -0
- package/vendor/higiene-motor/hook_written_file.py +253 -0
- package/vendor/higiene-motor/image_meta.py +2171 -0
- package/vendor/higiene-motor/inspect_file.py +138 -0
- package/vendor/higiene-motor/inspect_image.py +72 -0
- package/vendor/higiene-motor/inspect_text.py +86 -0
- package/vendor/higiene-motor/markdiffusion_harness.py +533 -0
- package/vendor/higiene-motor/rewrite_text.py +737 -0
- package/vendor/higiene-motor/score_stylometry.py +460 -0
- package/vendor/higiene-motor/score_synthid.py +165 -0
- package/vendor/higiene-motor/server.py +1059 -0
- package/vendor/higiene-motor/synthid_score_server.py +176 -0
- package/vendor/higiene-motor/text_detectors.py +433 -0
- package/vendor/higiene-motor/text_unicode.py +730 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +0 -6
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +0 -72
- package/vendor/theus-arsenal/.mailmap +0 -2
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +0 -25
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +0 -20
- package/vendor/theus-arsenal/AUTHORS.md +0 -8
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +0 -11
- package/vendor/theus-arsenal/LICENSE +0 -26
- package/vendor/theus-arsenal/PROVENANCE.md +0 -9
- package/vendor/theus-arsenal/README.md +0 -41
- package/vendor/theus-arsenal/THIRD_PARTY.md +0 -80
- package/vendor/theus-arsenal/agents/actualizador-docs.md +0 -123
- package/vendor/theus-arsenal/agents/analista-comentarios.md +0 -53
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +0 -60
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +0 -53
- package/vendor/theus-arsenal/agents/analista-tipos.md +0 -49
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +0 -148
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +0 -90
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +0 -116
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +0 -219
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +0 -206
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +0 -58
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +0 -76
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +0 -135
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +0 -96
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +0 -257
- package/vendor/theus-arsenal/agents/escaner-secretos.md +0 -196
- package/vendor/theus-arsenal/agents/especialista-seo.md +0 -70
- package/vendor/theus-arsenal/agents/estratega-marketing.md +0 -158
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +0 -214
- package/vendor/theus-arsenal/agents/evaluador-harness.md +0 -217
- package/vendor/theus-arsenal/agents/explorador-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/extractor-specs.md +0 -214
- package/vendor/theus-arsenal/agents/generador-harness.md +0 -139
- package/vendor/theus-arsenal/agents/guia-tdd.md +0 -99
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +0 -162
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +0 -93
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +0 -454
- package/vendor/theus-arsenal/agents/planificador-harness.md +0 -107
- package/vendor/theus-arsenal/agents/planificador.md +0 -221
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +0 -181
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +0 -98
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +0 -209
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +0 -253
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +0 -102
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +0 -274
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +0 -214
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +0 -156
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +0 -169
- package/vendor/theus-arsenal/agents/resolutor-builds.md +0 -122
- package/vendor/theus-arsenal/agents/revisor-bd.md +0 -97
- package/vendor/theus-arsenal/agents/revisor-codigo.md +0 -291
- package/vendor/theus-arsenal/agents/revisor-config-red.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-cpp.md +0 -80
- package/vendor/theus-arsenal/agents/revisor-csharp.md +0 -109
- package/vendor/theus-arsenal/agents/revisor-django.md +0 -168
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +0 -82
- package/vendor/theus-arsenal/agents/revisor-flutter.md +0 -251
- package/vendor/theus-arsenal/agents/revisor-go.md +0 -84
- package/vendor/theus-arsenal/agents/revisor-java.md +0 -192
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +0 -171
- package/vendor/theus-arsenal/agents/revisor-ml.md +0 -159
- package/vendor/theus-arsenal/agents/revisor-php.md +0 -108
- package/vendor/theus-arsenal/agents/revisor-python.md +0 -106
- package/vendor/theus-arsenal/agents/revisor-react.md +0 -166
- package/vendor/theus-arsenal/agents/revisor-rust.md +0 -102
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +0 -95
- package/vendor/theus-arsenal/agents/revisor-swift.md +0 -115
- package/vendor/theus-arsenal/agents/revisor-typescript.md +0 -123
- package/vendor/theus-arsenal/agents/revisor-vue.md +0 -205
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +0 -55
- package/vendor/theus-arsenal/commands/actualizar-docs.md +0 -88
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +0 -78
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +0 -109
- package/vendor/theus-arsenal/commands/aprender.md +0 -74
- package/vendor/theus-arsenal/commands/arreglar-build.md +0 -66
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +0 -153
- package/vendor/theus-arsenal/commands/build-cpp.md +0 -173
- package/vendor/theus-arsenal/commands/build-flutter.md +0 -164
- package/vendor/theus-arsenal/commands/build-go.md +0 -183
- package/vendor/theus-arsenal/commands/build-gradle.md +0 -75
- package/vendor/theus-arsenal/commands/build-kotlin.md +0 -176
- package/vendor/theus-arsenal/commands/build-react.md +0 -187
- package/vendor/theus-arsenal/commands/build-rust.md +0 -187
- package/vendor/theus-arsenal/commands/campana-marketing.md +0 -125
- package/vendor/theus-arsenal/commands/checkpoint.md +0 -78
- package/vendor/theus-arsenal/commands/cobertura-tests.md +0 -73
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +0 -86
- package/vendor/theus-arsenal/commands/consulta.md +0 -164
- package/vendor/theus-arsenal/commands/control-calidad.md +0 -50
- package/vendor/theus-arsenal/commands/crear-skill.md +0 -77
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +0 -30
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +0 -17
- package/vendor/theus-arsenal/commands/epica-descomponer.md +0 -22
- package/vendor/theus-arsenal/commands/epica-publicar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-reclamar.md +0 -25
- package/vendor/theus-arsenal/commands/epica-revisar.md +0 -22
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-validar.md +0 -21
- package/vendor/theus-arsenal/commands/evolucionar.md +0 -176
- package/vendor/theus-arsenal/commands/funcionalidad.md +0 -49
- package/vendor/theus-arsenal/commands/guardar-sesion.md +0 -278
- package/vendor/theus-arsenal/commands/harness-build.md +0 -111
- package/vendor/theus-arsenal/commands/harness-diseno.md +0 -46
- package/vendor/theus-arsenal/commands/informe-costos.md +0 -90
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +0 -36
- package/vendor/theus-arsenal/commands/instintos-estado.md +0 -53
- package/vendor/theus-arsenal/commands/instintos-exportar.md +0 -69
- package/vendor/theus-arsenal/commands/instintos-importar.md +0 -120
- package/vendor/theus-arsenal/commands/lienzo-planes.md +0 -48
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +0 -84
- package/vendor/theus-arsenal/commands/modo-seguro.md +0 -96
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +0 -36
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +0 -38
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +0 -36
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +0 -40
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +0 -44
- package/vendor/theus-arsenal/commands/orq-revisar.md +0 -135
- package/vendor/theus-arsenal/commands/plan-prd.md +0 -160
- package/vendor/theus-arsenal/commands/plan.md +0 -198
- package/vendor/theus-arsenal/commands/podar.md +0 -31
- package/vendor/theus-arsenal/commands/pr.md +0 -181
- package/vendor/theus-arsenal/commands/promover.md +0 -41
- package/vendor/theus-arsenal/commands/proyectos.md +0 -33
- package/vendor/theus-arsenal/commands/prp-commit.md +0 -112
- package/vendor/theus-arsenal/commands/prp-implementar.md +0 -385
- package/vendor/theus-arsenal/commands/prp-planificar.md +0 -501
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +0 -160
- package/vendor/theus-arsenal/commands/revisar-codigo.md +0 -289
- package/vendor/theus-arsenal/commands/revisar-cpp.md +0 -132
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +0 -39
- package/vendor/theus-arsenal/commands/revisar-flutter.md +0 -115
- package/vendor/theus-arsenal/commands/revisar-go.md +0 -148
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +0 -140
- package/vendor/theus-arsenal/commands/revisar-pr.md +0 -37
- package/vendor/theus-arsenal/commands/revisar-python.md +0 -297
- package/vendor/theus-arsenal/commands/revisar-react.md +0 -170
- package/vendor/theus-arsenal/commands/revisar-rust.md +0 -142
- package/vendor/theus-arsenal/commands/revisar-vue.md +0 -174
- package/vendor/theus-arsenal/commands/salud-skills.md +0 -52
- package/vendor/theus-arsenal/commands/sesiones.md +0 -345
- package/vendor/theus-arsenal/commands/test-cpp.md +0 -252
- package/vendor/theus-arsenal/commands/test-flutter.md +0 -143
- package/vendor/theus-arsenal/commands/test-go.md +0 -268
- package/vendor/theus-arsenal/commands/test-kotlin.md +0 -312
- package/vendor/theus-arsenal/commands/test-react.md +0 -265
- package/vendor/theus-arsenal/commands/test-rust.md +0 -309
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +0 -43
- package/vendor/theus-arsenal/hooks/hooks.json +0 -274
- package/vendor/theus-arsenal/package.json +0 -6
- package/vendor/theus-arsenal/rules/angular/coding-style.md +0 -182
- package/vendor/theus-arsenal/rules/angular/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/angular/patterns.md +0 -249
- package/vendor/theus-arsenal/rules/angular/security.md +0 -87
- package/vendor/theus-arsenal/rules/angular/testing.md +0 -164
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +0 -153
- package/vendor/theus-arsenal/rules/arkts/hooks.md +0 -80
- package/vendor/theus-arsenal/rules/arkts/patterns.md +0 -236
- package/vendor/theus-arsenal/rules/arkts/security.md +0 -141
- package/vendor/theus-arsenal/rules/arkts/testing.md +0 -126
- package/vendor/theus-arsenal/rules/common/agents.md +0 -49
- package/vendor/theus-arsenal/rules/common/code-review.md +0 -123
- package/vendor/theus-arsenal/rules/common/coding-style.md +0 -90
- package/vendor/theus-arsenal/rules/common/development-workflow.md +0 -44
- package/vendor/theus-arsenal/rules/common/git-workflow.md +0 -24
- package/vendor/theus-arsenal/rules/common/hooks.md +0 -32
- package/vendor/theus-arsenal/rules/common/patterns.md +0 -31
- package/vendor/theus-arsenal/rules/common/performance.md +0 -53
- package/vendor/theus-arsenal/rules/common/security.md +0 -29
- package/vendor/theus-arsenal/rules/common/testing.md +0 -57
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +0 -44
- package/vendor/theus-arsenal/rules/cpp/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/cpp/patterns.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/security.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/testing.md +0 -44
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +0 -72
- package/vendor/theus-arsenal/rules/csharp/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/csharp/patterns.md +0 -50
- package/vendor/theus-arsenal/rules/csharp/security.md +0 -58
- package/vendor/theus-arsenal/rules/csharp/testing.md +0 -50
- package/vendor/theus-arsenal/rules/dart/coding-style.md +0 -159
- package/vendor/theus-arsenal/rules/dart/hooks.md +0 -68
- package/vendor/theus-arsenal/rules/dart/patterns.md +0 -261
- package/vendor/theus-arsenal/rules/dart/security.md +0 -135
- package/vendor/theus-arsenal/rules/dart/testing.md +0 -215
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +0 -112
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +0 -26
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +0 -111
- package/vendor/theus-arsenal/rules/fsharp/security.md +0 -76
- package/vendor/theus-arsenal/rules/fsharp/testing.md +0 -62
- package/vendor/theus-arsenal/rules/golang/coding-style.md +0 -32
- package/vendor/theus-arsenal/rules/golang/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/golang/patterns.md +0 -45
- package/vendor/theus-arsenal/rules/golang/security.md +0 -34
- package/vendor/theus-arsenal/rules/golang/testing.md +0 -31
- package/vendor/theus-arsenal/rules/java/coding-style.md +0 -114
- package/vendor/theus-arsenal/rules/java/hooks.md +0 -18
- package/vendor/theus-arsenal/rules/java/patterns.md +0 -147
- package/vendor/theus-arsenal/rules/java/security.md +0 -101
- package/vendor/theus-arsenal/rules/java/testing.md +0 -133
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +0 -86
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +0 -146
- package/vendor/theus-arsenal/rules/kotlin/security.md +0 -82
- package/vendor/theus-arsenal/rules/kotlin/testing.md +0 -128
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +0 -54
- package/vendor/theus-arsenal/rules/nuxt/security.md +0 -48
- package/vendor/theus-arsenal/rules/nuxt/testing.md +0 -49
- package/vendor/theus-arsenal/rules/php/coding-style.md +0 -40
- package/vendor/theus-arsenal/rules/php/hooks.md +0 -24
- package/vendor/theus-arsenal/rules/php/patterns.md +0 -33
- package/vendor/theus-arsenal/rules/php/security.md +0 -37
- package/vendor/theus-arsenal/rules/php/testing.md +0 -38
- package/vendor/theus-arsenal/rules/python/coding-style.md +0 -42
- package/vendor/theus-arsenal/rules/python/fastapi.md +0 -58
- package/vendor/theus-arsenal/rules/python/hooks.md +0 -19
- package/vendor/theus-arsenal/rules/python/patterns.md +0 -39
- package/vendor/theus-arsenal/rules/python/security.md +0 -30
- package/vendor/theus-arsenal/rules/python/testing.md +0 -38
- package/vendor/theus-arsenal/rules/react/coding-style.md +0 -109
- package/vendor/theus-arsenal/rules/react/hooks.md +0 -187
- package/vendor/theus-arsenal/rules/react/patterns.md +0 -194
- package/vendor/theus-arsenal/rules/react/security.md +0 -180
- package/vendor/theus-arsenal/rules/react/testing.md +0 -208
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +0 -55
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +0 -71
- package/vendor/theus-arsenal/rules/react-native/hooks.md +0 -28
- package/vendor/theus-arsenal/rules/react-native/patterns.md +0 -88
- package/vendor/theus-arsenal/rules/react-native/performance.md +0 -45
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +0 -51
- package/vendor/theus-arsenal/rules/react-native/security.md +0 -43
- package/vendor/theus-arsenal/rules/react-native/testing.md +0 -52
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +0 -46
- package/vendor/theus-arsenal/rules/ruby/hooks.md +0 -37
- package/vendor/theus-arsenal/rules/ruby/patterns.md +0 -44
- package/vendor/theus-arsenal/rules/ruby/security.md +0 -51
- package/vendor/theus-arsenal/rules/ruby/testing.md +0 -51
- package/vendor/theus-arsenal/rules/rust/coding-style.md +0 -151
- package/vendor/theus-arsenal/rules/rust/hooks.md +0 -16
- package/vendor/theus-arsenal/rules/rust/patterns.md +0 -168
- package/vendor/theus-arsenal/rules/rust/security.md +0 -141
- package/vendor/theus-arsenal/rules/rust/testing.md +0 -154
- package/vendor/theus-arsenal/rules/swift/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/swift/hooks.md +0 -20
- package/vendor/theus-arsenal/rules/swift/patterns.md +0 -66
- package/vendor/theus-arsenal/rules/swift/security.md +0 -33
- package/vendor/theus-arsenal/rules/swift/testing.md +0 -45
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +0 -199
- package/vendor/theus-arsenal/rules/typescript/hooks.md +0 -22
- package/vendor/theus-arsenal/rules/typescript/patterns.md +0 -52
- package/vendor/theus-arsenal/rules/typescript/security.md +0 -28
- package/vendor/theus-arsenal/rules/typescript/testing.md +0 -18
- package/vendor/theus-arsenal/rules/vue/coding-style.md +0 -54
- package/vendor/theus-arsenal/rules/vue/hooks.md +0 -45
- package/vendor/theus-arsenal/rules/vue/patterns.md +0 -56
- package/vendor/theus-arsenal/rules/vue/security.md +0 -46
- package/vendor/theus-arsenal/rules/vue/testing.md +0 -53
- package/vendor/theus-arsenal/rules/web/coding-style.md +0 -108
- package/vendor/theus-arsenal/rules/web/design-quality.md +0 -75
- package/vendor/theus-arsenal/rules/web/hooks.md +0 -141
- package/vendor/theus-arsenal/rules/web/patterns.md +0 -91
- package/vendor/theus-arsenal/rules/web/performance.md +0 -76
- package/vendor/theus-arsenal/rules/web/security.md +0 -69
- package/vendor/theus-arsenal/rules/web/testing.md +0 -67
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +0 -192
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +0 -556
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +0 -92
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +0 -16
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +0 -171
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +0 -132
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +0 -158
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +0 -208
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +0 -280
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +0 -87
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +0 -24
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +0 -60
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +0 -94
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +0 -54
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +0 -98
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +0 -447
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +0 -232
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +0 -27
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +0 -101
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +0 -49
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +0 -168
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +0 -271
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +0 -749
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +0 -161
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +0 -340
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +0 -906
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +0 -263
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +0 -286
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +0 -289
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +0 -1278
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +0 -96
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +0 -66
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +0 -79
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +0 -185
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +0 -54
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +0 -237
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +0 -120
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +0 -434
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +0 -238
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +0 -534
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +0 -274
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +0 -546
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +0 -451
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +0 -193
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +0 -101
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +0 -138
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +0 -483
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +0 -155
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +0 -137
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +0 -555
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +0 -501
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +0 -414
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +0 -22
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +0 -200
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +0 -157
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +0 -246
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +0 -232
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +0 -205
- package/vendor/theus-arsenal/scripts/lib/utils.js +0 -658
- package/vendor/theus-arsenal/scripts/plan-canvas.js +0 -341
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +0 -46
- package/vendor/theus-arsenal/scripts/skills-health.js +0 -143
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +0 -444
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +0 -72
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +0 -771
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +0 -137
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +0 -233
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +0 -335
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +0 -374
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +0 -188
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +0 -153
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +0 -253
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +0 -8
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +0 -594
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +0 -325
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +0 -1918
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +0 -23
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +0 -1420
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +0 -275
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +0 -340
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +0 -112
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +0 -257
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +0 -243
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +0 -89
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +0 -87
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +0 -71
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +0 -90
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +0 -409
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +0 -86
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +0 -176
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +0 -174
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +0 -173
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +0 -125
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +0 -160
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +0 -118
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +0 -138
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +0 -104
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +0 -115
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +0 -69
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +0 -224
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +0 -201
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +0 -119
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +0 -169
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +0 -284
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +0 -46
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +0 -86
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +0 -29
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +0 -173
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +0 -100
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +0 -78
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +0 -172
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +0 -104
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +0 -75
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +0 -146
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +0 -126
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +0 -229
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +0 -152
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +0 -68
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +0 -138
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +0 -130
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +0 -34
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +0 -143
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +0 -106
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +0 -11
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +0 -20
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +0 -179
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +0 -19
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +0 -122
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +0 -52
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +0 -171
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +0 -270
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +0 -128
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +0 -369
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +0 -42
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +0 -47
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +0 -53
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +0 -61
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +0 -62
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +0 -54
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +0 -50
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +0 -133
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +0 -230
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +0 -58
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +0 -129
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +0 -89
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +0 -522
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +0 -282
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +0 -879
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +0 -289
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +0 -493
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +0 -548
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +0 -727
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +0 -389
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +0 -129
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +0 -714
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +0 -343
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +0 -584
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +0 -224
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +0 -5
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +0 -123
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +0 -48
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +0 -39
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +0 -166
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +0 -258
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +0 -235
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +0 -208
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +0 -204
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +0 -64
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +0 -212
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +0 -264
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +0 -299
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +0 -96
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +0 -820
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +0 -312
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +0 -87
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +0 -76
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +0 -60
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +0 -102
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +0 -150
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +0 -194
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +0 -87
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +0 -57
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +0 -170
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +0 -87
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +0 -59
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +0 -161
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +0 -82
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +0 -116
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +0 -241
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +0 -101
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +0 -44
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +0 -24
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +0 -152
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +0 -40
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +0 -214
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +0 -36
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +0 -210
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +0 -402
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +0 -238
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +0 -131
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +0 -430
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +0 -86
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +0 -592
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +0 -136
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +0 -51
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +0 -159
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +0 -123
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +0 -124
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +0 -70
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +0 -182
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +0 -75
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +0 -37
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +0 -38
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +0 -134
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +0 -49
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +0 -160
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +0 -410
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +0 -91
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +0 -117
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +0 -120
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +0 -83
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +0 -43
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +0 -80
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +0 -63
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +0 -101
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +0 -61
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +0 -122
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +0 -44
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +0 -77
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +0 -52
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +0 -45
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +0 -87
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +0 -68
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +0 -795
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +0 -94
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +0 -114
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +0 -65
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +0 -432
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +0 -560
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +0 -443
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +0 -566
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +0 -426
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +0 -739
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +0 -456
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +0 -363
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +0 -513
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +0 -655
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +0 -674
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +0 -717
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +0 -724
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +0 -694
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +0 -754
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +0 -414
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +0 -66
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +0 -420
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +0 -229
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +0 -508
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +0 -399
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +0 -750
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +0 -400
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +0 -729
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +0 -339
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +0 -401
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +0 -504
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +0 -314
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +0 -261
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +0 -281
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +0 -90
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +0 -60
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +0 -64
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +0 -449
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +0 -60
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +0 -102
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +0 -189
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +0 -330
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +0 -122
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +0 -419
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +0 -418
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +0 -96
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +0 -153
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +0 -242
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +0 -126
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +0 -221
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +0 -388
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +0 -567
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +0 -442
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +0 -302
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +0 -505
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +0 -361
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +0 -83
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +0 -163
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +0 -122
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +0 -145
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +0 -648
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +0 -945
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +0 -507
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +0 -474
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +0 -279
- package/vendor/theus-arsenal/skills/seo/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +0 -65
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +0 -735
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +0 -673
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +0 -817
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +0 -328
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +0 -719
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +0 -829
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +0 -479
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +0 -196
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +0 -815
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +0 -421
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +0 -506
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +0 -211
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +0 -470
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +0 -485
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +0 -550
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +0 -407
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +0 -101
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +0 -443
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +0 -331
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +0 -564
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +0 -65
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +0 -230
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +0 -406
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +0 -118
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +0 -279
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +0 -52
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +0 -108
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +0 -106
|
@@ -1,420 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: patrones-mysql
|
|
3
|
-
description: Patrones de esquema, consultas, indexación, transacciones, replicación y pools de conexiones para MySQL y MariaDB en backends de producción.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Patrones de MySQL
|
|
7
|
-
|
|
8
|
-
Usa esta skill al trabajar en diseño de esquemas de MySQL o MariaDB, migraciones,
|
|
9
|
-
investigación de consultas lentas, transacciones de tipo cola, pools de conexiones
|
|
10
|
-
o configuración de bases de datos en producción. Prefiere comprobaciones exactas de
|
|
11
|
-
versión antes de aplicar un patrón específico de una funcionalidad, porque MySQL y
|
|
12
|
-
MariaDB han divergido en varios detalles de SQL.
|
|
13
|
-
|
|
14
|
-
## Activación
|
|
15
|
-
|
|
16
|
-
- Diseñar tablas, índices y constraints de MySQL o MariaDB
|
|
17
|
-
- Revisar migraciones antes de ejecutarlas sobre tablas grandes de producción
|
|
18
|
-
- Depurar consultas lentas, esperas de locks, deadlocks o agotamiento de conexiones
|
|
19
|
-
- Añadir paginación por keyset, upserts, búsqueda full-text, columnas JSON o colas
|
|
20
|
-
- Configurar pools de conexiones de la aplicación, réplicas de lectura, TLS o logs de consultas lentas
|
|
21
|
-
|
|
22
|
-
## Comprobación de versión
|
|
23
|
-
|
|
24
|
-
Empieza identificando el motor y la versión:
|
|
25
|
-
|
|
26
|
-
```sql
|
|
27
|
-
SELECT VERSION();
|
|
28
|
-
SHOW VARIABLES LIKE 'version_comment';
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Mantén separadas las recomendaciones de MySQL y MariaDB cuando la sintaxis difiere:
|
|
32
|
-
|
|
33
|
-
- MySQL documenta los alias de fila como el reemplazo de `VALUES(col)` en
|
|
34
|
-
`ON DUPLICATE KEY UPDATE`; `VALUES(col)` está deprecado ahí.
|
|
35
|
-
- MariaDB documenta `VALUES(col)` como la forma soportada de referenciar los
|
|
36
|
-
valores insertados en `ON DUPLICATE KEY UPDATE`; úsalo para compatibilidad
|
|
37
|
-
entre motores.
|
|
38
|
-
- `SKIP LOCKED` es apropiado solo para trabajo de tipo cola. Salta las filas
|
|
39
|
-
bloqueadas y puede devolver una vista inconsistente, así que no lo uses para
|
|
40
|
-
lecturas contables generales ni sensibles a la integridad.
|
|
41
|
-
|
|
42
|
-
## Valores por defecto de esquema
|
|
43
|
-
|
|
44
|
-
```sql
|
|
45
|
-
CREATE TABLE orders (
|
|
46
|
-
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
47
|
-
account_id BIGINT UNSIGNED NOT NULL,
|
|
48
|
-
status VARCHAR(32) NOT NULL,
|
|
49
|
-
total DECIMAL(15, 2) NOT NULL,
|
|
50
|
-
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
51
|
-
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
52
|
-
deleted_at DATETIME NULL,
|
|
53
|
-
PRIMARY KEY (id),
|
|
54
|
-
KEY idx_orders_account_status_created (account_id, status, created_at),
|
|
55
|
-
KEY idx_orders_active (account_id, deleted_at)
|
|
56
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Elecciones por defecto:
|
|
60
|
-
|
|
61
|
-
| Caso de uso | Prefiere | Evita |
|
|
62
|
-
| --- | --- | --- |
|
|
63
|
-
| Claves primarias sustitutas | `BIGINT UNSIGNED AUTO_INCREMENT` | `INT` en tablas que pueden superar 2 000 millones de filas |
|
|
64
|
-
| Claves de búsqueda UUID | `BINARY(16)` con helpers de conversión | Claves primarias `VARCHAR(36)` en tablas calientes |
|
|
65
|
-
| Dinero y cantidades exactas | `DECIMAL(p, s)` | `FLOAT` o `DOUBLE` |
|
|
66
|
-
| Texto visible al usuario | Tablas e índices en `utf8mb4` | Los defaults `utf8` / `utf8mb3` de MySQL |
|
|
67
|
-
| Timestamps de aplicación | `DATETIME` con UTC gestionado por la app | Suponer que `DATETIME` guarda metadatos de zona horaria |
|
|
68
|
-
| Borrados lógicos | `deleted_at DATETIME NULL` más índices acotados | Filtrar filas borradas lógicamente sin índice |
|
|
69
|
-
| Valores de estado extensibles | Tabla de catálogo o `VARCHAR` restringido | `ENUM` cuando los valores cambian a menudo |
|
|
70
|
-
|
|
71
|
-
## Indexación
|
|
72
|
-
|
|
73
|
-
El orden de un índice compuesto normalmente sigue primero los predicados de
|
|
74
|
-
igualdad y luego las columnas de rango u ordenación:
|
|
75
|
-
|
|
76
|
-
```sql
|
|
77
|
-
CREATE INDEX idx_orders_account_status_created
|
|
78
|
-
ON orders (account_id, status, created_at);
|
|
79
|
-
|
|
80
|
-
SELECT id, total
|
|
81
|
-
FROM orders
|
|
82
|
-
WHERE account_id = ?
|
|
83
|
-
AND status = 'pending'
|
|
84
|
-
AND created_at >= ?
|
|
85
|
-
ORDER BY created_at DESC
|
|
86
|
-
LIMIT 50;
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Usa `EXPLAIN` antes de añadir o cambiar un índice:
|
|
90
|
-
|
|
91
|
-
```sql
|
|
92
|
-
EXPLAIN
|
|
93
|
-
SELECT id, total
|
|
94
|
-
FROM orders
|
|
95
|
-
WHERE account_id = 123 AND status = 'pending'
|
|
96
|
-
ORDER BY created_at DESC
|
|
97
|
-
LIMIT 50;
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Señales que conviene investigar:
|
|
101
|
-
|
|
102
|
-
| Campo | Señal de riesgo |
|
|
103
|
-
| --- | --- |
|
|
104
|
-
| `type` | `ALL` en una tabla grande |
|
|
105
|
-
| `key` | `NULL` cuando existe un predicado selectivo |
|
|
106
|
-
| `rows` | Estimación de filas muy alta en una ruta interactiva |
|
|
107
|
-
| `Extra` | `Using temporary`, `Using filesort` o un `Using where` amplio |
|
|
108
|
-
|
|
109
|
-
Evita añadir índices a ciegas. Cada índice incrementa el costo de escritura, el
|
|
110
|
-
tiempo de migración, el tamaño de los backups y la presión sobre el buffer pool.
|
|
111
|
-
|
|
112
|
-
## Patrones de consulta
|
|
113
|
-
|
|
114
|
-
### Upsert
|
|
115
|
-
|
|
116
|
-
Forma compatible entre motores:
|
|
117
|
-
|
|
118
|
-
```sql
|
|
119
|
-
INSERT INTO user_settings (user_id, setting_key, setting_value)
|
|
120
|
-
VALUES (?, ?, ?)
|
|
121
|
-
ON DUPLICATE KEY UPDATE
|
|
122
|
-
setting_value = VALUES(setting_value),
|
|
123
|
-
updated_at = CURRENT_TIMESTAMP;
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Forma con alias de fila de MySQL:
|
|
127
|
-
|
|
128
|
-
```sql
|
|
129
|
-
INSERT INTO user_settings (user_id, setting_key, setting_value)
|
|
130
|
-
VALUES (?, ?, ?) AS new
|
|
131
|
-
ON DUPLICATE KEY UPDATE
|
|
132
|
-
setting_value = new.setting_value,
|
|
133
|
-
updated_at = CURRENT_TIMESTAMP;
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Usa la forma con alias de fila solo tras confirmar que el destino es MySQL. Usa
|
|
137
|
-
`VALUES(col)` para MariaDB o flotas mixtas MySQL/MariaDB.
|
|
138
|
-
|
|
139
|
-
### Paginación por keyset
|
|
140
|
-
|
|
141
|
-
```sql
|
|
142
|
-
SELECT id, name, created_at
|
|
143
|
-
FROM products
|
|
144
|
-
WHERE (created_at, id) < (?, ?)
|
|
145
|
-
ORDER BY created_at DESC, id DESC
|
|
146
|
-
LIMIT 50;
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Respáldala con un índice que coincida con el cursor:
|
|
150
|
-
|
|
151
|
-
```sql
|
|
152
|
-
CREATE INDEX idx_products_created_id ON products (created_at, id);
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
No uses paginación con `OFFSET` profundo en tablas grandes; obliga al servidor a
|
|
156
|
-
escanear y descartar filas antes de devolver la página.
|
|
157
|
-
|
|
158
|
-
### Campos JSON
|
|
159
|
-
|
|
160
|
-
Usa columnas JSON para datos de extensión, no para campos que necesiten
|
|
161
|
-
filtrado relacional intensivo o constraints.
|
|
162
|
-
|
|
163
|
-
```sql
|
|
164
|
-
CREATE TABLE events (
|
|
165
|
-
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
166
|
-
payload JSON NOT NULL,
|
|
167
|
-
event_type VARCHAR(64)
|
|
168
|
-
GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(payload, '$.type'))) STORED,
|
|
169
|
-
KEY idx_events_type (event_type)
|
|
170
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Para rutas JSON consultadas con frecuencia, expón una columna generada e indexa
|
|
174
|
-
esa columna. Mantén relacionales las claves foráneas, la propiedad, la
|
|
175
|
-
multitenencia y los campos de ciclo de vida.
|
|
176
|
-
|
|
177
|
-
### Búsqueda full-text
|
|
178
|
-
|
|
179
|
-
```sql
|
|
180
|
-
ALTER TABLE articles ADD FULLTEXT KEY ft_articles_title_body (title, body);
|
|
181
|
-
|
|
182
|
-
SELECT id, title, MATCH(title, body) AGAINST (? IN NATURAL LANGUAGE MODE) AS score
|
|
183
|
-
FROM articles
|
|
184
|
-
WHERE MATCH(title, body) AGAINST (? IN NATURAL LANGUAGE MODE)
|
|
185
|
-
ORDER BY score DESC
|
|
186
|
-
LIMIT 20;
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Usa un buscador externo cuando necesites tolerancia a errores tipográficos,
|
|
190
|
-
ranking complejo, facetas entre tablas o análisis específico por idioma más allá
|
|
191
|
-
del comportamiento full-text integrado.
|
|
192
|
-
|
|
193
|
-
## Transacciones
|
|
194
|
-
|
|
195
|
-
Mantén las transacciones cortas y bloquea las filas en un orden consistente:
|
|
196
|
-
|
|
197
|
-
```sql
|
|
198
|
-
START TRANSACTION;
|
|
199
|
-
|
|
200
|
-
SELECT id, balance
|
|
201
|
-
FROM accounts
|
|
202
|
-
WHERE id IN (?, ?)
|
|
203
|
-
ORDER BY id
|
|
204
|
-
FOR UPDATE;
|
|
205
|
-
|
|
206
|
-
UPDATE accounts SET balance = balance - ? WHERE id = ?;
|
|
207
|
-
UPDATE accounts SET balance = balance + ? WHERE id = ?;
|
|
208
|
-
|
|
209
|
-
COMMIT;
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
Lista de verificación para deadlocks y esperas de locks:
|
|
213
|
-
|
|
214
|
-
- Bloquea las filas en un orden determinista en todas las rutas de código.
|
|
215
|
-
- Haz las llamadas a APIs externas antes de abrir la transacción, no dentro de ella.
|
|
216
|
-
- Añade índices para los predicados usados en `UPDATE`, `DELETE` y lecturas con lock.
|
|
217
|
-
- Ante un deadlock, haz rollback y reintenta la transacción completa con un
|
|
218
|
-
presupuesto de reintentos acotado.
|
|
219
|
-
- Captura `SHOW ENGINE INNODB STATUS\G` poco después de un deadlock; los eventos
|
|
220
|
-
posteriores lo sobrescriben.
|
|
221
|
-
|
|
222
|
-
Reclamo de trabajo estilo cola:
|
|
223
|
-
|
|
224
|
-
```sql
|
|
225
|
-
START TRANSACTION;
|
|
226
|
-
|
|
227
|
-
SELECT id
|
|
228
|
-
FROM jobs
|
|
229
|
-
WHERE status = 'pending'
|
|
230
|
-
ORDER BY created_at
|
|
231
|
-
LIMIT 1
|
|
232
|
-
FOR UPDATE SKIP LOCKED;
|
|
233
|
-
|
|
234
|
-
UPDATE jobs
|
|
235
|
-
SET status = 'processing', started_at = CURRENT_TIMESTAMP
|
|
236
|
-
WHERE id = ?;
|
|
237
|
-
|
|
238
|
-
COMMIT;
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
Usa `SKIP LOCKED` solo para cargas de tipo cola donde saltar una fila bloqueada
|
|
242
|
-
sea aceptable. No es un reemplazo de la consistencia transaccional normal.
|
|
243
|
-
|
|
244
|
-
## Pools de conexiones
|
|
245
|
-
|
|
246
|
-
Ejemplo con SQLAlchemy:
|
|
247
|
-
|
|
248
|
-
```python
|
|
249
|
-
from sqlalchemy import create_engine
|
|
250
|
-
|
|
251
|
-
engine = create_engine(
|
|
252
|
-
"mysql+mysqlconnector://app:secret@db.internal/app",
|
|
253
|
-
pool_size=10,
|
|
254
|
-
max_overflow=5,
|
|
255
|
-
pool_timeout=30,
|
|
256
|
-
pool_recycle=240,
|
|
257
|
-
pool_pre_ping=True,
|
|
258
|
-
connect_args={"connect_timeout": 5},
|
|
259
|
-
)
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Ejemplo con `mysql2` en Node.js:
|
|
263
|
-
|
|
264
|
-
```javascript
|
|
265
|
-
import mysql from 'mysql2/promise';
|
|
266
|
-
|
|
267
|
-
const pool = mysql.createPool({
|
|
268
|
-
host: process.env.DB_HOST,
|
|
269
|
-
user: process.env.DB_USER,
|
|
270
|
-
password: process.env.DB_PASSWORD,
|
|
271
|
-
database: process.env.DB_NAME,
|
|
272
|
-
waitForConnections: true,
|
|
273
|
-
connectionLimit: 10,
|
|
274
|
-
queueLimit: 0,
|
|
275
|
-
enableKeepAlive: true,
|
|
276
|
-
keepAliveInitialDelay: 30000,
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
const [rows] = await pool.execute(
|
|
280
|
-
'SELECT id, total FROM orders WHERE account_id = ? LIMIT 50',
|
|
281
|
-
[accountId],
|
|
282
|
-
);
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
Mantén el reciclado del pool de la aplicación por debajo del `wait_timeout` del
|
|
286
|
-
servidor. Si el servidor usa `wait_timeout = 300`, un `pool_recycle` en torno a
|
|
287
|
-
240 segundos es coherente; `pool_pre_ping` ayuda igualmente a recuperarse de
|
|
288
|
-
eventos de red y de failover.
|
|
289
|
-
|
|
290
|
-
## Diagnóstico
|
|
291
|
-
|
|
292
|
-
Comandos útiles de primera pasada:
|
|
293
|
-
|
|
294
|
-
```sql
|
|
295
|
-
SHOW FULL PROCESSLIST;
|
|
296
|
-
SHOW ENGINE INNODB STATUS\G;
|
|
297
|
-
SHOW VARIABLES LIKE 'slow_query_log';
|
|
298
|
-
SHOW VARIABLES LIKE 'long_query_time';
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
Activa el slow log en un entorno controlado:
|
|
302
|
-
|
|
303
|
-
```sql
|
|
304
|
-
SET GLOBAL slow_query_log = 'ON';
|
|
305
|
-
SET GLOBAL long_query_time = 1;
|
|
306
|
-
SET GLOBAL log_queries_not_using_indexes = 'ON';
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
Usa `EXPLAIN ANALYZE` solo cuando sea seguro ejecutar la consulta. Ejecuta la
|
|
310
|
-
sentencia y puede ser costoso sobre datos de tamaño de producción.
|
|
311
|
-
|
|
312
|
-
## Replicación
|
|
313
|
-
|
|
314
|
-
Las réplicas de lectura pueden retrasarse. No enrutes a una réplica, justo
|
|
315
|
-
después de una escritura, los flujos de leer-tu-propia-escritura, los flujos de
|
|
316
|
-
checkout, las comprobaciones de permisos ni las lecturas de claves de
|
|
317
|
-
idempotencia.
|
|
318
|
-
|
|
319
|
-
```sql
|
|
320
|
-
-- Terminología heredada de MySQL, aún común en flotas existentes
|
|
321
|
-
SHOW SLAVE STATUS\G;
|
|
322
|
-
|
|
323
|
-
-- Terminología más nueva donde esté soportada
|
|
324
|
-
SHOW REPLICA STATUS\G;
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
Comprueba el motor/versión antes de estandarizar un comando. Monitorea la salud
|
|
328
|
-
del hilo SQL de la réplica, la salud del hilo de IO y el lag, no solo si la
|
|
329
|
-
conexión TCP sigue viva.
|
|
330
|
-
|
|
331
|
-
## Seguridad
|
|
332
|
-
|
|
333
|
-
```sql
|
|
334
|
-
CREATE USER 'app'@'%' IDENTIFIED BY 'usa-un-gestor-de-secretos';
|
|
335
|
-
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'app'@'%';
|
|
336
|
-
|
|
337
|
-
ALTER USER 'app'@'%' REQUIRE SSL;
|
|
338
|
-
|
|
339
|
-
SELECT user, host
|
|
340
|
-
FROM mysql.user
|
|
341
|
-
WHERE user = '';
|
|
342
|
-
|
|
343
|
-
DROP USER IF EXISTS ''@'localhost';
|
|
344
|
-
DROP USER IF EXISTS ''@'%';
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
Puntos de revisión de seguridad:
|
|
348
|
-
|
|
349
|
-
- No concedas `ALL PRIVILEGES` ni `*.*` a usuarios de aplicación.
|
|
350
|
-
- Exige TLS a los usuarios de aplicación cuando el tráfico cruce hosts o redes.
|
|
351
|
-
- Guarda las credenciales en el gestor de secretos de la plataforma, no en
|
|
352
|
-
ejemplos, scripts ni archivos del repositorio.
|
|
353
|
-
- Separa los usuarios de migración/administración de los usuarios de runtime de
|
|
354
|
-
la aplicación.
|
|
355
|
-
- Audita la exposición a redes públicas y las direcciones de bind antes de
|
|
356
|
-
ajustar el rendimiento.
|
|
357
|
-
|
|
358
|
-
## Configuración
|
|
359
|
-
|
|
360
|
-
Punto de partida de ejemplo para un host dedicado de base de datos:
|
|
361
|
-
|
|
362
|
-
```ini
|
|
363
|
-
[mysqld]
|
|
364
|
-
innodb_buffer_pool_size = 4G
|
|
365
|
-
innodb_flush_log_at_trx_commit = 1
|
|
366
|
-
sync_binlog = 1
|
|
367
|
-
|
|
368
|
-
max_connections = 300
|
|
369
|
-
thread_cache_size = 50
|
|
370
|
-
|
|
371
|
-
wait_timeout = 300
|
|
372
|
-
interactive_timeout = 300
|
|
373
|
-
innodb_lock_wait_timeout = 10
|
|
374
|
-
|
|
375
|
-
slow_query_log = ON
|
|
376
|
-
long_query_time = 1
|
|
377
|
-
log_queries_not_using_indexes = ON
|
|
378
|
-
|
|
379
|
-
log_bin = mysql-bin
|
|
380
|
-
binlog_format = ROW
|
|
381
|
-
binlog_expire_logs_seconds = 604800
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
Trata los valores de configuración como un punto de partida para revisión, no
|
|
385
|
-
como un preset universal. Dimensiona la memoria, las conexiones, la retención de
|
|
386
|
-
logs y los ajustes de durabilidad a partir de la carga de trabajo, el hardware,
|
|
387
|
-
la política de backups y los objetivos de recuperación.
|
|
388
|
-
|
|
389
|
-
## Antipatrones
|
|
390
|
-
|
|
391
|
-
| Antipatrón | Riesgo | Patrón mejor |
|
|
392
|
-
| --- | --- | --- |
|
|
393
|
-
| `SELECT *` en rutas calientes | Sobre-lectura y clientes frágiles | Selecciona columnas explícitas |
|
|
394
|
-
| Paginación con `OFFSET` profundo | Escaneos lineales y páginas lentas | Paginación por keyset |
|
|
395
|
-
| Sin índice en joins por clave foránea | Joins lentos y deletes con muchos locks | Indexa las columnas FK de forma intencional |
|
|
396
|
-
| Transacciones largas | Esperas de locks y gran historial de undo | Haz commit de unidades de trabajo pequeñas |
|
|
397
|
-
| DML directo contra `mysql.user` | Riesgo de corrupción de las tablas de grants | Usa `CREATE USER`, `ALTER USER`, `DROP USER` |
|
|
398
|
-
| Usuario de aplicación con grants de admin | Radio de impacto alto | Usuario de runtime con mínimo privilegio |
|
|
399
|
-
| Reciclado del pool por encima de `wait_timeout` | Conexiones del pool obsoletas | Recicla por debajo del timeout y usa pre-ping |
|
|
400
|
-
| Lecturas en réplica tras escrituras | Estado visible al usuario desactualizado | Fija los flujos de leer-tras-escribir al primario |
|
|
401
|
-
|
|
402
|
-
## Expectativas de salida
|
|
403
|
-
|
|
404
|
-
Cuando esta skill se use para revisión, devuelve:
|
|
405
|
-
|
|
406
|
-
1. Supuestos de motor/versión.
|
|
407
|
-
2. Los problemas de mayor riesgo de corrección, locks, seguridad y migración.
|
|
408
|
-
3. Cambios exactos de SQL o de código para la ruta segura.
|
|
409
|
-
4. Plan de validación: `EXPLAIN`, ensayo de la migración, verificación de
|
|
410
|
-
locks/deadlocks y criterios de rollback.
|
|
411
|
-
5. Cualquier diferencia de sintaxis entre MySQL y MariaDB que afecte la
|
|
412
|
-
recomendación.
|
|
413
|
-
|
|
414
|
-
## Relacionado
|
|
415
|
-
|
|
416
|
-
- Skill: `patrones-postgres` — patrones de esquema y consultas específicos de PostgreSQL
|
|
417
|
-
- Skill: `migraciones-bd` — planificación de migraciones y seguridad del despliegue
|
|
418
|
-
- Skill: `patrones-backend` — patrones de API y de capa de servicio
|
|
419
|
-
- Skill: `revision-seguridad` — manejo de secretos, autenticación y mínimo privilegio
|
|
420
|
-
- Agente: `revisor-bd` — flujo más amplio de revisión de bases de datos
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: patrones-nestjs
|
|
3
|
-
description: Patrones de arquitectura NestJS para módulos, controladores, providers, validación de DTOs, guards, interceptores, configuración y backends TypeScript de nivel productivo.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Patrones de desarrollo con NestJS
|
|
7
|
-
|
|
8
|
-
Patrones de NestJS de nivel productivo para backends TypeScript modulares.
|
|
9
|
-
|
|
10
|
-
## Cuándo activarla
|
|
11
|
-
|
|
12
|
-
- Al construir APIs o servicios con NestJS
|
|
13
|
-
- Al estructurar módulos, controladores y providers
|
|
14
|
-
- Al añadir validación de DTOs, guards, interceptores o filtros de excepciones
|
|
15
|
-
- Al configurar ajustes por entorno e integraciones con bases de datos
|
|
16
|
-
- Al testear unidades de NestJS o endpoints HTTP
|
|
17
|
-
|
|
18
|
-
## Estructura del proyecto
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
src/
|
|
22
|
-
├── app.module.ts
|
|
23
|
-
├── main.ts
|
|
24
|
-
├── common/
|
|
25
|
-
│ ├── filters/
|
|
26
|
-
│ ├── guards/
|
|
27
|
-
│ ├── interceptors/
|
|
28
|
-
│ └── pipes/
|
|
29
|
-
├── config/
|
|
30
|
-
│ ├── configuration.ts
|
|
31
|
-
│ └── validation.ts
|
|
32
|
-
├── modules/
|
|
33
|
-
│ ├── auth/
|
|
34
|
-
│ │ ├── auth.controller.ts
|
|
35
|
-
│ │ ├── auth.module.ts
|
|
36
|
-
│ │ ├── auth.service.ts
|
|
37
|
-
│ │ ├── dto/
|
|
38
|
-
│ │ ├── guards/
|
|
39
|
-
│ │ └── strategies/
|
|
40
|
-
│ └── users/
|
|
41
|
-
│ ├── dto/
|
|
42
|
-
│ ├── entities/
|
|
43
|
-
│ ├── users.controller.ts
|
|
44
|
-
│ ├── users.module.ts
|
|
45
|
-
│ └── users.service.ts
|
|
46
|
-
└── prisma/ o database/
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
- Mantén el código de dominio dentro de módulos de funcionalidad.
|
|
50
|
-
- Coloca filtros, decoradores, guards e interceptores transversales en `common/`.
|
|
51
|
-
- Mantén los DTOs cerca del módulo que los posee.
|
|
52
|
-
|
|
53
|
-
## Bootstrap y validación global
|
|
54
|
-
|
|
55
|
-
```ts
|
|
56
|
-
async function bootstrap() {
|
|
57
|
-
const app = await NestFactory.create(AppModule, { bufferLogs: true });
|
|
58
|
-
|
|
59
|
-
app.useGlobalPipes(
|
|
60
|
-
new ValidationPipe({
|
|
61
|
-
whitelist: true,
|
|
62
|
-
forbidNonWhitelisted: true,
|
|
63
|
-
transform: true,
|
|
64
|
-
transformOptions: { enableImplicitConversion: true },
|
|
65
|
-
}),
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));
|
|
69
|
-
app.useGlobalFilters(new HttpExceptionFilter());
|
|
70
|
-
|
|
71
|
-
await app.listen(process.env.PORT ?? 3000);
|
|
72
|
-
}
|
|
73
|
-
bootstrap();
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
- Habilita siempre `whitelist` y `forbidNonWhitelisted` en APIs públicas.
|
|
77
|
-
- Prefiere un pipe de validación global en lugar de repetir la configuración de validación por ruta.
|
|
78
|
-
|
|
79
|
-
## Módulos, controladores y providers
|
|
80
|
-
|
|
81
|
-
```ts
|
|
82
|
-
@Module({
|
|
83
|
-
controllers: [UsersController],
|
|
84
|
-
providers: [UsersService],
|
|
85
|
-
exports: [UsersService],
|
|
86
|
-
})
|
|
87
|
-
export class UsersModule {}
|
|
88
|
-
|
|
89
|
-
@Controller('users')
|
|
90
|
-
export class UsersController {
|
|
91
|
-
constructor(private readonly usersService: UsersService) {}
|
|
92
|
-
|
|
93
|
-
@Get(':id')
|
|
94
|
-
getById(@Param('id', ParseUUIDPipe) id: string) {
|
|
95
|
-
return this.usersService.getById(id);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
@Post()
|
|
99
|
-
create(@Body() dto: CreateUserDto) {
|
|
100
|
-
return this.usersService.create(dto);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
@Injectable()
|
|
105
|
-
export class UsersService {
|
|
106
|
-
constructor(private readonly usersRepo: UsersRepository) {}
|
|
107
|
-
|
|
108
|
-
async create(dto: CreateUserDto) {
|
|
109
|
-
return this.usersRepo.create(dto);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
- Los controladores deben mantenerse delgados: parsear la entrada HTTP, llamar a un provider y devolver DTOs de respuesta.
|
|
115
|
-
- Pon la lógica de negocio en servicios inyectables, no en controladores.
|
|
116
|
-
- Exporta solo los providers que otros módulos genuinamente necesitan.
|
|
117
|
-
|
|
118
|
-
## DTOs y validación
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
export class CreateUserDto {
|
|
122
|
-
@IsEmail()
|
|
123
|
-
email!: string;
|
|
124
|
-
|
|
125
|
-
@IsString()
|
|
126
|
-
@Length(2, 80)
|
|
127
|
-
name!: string;
|
|
128
|
-
|
|
129
|
-
@IsOptional()
|
|
130
|
-
@IsEnum(UserRole)
|
|
131
|
-
role?: UserRole;
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
- Valida cada DTO de petición con `class-validator`.
|
|
136
|
-
- Usa DTOs de respuesta dedicados o serializadores en lugar de devolver entidades del ORM directamente.
|
|
137
|
-
- Evita filtrar campos internos como hashes de contraseñas, tokens o columnas de auditoría.
|
|
138
|
-
|
|
139
|
-
## Autenticación, guards y contexto de la petición
|
|
140
|
-
|
|
141
|
-
```ts
|
|
142
|
-
@UseGuards(JwtAuthGuard, RolesGuard)
|
|
143
|
-
@Roles('admin')
|
|
144
|
-
@Get('admin/report')
|
|
145
|
-
getAdminReport(@Req() req: AuthenticatedRequest) {
|
|
146
|
-
return this.reportService.getForUser(req.user.id);
|
|
147
|
-
}
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
- Mantén las estrategias de auth y los guards locales al módulo salvo que sean realmente compartidos.
|
|
151
|
-
- Codifica las reglas de acceso gruesas en guards, y haz la autorización específica por recurso en los servicios.
|
|
152
|
-
- Prefiere tipos de petición explícitos para los objetos de petición autenticada.
|
|
153
|
-
|
|
154
|
-
## Filtros de excepciones y forma del error
|
|
155
|
-
|
|
156
|
-
```ts
|
|
157
|
-
@Catch()
|
|
158
|
-
export class HttpExceptionFilter implements ExceptionFilter {
|
|
159
|
-
catch(exception: unknown, host: ArgumentsHost) {
|
|
160
|
-
const response = host.switchToHttp().getResponse<Response>();
|
|
161
|
-
const request = host.switchToHttp().getRequest<Request>();
|
|
162
|
-
|
|
163
|
-
if (exception instanceof HttpException) {
|
|
164
|
-
return response.status(exception.getStatus()).json({
|
|
165
|
-
path: request.url,
|
|
166
|
-
error: exception.getResponse(),
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return response.status(500).json({
|
|
171
|
-
path: request.url,
|
|
172
|
-
error: 'Error interno del servidor',
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
- Mantén una envoltura de error consistente en toda la API.
|
|
179
|
-
- Lanza excepciones del framework para los errores de cliente esperados; registra y envuelve los fallos inesperados de forma centralizada.
|
|
180
|
-
|
|
181
|
-
## Configuración y validación del entorno
|
|
182
|
-
|
|
183
|
-
```ts
|
|
184
|
-
ConfigModule.forRoot({
|
|
185
|
-
isGlobal: true,
|
|
186
|
-
load: [configuration],
|
|
187
|
-
validate: validateEnv,
|
|
188
|
-
});
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
- Valida el entorno al arrancar, no de forma perezosa en la primera petición.
|
|
192
|
-
- Mantén el acceso a la configuración detrás de helpers tipados o servicios de configuración.
|
|
193
|
-
- Separa las diferencias de dev/staging/prod en factorías de configuración en lugar de ramificar por todo el código de funcionalidad.
|
|
194
|
-
|
|
195
|
-
## Persistencia y transacciones
|
|
196
|
-
|
|
197
|
-
- Mantén el código de repositorio / ORM detrás de providers que hablen el lenguaje del dominio.
|
|
198
|
-
- Con Prisma o TypeORM, aísla los flujos transaccionales en servicios que posean la unidad de trabajo.
|
|
199
|
-
- No dejes que los controladores coordinen escrituras de varios pasos directamente.
|
|
200
|
-
|
|
201
|
-
## Testing
|
|
202
|
-
|
|
203
|
-
```ts
|
|
204
|
-
describe('UsersController', () => {
|
|
205
|
-
let app: INestApplication;
|
|
206
|
-
|
|
207
|
-
beforeAll(async () => {
|
|
208
|
-
const moduleRef = await Test.createTestingModule({
|
|
209
|
-
imports: [UsersModule],
|
|
210
|
-
}).compile();
|
|
211
|
-
|
|
212
|
-
app = moduleRef.createNestApplication();
|
|
213
|
-
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));
|
|
214
|
-
await app.init();
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
- Testea los providers de forma unitaria y aislada con dependencias simuladas (mocks).
|
|
220
|
-
- Añade tests a nivel de petición para guards, pipes de validación y filtros de excepciones.
|
|
221
|
-
- Reutiliza en los tests los mismos pipes/filtros globales que usas en producción.
|
|
222
|
-
|
|
223
|
-
## Valores por defecto de producción
|
|
224
|
-
|
|
225
|
-
- Habilita logging estructurado e IDs de correlación de peticiones.
|
|
226
|
-
- Termina el proceso ante entorno/configuración inválidos en lugar de arrancar a medias.
|
|
227
|
-
- Prefiere la inicialización asíncrona de providers para clientes de BD/caché con health checks explícitos.
|
|
228
|
-
- Mantén los jobs en segundo plano y los consumidores de eventos en sus propios módulos, no dentro de controladores HTTP.
|
|
229
|
-
- Haz explícitos el rate limiting, la autenticación y el registro de auditoría en los endpoints públicos.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: patrones-nextjs
|
|
3
|
-
description: Next.js 16+ moderno — bundling incremental con Turbopack, caché en sistema de archivos, velocidad de desarrollo y cuándo usar Turbopack vs webpack.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Patrones de Next.js
|
|
7
|
-
|
|
8
|
-
Next.js 16+ usa Turbopack por defecto para el desarrollo local: un bundler incremental escrito en Rust que acelera significativamente el arranque en desarrollo y las actualizaciones en caliente.
|
|
9
|
-
|
|
10
|
-
## Cuándo usar
|
|
11
|
-
|
|
12
|
-
- **Turbopack (dev por defecto)**: úsalo para el desarrollo del día a día. Arranque en frío y HMR más rápidos, especialmente en aplicaciones grandes.
|
|
13
|
-
- **Webpack (dev legado)**: úsalo solo si te topas con un bug de Turbopack o dependes de un plugin exclusivo de webpack en desarrollo. Desactívalo con `--webpack` (o `--no-turbopack` según tu versión de Next.js; revisa la documentación de tu release).
|
|
14
|
-
- **Producción**: el comportamiento del build de producción (`next build`) puede usar Turbopack o webpack según la versión de Next.js; consulta la documentación oficial de Next.js para tu versión.
|
|
15
|
-
|
|
16
|
-
Úsala cuando: desarrolles o depures aplicaciones de Next.js 16+, diagnostiques un arranque en desarrollo o un HMR lentos, u optimices los bundles de producción.
|
|
17
|
-
|
|
18
|
-
## Cómo funciona
|
|
19
|
-
|
|
20
|
-
- **Turbopack**: bundler incremental para el desarrollo con Next.js. Usa caché en el sistema de archivos, así que los reinicios son mucho más rápidos (p. ej. 5–14x en proyectos grandes).
|
|
21
|
-
- **Por defecto en dev**: desde Next.js 16, `next dev` se ejecuta con Turbopack salvo que se desactive.
|
|
22
|
-
- **Caché en sistema de archivos**: los reinicios reutilizan el trabajo previo; la caché suele estar bajo `.next`; no requiere configuración adicional para el uso básico.
|
|
23
|
-
- **Bundle Analyzer (Next.js 16.1+)**: Bundle Analyzer experimental para inspeccionar la salida y encontrar dependencias pesadas; actívalo vía configuración o flag experimental (consulta la documentación de Next.js para tu versión).
|
|
24
|
-
|
|
25
|
-
## Ejemplos
|
|
26
|
-
|
|
27
|
-
### Comandos
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
next dev
|
|
31
|
-
next build
|
|
32
|
-
next start
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### Uso
|
|
36
|
-
|
|
37
|
-
Ejecuta `next dev` para el desarrollo local con Turbopack. Usa el Bundle Analyzer (ver la documentación de Next.js) para optimizar el code-splitting y recortar dependencias grandes. Prefiere el App Router y los server components siempre que sea posible.
|
|
38
|
-
|
|
39
|
-
## Nombre del archivo de middleware
|
|
40
|
-
|
|
41
|
-
Next.js 16 introdujo `proxy.ts` como nombre del archivo de middleware, en reemplazo de la convención anterior `middleware.ts`:
|
|
42
|
-
|
|
43
|
-
- **Next.js 16+**: usa `proxy.ts` en la raíz del proyecto
|
|
44
|
-
- **Anterior a Next.js 16**: usa `middleware.ts` en la raíz del proyecto
|
|
45
|
-
|
|
46
|
-
El cambio de nombre está ligado a la **versión de Next.js**, no al bundler en uso (Turbopack o webpack). Verifica siempre la documentación oficial de la versión que estés revisando.
|
|
47
|
-
|
|
48
|
-
**No marques `proxy.ts` como un archivo de middleware mal nombrado o faltante en proyectos con Next.js 16.** El archivo es correcto e intencional. Sugerir renombrarlo a `middleware.ts` romperá la ejecución del middleware.
|
|
49
|
-
|
|
50
|
-
Referencia: [documentación de proxy en Next.js](https://nextjs.org/docs/app/getting-started/proxy)
|
|
51
|
-
|
|
52
|
-
## Buenas prácticas
|
|
53
|
-
|
|
54
|
-
- Mantente en una versión reciente de Next.js 16.x para un comportamiento estable de Turbopack y su caché.
|
|
55
|
-
- Si el desarrollo va lento, asegúrate de estar usando Turbopack (el valor por defecto) y de que la caché no se esté borrando innecesariamente.
|
|
56
|
-
- Para problemas de tamaño de bundle en producción, usa las herramientas oficiales de análisis de bundles de Next.js para tu versión.
|