theus-cli-linux-x64 1.2.2 → 1.4.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/README.md +50 -11
- 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,143 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Ejecuta tests de Flutter/Dart, informa los fallos y corrige los problemas de forma incremental. Cubre tests unitarios, de widgets, golden y de integración.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Test Flutter
|
|
6
|
-
|
|
7
|
-
Este comando ejecuta la suite de tests de Flutter e informa los resultados. Cuando hay fallos, los diagnostica y corrige de forma incremental.
|
|
8
|
-
|
|
9
|
-
## Qué hace este comando
|
|
10
|
-
|
|
11
|
-
1. **Ejecutar tests**: ejecuta `flutter test` (o lo acota a los archivos cambiados)
|
|
12
|
-
2. **Analizar fallos**: identifica los tests que fallan por tipo y causa
|
|
13
|
-
3. **Corregir incrementalmente**: un fallo a la vez cuando sea posible
|
|
14
|
-
4. **Verificar**: vuelve a ejecutar tras cada arreglo
|
|
15
|
-
5. **Informar**: muestra el resumen de cobertura y los fallos restantes
|
|
16
|
-
|
|
17
|
-
## Cuándo usarlo
|
|
18
|
-
|
|
19
|
-
Usa `/test-flutter` cuando:
|
|
20
|
-
- Tras implementar una funcionalidad, para verificar que nada se rompió
|
|
21
|
-
- Después de ejecutar `/build-flutter`, para asegurar que los tests pasan
|
|
22
|
-
- Para revisar la cobertura de tests del código nuevo
|
|
23
|
-
- Cuando un archivo de test específico está fallando
|
|
24
|
-
- Antes de enviar un PR
|
|
25
|
-
|
|
26
|
-
## Comandos ejecutados
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
# Ejecutar todos los tests
|
|
30
|
-
flutter test 2>&1
|
|
31
|
-
|
|
32
|
-
# Ejecutar con cobertura
|
|
33
|
-
flutter test --coverage 2>&1
|
|
34
|
-
|
|
35
|
-
# Ejecutar un archivo de test específico
|
|
36
|
-
flutter test test/unit/domain/usecases/get_user_test.dart 2>&1
|
|
37
|
-
|
|
38
|
-
# Ejecutar tests que coincidan con un patrón de nombre
|
|
39
|
-
flutter test --name "CartBloc" 2>&1
|
|
40
|
-
|
|
41
|
-
# Ejecutar tests de integración (requiere dispositivo/emulador)
|
|
42
|
-
flutter test integration_test/ 2>&1
|
|
43
|
-
|
|
44
|
-
# Actualizar los archivos golden cuando hay cambios visuales intencionales
|
|
45
|
-
flutter test --update-goldens 2>&1
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Sesión de ejemplo
|
|
49
|
-
|
|
50
|
-
````text
|
|
51
|
-
Usuario: /test-flutter
|
|
52
|
-
|
|
53
|
-
Agente:
|
|
54
|
-
# Ejecución de tests de Flutter
|
|
55
|
-
|
|
56
|
-
## Ejecución
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
$ flutter test
|
|
60
|
-
00:05 +42 -2: Some tests failed.
|
|
61
|
-
|
|
62
|
-
FAILED: test/unit/data/user_repository_test.dart
|
|
63
|
-
UserRepository getById
|
|
64
|
-
returns null when user not found
|
|
65
|
-
Expected: null
|
|
66
|
-
Actual: User(id: 'test-id', name: 'Test User')
|
|
67
|
-
|
|
68
|
-
FAILED: test/widget/cart_page_test.dart
|
|
69
|
-
CartPage
|
|
70
|
-
shows empty state when cart is empty
|
|
71
|
-
Expected: exactly one widget with text 'Your cart is empty'
|
|
72
|
-
Found: no widget with text 'Your cart is empty'
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Arreglo 1: test del repositorio
|
|
76
|
-
|
|
77
|
-
Archivo: test/unit/data/user_repository_test.dart
|
|
78
|
-
Fallo: `getById` devuelve un usuario cuando debería devolver null para un ID inexistente
|
|
79
|
-
|
|
80
|
-
Causa raíz: el setup del test agrega un usuario con ID 'test-id' pero la consulta usa 'missing-id'.
|
|
81
|
-
Arreglo: se actualizó el test para consultar con 'missing-id' — el setup era correcto, la consulta estaba mal.
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
$ flutter test test/unit/data/user_repository_test.dart
|
|
85
|
-
1 test passed.
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Arreglo 2: test de widget
|
|
89
|
-
|
|
90
|
-
Archivo: test/widget/cart_page_test.dart
|
|
91
|
-
Fallo: no se encuentra el widget de texto del estado vacío
|
|
92
|
-
|
|
93
|
-
Causa raíz: el mensaje de estado vacío se renombró de 'Your cart is empty' a 'Cart is empty' en el widget.
|
|
94
|
-
Arreglo: se actualizó la cadena del test para coincidir con el texto actual del widget.
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
$ flutter test test/widget/cart_page_test.dart
|
|
98
|
-
1 test passed.
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Ejecución final
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
$ flutter test --coverage
|
|
105
|
-
All 44 tests passed.
|
|
106
|
-
Coverage: 84.2% (target: 80%)
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Resumen
|
|
110
|
-
|
|
111
|
-
| Métrica | Valor |
|
|
112
|
-
|---------|-------|
|
|
113
|
-
| Tests totales | 44 |
|
|
114
|
-
| Pasaron | 44 |
|
|
115
|
-
| Fallaron | 0 |
|
|
116
|
-
| Cobertura | 84.2% |
|
|
117
|
-
|
|
118
|
-
Estado de los tests: PASS ✓
|
|
119
|
-
````
|
|
120
|
-
|
|
121
|
-
## Fallos de test comunes
|
|
122
|
-
|
|
123
|
-
| Fallo | Arreglo típico |
|
|
124
|
-
|-------|----------------|
|
|
125
|
-
| `Expected: <X> Actual: <Y>` | Actualizar la aserción o corregir la implementación |
|
|
126
|
-
| `Widget not found` | Corregir el selector del finder o actualizar el test tras renombrar el widget |
|
|
127
|
-
| `Golden file not found` | Ejecutar `flutter test --update-goldens` para generarlo |
|
|
128
|
-
| `Golden mismatch` | Inspeccionar el diff; ejecutar `--update-goldens` si el cambio era intencional |
|
|
129
|
-
| `MissingPluginException` | Simular (mock) el platform channel en el setup del test |
|
|
130
|
-
| `LateInitializationError` | Inicializar los campos `late` en `setUp()` |
|
|
131
|
-
| `pumpAndSettle timed out` | Reemplazar por llamadas explícitas a `pump(Duration)` |
|
|
132
|
-
|
|
133
|
-
## Comandos relacionados
|
|
134
|
-
|
|
135
|
-
- `/build-flutter` — Corregir los errores de build antes de ejecutar los tests
|
|
136
|
-
- `/revisar-flutter` — Revisar el código cuando los tests pasen
|
|
137
|
-
- Skill `flujo-tdd` — Flujo de desarrollo guiado por tests
|
|
138
|
-
|
|
139
|
-
## Relacionados
|
|
140
|
-
|
|
141
|
-
- Agente: `agents/revisor-flutter.md`
|
|
142
|
-
- Agente: `agents/resolutor-builds-dart.md`
|
|
143
|
-
- Skill: `skills/revision-codigo-flutter-dart/`
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Aplica el flujo TDD para Go. Escribe primero tests tabulares, luego implementa. Verifica cobertura de 80%+ con go test -cover.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Comando TDD para Go
|
|
6
|
-
|
|
7
|
-
Este comando aplica la metodología de desarrollo guiado por tests (TDD) para código Go usando los patrones idiomáticos de testing de Go.
|
|
8
|
-
|
|
9
|
-
## Qué hace este comando
|
|
10
|
-
|
|
11
|
-
1. **Define tipos e interfaces**: primero el andamiaje de firmas de funciones
|
|
12
|
-
2. **Escribe tests tabulares**: crea casos de prueba exhaustivos (ROJO)
|
|
13
|
-
3. **Ejecuta los tests**: verifica que fallen por la razón correcta
|
|
14
|
-
4. **Implementa el código**: escribe el mínimo código para pasar (VERDE)
|
|
15
|
-
5. **Refactoriza**: mejora manteniendo los tests en verde
|
|
16
|
-
6. **Verifica la cobertura**: asegura 80%+ de cobertura
|
|
17
|
-
|
|
18
|
-
## Cuándo usarlo
|
|
19
|
-
|
|
20
|
-
Usa /test-go cuando:
|
|
21
|
-
- Implementas nuevas funciones en Go
|
|
22
|
-
- Agregas cobertura de tests a código existente
|
|
23
|
-
- Corriges bugs (primero escribe el test que falla)
|
|
24
|
-
- Construyes lógica de negocio crítica
|
|
25
|
-
- Estás aprendiendo el flujo TDD en Go
|
|
26
|
-
|
|
27
|
-
## Ciclo TDD
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
ROJO → Escribir un test tabular que falla
|
|
31
|
-
VERDE → Implementar el mínimo código para pasar
|
|
32
|
-
REFACTOR → Mejorar el código, los tests siguen en verde
|
|
33
|
-
REPETIR → Siguiente caso de prueba
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Sesión de ejemplo
|
|
37
|
-
|
|
38
|
-
````
|
|
39
|
-
Usuario: /test-go Necesito una función para validar direcciones de email
|
|
40
|
-
|
|
41
|
-
Agente:
|
|
42
|
-
# Sesión TDD: validador de email
|
|
43
|
-
|
|
44
|
-
## Paso 1: Definir la interfaz
|
|
45
|
-
|
|
46
|
-
```go
|
|
47
|
-
// validator/email.go
|
|
48
|
-
package validator
|
|
49
|
-
|
|
50
|
-
// ValidateEmail verifica si la cadena dada es una dirección de email válida.
|
|
51
|
-
// Retorna nil si es válida; en caso contrario, un error que describe el problema.
|
|
52
|
-
func ValidateEmail(email string) error {
|
|
53
|
-
panic("not implemented")
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Paso 2: Escribir tests tabulares (ROJO)
|
|
58
|
-
|
|
59
|
-
```go
|
|
60
|
-
// validator/email_test.go
|
|
61
|
-
package validator
|
|
62
|
-
|
|
63
|
-
import (
|
|
64
|
-
"testing"
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
func TestValidateEmail(t *testing.T) {
|
|
68
|
-
tests := []struct {
|
|
69
|
-
name string
|
|
70
|
-
email string
|
|
71
|
-
wantErr bool
|
|
72
|
-
}{
|
|
73
|
-
// Emails válidos
|
|
74
|
-
{"email simple", "user@example.com", false},
|
|
75
|
-
{"con subdominio", "user@mail.example.com", false},
|
|
76
|
-
{"con signo más", "user+tag@example.com", false},
|
|
77
|
-
{"con puntos", "first.last@example.com", false},
|
|
78
|
-
|
|
79
|
-
// Emails inválidos
|
|
80
|
-
{"cadena vacía", "", true},
|
|
81
|
-
{"sin arroba", "userexample.com", true},
|
|
82
|
-
{"sin dominio", "user@", true},
|
|
83
|
-
{"sin parte local", "@example.com", true},
|
|
84
|
-
{"doble arroba", "user@@example.com", true},
|
|
85
|
-
{"espacios", "user @example.com", true},
|
|
86
|
-
{"sin tld", "user@example", true},
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
for _, tt := range tests {
|
|
90
|
-
t.Run(tt.name, func(t *testing.T) {
|
|
91
|
-
err := ValidateEmail(tt.email)
|
|
92
|
-
if tt.wantErr && err == nil {
|
|
93
|
-
t.Errorf("ValidateEmail(%q) = nil; want error", tt.email)
|
|
94
|
-
}
|
|
95
|
-
if !tt.wantErr && err != nil {
|
|
96
|
-
t.Errorf("ValidateEmail(%q) = %v; want nil", tt.email, err)
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Paso 3: Ejecutar tests — verificar el FALLO
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
$ go test ./validator/...
|
|
107
|
-
|
|
108
|
-
--- FAIL: TestValidateEmail (0.00s)
|
|
109
|
-
--- FAIL: TestValidateEmail/email_simple (0.00s)
|
|
110
|
-
panic: not implemented
|
|
111
|
-
|
|
112
|
-
FAIL
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
✓ Los tests fallan como se esperaba (panic).
|
|
116
|
-
|
|
117
|
-
## Paso 4: Implementar el mínimo código (VERDE)
|
|
118
|
-
|
|
119
|
-
```go
|
|
120
|
-
// validator/email.go
|
|
121
|
-
package validator
|
|
122
|
-
|
|
123
|
-
import (
|
|
124
|
-
"errors"
|
|
125
|
-
"regexp"
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
|
|
129
|
-
|
|
130
|
-
var (
|
|
131
|
-
ErrEmailEmpty = errors.New("email cannot be empty")
|
|
132
|
-
ErrEmailInvalid = errors.New("email format is invalid")
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
func ValidateEmail(email string) error {
|
|
136
|
-
if email == "" {
|
|
137
|
-
return ErrEmailEmpty
|
|
138
|
-
}
|
|
139
|
-
if !emailRegex.MatchString(email) {
|
|
140
|
-
return ErrEmailInvalid
|
|
141
|
-
}
|
|
142
|
-
return nil
|
|
143
|
-
}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Paso 5: Ejecutar tests — verificar el PASE
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
$ go test ./validator/...
|
|
150
|
-
|
|
151
|
-
PASS
|
|
152
|
-
ok project/validator 0.003s
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
✓ ¡Todos los tests pasan!
|
|
156
|
-
|
|
157
|
-
## Paso 6: Verificar la cobertura
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
$ go test -cover ./validator/...
|
|
161
|
-
|
|
162
|
-
PASS
|
|
163
|
-
coverage: 100.0% of statements
|
|
164
|
-
ok project/validator 0.003s
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
✓ Cobertura: 100%
|
|
168
|
-
|
|
169
|
-
## ¡TDD completo!
|
|
170
|
-
````
|
|
171
|
-
|
|
172
|
-
## Patrones de testing
|
|
173
|
-
|
|
174
|
-
### Tests tabulares
|
|
175
|
-
```go
|
|
176
|
-
tests := []struct {
|
|
177
|
-
name string
|
|
178
|
-
input InputType
|
|
179
|
-
want OutputType
|
|
180
|
-
wantErr bool
|
|
181
|
-
}{
|
|
182
|
-
{"caso 1", input1, want1, false},
|
|
183
|
-
{"caso 2", input2, want2, true},
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
for _, tt := range tests {
|
|
187
|
-
t.Run(tt.name, func(t *testing.T) {
|
|
188
|
-
got, err := Function(tt.input)
|
|
189
|
-
// aserciones
|
|
190
|
-
})
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Tests en paralelo
|
|
195
|
-
```go
|
|
196
|
-
for _, tt := range tests {
|
|
197
|
-
tt := tt // Capturar
|
|
198
|
-
t.Run(tt.name, func(t *testing.T) {
|
|
199
|
-
t.Parallel()
|
|
200
|
-
// cuerpo del test
|
|
201
|
-
})
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Helpers de test
|
|
206
|
-
```go
|
|
207
|
-
func setupTestDB(t *testing.T) *sql.DB {
|
|
208
|
-
t.Helper()
|
|
209
|
-
db := createDB()
|
|
210
|
-
t.Cleanup(func() { db.Close() })
|
|
211
|
-
return db
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Comandos de cobertura
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
# Cobertura básica
|
|
219
|
-
go test -cover ./...
|
|
220
|
-
|
|
221
|
-
# Perfil de cobertura
|
|
222
|
-
go test -coverprofile=coverage.out ./...
|
|
223
|
-
|
|
224
|
-
# Ver en el navegador
|
|
225
|
-
go tool cover -html=coverage.out
|
|
226
|
-
|
|
227
|
-
# Cobertura por función
|
|
228
|
-
go tool cover -func=coverage.out
|
|
229
|
-
|
|
230
|
-
# Con detección de carreras
|
|
231
|
-
go test -race -cover ./...
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Objetivos de cobertura
|
|
235
|
-
|
|
236
|
-
| Tipo de código | Objetivo |
|
|
237
|
-
|----------------|----------|
|
|
238
|
-
| Lógica de negocio crítica | 100% |
|
|
239
|
-
| APIs públicas | 90%+ |
|
|
240
|
-
| Código general | 80%+ |
|
|
241
|
-
| Código generado | Excluir |
|
|
242
|
-
|
|
243
|
-
## Buenas prácticas de TDD
|
|
244
|
-
|
|
245
|
-
**SÍ:**
|
|
246
|
-
- Escribir el test PRIMERO, antes de cualquier implementación
|
|
247
|
-
- Ejecutar los tests después de cada cambio
|
|
248
|
-
- Usar tests tabulares para cobertura exhaustiva
|
|
249
|
-
- Testear el comportamiento, no los detalles de implementación
|
|
250
|
-
- Incluir casos límite (vacío, nil, valores máximos)
|
|
251
|
-
|
|
252
|
-
**NO:**
|
|
253
|
-
- Escribir la implementación antes que los tests
|
|
254
|
-
- Saltarse la fase ROJA
|
|
255
|
-
- Testear funciones privadas directamente
|
|
256
|
-
- Usar `time.Sleep` en los tests
|
|
257
|
-
- Ignorar tests intermitentes
|
|
258
|
-
|
|
259
|
-
## Comandos relacionados
|
|
260
|
-
|
|
261
|
-
- /build-go — corregir errores de build
|
|
262
|
-
- /revisar-go — revisar el código tras la implementación
|
|
263
|
-
- Skill `bucle-verificacion` — bucle de verificación completo
|
|
264
|
-
|
|
265
|
-
## Relacionados
|
|
266
|
-
|
|
267
|
-
- Skill: `skills/testing-go/`
|
|
268
|
-
- Skill: `skills/flujo-tdd/`
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Aplica el flujo TDD para Kotlin. Escribe primero tests con Kotest, luego implementa. Verifica cobertura de 80%+ con Kover.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Comando TDD para Kotlin
|
|
6
|
-
|
|
7
|
-
Este comando aplica la metodología de desarrollo guiado por tests (TDD) para código Kotlin usando Kotest, MockK y Kover.
|
|
8
|
-
|
|
9
|
-
## Qué hace este comando
|
|
10
|
-
|
|
11
|
-
1. **Define tipos e interfaces**: primero el andamiaje de firmas de funciones
|
|
12
|
-
2. **Escribe tests con Kotest**: crea especificaciones de prueba exhaustivas (ROJO)
|
|
13
|
-
3. **Ejecuta los tests**: verifica que fallen por la razón correcta
|
|
14
|
-
4. **Implementa el código**: escribe el mínimo código para pasar (VERDE)
|
|
15
|
-
5. **Refactoriza**: mejora manteniendo los tests en verde
|
|
16
|
-
6. **Comprueba la cobertura**: asegura 80%+ de cobertura con Kover
|
|
17
|
-
|
|
18
|
-
## Cuándo usarlo
|
|
19
|
-
|
|
20
|
-
Usa `/test-kotlin` cuando:
|
|
21
|
-
- Implementes funciones o clases nuevas en Kotlin
|
|
22
|
-
- Añadas cobertura de tests a código Kotlin existente
|
|
23
|
-
- Corrijas bugs (escribe primero el test que falla)
|
|
24
|
-
- Construyas lógica de negocio crítica
|
|
25
|
-
- Estés aprendiendo el flujo TDD en Kotlin
|
|
26
|
-
|
|
27
|
-
## Ciclo TDD
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
ROJO -> Escribe un test Kotest que falle
|
|
31
|
-
VERDE -> Implementa el mínimo código para pasar
|
|
32
|
-
REFACTOR -> Mejora el código, los tests siguen en verde
|
|
33
|
-
REPITE -> Siguiente caso de prueba
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Sesión de ejemplo
|
|
37
|
-
|
|
38
|
-
````text
|
|
39
|
-
Usuario: /test-kotlin Necesito una función que valide solicitudes de registro de usuarios
|
|
40
|
-
|
|
41
|
-
Agente:
|
|
42
|
-
# Sesión TDD: Validador de registro
|
|
43
|
-
|
|
44
|
-
## Paso 1: Definir la interfaz
|
|
45
|
-
|
|
46
|
-
```kotlin
|
|
47
|
-
// validator/RegistrationValidator.kt
|
|
48
|
-
package com.example.validator
|
|
49
|
-
|
|
50
|
-
data class RegistrationRequest(
|
|
51
|
-
val name: String,
|
|
52
|
-
val email: String,
|
|
53
|
-
val password: String,
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
sealed class ValidationResult {
|
|
57
|
-
data object Valid : ValidationResult()
|
|
58
|
-
data class Invalid(val errors: List<String>) : ValidationResult()
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
fun validateRegistration(request: RegistrationRequest): ValidationResult {
|
|
62
|
-
TODO("sin implementar")
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Paso 2: Escribir los tests Kotest (ROJO)
|
|
67
|
-
|
|
68
|
-
```kotlin
|
|
69
|
-
// validator/RegistrationValidatorTest.kt
|
|
70
|
-
package com.example.validator
|
|
71
|
-
|
|
72
|
-
import io.kotest.core.spec.style.FunSpec
|
|
73
|
-
import io.kotest.matchers.shouldBe
|
|
74
|
-
import io.kotest.matchers.types.shouldBeInstanceOf
|
|
75
|
-
|
|
76
|
-
class RegistrationValidatorTest : FunSpec({
|
|
77
|
-
test("un registro válido devuelve Valid") {
|
|
78
|
-
val request = RegistrationRequest(
|
|
79
|
-
name = "Alicia",
|
|
80
|
-
email = "alicia@example.com",
|
|
81
|
-
password = "ClaveSegur@1",
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
val result = validateRegistration(request)
|
|
85
|
-
|
|
86
|
-
result.shouldBeInstanceOf<ValidationResult.Valid>()
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
test("un nombre en blanco devuelve Invalid") {
|
|
90
|
-
val request = RegistrationRequest(
|
|
91
|
-
name = "",
|
|
92
|
-
email = "alicia@example.com",
|
|
93
|
-
password = "ClaveSegur@1",
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
val result = validateRegistration(request)
|
|
97
|
-
|
|
98
|
-
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
99
|
-
invalid.errors shouldBe listOf("El nombre es obligatorio")
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
test("un email inválido devuelve Invalid") {
|
|
103
|
-
val request = RegistrationRequest(
|
|
104
|
-
name = "Alicia",
|
|
105
|
-
email = "no-es-un-email",
|
|
106
|
-
password = "ClaveSegur@1",
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
val result = validateRegistration(request)
|
|
110
|
-
|
|
111
|
-
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
112
|
-
invalid.errors shouldBe listOf("Formato de email inválido")
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
test("una contraseña corta devuelve Invalid") {
|
|
116
|
-
val request = RegistrationRequest(
|
|
117
|
-
name = "Alicia",
|
|
118
|
-
email = "alicia@example.com",
|
|
119
|
-
password = "corta",
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
val result = validateRegistration(request)
|
|
123
|
-
|
|
124
|
-
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
125
|
-
invalid.errors shouldBe listOf("La contraseña debe tener al menos 8 caracteres")
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
test("varios errores devuelve todos los errores") {
|
|
129
|
-
val request = RegistrationRequest(
|
|
130
|
-
name = "",
|
|
131
|
-
email = "malo",
|
|
132
|
-
password = "corta",
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
val result = validateRegistration(request)
|
|
136
|
-
|
|
137
|
-
val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()
|
|
138
|
-
invalid.errors.size shouldBe 3
|
|
139
|
-
}
|
|
140
|
-
})
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
## Paso 3: Ejecutar los tests — verificar que FALLAN
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
$ ./gradlew test
|
|
147
|
-
|
|
148
|
-
RegistrationValidatorTest > un registro válido devuelve Valid FAILED
|
|
149
|
-
kotlin.NotImplementedError: An operation is not implemented
|
|
150
|
-
|
|
151
|
-
FAILED (5 tests, 0 passed, 5 failed)
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
✓ Los tests fallan como se esperaba (NotImplementedError).
|
|
155
|
-
|
|
156
|
-
## Paso 4: Implementar el mínimo código (VERDE)
|
|
157
|
-
|
|
158
|
-
```kotlin
|
|
159
|
-
// validator/RegistrationValidator.kt
|
|
160
|
-
package com.example.validator
|
|
161
|
-
|
|
162
|
-
private val EMAIL_REGEX = Regex("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")
|
|
163
|
-
private const val MIN_PASSWORD_LENGTH = 8
|
|
164
|
-
|
|
165
|
-
fun validateRegistration(request: RegistrationRequest): ValidationResult {
|
|
166
|
-
val errors = buildList {
|
|
167
|
-
if (request.name.isBlank()) add("El nombre es obligatorio")
|
|
168
|
-
if (!EMAIL_REGEX.matches(request.email)) add("Formato de email inválido")
|
|
169
|
-
if (request.password.length < MIN_PASSWORD_LENGTH) add("La contraseña debe tener al menos $MIN_PASSWORD_LENGTH caracteres")
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return if (errors.isEmpty()) ValidationResult.Valid
|
|
173
|
-
else ValidationResult.Invalid(errors)
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Paso 5: Ejecutar los tests — verificar que PASAN
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
$ ./gradlew test
|
|
181
|
-
|
|
182
|
-
RegistrationValidatorTest > un registro válido devuelve Valid PASSED
|
|
183
|
-
RegistrationValidatorTest > un nombre en blanco devuelve Invalid PASSED
|
|
184
|
-
RegistrationValidatorTest > un email inválido devuelve Invalid PASSED
|
|
185
|
-
RegistrationValidatorTest > una contraseña corta devuelve Invalid PASSED
|
|
186
|
-
RegistrationValidatorTest > varios errores devuelve todos los errores PASSED
|
|
187
|
-
|
|
188
|
-
PASSED (5 tests, 5 passed, 0 failed)
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
✓ ¡Todos los tests pasan!
|
|
192
|
-
|
|
193
|
-
## Paso 6: Comprobar la cobertura
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
$ ./gradlew koverHtmlReport
|
|
197
|
-
|
|
198
|
-
Coverage: 100.0% of statements
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
✓ Cobertura: 100%
|
|
202
|
-
|
|
203
|
-
## ¡TDD completado!
|
|
204
|
-
````
|
|
205
|
-
|
|
206
|
-
## Patrones de test
|
|
207
|
-
|
|
208
|
-
### StringSpec (el más simple)
|
|
209
|
-
|
|
210
|
-
```kotlin
|
|
211
|
-
class CalculatorTest : StringSpec({
|
|
212
|
-
"suma dos números positivos" {
|
|
213
|
-
Calculator.add(2, 3) shouldBe 5
|
|
214
|
-
}
|
|
215
|
-
})
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### BehaviorSpec (BDD)
|
|
219
|
-
|
|
220
|
-
```kotlin
|
|
221
|
-
class OrderServiceTest : BehaviorSpec({
|
|
222
|
-
Given("un pedido válido") {
|
|
223
|
-
When("se realiza") {
|
|
224
|
-
Then("debe quedar confirmado") { /* ... */ }
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
})
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Tests dirigidos por datos
|
|
231
|
-
|
|
232
|
-
```kotlin
|
|
233
|
-
class ParserTest : FunSpec({
|
|
234
|
-
context("entradas válidas") {
|
|
235
|
-
withData("2026-01-15", "2026-12-31", "2000-01-01") { input ->
|
|
236
|
-
parseDate(input).shouldNotBeNull()
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
})
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Testing de corrutinas
|
|
243
|
-
|
|
244
|
-
```kotlin
|
|
245
|
-
class AsyncServiceTest : FunSpec({
|
|
246
|
-
test("la carga concurrente termina") {
|
|
247
|
-
runTest {
|
|
248
|
-
val result = service.fetchAll()
|
|
249
|
-
result.shouldNotBeEmpty()
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
})
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## Comandos de cobertura
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
# Ejecutar tests con cobertura
|
|
259
|
-
./gradlew koverHtmlReport
|
|
260
|
-
|
|
261
|
-
# Verificar umbrales de cobertura
|
|
262
|
-
./gradlew koverVerify
|
|
263
|
-
|
|
264
|
-
# Informe XML para CI
|
|
265
|
-
./gradlew koverXmlReport
|
|
266
|
-
|
|
267
|
-
# Abrir el informe HTML
|
|
268
|
-
open build/reports/kover/html/index.html
|
|
269
|
-
|
|
270
|
-
# Ejecutar una clase de test concreta
|
|
271
|
-
./gradlew test --tests "com.example.UserServiceTest"
|
|
272
|
-
|
|
273
|
-
# Ejecutar con salida detallada
|
|
274
|
-
./gradlew test --info
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
## Objetivos de cobertura
|
|
278
|
-
|
|
279
|
-
| Tipo de código | Objetivo |
|
|
280
|
-
|----------------|----------|
|
|
281
|
-
| Lógica de negocio crítica | 100% |
|
|
282
|
-
| APIs públicas | 90%+ |
|
|
283
|
-
| Código general | 80%+ |
|
|
284
|
-
| Código generado | Excluir |
|
|
285
|
-
|
|
286
|
-
## Buenas prácticas de TDD
|
|
287
|
-
|
|
288
|
-
**SÍ:**
|
|
289
|
-
- Escribe el test PRIMERO, antes de cualquier implementación
|
|
290
|
-
- Ejecuta los tests después de cada cambio
|
|
291
|
-
- Usa los matchers de Kotest para aserciones expresivas
|
|
292
|
-
- Usa `coEvery`/`coVerify` de MockK para funciones suspend
|
|
293
|
-
- Testea comportamiento, no detalles de implementación
|
|
294
|
-
- Incluye casos límite (vacío, null, valores máximos)
|
|
295
|
-
|
|
296
|
-
**NO:**
|
|
297
|
-
- Escribas la implementación antes que los tests
|
|
298
|
-
- Te saltes la fase ROJA
|
|
299
|
-
- Testees funciones privadas directamente
|
|
300
|
-
- Uses `Thread.sleep()` en tests de corrutinas
|
|
301
|
-
- Ignores tests inestables (flaky)
|
|
302
|
-
|
|
303
|
-
## Comandos relacionados
|
|
304
|
-
|
|
305
|
-
- `/build-kotlin` — corregir errores de build
|
|
306
|
-
- `/revisar-kotlin` — revisar el código tras implementar
|
|
307
|
-
- Skill `bucle-verificacion` — ejecutar el bucle completo de verificación
|
|
308
|
-
|
|
309
|
-
## Relacionados
|
|
310
|
-
|
|
311
|
-
- Skill: `skills/testing-kotlin/`
|
|
312
|
-
- Skill: `skills/flujo-tdd/`
|