theus-cli-linux-x64 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,249 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.component.ts"
|
|
4
|
-
- "**/*.component.html"
|
|
5
|
-
- "**/*.service.ts"
|
|
6
|
-
- "**/*.store.ts"
|
|
7
|
-
- "**/*.routes.ts"
|
|
8
|
-
---
|
|
9
|
-
# Patrones de Angular
|
|
10
|
-
|
|
11
|
-
> Este archivo extiende [common/patterns.md](../common/patterns.md) con contenido específico de Angular.
|
|
12
|
-
|
|
13
|
-
## Separación de componentes smart / dumb
|
|
14
|
-
|
|
15
|
-
Los componentes smart (contenedores) son dueños de la obtención de datos y del estado. Los componentes dumb (presentacionales) solo reciben inputs y emiten outputs — sin inyección de servicios.
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
// Smart — dueño de los datos
|
|
19
|
-
@Component({ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush })
|
|
20
|
-
export class UserPageComponent {
|
|
21
|
-
private userService = inject(UserService);
|
|
22
|
-
user = toSignal(this.userService.getUser(this.userId));
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
```html
|
|
27
|
-
<!-- Dumb — presentación pura -->
|
|
28
|
-
<app-user-card [user]="user()" (select)="onSelect($event)" />
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Capa de servicios
|
|
32
|
-
|
|
33
|
-
Los servicios son dueños de todo el acceso a datos y la lógica de negocio. Los componentes delegan — nada de `HttpClient` en componentes.
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
@Injectable({ providedIn: 'root' })
|
|
37
|
-
export class UserService {
|
|
38
|
-
private http = inject(HttpClient);
|
|
39
|
-
|
|
40
|
-
getUsers(): Observable<User[]> {
|
|
41
|
-
return this.http.get<User[]>('/api/users');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Datos asíncronos con `resource`
|
|
47
|
-
|
|
48
|
-
Usa `resource()` para la obtención asíncrona reactiva. Prefiérelo sobre pipelines manuales de RxJS para cargas de datos simples:
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
export class UserDetailComponent {
|
|
52
|
-
userId = input.required<string>();
|
|
53
|
-
|
|
54
|
-
userResource = resource({
|
|
55
|
-
request: () => ({ id: this.userId() }),
|
|
56
|
-
loader: ({ request }) =>
|
|
57
|
-
firstValueFrom(inject(UserService).getUser(request.id)),
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Acceso al estado: `userResource.value()`, `userResource.isLoading()`, `userResource.error()`, `userResource.reload()`.
|
|
63
|
-
|
|
64
|
-
## Patrones de estado con signals
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
// Estado local mutable
|
|
68
|
-
count = signal(0);
|
|
69
|
-
|
|
70
|
-
// Derivado (nunca duplicado)
|
|
71
|
-
doubled = computed(() => this.count() * 2);
|
|
72
|
-
|
|
73
|
-
// Estado derivado escribible que se reinicia con la fuente
|
|
74
|
-
selectedItem = linkedSignal(() => this.items()[0]);
|
|
75
|
-
|
|
76
|
-
// Puente de Observable a signal
|
|
77
|
-
users = toSignal(this.userService.getUsers(), { initialValue: [] });
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Nunca guardes valores derivados en signals separados — usa `computed`. Nunca uses `effect` para sincronizar signals — usa `computed` o `linkedSignal`.
|
|
81
|
-
|
|
82
|
-
## Limpieza de suscripciones
|
|
83
|
-
|
|
84
|
-
Usa `takeUntilDestroyed()` para todas las suscripciones manuales. Nunca uses `ngOnDestroy` manual + `Subject` + `takeUntil` en código nuevo.
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
export class UserComponent {
|
|
88
|
-
private destroyRef = inject(DestroyRef);
|
|
89
|
-
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
this.userService.updates$
|
|
92
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
93
|
-
.subscribe(update => this.handleUpdate(update));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## Enrutamiento
|
|
99
|
-
|
|
100
|
-
### Definición de rutas
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
// app.routes.ts
|
|
104
|
-
export const routes: Routes = [
|
|
105
|
-
{ path: '', component: HomeComponent },
|
|
106
|
-
{
|
|
107
|
-
path: 'admin',
|
|
108
|
-
canMatch: [authGuard], // CanMatch evita cargar el chunk por completo
|
|
109
|
-
loadChildren: () => import('./admin/admin.routes').then(m => m.ADMIN_ROUTES),
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
path: 'users/:id',
|
|
113
|
-
resolve: { user: userResolver },
|
|
114
|
-
component: UserDetailComponent,
|
|
115
|
-
},
|
|
116
|
-
];
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
- Usa `canMatch` en lugar de `canActivate` cuando el módulo de la ruta no debe cargarse para usuarios no autorizados
|
|
120
|
-
- Carga de forma diferida (lazy) todos los módulos de funcionalidad con `loadChildren`
|
|
121
|
-
- Pre-obtén datos con `resolve` para evitar estados de carga en los componentes
|
|
122
|
-
|
|
123
|
-
### Guards funcionales
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
export const authGuard: CanActivateFn = () => {
|
|
127
|
-
const auth = inject(AuthService);
|
|
128
|
-
return auth.isAuthenticated()
|
|
129
|
-
? true
|
|
130
|
-
: inject(Router).createUrlTree(['/login']);
|
|
131
|
-
};
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Resolvers de datos
|
|
135
|
-
|
|
136
|
-
```typescript
|
|
137
|
-
export const userResolver: ResolveFn<User> = (route) => {
|
|
138
|
-
return inject(UserService).getUser(route.paramMap.get('id')!);
|
|
139
|
-
};
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### View Transitions
|
|
143
|
-
|
|
144
|
-
Habilita transiciones de ruta fluidas con la API de View Transitions:
|
|
145
|
-
|
|
146
|
-
```typescript
|
|
147
|
-
// app.config.ts
|
|
148
|
-
provideRouter(routes, withViewTransitions())
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Patrones de inyección de dependencias
|
|
152
|
-
|
|
153
|
-
### Providers con alcance acotado
|
|
154
|
-
|
|
155
|
-
Provee servicios a nivel de componente o de ruta cuando no deban ser singletons:
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
@Component({
|
|
159
|
-
providers: [UserEditService], // acotado al subárbol de este componente
|
|
160
|
-
})
|
|
161
|
-
export class UserEditComponent {}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### `InjectionToken`
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
export const CONFIG = new InjectionToken<AppConfig>('APP_CONFIG');
|
|
168
|
-
|
|
169
|
-
// En providers:
|
|
170
|
-
{ provide: CONFIG, useValue: appConfig }
|
|
171
|
-
{ provide: CONFIG, useFactory: () => loadConfig(), deps: [] }
|
|
172
|
-
|
|
173
|
-
// Consumir:
|
|
174
|
-
private config = inject(CONFIG);
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### `viewProviders` vs `providers`
|
|
178
|
-
|
|
179
|
-
- `providers`: disponible para el componente y todos sus hijos de contenido
|
|
180
|
-
- `viewProviders`: disponible solo para la vista propia del componente (no para el contenido proyectado)
|
|
181
|
-
|
|
182
|
-
## Interceptores HTTP
|
|
183
|
-
|
|
184
|
-
Usa interceptores funcionales (v15+) para autenticación, manejo de errores y reintentos:
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
export const authInterceptor: HttpInterceptorFn = (req, next) => {
|
|
188
|
-
const token = inject(AuthService).token();
|
|
189
|
-
if (!token) return next(req);
|
|
190
|
-
return next(req.clone({ setHeaders: { Authorization: `Bearer ${token}` } }));
|
|
191
|
-
};
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Regístralos en `app.config.ts`:
|
|
195
|
-
|
|
196
|
-
```typescript
|
|
197
|
-
provideHttpClient(withInterceptors([authInterceptor, errorInterceptor]))
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## Operadores de RxJS
|
|
201
|
-
|
|
202
|
-
- `switchMap` — búsqueda, navegación (cancela lo anterior)
|
|
203
|
-
- `mergeMap` — peticiones paralelas independientes
|
|
204
|
-
- `exhaustMap` — envíos de formularios (ignora hasta completar)
|
|
205
|
-
- Maneja siempre los errores con `catchError` — nunca dejes que los streams mueran en silencio
|
|
206
|
-
|
|
207
|
-
```typescript
|
|
208
|
-
search$ = this.query$.pipe(
|
|
209
|
-
debounceTime(300),
|
|
210
|
-
distinctUntilChanged(),
|
|
211
|
-
switchMap(q => this.service.search(q).pipe(catchError(() => of([])))),
|
|
212
|
-
);
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Formularios
|
|
216
|
-
|
|
217
|
-
Sigue la estrategia de formularios existente del proyecto. Para apps nuevas en v21+, prefiere signal forms.
|
|
218
|
-
|
|
219
|
-
```typescript
|
|
220
|
-
// Reactive Forms — estándar para formularios complejos
|
|
221
|
-
export class UserFormComponent {
|
|
222
|
-
private fb = inject(FormBuilder);
|
|
223
|
-
|
|
224
|
-
form = this.fb.group({
|
|
225
|
-
name: ['', Validators.required],
|
|
226
|
-
email: ['', [Validators.required, Validators.email]],
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
## Estrategias de renderizado
|
|
232
|
-
|
|
233
|
-
- **CSR** (predeterminado): SPA estándar
|
|
234
|
-
- **SSR + Hydration**: `ng add @angular/ssr` — mejora el FCP y el SEO
|
|
235
|
-
- **SSG (prerenderizado)**: páginas estáticas en tiempo de build para rutas con mucho contenido
|
|
236
|
-
|
|
237
|
-
Al usar SSR, evita `window`, `document` y `localStorage` directamente — usa `isPlatformBrowser` o el token `DOCUMENT`.
|
|
238
|
-
|
|
239
|
-
## Accesibilidad
|
|
240
|
-
|
|
241
|
-
Usa el CDK de Angular para componentes headless accesibles (Accordion, Listbox, Combobox, Menu, Tabs, Toolbar, Tree, Grid). Estiliza los atributos ARIA en lugar de gestionarlos manualmente:
|
|
242
|
-
|
|
243
|
-
```css
|
|
244
|
-
[aria-selected="true"] { background: var(--color-selected); }
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
## Referencia
|
|
248
|
-
|
|
249
|
-
Consulta la skill `patrones-angular` para orientación en profundidad sobre signals, formularios, enrutamiento, DI, SSR y patrones de accesibilidad.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.component.ts"
|
|
4
|
-
- "**/*.component.html"
|
|
5
|
-
- "**/*.service.ts"
|
|
6
|
-
- "**/*.interceptor.ts"
|
|
7
|
-
---
|
|
8
|
-
# Seguridad en Angular
|
|
9
|
-
|
|
10
|
-
> Este archivo extiende [common/security.md](../common/security.md) con contenido específico de Angular.
|
|
11
|
-
|
|
12
|
-
## Prevención de XSS
|
|
13
|
-
|
|
14
|
-
Angular sanitiza automáticamente los valores enlazados. Nunca omitas el sanitizador con entradas controladas por el usuario.
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
// INCORRECTO: omite la sanitización — riesgo de XSS
|
|
18
|
-
this.safeHtml = this.sanitizer.bypassSecurityTrustHtml(userInput);
|
|
19
|
-
|
|
20
|
-
// CORRECTO: sanitiza explícitamente antes de confiar
|
|
21
|
-
this.safeHtml = this.sanitizer.sanitize(SecurityContext.HTML, userInput);
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
- Nunca uses los métodos `bypassSecurityTrust*` sin una razón documentada y revisada
|
|
25
|
-
- Evita `[innerHTML]` con contenido no confiable — usa `innerText` o un pipe sanitizador
|
|
26
|
-
- Nunca enlaces `[href]` a entradas del usuario — Angular no bloquea las URLs `javascript:` en todos los contextos
|
|
27
|
-
- Nunca construyas cadenas de plantilla a partir de datos del usuario
|
|
28
|
-
|
|
29
|
-
## Seguridad HTTP
|
|
30
|
-
|
|
31
|
-
Usa `HttpClient` de forma exclusiva — nunca `fetch()` ni `XHR` en crudo salvo que no exista alternativa.
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
// INCORRECTO: omite los interceptores (cabeceras de autenticación, manejo de errores, logging)
|
|
35
|
-
const res = await fetch('/api/users');
|
|
36
|
-
|
|
37
|
-
// CORRECTO
|
|
38
|
-
users$ = this.http.get<User[]>('/api/users');
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
- Adjunta los tokens de autenticación mediante interceptores — nunca los codifiques en llamadas individuales de servicios
|
|
42
|
-
- Tipa y valida las respuestas de la API — trata los datos externos como `unknown` en la frontera
|
|
43
|
-
- Nunca registres en logs respuestas HTTP que puedan contener tokens, datos personales o credenciales
|
|
44
|
-
|
|
45
|
-
## Gestión de secretos
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
// INCORRECTO: secreto codificado en el código fuente
|
|
49
|
-
const apiKey = 'sk-live-xxxx';
|
|
50
|
-
|
|
51
|
-
// CORRECTO: inyectado vía entorno
|
|
52
|
-
import { environment } from '../environments/environment';
|
|
53
|
-
const apiKey = environment.apiKey;
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
- Trata `environment.ts` como una forma de configuración — nunca guardes secretos reales en archivos de entorno bajo control de versiones
|
|
57
|
-
- Inyecta los secretos de producción vía CI/CD (variables de entorno, gestores de secretos)
|
|
58
|
-
|
|
59
|
-
## Guards de rutas
|
|
60
|
-
|
|
61
|
-
Toda ruta autenticada o restringida por rol debe tener un guard. Nunca confíes solo en ocultar elementos de la interfaz.
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
{
|
|
65
|
-
path: 'admin',
|
|
66
|
-
canMatch: [authGuard, roleGuard('admin')],
|
|
67
|
-
loadChildren: () => import('./admin/admin.routes'),
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Usa `canMatch` para rutas sensibles — evita que el módulo de la ruta se cargue por completo para usuarios no autorizados.
|
|
72
|
-
|
|
73
|
-
## Seguridad en SSR
|
|
74
|
-
|
|
75
|
-
Al usar Angular SSR:
|
|
76
|
-
|
|
77
|
-
- Nunca expongas variables de entorno del servidor al cliente vía `TransferState`, salvo que sean intencionalmente públicas
|
|
78
|
-
- Sanitiza todas las entradas antes del renderizado en servidor — el XSS basado en DOM también puede ocurrir del lado del servidor
|
|
79
|
-
- Evita `window`, `document` y `localStorage` en el servidor — protégelos con `isPlatformBrowser` o inyéctalos vía el token `DOCUMENT`
|
|
80
|
-
|
|
81
|
-
## Content Security Policy
|
|
82
|
-
|
|
83
|
-
Configura las cabeceras CSP del lado del servidor. Evita `unsafe-inline` en `script-src`. Al usar SSR con scripts inline, usa nonces mediante el soporte de CSP de Angular.
|
|
84
|
-
|
|
85
|
-
## Apoyo de skills
|
|
86
|
-
|
|
87
|
-
- Usa la skill `revision-seguridad` para auditorías de seguridad exhaustivas
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.spec.ts"
|
|
4
|
-
- "**/*.test.ts"
|
|
5
|
-
---
|
|
6
|
-
# Testing en Angular
|
|
7
|
-
|
|
8
|
-
> Este archivo extiende [common/testing.md](../common/testing.md) con contenido específico de Angular.
|
|
9
|
-
|
|
10
|
-
## Runner de tests
|
|
11
|
-
|
|
12
|
-
Usa el runner de tests configurado por el proyecto. Revisa `angular.json` y `package.json`; los proyectos Angular suelen usar Vitest, Jest o Jasmine + Karma.
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
ng test # modo watch
|
|
16
|
-
ng test --no-watch # modo CI
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Configuración de TestBed
|
|
20
|
-
|
|
21
|
-
Para componentes standalone, importa el componente directamente. Llama a `compileComponents()` en componentes con plantillas externas.
|
|
22
|
-
|
|
23
|
-
```typescript
|
|
24
|
-
describe('UserCardComponent', () => {
|
|
25
|
-
let fixture: ComponentFixture<UserCardComponent>;
|
|
26
|
-
|
|
27
|
-
beforeEach(async () => {
|
|
28
|
-
await TestBed.configureTestingModule({
|
|
29
|
-
imports: [UserCardComponent],
|
|
30
|
-
}).compileComponents();
|
|
31
|
-
|
|
32
|
-
fixture = TestBed.createComponent(UserCardComponent);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Inputs basados en signals
|
|
38
|
-
|
|
39
|
-
Establece los inputs basados en signals mediante `fixture.componentRef.setInput()`:
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
fixture.componentRef.setInput('user', mockUser);
|
|
43
|
-
fixture.detectChanges();
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Component harnesses
|
|
47
|
-
|
|
48
|
-
Prefiere los component harnesses del CDK de Angular sobre consultas directas al DOM para la interacción con la interfaz. Los harnesses son más resistentes a cambios de marcado.
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
import { HarnessLoader } from '@angular/cdk/testing';
|
|
52
|
-
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
|
|
53
|
-
import { MatButtonHarness } from '@angular/material/button/testing';
|
|
54
|
-
|
|
55
|
-
let loader: HarnessLoader;
|
|
56
|
-
|
|
57
|
-
beforeEach(() => {
|
|
58
|
-
loader = TestbedHarnessEnvironment.loader(fixture);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('dispara el guardado al hacer clic en el botón', async () => {
|
|
62
|
-
const button = await loader.getHarness(MatButtonHarness.with({ text: 'Save' }));
|
|
63
|
-
await button.click();
|
|
64
|
-
expect(saveSpy).toHaveBeenCalled();
|
|
65
|
-
});
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Testing del router
|
|
69
|
-
|
|
70
|
-
Usa `RouterTestingHarness` para componentes que dependen del router:
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { RouterTestingHarness } from '@angular/router/testing';
|
|
74
|
-
|
|
75
|
-
it('renderiza el usuario al navegar', async () => {
|
|
76
|
-
const harness = await RouterTestingHarness.create();
|
|
77
|
-
const component = await harness.navigateByUrl('/users/1', UserDetailComponent);
|
|
78
|
-
expect(component.userId()).toBe('1');
|
|
79
|
-
});
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Testing asíncrono
|
|
83
|
-
|
|
84
|
-
Usa `fakeAsync` + `tick` para asincronía controlada. Usa `waitForAsync` para asincronía real con `fixture.whenStable()`.
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
it('carga el usuario tras el retraso', fakeAsync(() => {
|
|
88
|
-
const service = TestBed.inject(UserService);
|
|
89
|
-
vi.spyOn(service, 'getUser').mockReturnValue(of(mockUser));
|
|
90
|
-
|
|
91
|
-
fixture.detectChanges();
|
|
92
|
-
tick();
|
|
93
|
-
fixture.detectChanges();
|
|
94
|
-
|
|
95
|
-
expect(fixture.nativeElement.querySelector('.name').textContent).toBe(mockUser.name);
|
|
96
|
-
}));
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Testing de HTTP
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
import { provideHttpClientTesting } from '@angular/common/http/testing';
|
|
103
|
-
import { HttpTestingController } from '@angular/common/http/testing';
|
|
104
|
-
|
|
105
|
-
beforeEach(() => {
|
|
106
|
-
TestBed.configureTestingModule({
|
|
107
|
-
providers: [provideHttpClient(), provideHttpClientTesting()],
|
|
108
|
-
});
|
|
109
|
-
httpMock = TestBed.inject(HttpTestingController);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
afterEach(() => httpMock.verify());
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Testing de servicios
|
|
116
|
-
|
|
117
|
-
Inyecta los servicios directamente, sin fixture de componente:
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
describe('UserService', () => {
|
|
121
|
-
let service: UserService;
|
|
122
|
-
|
|
123
|
-
beforeEach(() => {
|
|
124
|
-
TestBed.configureTestingModule({
|
|
125
|
-
providers: [provideHttpClient(), provideHttpClientTesting()],
|
|
126
|
-
});
|
|
127
|
-
service = TestBed.inject(UserService);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## Qué probar
|
|
133
|
-
|
|
134
|
-
- **Servicios**: todos los métodos públicos, rutas de error, interacciones HTTP
|
|
135
|
-
- **Componentes**: enlaces de input/output, salida renderizada para los estados clave, interacciones del usuario mediante harnesses
|
|
136
|
-
- **Pipes**: transformación pura — tests unitarios simples, sin TestBed
|
|
137
|
-
- **Guards/Resolvers**: valores de retorno para estados permitidos y denegados usando `RouterTestingHarness`
|
|
138
|
-
|
|
139
|
-
## Testing E2E
|
|
140
|
-
|
|
141
|
-
Usa el framework E2E configurado del proyecto, como Cypress o Playwright, para los flujos de usuario críticos.
|
|
142
|
-
|
|
143
|
-
```typescript
|
|
144
|
-
describe('Flujo de inicio de sesión', () => {
|
|
145
|
-
it('redirige al dashboard con credenciales válidas', () => {
|
|
146
|
-
cy.visit('/login');
|
|
147
|
-
cy.get('[data-cy=email]').type('user@example.com');
|
|
148
|
-
cy.get('[data-cy=password]').type('password123');
|
|
149
|
-
cy.get('[data-cy=submit]').click();
|
|
150
|
-
cy.url().should('include', '/dashboard');
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
- Añade atributos `data-cy` a los elementos interactivos para tener selectores estables
|
|
156
|
-
- No dependas de clases CSS ni del contenido de texto como selectores en tests E2E
|
|
157
|
-
|
|
158
|
-
## Cobertura
|
|
159
|
-
|
|
160
|
-
Apunta a ≥80% en servicios y pipes. Componentes: prueba el comportamiento, no los detalles de implementación.
|
|
161
|
-
|
|
162
|
-
## Referencia
|
|
163
|
-
|
|
164
|
-
Consulta la skill `patrones-angular` para patrones de testing completos, uso de harnesses y buenas prácticas de asincronía.
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.ets"
|
|
4
|
-
- "**/*.ts"
|
|
5
|
-
- "**/module.json5"
|
|
6
|
-
- "**/oh-package.json5"
|
|
7
|
-
- "**/build-profile.json5"
|
|
8
|
-
---
|
|
9
|
-
# Estilo de código HarmonyOS / ArkTS
|
|
10
|
-
|
|
11
|
-
> Este archivo extiende [common/coding-style.md](../common/coding-style.md) con contenido específico de HarmonyOS y ArkTS.
|
|
12
|
-
|
|
13
|
-
## Restricciones del lenguaje ArkTS
|
|
14
|
-
|
|
15
|
-
ArkTS es un subconjunto estricto y con tipado estático de TypeScript. Violar estas restricciones provoca **errores de compilación**.
|
|
16
|
-
|
|
17
|
-
### Sistema de tipos
|
|
18
|
-
|
|
19
|
-
- Nada de tipos `any` ni `unknown`: usa siempre tipos explícitos
|
|
20
|
-
- Sin tipos de acceso por índice: usa los nombres de tipo directamente
|
|
21
|
-
- Sin alias de tipos condicionales ni la palabra clave `infer`
|
|
22
|
-
- Sin tipos intersección: usa herencia
|
|
23
|
-
- Sin mapped types: usa clases e idiomas convencionales
|
|
24
|
-
- Nada de `typeof` en anotaciones de tipo: usa declaraciones de tipo explícitas
|
|
25
|
-
- Sin aserciones `as const`: usa anotaciones de tipo explícitas
|
|
26
|
-
- Sin tipado estructural: usa herencia, interfaces o alias de tipo
|
|
27
|
-
- Sin utility types de TypeScript excepto `Partial`, `Required`, `Readonly` y `Record`
|
|
28
|
-
- Para `Record<K, V>`, el tipo de la expresión de índice es `V | undefined`
|
|
29
|
-
- Omite la anotación de tipo en las cláusulas `catch` (ArkTS no admite `any`/`unknown`)
|
|
30
|
-
|
|
31
|
-
### Funciones y clases
|
|
32
|
-
|
|
33
|
-
- Sin expresiones de función: usa funciones flecha
|
|
34
|
-
- Sin funciones anidadas: usa lambdas
|
|
35
|
-
- Sin funciones generadoras: usa `async`/`await` para la multitarea
|
|
36
|
-
- Nada de `Function.apply`, `Function.call` ni `Function.bind`: sigue la POO tradicional para `this`
|
|
37
|
-
- Sin expresiones de tipo constructor: usa lambdas
|
|
38
|
-
- Sin firmas de constructor en interfaces u object types: usa métodos o clases
|
|
39
|
-
- No declares campos de clase en el constructor: decláralos en el cuerpo de la clase
|
|
40
|
-
- Nada de `this` en funciones sueltas o métodos estáticos: solo en métodos de instancia
|
|
41
|
-
- Sin `new.target`
|
|
42
|
-
- Sin aserciones de asignación definitiva (`let v!: T`): usa declaraciones inicializadas
|
|
43
|
-
- Sin literales de clase: introduce tipos de clase con nombre
|
|
44
|
-
- No uses clases como objetos (asignarlas a variables): las declaraciones de clase introducen tipos, no valores
|
|
45
|
-
- Solo un bloque estático por clase: fusiona todas las sentencias estáticas
|
|
46
|
-
|
|
47
|
-
### Acceso a objetos y propiedades
|
|
48
|
-
|
|
49
|
-
- Sin declaración dinámica de campos ni acceso `obj["field"]`: usa la sintaxis `obj.field`
|
|
50
|
-
- Sin operador `delete`: usa un tipo nullable con `null` para marcar la ausencia
|
|
51
|
-
- Sin asignación al prototipo: usa clases e interfaces
|
|
52
|
-
- Sin operador `in`: usa `instanceof`
|
|
53
|
-
- No reasignes métodos de objetos: usa funciones envoltorio o herencia
|
|
54
|
-
- Sin la API `Symbol()` (excepto `Symbol.iterator`)
|
|
55
|
-
- Sin `globalThis` ni ámbito global: usa exports/imports explícitos de módulo
|
|
56
|
-
- Sin namespaces usados como objetos: usa clases o módulos
|
|
57
|
-
- Sin sentencias dentro de namespaces: usa funciones
|
|
58
|
-
|
|
59
|
-
### Desestructuración y spread
|
|
60
|
-
|
|
61
|
-
- Sin asignaciones ni declaraciones de variables por desestructuración: usa objetos intermedios y acceso campo a campo
|
|
62
|
-
- Sin desestructuración en la declaración de parámetros: pasa los parámetros directamente y asigna nombres locales a mano
|
|
63
|
-
- El operador spread solo para expandir arrays (o clases derivadas de array) en parámetros rest o literales de array
|
|
64
|
-
|
|
65
|
-
### Módulos e imports
|
|
66
|
-
|
|
67
|
-
- Sin `require()`: usa la sintaxis `import` normal
|
|
68
|
-
- Sin `export = ...`: usa export/import normales
|
|
69
|
-
- Sin import assertions: en ArkTS los imports se resuelven en tiempo de compilación
|
|
70
|
-
- Sin módulos UMD
|
|
71
|
-
- Sin comodines en los nombres de módulo
|
|
72
|
-
- Todas las sentencias `import` deben ir antes que cualquier otra sentencia
|
|
73
|
-
- El código TypeScript no debe depender de código ArkTS vía import (la dirección inversa sí está soportada)
|
|
74
|
-
|
|
75
|
-
### Otras restricciones
|
|
76
|
-
|
|
77
|
-
- Nada de `var`: usa `let`
|
|
78
|
-
- Sin bucles `for...in`: usa bucles `for` normales para arrays
|
|
79
|
-
- Sin sentencias `with`
|
|
80
|
-
- Sin expresiones JSX
|
|
81
|
-
- Sin identificadores privados `#`: usa la palabra clave `private`
|
|
82
|
-
- Sin declaration merging (clases, interfaces, enums): mantén las definiciones compactas
|
|
83
|
-
- Sin index signatures: usa arrays
|
|
84
|
-
- El operador coma solo en bucles `for`
|
|
85
|
-
- Los operadores unarios `+`, `-`, `~` solo con tipos numéricos (sin conversión implícita de strings)
|
|
86
|
-
- Miembros de enum: solo expresiones de tiempo de compilación del mismo tipo en los inicializadores explícitos
|
|
87
|
-
- La inferencia del tipo de retorno de funciones es limitada: especifica el tipo de retorno explícitamente al llamar funciones que lo omiten
|
|
88
|
-
|
|
89
|
-
### Literales de objeto
|
|
90
|
-
|
|
91
|
-
- Solo se admiten cuando el compilador puede inferir la clase o interfaz correspondiente
|
|
92
|
-
- NO se admiten para: tipos `any`/`Object`/`object`, clases o interfaces con métodos, clases con constructores parametrizados, clases con campos `readonly`
|
|
93
|
-
|
|
94
|
-
## Convenciones de nombres
|
|
95
|
-
|
|
96
|
-
- Variables / funciones: `camelCase` (p. ej., `getUserInfo`, `goodsList`)
|
|
97
|
-
- Clases / interfaces: `PascalCase` (p. ej., `UserViewModel`, `IGoodsModel`)
|
|
98
|
-
- Constantes: `UPPER_SNAKE_CASE` (p. ej., `MAX_PAGE_SIZE`, `COLOR_PRIMARY`)
|
|
99
|
-
- Nombres de archivo: `PascalCase` para componentes (p. ej., `HomePage.ets`), `camelCase` para utilidades
|
|
100
|
-
|
|
101
|
-
## Formato
|
|
102
|
-
|
|
103
|
-
- Prefiere comillas dobles para strings
|
|
104
|
-
- Punto y coma al final de cada sentencia
|
|
105
|
-
- Nunca uses `var`: prefiere `const`, luego `let`
|
|
106
|
-
- Todos los métodos, parámetros y valores de retorno deben tener anotaciones de tipo completas
|
|
107
|
-
|
|
108
|
-
## Organización de archivos
|
|
109
|
-
|
|
110
|
-
- Archivos de componente (`.ets`): un `@ComponentV2` por archivo
|
|
111
|
-
- Archivos de ViewModel: una clase ViewModel por archivo
|
|
112
|
-
- Archivos de modelo: los modelos de datos relacionados pueden compartir archivo
|
|
113
|
-
- Mantén los archivos por debajo de 400 líneas; extrae helpers en archivos que se acerquen a 800 líneas
|
|
114
|
-
|
|
115
|
-
## Comentarios
|
|
116
|
-
|
|
117
|
-
- Cabecera de archivo: `@file` (propósito del archivo) + `@author` (desarrollador), si el proyecto ya usa cabeceras de archivo
|
|
118
|
-
- Métodos públicos: JSDoc con `@param` y `@returns`; añade `@example` en métodos complejos
|
|
119
|
-
- Ajusta el idioma de la documentación al ya existente en el proyecto; usa inglés salvo que el repositorio ya haya estandarizado comentarios en chino
|
|
120
|
-
|
|
121
|
-
## Manejo de errores
|
|
122
|
-
|
|
123
|
-
```typescript
|
|
124
|
-
// Usa try/catch con un manejo de errores adecuado
|
|
125
|
-
try {
|
|
126
|
-
const result = await riskyOperation()
|
|
127
|
-
return result
|
|
128
|
-
} catch (error) {
|
|
129
|
-
hilog.error(0x0000, 'TAG', 'La operación falló: %{public}s', error)
|
|
130
|
-
throw new Error('Mensaje de error comprensible para el usuario')
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Inmutabilidad
|
|
135
|
-
|
|
136
|
-
Sigue los principios comunes de inmutabilidad: crea objetos nuevos en lugar de mutar los existentes.
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
// INCORRECTO: mutación
|
|
140
|
-
function updateUser(user: UserModel, name: string): UserModel {
|
|
141
|
-
user.name = name // mutación directa
|
|
142
|
-
return user
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// CORRECTO: inmutable - crear una instancia nueva
|
|
146
|
-
function updateUser(user: UserModel, name: string): UserModel {
|
|
147
|
-
const updated = new UserModel()
|
|
148
|
-
updated.id = user.id
|
|
149
|
-
updated.name = name
|
|
150
|
-
updated.email = user.email
|
|
151
|
-
return updated
|
|
152
|
-
}
|
|
153
|
-
```
|