theus-cli-linux-arm64 1.2.1 → 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/README.md +15 -0
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/chrome-extension/README.md +142 -0
- package/vendor/chrome-extension/background.js +540 -0
- package/vendor/chrome-extension/cdp-core.js +400 -0
- package/vendor/chrome-extension/cdp-core.test.ts +321 -0
- package/vendor/chrome-extension/cdp.js +672 -0
- package/vendor/chrome-extension/icons/icon128.png +0 -0
- package/vendor/chrome-extension/icons/icon16.png +0 -0
- package/vendor/chrome-extension/icons/icon32.png +0 -0
- package/vendor/chrome-extension/icons/icon48.png +0 -0
- package/vendor/chrome-extension/manifest.json +36 -0
- package/vendor/chrome-extension/popup.html +78 -0
- package/vendor/chrome-extension/popup.js +47 -0
- package/vendor/chrome-extension/recorder.js +316 -0
- 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,112 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.fs"
|
|
4
|
-
- "**/*.fsx"
|
|
5
|
-
---
|
|
6
|
-
# Estilo de código F#
|
|
7
|
-
|
|
8
|
-
> Este archivo extiende [common/coding-style.md](../common/coding-style.md) con contenido específico de F#.
|
|
9
|
-
|
|
10
|
-
## Estándares
|
|
11
|
-
|
|
12
|
-
- Sigue las convenciones estándar de F# y apóyate en el sistema de tipos para garantizar la corrección
|
|
13
|
-
- Prefiere la inmutabilidad por defecto; usa `mutable` solo cuando el rendimiento lo justifique
|
|
14
|
-
- Mantén los módulos enfocados y cohesivos
|
|
15
|
-
|
|
16
|
-
## Tipos y modelos
|
|
17
|
-
|
|
18
|
-
- Prefiere uniones discriminadas para modelar el dominio en lugar de jerarquías de clases
|
|
19
|
-
- Usa records para datos con campos con nombre
|
|
20
|
-
- Usa uniones de un solo caso como envoltorios con seguridad de tipos alrededor de primitivos
|
|
21
|
-
- Evita las clases salvo que la interoperabilidad o el estado mutable las requieran
|
|
22
|
-
|
|
23
|
-
```fsharp
|
|
24
|
-
type EmailAddress = EmailAddress of string
|
|
25
|
-
|
|
26
|
-
type OrderStatus =
|
|
27
|
-
| Pending
|
|
28
|
-
| Confirmed of confirmedAt: DateTimeOffset
|
|
29
|
-
| Shipped of trackingNumber: string
|
|
30
|
-
| Cancelled of reason: string
|
|
31
|
-
|
|
32
|
-
type Order =
|
|
33
|
-
{ Id: Guid
|
|
34
|
-
CustomerId: string
|
|
35
|
-
Status: OrderStatus
|
|
36
|
-
Items: OrderItem list }
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Inmutabilidad
|
|
40
|
-
|
|
41
|
-
- Los records son inmutables por defecto; usa expresiones `with` para las actualizaciones
|
|
42
|
-
- Prefiere `list`, `map` y `set` frente a colecciones mutables
|
|
43
|
-
- Evita las celdas `ref` y los campos mutables en la lógica de dominio
|
|
44
|
-
|
|
45
|
-
```fsharp
|
|
46
|
-
let rename (profile: UserProfile) newName =
|
|
47
|
-
{ profile with Name = newName }
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Estilo de funciones
|
|
51
|
-
|
|
52
|
-
- Prefiere funciones pequeñas y componibles en lugar de métodos grandes
|
|
53
|
-
- Usa el operador pipe `|>` para construir pipelines de datos legibles
|
|
54
|
-
- Prefiere pattern matching en lugar de cadenas de if/else
|
|
55
|
-
- Usa `Option` en lugar de null; usa `Result` para operaciones que pueden fallar
|
|
56
|
-
|
|
57
|
-
```fsharp
|
|
58
|
-
let processOrder order =
|
|
59
|
-
order
|
|
60
|
-
|> validateItems
|
|
61
|
-
|> Result.bind calculateTotal
|
|
62
|
-
|> Result.map applyDiscount
|
|
63
|
-
|> Result.mapError OrderError
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Async y manejo de errores
|
|
67
|
-
|
|
68
|
-
- Usa `task { }` para interoperar con las APIs asíncronas de .NET
|
|
69
|
-
- Usa `async { }` para flujos asíncronos nativos de F#
|
|
70
|
-
- Propaga `CancellationToken` a través de las APIs asíncronas públicas
|
|
71
|
-
- Prefiere `Result` y la programación orientada a raíles (railway-oriented) sobre excepciones para los fallos esperados
|
|
72
|
-
|
|
73
|
-
```fsharp
|
|
74
|
-
let loadOrderAsync (orderId: Guid) (ct: CancellationToken) =
|
|
75
|
-
task {
|
|
76
|
-
let! order = repository.FindAsync(orderId, ct)
|
|
77
|
-
return
|
|
78
|
-
order
|
|
79
|
-
|> Option.defaultWith (fun () ->
|
|
80
|
-
failwith $"No se encontró el pedido {orderId}.")
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Formato
|
|
85
|
-
|
|
86
|
-
- Usa `fantomas` para el formateo automático
|
|
87
|
-
- Prefiere el espaciado significativo; evita paréntesis innecesarios
|
|
88
|
-
- Elimina las declaraciones `open` sin usar
|
|
89
|
-
|
|
90
|
-
### Orden de las declaraciones open
|
|
91
|
-
|
|
92
|
-
Agrupa las sentencias `open` en cuatro secciones separadas por una línea en blanco, cada sección ordenada lexicográficamente:
|
|
93
|
-
|
|
94
|
-
1. `System.*`
|
|
95
|
-
2. `Microsoft.*`
|
|
96
|
-
3. Namespaces de terceros
|
|
97
|
-
4. Namespaces propios / del proyecto
|
|
98
|
-
|
|
99
|
-
```fsharp
|
|
100
|
-
open System
|
|
101
|
-
open System.Collections.Generic
|
|
102
|
-
open System.Threading.Tasks
|
|
103
|
-
|
|
104
|
-
open Microsoft.AspNetCore.Http
|
|
105
|
-
open Microsoft.Extensions.Logging
|
|
106
|
-
|
|
107
|
-
open FsCheck.Xunit
|
|
108
|
-
open Swensen.Unquote
|
|
109
|
-
|
|
110
|
-
open MyApp.Domain
|
|
111
|
-
open MyApp.Infrastructure
|
|
112
|
-
```
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.fs"
|
|
4
|
-
- "**/*.fsx"
|
|
5
|
-
- "**/*.fsproj"
|
|
6
|
-
- "**/*.sln"
|
|
7
|
-
- "**/*.slnx"
|
|
8
|
-
- "**/Directory.Build.props"
|
|
9
|
-
- "**/Directory.Build.targets"
|
|
10
|
-
---
|
|
11
|
-
# Hooks para F#
|
|
12
|
-
|
|
13
|
-
> Este archivo extiende [common/hooks.md](../common/hooks.md) con contenido específico de F#.
|
|
14
|
-
|
|
15
|
-
## Hooks PostToolUse
|
|
16
|
-
|
|
17
|
-
Configúralos en `~/.theus/settings.json`:
|
|
18
|
-
|
|
19
|
-
- **fantomas**: formatea automáticamente los archivos F# editados
|
|
20
|
-
- **dotnet build**: verifica que la solución o el proyecto sigan compilando tras las ediciones
|
|
21
|
-
- **dotnet test --no-build**: vuelve a ejecutar el proyecto de tests relevante más cercano tras cambios de comportamiento
|
|
22
|
-
|
|
23
|
-
## Hooks Stop
|
|
24
|
-
|
|
25
|
-
- Ejecuta un `dotnet build` final antes de terminar una sesión con cambios amplios en F#
|
|
26
|
-
- Avisa cuando haya archivos `appsettings*.json` modificados para que no se suban secretos al repositorio
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.fs"
|
|
4
|
-
- "**/*.fsx"
|
|
5
|
-
---
|
|
6
|
-
# Patrones de F#
|
|
7
|
-
|
|
8
|
-
> Este archivo extiende [common/patterns.md](../common/patterns.md) con contenido específico de F#.
|
|
9
|
-
|
|
10
|
-
## Tipo Result para el manejo de errores
|
|
11
|
-
|
|
12
|
-
Usa `Result<'T, 'TError>` con programación orientada a raíles (railway-oriented) en lugar de excepciones para los fallos esperados.
|
|
13
|
-
|
|
14
|
-
```fsharp
|
|
15
|
-
type OrderError =
|
|
16
|
-
| InvalidCustomer of string
|
|
17
|
-
| EmptyItems
|
|
18
|
-
| ItemOutOfStock of sku: string
|
|
19
|
-
|
|
20
|
-
let validateOrder (request: CreateOrderRequest) : Result<ValidatedOrder, OrderError> =
|
|
21
|
-
if String.IsNullOrWhiteSpace request.CustomerId then
|
|
22
|
-
Error(InvalidCustomer "CustomerId es obligatorio")
|
|
23
|
-
elif request.Items |> List.isEmpty then
|
|
24
|
-
Error EmptyItems
|
|
25
|
-
else
|
|
26
|
-
Ok { CustomerId = request.CustomerId; Items = request.Items }
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Option para valores ausentes
|
|
30
|
-
|
|
31
|
-
Prefiere `Option<'T>` en lugar de null. Usa `Option.map`, `Option.bind` y `Option.defaultValue` para transformar.
|
|
32
|
-
|
|
33
|
-
```fsharp
|
|
34
|
-
let findUser (id: Guid) : User option =
|
|
35
|
-
users |> Map.tryFind id
|
|
36
|
-
|
|
37
|
-
let getUserEmail userId =
|
|
38
|
-
findUser userId
|
|
39
|
-
|> Option.map (fun u -> u.Email)
|
|
40
|
-
|> Option.defaultValue "desconocido@example.com"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Uniones discriminadas para modelar el dominio
|
|
44
|
-
|
|
45
|
-
Modela los estados de negocio de forma explícita. El compilador exige un manejo exhaustivo.
|
|
46
|
-
|
|
47
|
-
```fsharp
|
|
48
|
-
type PaymentState =
|
|
49
|
-
| AwaitingPayment of amount: decimal
|
|
50
|
-
| Paid of paidAt: DateTimeOffset * transactionId: string
|
|
51
|
-
| Refunded of refundedAt: DateTimeOffset * reason: string
|
|
52
|
-
| Failed of error: string
|
|
53
|
-
|
|
54
|
-
let describePayment = function
|
|
55
|
-
| AwaitingPayment amount -> $"A la espera del pago de {amount:C}"
|
|
56
|
-
| Paid (at, txn) -> $"Pagado el {at} (txn: {txn})"
|
|
57
|
-
| Refunded (at, reason) -> $"Reembolsado el {at}: {reason}"
|
|
58
|
-
| Failed error -> $"El pago falló: {error}"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Expresiones de computación
|
|
62
|
-
|
|
63
|
-
Usa expresiones de computación para simplificar operaciones secuenciales que pueden fallar.
|
|
64
|
-
|
|
65
|
-
```fsharp
|
|
66
|
-
let placeOrder request =
|
|
67
|
-
result {
|
|
68
|
-
let! validated = validateOrder request
|
|
69
|
-
let! inventory = checkInventory validated.Items
|
|
70
|
-
let! order = createOrder validated inventory
|
|
71
|
-
return order
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Organización en módulos
|
|
76
|
-
|
|
77
|
-
- Agrupa funciones relacionadas en módulos en lugar de clases
|
|
78
|
-
- Usa `[<RequireQualifiedAccess>]` para evitar colisiones de nombres
|
|
79
|
-
- Mantén los módulos pequeños y enfocados en una única responsabilidad
|
|
80
|
-
|
|
81
|
-
```fsharp
|
|
82
|
-
[<RequireQualifiedAccess>]
|
|
83
|
-
module Order =
|
|
84
|
-
let create customerId items = { Id = Guid.NewGuid(); CustomerId = customerId; Items = items; Status = Pending }
|
|
85
|
-
let confirm order = { order with Status = Confirmed(DateTimeOffset.UtcNow) }
|
|
86
|
-
let cancel reason order = { order with Status = Cancelled reason }
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Inyección de dependencias
|
|
90
|
-
|
|
91
|
-
- Define las dependencias como parámetros de función o como un record de funciones
|
|
92
|
-
- Usa interfaces con moderación, principalmente en la frontera con librerías de .NET
|
|
93
|
-
- Prefiere la aplicación parcial para inyectar dependencias en los pipelines
|
|
94
|
-
|
|
95
|
-
```fsharp
|
|
96
|
-
type OrderDeps =
|
|
97
|
-
{ FindOrder: Guid -> Task<Order option>
|
|
98
|
-
SaveOrder: Order -> Task<unit>
|
|
99
|
-
SendNotification: Order -> Task<unit> }
|
|
100
|
-
|
|
101
|
-
let processOrder (deps: OrderDeps) orderId =
|
|
102
|
-
task {
|
|
103
|
-
match! deps.FindOrder orderId with
|
|
104
|
-
| None -> return Error "Pedido no encontrado"
|
|
105
|
-
| Some order ->
|
|
106
|
-
let confirmed = Order.confirm order
|
|
107
|
-
do! deps.SaveOrder confirmed
|
|
108
|
-
do! deps.SendNotification confirmed
|
|
109
|
-
return Ok confirmed
|
|
110
|
-
}
|
|
111
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.fs"
|
|
4
|
-
- "**/*.fsx"
|
|
5
|
-
- "**/*.fsproj"
|
|
6
|
-
- "**/appsettings*.json"
|
|
7
|
-
---
|
|
8
|
-
# Seguridad en F#
|
|
9
|
-
|
|
10
|
-
> Este archivo extiende [common/security.md](../common/security.md) con contenido específico de F#.
|
|
11
|
-
|
|
12
|
-
## Gestión de secretos
|
|
13
|
-
|
|
14
|
-
- Nunca codifiques API keys, tokens ni cadenas de conexión en el código fuente
|
|
15
|
-
- Usa variables de entorno, user secrets para desarrollo local y un gestor de secretos en producción
|
|
16
|
-
- Mantén los `appsettings.*.json` libres de credenciales reales
|
|
17
|
-
|
|
18
|
-
```fsharp
|
|
19
|
-
// INCORRECTO
|
|
20
|
-
let apiKey = "sk-live-123"
|
|
21
|
-
|
|
22
|
-
// CORRECTO
|
|
23
|
-
let apiKey =
|
|
24
|
-
configuration["Pagos:ApiKey"]
|
|
25
|
-
|> Option.ofObj
|
|
26
|
-
|> Option.defaultWith (fun () -> failwith "Pagos:ApiKey no está configurada.")
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Prevención de inyección SQL
|
|
30
|
-
|
|
31
|
-
- Usa siempre consultas parametrizadas con ADO.NET, Dapper o EF Core
|
|
32
|
-
- Nunca concatenes entrada del usuario en cadenas SQL
|
|
33
|
-
- Valida los campos de ordenamiento y los operadores de filtro antes de componer consultas dinámicas
|
|
34
|
-
|
|
35
|
-
```fsharp
|
|
36
|
-
let findByCustomer (connection: IDbConnection) customerId =
|
|
37
|
-
task {
|
|
38
|
-
let sql = "SELECT * FROM Orders WHERE CustomerId = @customerId"
|
|
39
|
-
return! connection.QueryAsync<Order>(sql, {| customerId = customerId |})
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Validación de entrada
|
|
44
|
-
|
|
45
|
-
- Valida las entradas en la frontera de la aplicación usando tipos
|
|
46
|
-
- Usa uniones discriminadas de un solo caso para los valores ya validados
|
|
47
|
-
- Rechaza la entrada inválida antes de que llegue a la lógica de dominio
|
|
48
|
-
|
|
49
|
-
```fsharp
|
|
50
|
-
type ValidatedEmail = private ValidatedEmail of string
|
|
51
|
-
|
|
52
|
-
module ValidatedEmail =
|
|
53
|
-
let create (input: string) =
|
|
54
|
-
if System.Text.RegularExpressions.Regex.IsMatch(input, @"^[^@]+@[^@]+\.[^@]+$") then
|
|
55
|
-
Ok(ValidatedEmail input)
|
|
56
|
-
else
|
|
57
|
-
Error "Dirección de correo inválida"
|
|
58
|
-
|
|
59
|
-
let value (ValidatedEmail v) = v
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Autenticación y autorización
|
|
63
|
-
|
|
64
|
-
- Prefiere los manejadores de autenticación del framework en lugar de parsear tokens a mano
|
|
65
|
-
- Aplica las políticas de autorización en la frontera de los endpoints o handlers
|
|
66
|
-
- Nunca registres en logs tokens sin procesar, contraseñas ni datos personales (PII)
|
|
67
|
-
|
|
68
|
-
## Manejo de errores
|
|
69
|
-
|
|
70
|
-
- Devuelve mensajes seguros de cara al cliente
|
|
71
|
-
- Registra las excepciones detalladas con contexto estructurado en el servidor
|
|
72
|
-
- No expongas stack traces, texto SQL ni rutas del sistema de archivos en las respuestas de la API
|
|
73
|
-
|
|
74
|
-
## Referencia
|
|
75
|
-
|
|
76
|
-
Consulta la skill `revision-seguridad` para checklists más amplias de revisión de seguridad de aplicaciones.
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.fs"
|
|
4
|
-
- "**/*.fsx"
|
|
5
|
-
- "**/*.fsproj"
|
|
6
|
-
---
|
|
7
|
-
# Testing en F#
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/testing.md](../common/testing.md) con contenido específico de F#.
|
|
10
|
-
|
|
11
|
-
## Framework de tests
|
|
12
|
-
|
|
13
|
-
- Prefiere **xUnit** con **FsUnit.xUnit** para aserciones amigables con F#
|
|
14
|
-
- Usa **Unquote** para aserciones basadas en quotations con mensajes de fallo claros
|
|
15
|
-
- Usa **FsCheck.xUnit** para testing basado en propiedades
|
|
16
|
-
- Usa **NSubstitute** o stubs de funciones para simular dependencias
|
|
17
|
-
- Usa **Testcontainers** cuando los tests de integración necesiten infraestructura real
|
|
18
|
-
|
|
19
|
-
## Organización de los tests
|
|
20
|
-
|
|
21
|
-
- Refleja la estructura de `src/` bajo `tests/`
|
|
22
|
-
- Separa con claridad la cobertura unitaria, de integración y de extremo a extremo
|
|
23
|
-
- Nombra los tests por comportamiento, no por detalles de implementación
|
|
24
|
-
|
|
25
|
-
```fsharp
|
|
26
|
-
open Xunit
|
|
27
|
-
open Swensen.Unquote
|
|
28
|
-
|
|
29
|
-
[<Fact>]
|
|
30
|
-
let ``PlaceOrder devuelve éxito cuando la solicitud es válida`` () =
|
|
31
|
-
let request = { CustomerId = "cust-123"; Items = [ validItem ] }
|
|
32
|
-
let result = OrderService.placeOrder request
|
|
33
|
-
test <@ Result.isOk result @>
|
|
34
|
-
|
|
35
|
-
[<Fact>]
|
|
36
|
-
let ``PlaceOrder devuelve error cuando los ítems están vacíos`` () =
|
|
37
|
-
let request = { CustomerId = "cust-123"; Items = [] }
|
|
38
|
-
let result = OrderService.placeOrder request
|
|
39
|
-
test <@ Result.isError result @>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Testing basado en propiedades con FsCheck
|
|
43
|
-
|
|
44
|
-
```fsharp
|
|
45
|
-
open FsCheck.Xunit
|
|
46
|
-
|
|
47
|
-
[<Property>]
|
|
48
|
-
let ``el total del pedido nunca es negativo`` (items: OrderItem list) =
|
|
49
|
-
let total = Order.calculateTotal items
|
|
50
|
-
total >= 0m
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Tests de integración con ASP.NET Core
|
|
54
|
-
|
|
55
|
-
- Usa `WebApplicationFactory<TEntryPoint>` para la cobertura de integración de la API
|
|
56
|
-
- Prueba autenticación, validación y serialización a través de HTTP, no saltándote el middleware
|
|
57
|
-
|
|
58
|
-
## Cobertura
|
|
59
|
-
|
|
60
|
-
- Apunta a una cobertura de líneas de al menos 80 %
|
|
61
|
-
- Concentra la cobertura en lógica de dominio, validación, autenticación y rutas de fallo
|
|
62
|
-
- Ejecuta `dotnet test` en CI con recolección de cobertura habilitada cuando esté disponible
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.go"
|
|
4
|
-
- "**/go.mod"
|
|
5
|
-
- "**/go.sum"
|
|
6
|
-
---
|
|
7
|
-
# Estilo de código Go
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/coding-style.md](../common/coding-style.md) con contenido específico de Go.
|
|
10
|
-
|
|
11
|
-
## Formato
|
|
12
|
-
|
|
13
|
-
- **gofmt** y **goimports** son obligatorios — sin debates de estilo
|
|
14
|
-
|
|
15
|
-
## Principios de diseño
|
|
16
|
-
|
|
17
|
-
- Acepta interfaces, devuelve structs
|
|
18
|
-
- Mantén las interfaces pequeñas (1-3 métodos)
|
|
19
|
-
|
|
20
|
-
## Manejo de errores
|
|
21
|
-
|
|
22
|
-
Envuelve siempre los errores con contexto:
|
|
23
|
-
|
|
24
|
-
```go
|
|
25
|
-
if err != nil {
|
|
26
|
-
return fmt.Errorf("no se pudo crear el usuario: %w", err)
|
|
27
|
-
}
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Referencia
|
|
31
|
-
|
|
32
|
-
Ver skill: `patrones-go` para idiomas y patrones de Go en profundidad.
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.go"
|
|
4
|
-
- "**/go.mod"
|
|
5
|
-
- "**/go.sum"
|
|
6
|
-
---
|
|
7
|
-
# Hooks para Go
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/hooks.md](../common/hooks.md) con contenido específico de Go.
|
|
10
|
-
|
|
11
|
-
## Hooks PostToolUse
|
|
12
|
-
|
|
13
|
-
Configúralos en `~/.theus/settings.json`:
|
|
14
|
-
|
|
15
|
-
- **gofmt/goimports**: formatea automáticamente los archivos `.go` después de editarlos
|
|
16
|
-
- **go vet**: ejecuta análisis estático después de editar archivos `.go`
|
|
17
|
-
- **staticcheck**: ejecuta comprobaciones estáticas extendidas sobre los paquetes modificados
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.go"
|
|
4
|
-
- "**/go.mod"
|
|
5
|
-
- "**/go.sum"
|
|
6
|
-
---
|
|
7
|
-
# Patrones de Go
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/patterns.md](../common/patterns.md) con contenido específico de Go.
|
|
10
|
-
|
|
11
|
-
## Opciones funcionales
|
|
12
|
-
|
|
13
|
-
```go
|
|
14
|
-
type Option func(*Server)
|
|
15
|
-
|
|
16
|
-
func WithPort(port int) Option {
|
|
17
|
-
return func(s *Server) { s.port = port }
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
func NewServer(opts ...Option) *Server {
|
|
21
|
-
s := &Server{port: 8080}
|
|
22
|
-
for _, opt := range opts {
|
|
23
|
-
opt(s)
|
|
24
|
-
}
|
|
25
|
-
return s
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Interfaces pequeñas
|
|
30
|
-
|
|
31
|
-
Define las interfaces donde se usan, no donde se implementan.
|
|
32
|
-
|
|
33
|
-
## Inyección de dependencias
|
|
34
|
-
|
|
35
|
-
Usa funciones constructoras para inyectar dependencias:
|
|
36
|
-
|
|
37
|
-
```go
|
|
38
|
-
func NewUserService(repo UserRepository, logger Logger) *UserService {
|
|
39
|
-
return &UserService{repo: repo, logger: logger}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Referencia
|
|
44
|
-
|
|
45
|
-
Ver skill: `patrones-go` para patrones de Go en profundidad, incluyendo concurrencia, manejo de errores y organización de paquetes.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.go"
|
|
4
|
-
- "**/go.mod"
|
|
5
|
-
- "**/go.sum"
|
|
6
|
-
---
|
|
7
|
-
# Seguridad en Go
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/security.md](../common/security.md) con contenido específico de Go.
|
|
10
|
-
|
|
11
|
-
## Gestión de secretos
|
|
12
|
-
|
|
13
|
-
```go
|
|
14
|
-
apiKey := os.Getenv("API_KEY")
|
|
15
|
-
if apiKey == "" {
|
|
16
|
-
log.Fatal("API_KEY no configurada")
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Escaneo de seguridad
|
|
21
|
-
|
|
22
|
-
- Usa **gosec** para el análisis estático de seguridad:
|
|
23
|
-
```bash
|
|
24
|
-
gosec ./...
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Context y timeouts
|
|
28
|
-
|
|
29
|
-
Usa siempre `context.Context` para controlar los timeouts:
|
|
30
|
-
|
|
31
|
-
```go
|
|
32
|
-
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
|
|
33
|
-
defer cancel()
|
|
34
|
-
```
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.go"
|
|
4
|
-
- "**/go.mod"
|
|
5
|
-
- "**/go.sum"
|
|
6
|
-
---
|
|
7
|
-
# Testing en Go
|
|
8
|
-
|
|
9
|
-
> Este archivo extiende [common/testing.md](../common/testing.md) con contenido específico de Go.
|
|
10
|
-
|
|
11
|
-
## Framework
|
|
12
|
-
|
|
13
|
-
Usa el `go test` estándar con **tests basados en tablas** (table-driven tests).
|
|
14
|
-
|
|
15
|
-
## Detección de condiciones de carrera
|
|
16
|
-
|
|
17
|
-
Ejecuta siempre con el flag `-race`:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
go test -race ./...
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Cobertura
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
go test -cover ./...
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Referencia
|
|
30
|
-
|
|
31
|
-
Ver skill: `testing-go` para patrones y helpers de testing en Go en detalle.
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.java"
|
|
4
|
-
---
|
|
5
|
-
# Estilo de código Java
|
|
6
|
-
|
|
7
|
-
> Este archivo extiende [common/coding-style.md](../common/coding-style.md) con contenido específico de Java.
|
|
8
|
-
|
|
9
|
-
## Formato
|
|
10
|
-
|
|
11
|
-
- **google-java-format** o **Checkstyle** (estilo Google o Sun) para hacer cumplir el formato
|
|
12
|
-
- Un tipo público de nivel superior por archivo
|
|
13
|
-
- Indentación consistente: 2 o 4 espacios (respeta el estándar del proyecto)
|
|
14
|
-
- Orden de miembros: constantes, campos, constructores, métodos públicos, protegidos, privados
|
|
15
|
-
|
|
16
|
-
## Inmutabilidad
|
|
17
|
-
|
|
18
|
-
- Prefiere `record` para tipos de valor (Java 16+)
|
|
19
|
-
- Marca los campos como `final` por defecto — usa estado mutable solo cuando sea imprescindible
|
|
20
|
-
- Devuelve copias defensivas desde las APIs públicas: `List.copyOf()`, `Map.copyOf()`, `Set.copyOf()`
|
|
21
|
-
- Copia al escribir: devuelve instancias nuevas en lugar de mutar las existentes
|
|
22
|
-
|
|
23
|
-
```java
|
|
24
|
-
// BIEN — tipo de valor inmutable
|
|
25
|
-
public record OrderSummary(Long id, String customerName, BigDecimal total) {}
|
|
26
|
-
|
|
27
|
-
// BIEN — campos final, sin setters
|
|
28
|
-
public class Order {
|
|
29
|
-
private final Long id;
|
|
30
|
-
private final List<LineItem> items;
|
|
31
|
-
|
|
32
|
-
public List<LineItem> getItems() {
|
|
33
|
-
return List.copyOf(items);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Nombres
|
|
39
|
-
|
|
40
|
-
Sigue las convenciones estándar de Java:
|
|
41
|
-
- `PascalCase` para clases, interfaces, records y enums
|
|
42
|
-
- `camelCase` para métodos, campos, parámetros y variables locales
|
|
43
|
-
- `SCREAMING_SNAKE_CASE` para constantes `static final`
|
|
44
|
-
- Paquetes: todo en minúsculas, dominio invertido (`com.example.app.service`)
|
|
45
|
-
|
|
46
|
-
## Características modernas de Java
|
|
47
|
-
|
|
48
|
-
Usa las características modernas del lenguaje cuando mejoren la claridad:
|
|
49
|
-
- **Records** para DTOs y tipos de valor (Java 16+)
|
|
50
|
-
- **Clases selladas** para jerarquías de tipos cerradas (Java 17+)
|
|
51
|
-
- **Pattern matching** con `instanceof` — sin cast explícito (Java 16+)
|
|
52
|
-
- **Bloques de texto** para strings multilínea — SQL, plantillas JSON (Java 15+)
|
|
53
|
-
- **Expresiones switch** con sintaxis de flecha (Java 14+)
|
|
54
|
-
- **Pattern matching en switch** — manejo exhaustivo de tipos sellados (Java 21+)
|
|
55
|
-
|
|
56
|
-
```java
|
|
57
|
-
// Pattern matching con instanceof
|
|
58
|
-
if (shape instanceof Circle c) {
|
|
59
|
-
return Math.PI * c.radius() * c.radius();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Jerarquía de tipos sellada
|
|
63
|
-
public sealed interface PaymentMethod permits CreditCard, BankTransfer, Wallet {}
|
|
64
|
-
|
|
65
|
-
// Expresión switch
|
|
66
|
-
String label = switch (status) {
|
|
67
|
-
case ACTIVE -> "Activa";
|
|
68
|
-
case SUSPENDED -> "Suspendida";
|
|
69
|
-
case CLOSED -> "Cerrada";
|
|
70
|
-
};
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Uso de Optional
|
|
74
|
-
|
|
75
|
-
- Devuelve `Optional<T>` desde métodos de búsqueda que pueden no tener resultado
|
|
76
|
-
- Usa `map()`, `flatMap()`, `orElseThrow()` — nunca llames a `get()` sin `isPresent()`
|
|
77
|
-
- Nunca uses `Optional` como tipo de campo ni como parámetro de método
|
|
78
|
-
|
|
79
|
-
```java
|
|
80
|
-
// BIEN
|
|
81
|
-
return repository.findById(id)
|
|
82
|
-
.map(ResponseDto::from)
|
|
83
|
-
.orElseThrow(() -> new OrderNotFoundException(id));
|
|
84
|
-
|
|
85
|
-
// MAL — Optional como parámetro
|
|
86
|
-
public void process(Optional<String> name) {}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Manejo de errores
|
|
90
|
-
|
|
91
|
-
- Prefiere excepciones no comprobadas (unchecked) para errores de dominio
|
|
92
|
-
- Crea excepciones específicas del dominio que extiendan `RuntimeException`
|
|
93
|
-
- Evita el `catch (Exception e)` genérico salvo en manejadores de nivel superior
|
|
94
|
-
- Incluye contexto en los mensajes de las excepciones
|
|
95
|
-
|
|
96
|
-
```java
|
|
97
|
-
public class OrderNotFoundException extends RuntimeException {
|
|
98
|
-
public OrderNotFoundException(Long id) {
|
|
99
|
-
super("Pedido no encontrado: id=" + id);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Streams
|
|
105
|
-
|
|
106
|
-
- Usa streams para transformaciones; mantén los pipelines cortos (máximo 3-4 operaciones)
|
|
107
|
-
- Prefiere referencias a métodos cuando sean legibles: `.map(Order::getTotal)`
|
|
108
|
-
- Evita efectos secundarios dentro de las operaciones de stream
|
|
109
|
-
- Para lógica compleja, prefiere un bucle antes que un pipeline de stream enrevesado
|
|
110
|
-
|
|
111
|
-
## Referencias
|
|
112
|
-
|
|
113
|
-
Consulta la skill `estandares-java` para los estándares de codificación completos con ejemplos.
|
|
114
|
-
Consulta la skill `patrones-jpa` para patrones de diseño de entidades JPA/Hibernate.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.java"
|
|
4
|
-
- "**/pom.xml"
|
|
5
|
-
- "**/build.gradle"
|
|
6
|
-
- "**/build.gradle.kts"
|
|
7
|
-
---
|
|
8
|
-
# Hooks para Java
|
|
9
|
-
|
|
10
|
-
> Este archivo extiende [common/hooks.md](../common/hooks.md) con contenido específico de Java.
|
|
11
|
-
|
|
12
|
-
## Hooks PostToolUse
|
|
13
|
-
|
|
14
|
-
Configúralos en `~/.theus/settings.json`:
|
|
15
|
-
|
|
16
|
-
- **google-java-format**: formatea automáticamente los archivos `.java` después de editarlos
|
|
17
|
-
- **checkstyle**: ejecuta comprobaciones de estilo después de editar archivos Java
|
|
18
|
-
- **./mvnw compile** o **./gradlew compileJava**: verifica la compilación después de los cambios
|