theus-cli-linux-arm64 1.2.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -11
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/higiene-motor/PARCHES.md +244 -0
- package/vendor/higiene-motor/audit_dir.py +166 -0
- package/vendor/higiene-motor/audit_lib.py +333 -0
- package/vendor/higiene-motor/audit_website.py +635 -0
- package/vendor/higiene-motor/av_meta.py +498 -0
- package/vendor/higiene-motor/check_staged.py +71 -0
- package/vendor/higiene-motor/clean_ctrlregen.py +212 -0
- package/vendor/higiene-motor/clean_file.py +237 -0
- package/vendor/higiene-motor/clean_image.py +218 -0
- package/vendor/higiene-motor/clean_staged.py +143 -0
- package/vendor/higiene-motor/clean_text.py +108 -0
- package/vendor/higiene-motor/common.py +486 -0
- package/vendor/higiene-motor/container_meta.py +2522 -0
- package/vendor/higiene-motor/detect_gumbel.py +308 -0
- package/vendor/higiene-motor/detect_text_watermark.py +613 -0
- package/vendor/higiene-motor/format_dispatch.py +157 -0
- package/vendor/higiene-motor/hook_written_file.py +253 -0
- package/vendor/higiene-motor/image_meta.py +2171 -0
- package/vendor/higiene-motor/inspect_file.py +138 -0
- package/vendor/higiene-motor/inspect_image.py +72 -0
- package/vendor/higiene-motor/inspect_text.py +86 -0
- package/vendor/higiene-motor/markdiffusion_harness.py +533 -0
- package/vendor/higiene-motor/rewrite_text.py +737 -0
- package/vendor/higiene-motor/score_stylometry.py +460 -0
- package/vendor/higiene-motor/score_synthid.py +165 -0
- package/vendor/higiene-motor/server.py +1059 -0
- package/vendor/higiene-motor/synthid_score_server.py +176 -0
- package/vendor/higiene-motor/text_detectors.py +433 -0
- package/vendor/higiene-motor/text_unicode.py +730 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +0 -6
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +0 -72
- package/vendor/theus-arsenal/.mailmap +0 -2
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +0 -25
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +0 -20
- package/vendor/theus-arsenal/AUTHORS.md +0 -8
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +0 -11
- package/vendor/theus-arsenal/LICENSE +0 -26
- package/vendor/theus-arsenal/PROVENANCE.md +0 -9
- package/vendor/theus-arsenal/README.md +0 -41
- package/vendor/theus-arsenal/THIRD_PARTY.md +0 -80
- package/vendor/theus-arsenal/agents/actualizador-docs.md +0 -123
- package/vendor/theus-arsenal/agents/analista-comentarios.md +0 -53
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +0 -60
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +0 -53
- package/vendor/theus-arsenal/agents/analista-tipos.md +0 -49
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +0 -148
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +0 -90
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +0 -116
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +0 -219
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +0 -206
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +0 -58
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +0 -76
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +0 -135
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +0 -96
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +0 -257
- package/vendor/theus-arsenal/agents/escaner-secretos.md +0 -196
- package/vendor/theus-arsenal/agents/especialista-seo.md +0 -70
- package/vendor/theus-arsenal/agents/estratega-marketing.md +0 -158
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +0 -214
- package/vendor/theus-arsenal/agents/evaluador-harness.md +0 -217
- package/vendor/theus-arsenal/agents/explorador-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/extractor-specs.md +0 -214
- package/vendor/theus-arsenal/agents/generador-harness.md +0 -139
- package/vendor/theus-arsenal/agents/guia-tdd.md +0 -99
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +0 -162
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +0 -93
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +0 -454
- package/vendor/theus-arsenal/agents/planificador-harness.md +0 -107
- package/vendor/theus-arsenal/agents/planificador.md +0 -221
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +0 -181
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +0 -98
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +0 -209
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +0 -253
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +0 -102
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +0 -274
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +0 -214
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +0 -156
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +0 -169
- package/vendor/theus-arsenal/agents/resolutor-builds.md +0 -122
- package/vendor/theus-arsenal/agents/revisor-bd.md +0 -97
- package/vendor/theus-arsenal/agents/revisor-codigo.md +0 -291
- package/vendor/theus-arsenal/agents/revisor-config-red.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-cpp.md +0 -80
- package/vendor/theus-arsenal/agents/revisor-csharp.md +0 -109
- package/vendor/theus-arsenal/agents/revisor-django.md +0 -168
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +0 -82
- package/vendor/theus-arsenal/agents/revisor-flutter.md +0 -251
- package/vendor/theus-arsenal/agents/revisor-go.md +0 -84
- package/vendor/theus-arsenal/agents/revisor-java.md +0 -192
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +0 -171
- package/vendor/theus-arsenal/agents/revisor-ml.md +0 -159
- package/vendor/theus-arsenal/agents/revisor-php.md +0 -108
- package/vendor/theus-arsenal/agents/revisor-python.md +0 -106
- package/vendor/theus-arsenal/agents/revisor-react.md +0 -166
- package/vendor/theus-arsenal/agents/revisor-rust.md +0 -102
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +0 -95
- package/vendor/theus-arsenal/agents/revisor-swift.md +0 -115
- package/vendor/theus-arsenal/agents/revisor-typescript.md +0 -123
- package/vendor/theus-arsenal/agents/revisor-vue.md +0 -205
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +0 -55
- package/vendor/theus-arsenal/commands/actualizar-docs.md +0 -88
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +0 -78
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +0 -109
- package/vendor/theus-arsenal/commands/aprender.md +0 -74
- package/vendor/theus-arsenal/commands/arreglar-build.md +0 -66
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +0 -153
- package/vendor/theus-arsenal/commands/build-cpp.md +0 -173
- package/vendor/theus-arsenal/commands/build-flutter.md +0 -164
- package/vendor/theus-arsenal/commands/build-go.md +0 -183
- package/vendor/theus-arsenal/commands/build-gradle.md +0 -75
- package/vendor/theus-arsenal/commands/build-kotlin.md +0 -176
- package/vendor/theus-arsenal/commands/build-react.md +0 -187
- package/vendor/theus-arsenal/commands/build-rust.md +0 -187
- package/vendor/theus-arsenal/commands/campana-marketing.md +0 -125
- package/vendor/theus-arsenal/commands/checkpoint.md +0 -78
- package/vendor/theus-arsenal/commands/cobertura-tests.md +0 -73
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +0 -86
- package/vendor/theus-arsenal/commands/consulta.md +0 -164
- package/vendor/theus-arsenal/commands/control-calidad.md +0 -50
- package/vendor/theus-arsenal/commands/crear-skill.md +0 -77
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +0 -30
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +0 -17
- package/vendor/theus-arsenal/commands/epica-descomponer.md +0 -22
- package/vendor/theus-arsenal/commands/epica-publicar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-reclamar.md +0 -25
- package/vendor/theus-arsenal/commands/epica-revisar.md +0 -22
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-validar.md +0 -21
- package/vendor/theus-arsenal/commands/evolucionar.md +0 -176
- package/vendor/theus-arsenal/commands/funcionalidad.md +0 -49
- package/vendor/theus-arsenal/commands/guardar-sesion.md +0 -278
- package/vendor/theus-arsenal/commands/harness-build.md +0 -111
- package/vendor/theus-arsenal/commands/harness-diseno.md +0 -46
- package/vendor/theus-arsenal/commands/informe-costos.md +0 -90
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +0 -36
- package/vendor/theus-arsenal/commands/instintos-estado.md +0 -53
- package/vendor/theus-arsenal/commands/instintos-exportar.md +0 -69
- package/vendor/theus-arsenal/commands/instintos-importar.md +0 -120
- package/vendor/theus-arsenal/commands/lienzo-planes.md +0 -48
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +0 -84
- package/vendor/theus-arsenal/commands/modo-seguro.md +0 -96
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +0 -36
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +0 -38
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +0 -36
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +0 -40
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +0 -44
- package/vendor/theus-arsenal/commands/orq-revisar.md +0 -135
- package/vendor/theus-arsenal/commands/plan-prd.md +0 -160
- package/vendor/theus-arsenal/commands/plan.md +0 -198
- package/vendor/theus-arsenal/commands/podar.md +0 -31
- package/vendor/theus-arsenal/commands/pr.md +0 -181
- package/vendor/theus-arsenal/commands/promover.md +0 -41
- package/vendor/theus-arsenal/commands/proyectos.md +0 -33
- package/vendor/theus-arsenal/commands/prp-commit.md +0 -112
- package/vendor/theus-arsenal/commands/prp-implementar.md +0 -385
- package/vendor/theus-arsenal/commands/prp-planificar.md +0 -501
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +0 -160
- package/vendor/theus-arsenal/commands/revisar-codigo.md +0 -289
- package/vendor/theus-arsenal/commands/revisar-cpp.md +0 -132
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +0 -39
- package/vendor/theus-arsenal/commands/revisar-flutter.md +0 -115
- package/vendor/theus-arsenal/commands/revisar-go.md +0 -148
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +0 -140
- package/vendor/theus-arsenal/commands/revisar-pr.md +0 -37
- package/vendor/theus-arsenal/commands/revisar-python.md +0 -297
- package/vendor/theus-arsenal/commands/revisar-react.md +0 -170
- package/vendor/theus-arsenal/commands/revisar-rust.md +0 -142
- package/vendor/theus-arsenal/commands/revisar-vue.md +0 -174
- package/vendor/theus-arsenal/commands/salud-skills.md +0 -52
- package/vendor/theus-arsenal/commands/sesiones.md +0 -345
- package/vendor/theus-arsenal/commands/test-cpp.md +0 -252
- package/vendor/theus-arsenal/commands/test-flutter.md +0 -143
- package/vendor/theus-arsenal/commands/test-go.md +0 -268
- package/vendor/theus-arsenal/commands/test-kotlin.md +0 -312
- package/vendor/theus-arsenal/commands/test-react.md +0 -265
- package/vendor/theus-arsenal/commands/test-rust.md +0 -309
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +0 -43
- package/vendor/theus-arsenal/hooks/hooks.json +0 -274
- package/vendor/theus-arsenal/package.json +0 -6
- package/vendor/theus-arsenal/rules/angular/coding-style.md +0 -182
- package/vendor/theus-arsenal/rules/angular/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/angular/patterns.md +0 -249
- package/vendor/theus-arsenal/rules/angular/security.md +0 -87
- package/vendor/theus-arsenal/rules/angular/testing.md +0 -164
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +0 -153
- package/vendor/theus-arsenal/rules/arkts/hooks.md +0 -80
- package/vendor/theus-arsenal/rules/arkts/patterns.md +0 -236
- package/vendor/theus-arsenal/rules/arkts/security.md +0 -141
- package/vendor/theus-arsenal/rules/arkts/testing.md +0 -126
- package/vendor/theus-arsenal/rules/common/agents.md +0 -49
- package/vendor/theus-arsenal/rules/common/code-review.md +0 -123
- package/vendor/theus-arsenal/rules/common/coding-style.md +0 -90
- package/vendor/theus-arsenal/rules/common/development-workflow.md +0 -44
- package/vendor/theus-arsenal/rules/common/git-workflow.md +0 -24
- package/vendor/theus-arsenal/rules/common/hooks.md +0 -32
- package/vendor/theus-arsenal/rules/common/patterns.md +0 -31
- package/vendor/theus-arsenal/rules/common/performance.md +0 -53
- package/vendor/theus-arsenal/rules/common/security.md +0 -29
- package/vendor/theus-arsenal/rules/common/testing.md +0 -57
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +0 -44
- package/vendor/theus-arsenal/rules/cpp/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/cpp/patterns.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/security.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/testing.md +0 -44
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +0 -72
- package/vendor/theus-arsenal/rules/csharp/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/csharp/patterns.md +0 -50
- package/vendor/theus-arsenal/rules/csharp/security.md +0 -58
- package/vendor/theus-arsenal/rules/csharp/testing.md +0 -50
- package/vendor/theus-arsenal/rules/dart/coding-style.md +0 -159
- package/vendor/theus-arsenal/rules/dart/hooks.md +0 -68
- package/vendor/theus-arsenal/rules/dart/patterns.md +0 -261
- package/vendor/theus-arsenal/rules/dart/security.md +0 -135
- package/vendor/theus-arsenal/rules/dart/testing.md +0 -215
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +0 -112
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +0 -26
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +0 -111
- package/vendor/theus-arsenal/rules/fsharp/security.md +0 -76
- package/vendor/theus-arsenal/rules/fsharp/testing.md +0 -62
- package/vendor/theus-arsenal/rules/golang/coding-style.md +0 -32
- package/vendor/theus-arsenal/rules/golang/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/golang/patterns.md +0 -45
- package/vendor/theus-arsenal/rules/golang/security.md +0 -34
- package/vendor/theus-arsenal/rules/golang/testing.md +0 -31
- package/vendor/theus-arsenal/rules/java/coding-style.md +0 -114
- package/vendor/theus-arsenal/rules/java/hooks.md +0 -18
- package/vendor/theus-arsenal/rules/java/patterns.md +0 -147
- package/vendor/theus-arsenal/rules/java/security.md +0 -101
- package/vendor/theus-arsenal/rules/java/testing.md +0 -133
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +0 -86
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +0 -146
- package/vendor/theus-arsenal/rules/kotlin/security.md +0 -82
- package/vendor/theus-arsenal/rules/kotlin/testing.md +0 -128
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +0 -54
- package/vendor/theus-arsenal/rules/nuxt/security.md +0 -48
- package/vendor/theus-arsenal/rules/nuxt/testing.md +0 -49
- package/vendor/theus-arsenal/rules/php/coding-style.md +0 -40
- package/vendor/theus-arsenal/rules/php/hooks.md +0 -24
- package/vendor/theus-arsenal/rules/php/patterns.md +0 -33
- package/vendor/theus-arsenal/rules/php/security.md +0 -37
- package/vendor/theus-arsenal/rules/php/testing.md +0 -38
- package/vendor/theus-arsenal/rules/python/coding-style.md +0 -42
- package/vendor/theus-arsenal/rules/python/fastapi.md +0 -58
- package/vendor/theus-arsenal/rules/python/hooks.md +0 -19
- package/vendor/theus-arsenal/rules/python/patterns.md +0 -39
- package/vendor/theus-arsenal/rules/python/security.md +0 -30
- package/vendor/theus-arsenal/rules/python/testing.md +0 -38
- package/vendor/theus-arsenal/rules/react/coding-style.md +0 -109
- package/vendor/theus-arsenal/rules/react/hooks.md +0 -187
- package/vendor/theus-arsenal/rules/react/patterns.md +0 -194
- package/vendor/theus-arsenal/rules/react/security.md +0 -180
- package/vendor/theus-arsenal/rules/react/testing.md +0 -208
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +0 -55
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +0 -71
- package/vendor/theus-arsenal/rules/react-native/hooks.md +0 -28
- package/vendor/theus-arsenal/rules/react-native/patterns.md +0 -88
- package/vendor/theus-arsenal/rules/react-native/performance.md +0 -45
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +0 -51
- package/vendor/theus-arsenal/rules/react-native/security.md +0 -43
- package/vendor/theus-arsenal/rules/react-native/testing.md +0 -52
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +0 -46
- package/vendor/theus-arsenal/rules/ruby/hooks.md +0 -37
- package/vendor/theus-arsenal/rules/ruby/patterns.md +0 -44
- package/vendor/theus-arsenal/rules/ruby/security.md +0 -51
- package/vendor/theus-arsenal/rules/ruby/testing.md +0 -51
- package/vendor/theus-arsenal/rules/rust/coding-style.md +0 -151
- package/vendor/theus-arsenal/rules/rust/hooks.md +0 -16
- package/vendor/theus-arsenal/rules/rust/patterns.md +0 -168
- package/vendor/theus-arsenal/rules/rust/security.md +0 -141
- package/vendor/theus-arsenal/rules/rust/testing.md +0 -154
- package/vendor/theus-arsenal/rules/swift/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/swift/hooks.md +0 -20
- package/vendor/theus-arsenal/rules/swift/patterns.md +0 -66
- package/vendor/theus-arsenal/rules/swift/security.md +0 -33
- package/vendor/theus-arsenal/rules/swift/testing.md +0 -45
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +0 -199
- package/vendor/theus-arsenal/rules/typescript/hooks.md +0 -22
- package/vendor/theus-arsenal/rules/typescript/patterns.md +0 -52
- package/vendor/theus-arsenal/rules/typescript/security.md +0 -28
- package/vendor/theus-arsenal/rules/typescript/testing.md +0 -18
- package/vendor/theus-arsenal/rules/vue/coding-style.md +0 -54
- package/vendor/theus-arsenal/rules/vue/hooks.md +0 -45
- package/vendor/theus-arsenal/rules/vue/patterns.md +0 -56
- package/vendor/theus-arsenal/rules/vue/security.md +0 -46
- package/vendor/theus-arsenal/rules/vue/testing.md +0 -53
- package/vendor/theus-arsenal/rules/web/coding-style.md +0 -108
- package/vendor/theus-arsenal/rules/web/design-quality.md +0 -75
- package/vendor/theus-arsenal/rules/web/hooks.md +0 -141
- package/vendor/theus-arsenal/rules/web/patterns.md +0 -91
- package/vendor/theus-arsenal/rules/web/performance.md +0 -76
- package/vendor/theus-arsenal/rules/web/security.md +0 -69
- package/vendor/theus-arsenal/rules/web/testing.md +0 -67
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +0 -192
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +0 -556
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +0 -92
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +0 -16
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +0 -171
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +0 -132
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +0 -158
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +0 -208
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +0 -280
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +0 -87
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +0 -24
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +0 -60
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +0 -94
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +0 -54
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +0 -98
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +0 -447
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +0 -232
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +0 -27
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +0 -101
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +0 -49
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +0 -168
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +0 -271
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +0 -749
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +0 -161
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +0 -340
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +0 -906
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +0 -263
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +0 -286
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +0 -289
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +0 -1278
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +0 -96
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +0 -66
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +0 -79
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +0 -185
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +0 -54
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +0 -237
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +0 -120
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +0 -434
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +0 -238
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +0 -534
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +0 -274
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +0 -546
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +0 -451
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +0 -193
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +0 -101
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +0 -138
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +0 -483
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +0 -155
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +0 -137
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +0 -555
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +0 -501
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +0 -414
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +0 -22
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +0 -200
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +0 -157
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +0 -246
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +0 -232
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +0 -205
- package/vendor/theus-arsenal/scripts/lib/utils.js +0 -658
- package/vendor/theus-arsenal/scripts/plan-canvas.js +0 -341
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +0 -46
- package/vendor/theus-arsenal/scripts/skills-health.js +0 -143
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +0 -444
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +0 -72
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +0 -771
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +0 -137
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +0 -233
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +0 -335
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +0 -374
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +0 -188
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +0 -153
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +0 -253
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +0 -8
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +0 -594
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +0 -325
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +0 -1918
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +0 -23
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +0 -1420
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +0 -275
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +0 -340
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +0 -112
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +0 -257
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +0 -243
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +0 -89
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +0 -87
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +0 -71
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +0 -90
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +0 -409
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +0 -86
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +0 -176
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +0 -174
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +0 -173
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +0 -125
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +0 -160
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +0 -118
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +0 -138
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +0 -104
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +0 -115
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +0 -69
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +0 -224
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +0 -201
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +0 -119
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +0 -169
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +0 -284
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +0 -46
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +0 -86
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +0 -29
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +0 -173
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +0 -100
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +0 -78
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +0 -172
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +0 -104
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +0 -75
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +0 -146
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +0 -126
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +0 -229
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +0 -152
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +0 -68
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +0 -138
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +0 -130
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +0 -34
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +0 -143
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +0 -106
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +0 -11
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +0 -20
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +0 -179
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +0 -19
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +0 -122
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +0 -52
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +0 -171
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +0 -270
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +0 -128
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +0 -369
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +0 -42
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +0 -47
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +0 -53
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +0 -61
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +0 -62
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +0 -54
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +0 -50
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +0 -133
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +0 -230
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +0 -58
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +0 -129
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +0 -89
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +0 -522
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +0 -282
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +0 -879
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +0 -289
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +0 -493
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +0 -548
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +0 -727
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +0 -389
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +0 -129
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +0 -714
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +0 -343
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +0 -584
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +0 -224
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +0 -5
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +0 -123
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +0 -48
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +0 -39
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +0 -166
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +0 -258
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +0 -235
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +0 -208
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +0 -204
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +0 -64
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +0 -212
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +0 -264
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +0 -299
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +0 -96
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +0 -820
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +0 -312
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +0 -87
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +0 -76
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +0 -60
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +0 -102
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +0 -150
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +0 -194
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +0 -87
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +0 -57
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +0 -170
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +0 -87
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +0 -59
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +0 -161
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +0 -82
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +0 -116
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +0 -241
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +0 -101
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +0 -44
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +0 -24
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +0 -152
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +0 -40
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +0 -214
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +0 -36
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +0 -210
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +0 -402
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +0 -238
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +0 -131
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +0 -430
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +0 -86
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +0 -592
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +0 -136
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +0 -51
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +0 -159
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +0 -123
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +0 -124
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +0 -70
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +0 -182
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +0 -75
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +0 -37
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +0 -38
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +0 -134
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +0 -49
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +0 -160
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +0 -410
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +0 -91
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +0 -117
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +0 -120
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +0 -83
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +0 -43
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +0 -80
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +0 -63
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +0 -101
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +0 -61
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +0 -122
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +0 -44
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +0 -77
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +0 -52
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +0 -45
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +0 -87
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +0 -68
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +0 -795
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +0 -94
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +0 -114
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +0 -65
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +0 -432
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +0 -560
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +0 -443
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +0 -566
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +0 -426
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +0 -739
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +0 -456
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +0 -363
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +0 -513
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +0 -655
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +0 -674
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +0 -717
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +0 -724
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +0 -694
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +0 -754
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +0 -414
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +0 -66
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +0 -420
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +0 -229
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +0 -508
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +0 -399
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +0 -750
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +0 -400
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +0 -729
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +0 -339
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +0 -401
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +0 -504
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +0 -314
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +0 -261
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +0 -281
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +0 -90
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +0 -60
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +0 -64
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +0 -449
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +0 -60
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +0 -102
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +0 -189
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +0 -330
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +0 -122
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +0 -419
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +0 -418
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +0 -96
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +0 -153
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +0 -242
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +0 -126
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +0 -221
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +0 -388
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +0 -567
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +0 -442
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +0 -302
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +0 -505
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +0 -361
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +0 -83
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +0 -163
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +0 -122
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +0 -145
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +0 -648
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +0 -945
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +0 -507
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +0 -474
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +0 -279
- package/vendor/theus-arsenal/skills/seo/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +0 -65
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +0 -735
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +0 -673
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +0 -817
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +0 -328
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +0 -719
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +0 -829
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +0 -479
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +0 -196
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +0 -815
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +0 -421
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +0 -506
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +0 -211
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +0 -470
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +0 -485
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +0 -550
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +0 -407
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +0 -101
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +0 -443
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +0 -331
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +0 -564
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +0 -65
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +0 -230
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +0 -406
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +0 -118
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +0 -279
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +0 -52
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +0 -108
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +0 -106
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: homelab-segmentacion-vlan
|
|
3
|
-
description: Segmentación de redes domésticas en VLANs para tráfico IoT, invitados, dispositivos de confianza y servidores usando UniFi, pfSense/OPNsense y MikroTik — incluye puertos trunk, reglas de firewall y mapeo de SSIDs a VLANs.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Segmentación VLAN para homelab
|
|
7
|
-
|
|
8
|
-
Cómo dividir una red doméstica en VLANs aisladas para que los dispositivos IoT, los invitados y tus PCs principales no puedan comunicarse entre sí. La mejora de seguridad de mayor impacto para una red doméstica.
|
|
9
|
-
|
|
10
|
-
Todas las reglas de firewall mostradas aquí añaden aislamiento entre segmentos — no eliminan protecciones existentes. Aplica los cambios en una ventana de mantenimiento y verifica la conectividad entre segmentos después de cada paso antes de continuar.
|
|
11
|
-
|
|
12
|
-
## Cuándo usarla
|
|
13
|
-
|
|
14
|
-
- Configurar VLANs en una red doméstica por primera vez
|
|
15
|
-
- Aislar dispositivos IoT (focos inteligentes, cámaras, TVs) de los dispositivos de confianza
|
|
16
|
-
- Crear una red Wi-Fi de invitados que no pueda alcanzar los dispositivos del hogar
|
|
17
|
-
- Explicar cómo funcionan las VLANs a alguien que no conoce el concepto
|
|
18
|
-
- Configurar puertos trunk, puertos de acceso y mapeo SSID-a-VLAN
|
|
19
|
-
- Diagnosticar problemas de enrutamiento inter-VLAN o de reglas de firewall en pfSense/OPNsense/UniFi
|
|
20
|
-
|
|
21
|
-
## Cómo funciona
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
Sin VLANs — red plana:
|
|
25
|
-
Todos los dispositivos en 192.168.1.0/24
|
|
26
|
-
Smart TV (posible malware) → puede alcanzar tu NAS, tus PCs, todo
|
|
27
|
-
|
|
28
|
-
Con VLANs:
|
|
29
|
-
VLAN 10 — Confianza 192.168.10.0/24 (PCs, teléfonos, laptops)
|
|
30
|
-
VLAN 20 — IoT 192.168.20.0/24 (smart TV, focos, cámaras)
|
|
31
|
-
VLAN 30 — Servidores 192.168.30.0/24 (NAS, Pi, VMs)
|
|
32
|
-
VLAN 40 — Invitados 192.168.40.0/24 (Wi-Fi de visitas)
|
|
33
|
-
VLAN 99 — Gestión 192.168.99.0/24 (paneles web de switch/AP)
|
|
34
|
-
|
|
35
|
-
Smart TV → bloqueado para alcanzar 192.168.10.0/24 y 192.168.30.0/24
|
|
36
|
-
Invitados → solo internet, no ven ningún dispositivo del hogar
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Plantilla de diseño de VLANs
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
VLAN Nombre Subred Gateway Propósito
|
|
43
|
-
10 confianza 192.168.10.0/24 192.168.10.1 PCs, teléfonos, laptops
|
|
44
|
-
20 iot 192.168.20.0/24 192.168.20.1 Dispositivos de hogar inteligente
|
|
45
|
-
30 servidores 192.168.30.0/24 192.168.30.1 NAS, Pi, autoalojado
|
|
46
|
-
40 invitados 192.168.40.0/24 192.168.40.1 Wi-Fi de visitas
|
|
47
|
-
99 gestion 192.168.99.0/24 192.168.99.1 Paneles web de equipos de red
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Ejemplos
|
|
51
|
-
|
|
52
|
-
**Homelab típico con AP UniFi y switch gestionable:**
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Escenario: casa de 3 dormitorios, UniFi Dream Machine + switch UniFi de 8 puertos + 2 APs
|
|
56
|
-
|
|
57
|
-
VLAN 10 — Confianza 192.168.10.0/24 MacBook, iPhones, iPad
|
|
58
|
-
VLAN 20 — IoT 192.168.20.0/24 Termostato Nest, Philips Hue, timbre Ring, smart TVs
|
|
59
|
-
VLAN 30 — Servidores 192.168.30.0/24 NAS Synology (192.168.30.10), Pi-hole (192.168.30.2)
|
|
60
|
-
VLAN 40 — Invitados 192.168.40.0/24 Wi-Fi de visitas — solo internet
|
|
61
|
-
|
|
62
|
-
Mapeo SSID → VLAN:
|
|
63
|
-
"Casa" → VLAN 10 (WPA2, contraseña fuerte, solo dispositivos de confianza)
|
|
64
|
-
"IoT" → VLAN 20 (WPA2, contraseña separada, impresa en el router para altas)
|
|
65
|
-
"Invitados" → VLAN 40 (WPA2, contraseña simple que puedes compartir libremente)
|
|
66
|
-
|
|
67
|
-
Comportamiento de puertos del switch:
|
|
68
|
-
Puerto 1 → trunk al router (VLANs 10,20,30,40,99 etiquetadas)
|
|
69
|
-
Puerto 2 → trunk a los APs (VLANs 10,20,40 etiquetadas; el AP etiqueta por SSID)
|
|
70
|
-
Puerto 3 → acceso VLAN 30 (NAS — sin etiquetar, no necesita conocer VLANs)
|
|
71
|
-
Puerto 4 → acceso VLAN 30 (Pi-hole — sin etiquetar)
|
|
72
|
-
Puertos 5–8 → acceso VLAN 10 (estaciones de trabajo cableadas)
|
|
73
|
-
|
|
74
|
-
Reglas de firewall aplicadas (todas añaden aislamiento, ninguna elimina protecciones):
|
|
75
|
-
IoT → Confianza: BLOQUEAR
|
|
76
|
-
IoT → Servidores: BLOQUEAR excepto 192.168.30.2:53 (DNS de Pi-hole permitido)
|
|
77
|
-
IoT → Internet: PERMITIR
|
|
78
|
-
Invitados → Redes locales: BLOQUEAR
|
|
79
|
-
Invitados → Internet: PERMITIR
|
|
80
|
-
Confianza → todo: PERMITIR
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Configuración en UniFi
|
|
84
|
-
|
|
85
|
-
### Crear las redes en el controlador UniFi
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
Settings → Networks → Create New Network
|
|
89
|
-
|
|
90
|
-
Para cada VLAN:
|
|
91
|
-
Name: IoT
|
|
92
|
-
Purpose: Corporate (proporciona DHCP + enrutamiento)
|
|
93
|
-
VLAN ID: 20
|
|
94
|
-
Network: 192.168.20.0/24
|
|
95
|
-
Gateway IP: 192.168.20.1
|
|
96
|
-
DHCP: Enable
|
|
97
|
-
DHCP Range: 192.168.20.100 – 192.168.20.254
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Mapear SSIDs a VLANs (UniFi)
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
Settings → WiFi → Create New WiFi
|
|
104
|
-
|
|
105
|
-
Name: IoT-Network
|
|
106
|
-
Password: <contraseña separada>
|
|
107
|
-
Network: IoT ← selecciona tu VLAN aquí
|
|
108
|
-
# Todos los dispositivos que se conecten a este SSID caen en la VLAN 20
|
|
109
|
-
|
|
110
|
-
Name: Invitados
|
|
111
|
-
Password: <contraseña de invitados>
|
|
112
|
-
Network: Guest
|
|
113
|
-
Guest Policy: Enable ← también aísla a los invitados entre sí
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Reglas de firewall en UniFi (Traffic Rules)
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Settings → Traffic & Security → Traffic Rules
|
|
120
|
-
|
|
121
|
-
# Bloquear que IoT alcance la VLAN de confianza
|
|
122
|
-
Action: Block
|
|
123
|
-
Category: Local Network
|
|
124
|
-
Source: IoT (192.168.20.0/24)
|
|
125
|
-
Destination: Confianza (192.168.10.0/24)
|
|
126
|
-
|
|
127
|
-
# Permitir que IoT solo alcance internet
|
|
128
|
-
Action: Allow
|
|
129
|
-
Source: IoT
|
|
130
|
-
Destination: Internet
|
|
131
|
-
|
|
132
|
-
# Bloquear invitados hacia todas las redes locales
|
|
133
|
-
Action: Block
|
|
134
|
-
Source: Invitados
|
|
135
|
-
Destination: Local Networks
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## Configuración en pfSense / OPNsense
|
|
139
|
-
|
|
140
|
-
### Crear las VLANs
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
Interfaces → Assignments → VLANs → Add
|
|
144
|
-
|
|
145
|
-
Parent Interface: em1 (tu NIC de LAN)
|
|
146
|
-
VLAN Tag: 20
|
|
147
|
-
Description: IoT
|
|
148
|
-
|
|
149
|
-
# Repite para cada VLAN y luego asigna cada una a una interfaz:
|
|
150
|
-
Interfaces → Assignments → Add
|
|
151
|
-
Selecciona la VLAN creada → clic en Add
|
|
152
|
-
Activa la interfaz y ponle la IP de gateway (192.168.20.1/24)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### DHCP para cada VLAN
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
Services → DHCP Server → Selecciona la interfaz de tu VLAN
|
|
159
|
-
|
|
160
|
-
Enable DHCP
|
|
161
|
-
Range: 192.168.20.100 a 192.168.20.254
|
|
162
|
-
DNS Servers: 192.168.30.2 ← IP de Pi-hole si tienes uno
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Reglas de firewall (pfSense/OPNsense)
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
# Las reglas se procesan de arriba abajo; gana la primera coincidencia.
|
|
169
|
-
|
|
170
|
-
# En la interfaz IoT (VLAN 20):
|
|
171
|
-
Regla 1: Permitir IoT → DNS de Pi-hole ← DEBE ir antes de la regla de bloqueo RFC1918
|
|
172
|
-
Protocolo: UDP/TCP
|
|
173
|
-
Origen: red IoT
|
|
174
|
-
Destino: 192.168.30.2 puerto 53
|
|
175
|
-
Acción: Allow
|
|
176
|
-
|
|
177
|
-
Regla 2: Bloquear IoT → RFC1918 (todos los rangos IP privados)
|
|
178
|
-
Protocolo: any
|
|
179
|
-
Origen: red IoT
|
|
180
|
-
Destino: RFC1918 (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12)
|
|
181
|
-
Acción: Block
|
|
182
|
-
|
|
183
|
-
Regla 3: Permitir IoT → internet
|
|
184
|
-
Protocolo: any
|
|
185
|
-
Origen: red IoT
|
|
186
|
-
Destino: any
|
|
187
|
-
Acción: Allow
|
|
188
|
-
|
|
189
|
-
# En la interfaz de Confianza (VLAN 10):
|
|
190
|
-
Permitir todo (los dispositivos de confianza pueden alcanzar todo)
|
|
191
|
-
Origen: red Confianza
|
|
192
|
-
Destino: any
|
|
193
|
-
Acción: Allow
|
|
194
|
-
|
|
195
|
-
# Excepciones adicionales para dispositivos IoT que necesitan servicios locales concretos:
|
|
196
|
-
Insertar antes de la Regla 2 (el bloqueo RFC1918):
|
|
197
|
-
Protocolo: TCP
|
|
198
|
-
Origen: red IoT
|
|
199
|
-
Destino: 192.168.30.x puerto 8123 ← Home Assistant
|
|
200
|
-
Acción: Allow
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
## Configuración en MikroTik
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
# Paso 1: crea un bridge con filtrado VLAN habilitado
|
|
207
|
-
/interface bridge
|
|
208
|
-
add name=bridge vlan-filtering=yes
|
|
209
|
-
|
|
210
|
-
# Paso 2: añade los puertos físicos al bridge
|
|
211
|
-
# Puerto trunk hacia el router/enlace ascendente (etiquetado para todas las VLANs)
|
|
212
|
-
/interface bridge port
|
|
213
|
-
add bridge=bridge interface=ether1 frame-types=admit-only-vlan-tagged
|
|
214
|
-
|
|
215
|
-
# Puerto de acceso para dispositivos de confianza (VLAN 10 sin etiquetar)
|
|
216
|
-
/interface bridge port
|
|
217
|
-
add bridge=bridge interface=ether2 pvid=10 frame-types=admit-only-untagged-and-priority-tagged
|
|
218
|
-
|
|
219
|
-
# Puerto de acceso para dispositivos IoT (VLAN 20 sin etiquetar)
|
|
220
|
-
/interface bridge port
|
|
221
|
-
add bridge=bridge interface=ether3 pvid=20 frame-types=admit-only-untagged-and-priority-tagged
|
|
222
|
-
|
|
223
|
-
# Paso 3: define qué VLANs se permiten en qué puertos
|
|
224
|
-
/interface bridge vlan
|
|
225
|
-
add bridge=bridge tagged=ether1 untagged=ether2 vlan-ids=10
|
|
226
|
-
add bridge=bridge tagged=ether1 untagged=ether3 vlan-ids=20
|
|
227
|
-
|
|
228
|
-
# Paso 4: crea las interfaces VLAN sobre el bridge (IPs de gateway)
|
|
229
|
-
/interface vlan
|
|
230
|
-
add interface=bridge name=vlan10 vlan-id=10
|
|
231
|
-
add interface=bridge name=vlan20 vlan-id=20
|
|
232
|
-
|
|
233
|
-
# Paso 5: asigna las IPs de gateway
|
|
234
|
-
/ip address
|
|
235
|
-
add interface=vlan10 address=192.168.10.1/24
|
|
236
|
-
add interface=vlan20 address=192.168.20.1/24
|
|
237
|
-
|
|
238
|
-
# Paso 6: pools y servidores DHCP
|
|
239
|
-
/ip pool
|
|
240
|
-
add name=pool-confianza ranges=192.168.10.100-192.168.10.254
|
|
241
|
-
add name=pool-iot ranges=192.168.20.100-192.168.20.254
|
|
242
|
-
|
|
243
|
-
/ip dhcp-server
|
|
244
|
-
add interface=vlan10 address-pool=pool-confianza name=dhcp-confianza
|
|
245
|
-
add interface=vlan20 address-pool=pool-iot name=dhcp-iot
|
|
246
|
-
|
|
247
|
-
/ip dhcp-server network
|
|
248
|
-
add address=192.168.10.0/24 gateway=192.168.10.1
|
|
249
|
-
add address=192.168.20.0/24 gateway=192.168.20.1
|
|
250
|
-
|
|
251
|
-
# Paso 7: firewall — bloquear que IoT alcance la VLAN de confianza
|
|
252
|
-
/ip firewall filter
|
|
253
|
-
add chain=forward src-address=192.168.20.0/24 dst-address=192.168.10.0/24 \
|
|
254
|
-
action=drop comment="Bloquear IoT hacia Confianza"
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## Puertos trunk vs puertos de acceso
|
|
258
|
-
|
|
259
|
-
```
|
|
260
|
-
# Puerto trunk: transporta varias VLANs (etiquetadas) — conecta switch-switch, switch-router, switch-AP
|
|
261
|
-
# Puerto de acceso: transporta una sola VLAN (sin etiquetar) — conecta dispositivos finales (PC, cámara, NAS)
|
|
262
|
-
|
|
263
|
-
# Un puerto de switch gestionable conectado a tu router debe ser trunk:
|
|
264
|
-
VLANs permitidas: 10, 20, 30, 40, 99
|
|
265
|
-
|
|
266
|
-
# Un puerto que conecta a un PC debe ser de acceso:
|
|
267
|
-
VLAN: 10 (confianza)
|
|
268
|
-
Sin etiquetado — el PC no sabe ni le importa qué es una VLAN
|
|
269
|
-
|
|
270
|
-
# Un puerto que conecta a un AP debe ser trunk:
|
|
271
|
-
El AP etiqueta el tráfico de cada SSID con el ID de VLAN correcto
|
|
272
|
-
VLANs permitidas: 10, 20, 40 (las de los SSIDs que sirva el AP)
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
## Antipatrones
|
|
276
|
-
|
|
277
|
-
```
|
|
278
|
-
# MAL: crear VLANs sin añadir reglas de firewall
|
|
279
|
-
# Las VLANs sin reglas de firewall no dan seguridad — el enrutamiento inter-VLAN está abierto por defecto
|
|
280
|
-
# BIEN: añade reglas de bloqueo explícitas justo después de crear las VLANs
|
|
281
|
-
|
|
282
|
-
# MAL: poner el Pi-hole en la VLAN de IoT
|
|
283
|
-
# Los dispositivos IoT lo alcanzan, pero los de confianza no (sin reglas extra)
|
|
284
|
-
# BIEN: Pi-hole en la VLAN de servidores con una regla que permita a todas las VLANs alcanzar el puerto 53
|
|
285
|
-
|
|
286
|
-
# MAL: VLAN nativa igual a la VLAN de gestión
|
|
287
|
-
# El tráfico sin etiquetar que cae en tu VLAN de gestión habilita ataques de VLAN hopping
|
|
288
|
-
# BIEN: usa una VLAN dedicada sin uso como nativa (p. ej. VLAN 999) y mantén el tráfico de gestión etiquetado
|
|
289
|
-
|
|
290
|
-
# MAL: misma contraseña de Wi-Fi para el SSID de IoT y el de confianza
|
|
291
|
-
# Quien conozca la contraseña puede conectar dispositivos IoT al segmento equivocado
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
## Buenas prácticas
|
|
295
|
-
|
|
296
|
-
- Empieza con 4 VLANs: Confianza, IoT, Servidores, Invitados — añade más según necesites
|
|
297
|
-
- Coloca el Pi-hole en la VLAN de servidores (192.168.30.x)
|
|
298
|
-
- Añade una regla de firewall que permita DNS (puerto 53) desde todas las VLANs hacia la IP del Pi-hole — antes de cualquier regla de bloqueo RFC1918
|
|
299
|
-
- Prueba el aislamiento tras cada cambio de regla: desde la VLAN IoT, intenta hacer ping a un dispositivo de confianza — debe fallar
|
|
300
|
-
- Usa una VLAN de gestión para los paneles web de switch y APs, y restringe su acceso solo a la VLAN de confianza
|
|
301
|
-
- Documenta tu diseño de VLANs en una tabla (ID de VLAN, nombre, subred, propósito)
|
|
302
|
-
|
|
303
|
-
## Skills relacionadas
|
|
304
|
-
|
|
305
|
-
- `homelab-diseno-red`
|
|
306
|
-
- `homelab-dns-pihole`
|
|
307
|
-
- `homelab-vpn-wireguard`
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: homelab-vpn-wireguard
|
|
3
|
-
description: Configuración de servidor VPN WireGuard, peers y generación de claves, split tunneling vs túnel completo, DDNS y acceso remoto a una red doméstica desde móviles y laptops.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# VPN WireGuard para homelab
|
|
7
|
-
|
|
8
|
-
WireGuard es un protocolo VPN rápido y moderno. Es la opción correcta para acceso remoto a una red doméstica — más simple de configurar que OpenVPN y más rápido que la mayoría de alternativas.
|
|
9
|
-
|
|
10
|
-
Todos los ejemplos de configuración muestran montajes habituales. Revisa cada comando — especialmente las reglas de reenvío de iptables y los permisos de los archivos de claves — antes de aplicarlos a tu sistema, y haz los cambios en una ventana de mantenimiento.
|
|
11
|
-
|
|
12
|
-
## Cuándo usarla
|
|
13
|
-
|
|
14
|
-
- Montar un servidor WireGuard en una Raspberry Pi, un host Linux, pfSense o un router
|
|
15
|
-
- Generar pares de claves WireGuard y escribir archivos de configuración de peers
|
|
16
|
-
- Configurar acceso remoto desde un teléfono o laptop hacia la red doméstica
|
|
17
|
-
- Explicar split tunneling (enrutar solo el tráfico del hogar) vs túnel completo (enrutar todo)
|
|
18
|
-
- Diagnosticar conexiones WireGuard que no levantan
|
|
19
|
-
- Automatizar la generación de configuraciones de peers para múltiples clientes
|
|
20
|
-
|
|
21
|
-
## Cómo funciona WireGuard
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
Tu teléfono (cliente WireGuard)
|
|
25
|
-
│
|
|
26
|
-
│ Túnel UDP cifrado (puerto 51820)
|
|
27
|
-
│
|
|
28
|
-
Tu router doméstico (servidor WireGuard — necesita IP pública o DDNS)
|
|
29
|
-
│
|
|
30
|
-
Tu red doméstica (192.168.1.0/24, NAS, Pi, etc.)
|
|
31
|
-
|
|
32
|
-
Cada dispositivo tiene un par de claves (pública + privada).
|
|
33
|
-
El servidor conoce la clave pública de cada cliente.
|
|
34
|
-
El cliente conoce la clave pública del servidor + el endpoint (IP:puerto).
|
|
35
|
-
El tráfico se cifra extremo a extremo sin servidor central ni autoridad de certificados.
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Configuración del servidor (Linux)
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# Instala WireGuard
|
|
42
|
-
sudo apt update && sudo apt install wireguard -y
|
|
43
|
-
|
|
44
|
-
# Genera el par de claves del servidor — crea los archivos con permisos privados desde el inicio
|
|
45
|
-
sudo mkdir -p /etc/wireguard
|
|
46
|
-
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
|
|
47
|
-
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'
|
|
48
|
-
|
|
49
|
-
# Escribe la configuración del servidor — sustituye el valor real de la clave privada
|
|
50
|
-
# No guardes claves privadas en control de versiones ni las compartas
|
|
51
|
-
sudo tee /etc/wireguard/wg0.conf << 'EOF'
|
|
52
|
-
[Interface]
|
|
53
|
-
Address = 10.8.0.1/24 # Subred de la VPN — el servidor toma la .1
|
|
54
|
-
ListenPort = 51820
|
|
55
|
-
PrivateKey = <pegar_clave_privada_del_servidor>
|
|
56
|
-
|
|
57
|
-
# Reglas de reenvío acotadas: permitir tráfico VPN de entrada/salida, no un FORWARD ACCEPT general
|
|
58
|
-
PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
|
|
59
|
-
PostUp = iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
60
|
-
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
61
|
-
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT
|
|
62
|
-
PostDown = iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
63
|
-
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
|
64
|
-
|
|
65
|
-
[Peer]
|
|
66
|
-
# Teléfono — sustituir por la clave pública real del teléfono
|
|
67
|
-
PublicKey = <clave_publica_telefono>
|
|
68
|
-
AllowedIPs = 10.8.0.2/32
|
|
69
|
-
|
|
70
|
-
[Peer]
|
|
71
|
-
# Laptop — sustituir por la clave pública real de la laptop
|
|
72
|
-
PublicKey = <clave_publica_laptop>
|
|
73
|
-
AllowedIPs = 10.8.0.3/32
|
|
74
|
-
EOF
|
|
75
|
-
sudo chmod 600 /etc/wireguard/wg0.conf
|
|
76
|
-
|
|
77
|
-
# Sustituye eth0 por el nombre real de tu interfaz de salida
|
|
78
|
-
# Compruébalo con: ip route show default
|
|
79
|
-
|
|
80
|
-
# Habilita el reenvío de IP (requerido para enrutar tráfico a través del servidor)
|
|
81
|
-
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
|
|
82
|
-
sudo sysctl --system
|
|
83
|
-
|
|
84
|
-
# Arranca WireGuard y actívalo en el arranque
|
|
85
|
-
sudo wg-quick up wg0
|
|
86
|
-
sudo systemctl enable wg-quick@wg0
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Configuración del cliente
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# Genera un par de claves único para cada dispositivo cliente
|
|
93
|
-
# Ejecútalo en el cliente, o en el servidor y transfiere la clave privada de forma segura — nunca en texto plano
|
|
94
|
-
umask 077
|
|
95
|
-
wg genkey | tee phone_private.key | wg pubkey > phone_public.key
|
|
96
|
-
|
|
97
|
-
# Archivo de configuración del cliente (phone_wg0.conf):
|
|
98
|
-
[Interface]
|
|
99
|
-
PrivateKey = <clave_privada_telefono>
|
|
100
|
-
Address = 10.8.0.2/32
|
|
101
|
-
DNS = 192.168.1.2 # Opcional: usar Pi-hole como DNS a través del túnel
|
|
102
|
-
|
|
103
|
-
[Peer]
|
|
104
|
-
PublicKey = <clave_publica_servidor>
|
|
105
|
-
Endpoint = tu-ip-de-casa.ddns.net:51820 # Tu IP pública o hostname DDNS
|
|
106
|
-
AllowedIPs = 192.168.1.0/24 # Split tunnel: solo tráfico de la red doméstica
|
|
107
|
-
# AllowedIPs = 0.0.0.0/0, ::/0 # Túnel completo: todo el tráfico por la VPN
|
|
108
|
-
|
|
109
|
-
PersistentKeepalive = 25 # Mantiene el hueco NAT abierto (requerido en clientes móviles)
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Split tunnel vs túnel completo
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
# Split tunnel: AllowedIPs = 192.168.1.0/24
|
|
116
|
-
Solo el tráfico destinado a tu red doméstica pasa por la VPN.
|
|
117
|
-
El tráfico de internet (YouTube, Spotify) va directo — mejor rendimiento en móvil.
|
|
118
|
-
Ideal para: "solo quiero alcanzar mi NAS y mi Pi desde cualquier lugar".
|
|
119
|
-
|
|
120
|
-
# Túnel completo: AllowedIPs = 0.0.0.0/0, ::/0
|
|
121
|
-
TODO el tráfico pasa por tu conexión de internet doméstica.
|
|
122
|
-
Útil para: aprovechar el DNS del hogar/el bloqueo de anuncios de Pi-hole.
|
|
123
|
-
Desventaja: la velocidad de subida de tu casa se convierte en tu cuello de botella en todas partes.
|
|
124
|
-
|
|
125
|
-
# Split tunnel multi-subred (el caso más común en homelab):
|
|
126
|
-
AllowedIPs = 192.168.10.0/24, 192.168.20.0/24, 192.168.30.0/24, 10.8.0.0/24
|
|
127
|
-
Enruta todas tus VLANs a través del túnel; internet sigue yendo directo.
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Generación de claves y gestión de peers
|
|
131
|
-
|
|
132
|
-
```python
|
|
133
|
-
import subprocess
|
|
134
|
-
|
|
135
|
-
def generate_keypair() -> tuple[str, str]:
|
|
136
|
-
"""Genera un par de claves WireGuard. Devuelve (clave_privada, clave_publica)."""
|
|
137
|
-
private = subprocess.check_output(["wg", "genkey"]).decode().strip()
|
|
138
|
-
public = subprocess.run(
|
|
139
|
-
["wg", "pubkey"], input=private.encode(), capture_output=True
|
|
140
|
-
).stdout.decode().strip()
|
|
141
|
-
return private, public
|
|
142
|
-
|
|
143
|
-
def generate_preshared_key() -> str:
|
|
144
|
-
return subprocess.check_output(["wg", "genpsk"]).decode().strip()
|
|
145
|
-
|
|
146
|
-
def build_client_config(
|
|
147
|
-
client_private_key: str,
|
|
148
|
-
client_vpn_ip: str, # p. ej. "10.8.0.3"
|
|
149
|
-
server_public_key: str,
|
|
150
|
-
server_endpoint: str, # p. ej. "casa.ejemplo.com:51820"
|
|
151
|
-
allowed_ips: str = "192.168.1.0/24",
|
|
152
|
-
dns: str = "",
|
|
153
|
-
) -> str:
|
|
154
|
-
dns_line = f"DNS = {dns}\n" if dns else ""
|
|
155
|
-
return f"""[Interface]
|
|
156
|
-
PrivateKey = {client_private_key}
|
|
157
|
-
Address = {client_vpn_ip}/32
|
|
158
|
-
{dns_line}
|
|
159
|
-
[Peer]
|
|
160
|
-
PublicKey = {server_public_key}
|
|
161
|
-
Endpoint = {server_endpoint}
|
|
162
|
-
AllowedIPs = {allowed_ips}
|
|
163
|
-
PersistentKeepalive = 25
|
|
164
|
-
"""
|
|
165
|
-
|
|
166
|
-
def build_server_peer_block(
|
|
167
|
-
client_public_key: str,
|
|
168
|
-
client_vpn_ip: str,
|
|
169
|
-
comment: str = "",
|
|
170
|
-
) -> str:
|
|
171
|
-
comment_line = f"# {comment}\n" if comment else ""
|
|
172
|
-
return f"""
|
|
173
|
-
{comment_line}[Peer]
|
|
174
|
-
PublicKey = {client_public_key}
|
|
175
|
-
AllowedIPs = {client_vpn_ip}/32
|
|
176
|
-
"""
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Mantén las claves privadas fuera del control de versiones. Si usas este script, escribe el material de claves en archivos con modo 600 y nunca lo registres en logs ni lo imprimas.
|
|
180
|
-
|
|
181
|
-
## WireGuard en pfSense / OPNsense
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
# pfSense: VPN → WireGuard → Add Tunnel
|
|
185
|
-
Interface Keys: Generate (crea el par de claves automáticamente)
|
|
186
|
-
Listen Port: 51820
|
|
187
|
-
Interface Address: 10.8.0.1/24
|
|
188
|
-
|
|
189
|
-
# Añadir peer (uno por cliente):
|
|
190
|
-
Public Key: <clave pública del cliente>
|
|
191
|
-
Allowed IPs: 10.8.0.2/32
|
|
192
|
-
|
|
193
|
-
# Asignar la interfaz WireGuard:
|
|
194
|
-
Interfaces → Assignments → Add (seleccionar wg0)
|
|
195
|
-
Habilitar la interfaz, sin IP (ya está en la config del túnel)
|
|
196
|
-
|
|
197
|
-
# Reglas de firewall:
|
|
198
|
-
WAN → permitir UDP puerto 51820 entrante (para que los clientes alcancen el servidor)
|
|
199
|
-
Interfaz WireGuard → permitir tráfico hacia las redes LAN que quieras alcanzables
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
## DDNS (DNS dinámico) para servidores domésticos
|
|
203
|
-
|
|
204
|
-
La mayoría de conexiones domésticas tienen IP dinámica. Usa DDNS para que tu endpoint VPN siga siendo alcanzable tras un cambio de IP.
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
# Opción 1: DDNS con Cloudflare — guarda las credenciales en un archivo de secretos, no en línea
|
|
208
|
-
# Entrada de docker-compose usando un archivo de entorno:
|
|
209
|
-
ddns-updater:
|
|
210
|
-
image: qmcgaw/ddns-updater
|
|
211
|
-
env_file: ./ddns.env # guarda aquí zone_id y token, no en el compose
|
|
212
|
-
restart: unless-stopped
|
|
213
|
-
|
|
214
|
-
# ddns.env (chmod 600, sin commitear a git):
|
|
215
|
-
# SETTINGS_CLOUDFLARE_ZONE_ID=tu_zone_id
|
|
216
|
-
# SETTINGS_CLOUDFLARE_TOKEN=tu_api_token
|
|
217
|
-
|
|
218
|
-
# Opción 2: DuckDNS (gratis, simple)
|
|
219
|
-
Regístrate en duckdns.org → obtén un token y un subdominio (micasa.duckdns.org)
|
|
220
|
-
Guarda el token en /etc/ddns.env (modo 600) y usa un pequeño script propiedad de root:
|
|
221
|
-
|
|
222
|
-
# /usr/local/bin/update-duckdns
|
|
223
|
-
#!/bin/sh
|
|
224
|
-
set -eu
|
|
225
|
-
. /etc/ddns.env
|
|
226
|
-
curl --fail --silent --show-error --max-time 10 \
|
|
227
|
-
--get "https://www.duckdns.org/update" \
|
|
228
|
-
--data-urlencode "domains=micasa" \
|
|
229
|
-
--data-urlencode "token=${DUCKDNS_TOKEN}" \
|
|
230
|
-
--data-urlencode "ip="
|
|
231
|
-
|
|
232
|
-
# Tarea cron:
|
|
233
|
-
*/5 * * * * /usr/local/bin/update-duckdns >/dev/null 2>&1
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
## Diagnóstico
|
|
237
|
-
|
|
238
|
-
```bash
|
|
239
|
-
# Comprueba el estado de WireGuard y el último handshake
|
|
240
|
-
sudo wg show
|
|
241
|
-
|
|
242
|
-
# Si "latest handshake" es never o muy antiguo, el túnel no está conectado.
|
|
243
|
-
# Comprueba:
|
|
244
|
-
# 1. ¿Está abierto el puerto UDP 51820 en el router/firewall?
|
|
245
|
-
sudo ufw status # o revisa las reglas de firewall en pfSense/UniFi
|
|
246
|
-
|
|
247
|
-
# 2. ¿Es correcta la clave pública del servidor en la config del cliente?
|
|
248
|
-
sudo wg show wg0 public-key # Compárala con la que hay en la config del cliente
|
|
249
|
-
|
|
250
|
-
# 3. ¿Está habilitado el reenvío de IP en el servidor?
|
|
251
|
-
cat /proc/sys/net/ipv4/ip_forward # Debe ser 1
|
|
252
|
-
|
|
253
|
-
# 4. ¿AllowedIPs del cliente cubre la IP que intentas alcanzar?
|
|
254
|
-
# Si AllowedIPs = 192.168.1.0/24 e intentas llegar a 192.168.3.5, no se enrutará.
|
|
255
|
-
|
|
256
|
-
# Revisa los logs del kernel en busca de errores de WireGuard
|
|
257
|
-
dmesg | grep wireguard
|
|
258
|
-
|
|
259
|
-
# Reinicia WireGuard
|
|
260
|
-
sudo wg-quick down wg0 && sudo wg-quick up wg0
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
## Antipatrones
|
|
264
|
-
|
|
265
|
-
```
|
|
266
|
-
# MAL: guardar claves privadas en control de versiones o compartirlas
|
|
267
|
-
# Las claves privadas equivalen a contraseñas — nunca las commitees a git
|
|
268
|
-
|
|
269
|
-
# MAL: usar AllowedIPs = 0.0.0.0/0 en móvil sin considerar el impacto
|
|
270
|
-
# El túnel completo enruta todo el tráfico móvil por la subida de tu casa — normalmente lento
|
|
271
|
-
|
|
272
|
-
# MAL: no configurar PersistentKeepalive en clientes móviles
|
|
273
|
-
# Los clientes móviles detrás de NAT pierden los túneles inactivos sin esto
|
|
274
|
-
|
|
275
|
-
# MAL: abrir el puerto 51820 en el firewall pero olvidar el reenvío de IP en el servidor
|
|
276
|
-
# El túnel conecta pero no enruta tráfico — confuso de depurar
|
|
277
|
-
|
|
278
|
-
# MAL: compartir un par de claves entre varios dispositivos cliente
|
|
279
|
-
# Cada dispositivo debe tener su propio par único — compartir claves rompe el modelo de seguridad
|
|
280
|
-
|
|
281
|
-
# MAL: usar una regla amplia "FORWARD ACCEPT" en iptables
|
|
282
|
-
# Acota las reglas de reenvío a la interfaz wg0 y a la dirección concreta
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
## Buenas prácticas
|
|
286
|
-
|
|
287
|
-
- Genera un par de claves único por dispositivo cliente — nunca reutilices claves
|
|
288
|
-
- Usa split tunneling (`AllowedIPs = <subredes del hogar>`) en móvil
|
|
289
|
-
- Configura `PersistentKeepalive = 25` en todos los clientes móviles
|
|
290
|
-
- Usa DDNS si tu ISP asigna IP dinámica; guarda las credenciales en archivos de entorno, no en línea
|
|
291
|
-
- Usa reglas de reenvío de iptables acotadas (entrada solo por wg0) en lugar de un FORWARD ACCEPT general
|
|
292
|
-
- Añade la IP del Pi-hole como `DNS =` en las configs de los clientes para tener bloqueo de anuncios a través de la VPN
|
|
293
|
-
- Rota el par de claves del servidor periódicamente y actualiza las configs de todos los clientes
|
|
294
|
-
|
|
295
|
-
## Skills relacionadas
|
|
296
|
-
|
|
297
|
-
- `homelab-diseno-red`
|
|
298
|
-
- `homelab-segmentacion-vlan`
|
|
299
|
-
- `homelab-dns-pihole`
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ingenieria-agentica
|
|
3
|
-
description: Opera como ingeniero agéntico con ejecución guiada por evals, descomposición de tareas y enrutado de modelos consciente del costo; incluye el modelo operativo para equipos donde los agentes de IA generan gran parte de la implementación.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Ingeniería agéntica
|
|
7
|
-
|
|
8
|
-
Usa esta skill para flujos de ingeniería donde los agentes de IA realizan la mayor parte del trabajo de implementación y los humanos hacen cumplir la calidad y los controles de riesgo. Cubre tanto la operación individual (bucle de evals, descomposición, enrutado de modelos) como el modelo operativo de equipo (proceso, revisiones y arquitectura para equipos que entregan con generación de código asistida por IA).
|
|
9
|
-
|
|
10
|
-
## Principios operativos
|
|
11
|
-
|
|
12
|
-
1. Define los criterios de completitud antes de ejecutar.
|
|
13
|
-
2. Descompón el trabajo en unidades del tamaño de un agente.
|
|
14
|
-
3. Enruta los niveles de modelo según la complejidad de la tarea.
|
|
15
|
-
4. Mide con evals y verificaciones de regresión.
|
|
16
|
-
|
|
17
|
-
## Bucle eval-first
|
|
18
|
-
|
|
19
|
-
1. Define un eval de capacidad y un eval de regresión.
|
|
20
|
-
2. Ejecuta la línea base y captura las firmas de fallo.
|
|
21
|
-
3. Ejecuta la implementación.
|
|
22
|
-
4. Vuelve a correr los evals y compara los deltas.
|
|
23
|
-
|
|
24
|
-
## Descomposición de tareas
|
|
25
|
-
|
|
26
|
-
Aplica la regla de la unidad de 15 minutos:
|
|
27
|
-
- cada unidad debe ser verificable de forma independiente
|
|
28
|
-
- cada unidad debe tener un único riesgo dominante
|
|
29
|
-
- cada unidad debe exponer una condición de "hecho" clara
|
|
30
|
-
|
|
31
|
-
## Enrutado de modelos
|
|
32
|
-
|
|
33
|
-
- Modelo económico del catálogo Theus: clasificación, transformaciones repetitivas (boilerplate), ediciones acotadas
|
|
34
|
-
- Modelo estándar del catálogo Theus: implementación y refactors
|
|
35
|
-
- Modelo premium del catálogo Theus: arquitectura, análisis de causa raíz, invariantes multi-archivo
|
|
36
|
-
|
|
37
|
-
Escala al nivel de modelo superior solo cuando el nivel inferior falla con una brecha de razonamiento clara.
|
|
38
|
-
|
|
39
|
-
## Estrategia de sesión
|
|
40
|
-
|
|
41
|
-
- Continúa la sesión para unidades estrechamente acopladas.
|
|
42
|
-
- Inicia una sesión nueva tras las transiciones de fase importantes.
|
|
43
|
-
- Compacta después de completar un hito, no durante una depuración activa.
|
|
44
|
-
|
|
45
|
-
## Cambios de proceso en equipos AI-first
|
|
46
|
-
|
|
47
|
-
1. La calidad de la planificación importa más que la velocidad de tecleo.
|
|
48
|
-
2. La cobertura de evals importa más que la confianza anecdótica.
|
|
49
|
-
3. El foco de la revisión pasa de la sintaxis al comportamiento del sistema.
|
|
50
|
-
|
|
51
|
-
## Requisitos de arquitectura
|
|
52
|
-
|
|
53
|
-
Prefiere arquitecturas amigables para agentes:
|
|
54
|
-
- límites explícitos
|
|
55
|
-
- contratos estables
|
|
56
|
-
- interfaces tipadas
|
|
57
|
-
- tests deterministas
|
|
58
|
-
|
|
59
|
-
Evita el comportamiento implícito repartido en convenciones ocultas.
|
|
60
|
-
|
|
61
|
-
## Foco de revisión para código generado por IA
|
|
62
|
-
|
|
63
|
-
Prioriza:
|
|
64
|
-
- invariantes y casos borde
|
|
65
|
-
- límites de error (error boundaries)
|
|
66
|
-
- suposiciones de seguridad y autenticación
|
|
67
|
-
- acoplamiento oculto y riesgo de despliegue (rollout)
|
|
68
|
-
- regresiones de comportamiento
|
|
69
|
-
- integridad de datos
|
|
70
|
-
- manejo de fallos
|
|
71
|
-
|
|
72
|
-
No gastes ciclos de revisión en desacuerdos puramente de estilo cuando el formateo/lint automatizado ya lo impone; minimiza el tiempo dedicado a problemas de estilo que la automatización ya cubre.
|
|
73
|
-
|
|
74
|
-
## Estándar de testing
|
|
75
|
-
|
|
76
|
-
Eleva el listón de testing para el código generado:
|
|
77
|
-
- cobertura de regresión obligatoria en los dominios tocados
|
|
78
|
-
- aserciones explícitas de casos borde
|
|
79
|
-
- verificaciones de integración en los límites de las interfaces
|
|
80
|
-
|
|
81
|
-
## Disciplina de costos
|
|
82
|
-
|
|
83
|
-
Registra por tarea:
|
|
84
|
-
- modelo
|
|
85
|
-
- estimación de tokens
|
|
86
|
-
- reintentos
|
|
87
|
-
- tiempo de reloj
|
|
88
|
-
- éxito/fallo
|
|
89
|
-
|
|
90
|
-
## Señales de contratación y evaluación
|
|
91
|
-
|
|
92
|
-
Los ingenieros AI-first sólidos:
|
|
93
|
-
- descomponen limpiamente el trabajo ambiguo
|
|
94
|
-
- definen criterios de aceptación medibles
|
|
95
|
-
- producen prompts y evals de alta señal
|
|
96
|
-
- hacen cumplir los controles de riesgo bajo presión de entrega
|