@saulwade/swl-ses 2.4.3 → 2.5.1
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/CLAUDE.md +194 -241
- package/README.md +600 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/abogado-diablo-swl.md +145 -0
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/backend-api-swl.md +1 -1
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-node-swl.md +1 -1
- package/agentes/backend-python-swl.md +1 -1
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/datos-swl.md +1 -1
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/gh-fix-ci-swl.md +6 -1
- package/agentes/implementador-swl.md +1 -1
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/llm-apps-swl.md +1 -1
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/notificador-swl.md +1 -1
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/resolutor-build-swl.md +10 -1
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-codigo-swl.md +1 -1
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/sre-swl.md +1 -1
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/lib/bot-comandos.js +1 -1
- package/bin/swl-ses.js +6 -0
- package/comandos/swl/adoptar-proyecto.md +14 -2
- package/comandos/swl/configurar-ci.md +8 -1
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +22 -118
- package/comandos/swl/fix.md +118 -0
- package/comandos/swl/nuevo-proyecto.md +54 -3
- package/comandos/swl/predecir.md +32 -2
- package/comandos/swl/seguridad.md +189 -0
- package/comandos/swl/status.md +5 -3
- package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
- package/habilidades/discutir-fase/SKILL.md +84 -81
- package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
- package/habilidades/doc-sync/SKILL.md +3 -1
- package/habilidades/doubt-driven-review/SKILL.md +15 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
- package/habilidades/harness-claude-code/SKILL.md +3 -1
- package/habilidades/instalar-sistema/SKILL.md +3 -1
- package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
- package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
- package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
- package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
- package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
- package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
- package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
- package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
- package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
- package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
- package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
- package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
- package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
- package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
- package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
- package/habilidades/meta-skills-estandar/SKILL.md +3 -1
- package/habilidades/nuevo-proyecto/SKILL.md +20 -3
- package/habilidades/php-experto/SKILL.md +10 -3
- package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
- package/hooks/check-update.js +19 -10
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/extraccion-aprendizajes.js +2 -2
- package/hooks/lib/briefing.js +3 -3
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/webhook-dedup.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/llms.txt +6 -6
- package/manifiestos/canonical-hashes.json +713 -52
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +168 -135
- package/manifiestos/perfiles.json +0 -2
- package/manifiestos/skills-lock.json +49 -56
- package/package.json +7 -5
- package/plantillas/github-workflows/README.md +15 -1
- package/plantillas/github-workflows/swl-devsecops.yml +70 -0
- package/plugin.json +5 -5
- package/reglas/analisis-previo-tareas-grandes.md +30 -156
- package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
- package/reglas/api-diseno.md +28 -398
- package/reglas/arquitectura.md +35 -456
- package/reglas/arreglar-al-detectar.md +30 -230
- package/reglas/debatir-antes-de-aceptar.md +30 -143
- package/reglas/docs.md +7 -0
- package/reglas/estilo-codigo.md +9 -0
- package/reglas/fragmentos-compartidos.md +6 -0
- package/reglas/git-workflow.md +44 -240
- package/reglas/gobernanza.md +23 -262
- package/reglas/memoria-consolidada.md +34 -228
- package/reglas/performance.md +8 -0
- package/reglas/pruebas.md +12 -0
- package/reglas/seguridad-agentes.md +37 -418
- package/reglas/seguridad.md +12 -0
- package/reglas/sesiones-paralelas.md +29 -162
- package/reglas/sin-duplicacion-reglas-globales.md +25 -166
- package/reglas/skills-estandar.md +23 -373
- package/reglas/usar-code-review-graph.md +31 -140
- package/reglas/usar-context7.md +30 -208
- package/reglas/usar-sistema-swl.md +47 -242
- package/reglas/verificar-citas-normativas.md +47 -537
- package/scripts/actualizar.js +253 -253
- package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
- package/scripts/auditar-clases-conocidas.js +106 -0
- package/scripts/bootstrap-instintos.js +2 -2
- package/scripts/canario-hooks.js +166 -0
- package/scripts/cli/configurar-ci.js +2 -1
- package/scripts/evidencia-valor.js +93 -0
- package/scripts/field-report.js +1 -1
- package/scripts/generar-comandos.js +143 -0
- package/scripts/generar-inventario.js +236 -23
- package/scripts/generar-matriz-lenguajes.js +1 -1
- package/scripts/instalador.js +15 -1
- package/scripts/lib/configurar-ci.js +10 -3
- package/scripts/lib/diary-entry.js +3 -1
- package/scripts/lib/drift-detector.js +1 -1
- package/scripts/lib/evidencia-valor.js +189 -0
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-md.js +63 -0
- package/scripts/lib/parsear-opciones.js +2 -0
- package/scripts/lib/prune-componentes.js +180 -0
- package/scripts/lib/reglas-globales-conocidas.json +16 -2
- package/scripts/lib/scoring-instintos.js +2 -2
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/claude.js +1 -1
- package/scripts/lib/transformadores/codex.js +1 -1
- package/scripts/lib/transformadores/copilot.js +1 -1
- package/scripts/lib/transformadores/cursor.js +1 -1
- package/scripts/lib/transformadores/gemini.js +22 -2
- package/scripts/lib/transformadores/opencode.js +1 -1
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/prune.js +102 -0
- package/scripts/publicar.js +18 -2
- package/scripts/tui/pantallas/inspect.js +175 -175
- package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
- package/scripts/tui/pantallas/update-wizard.js +234 -234
- package/scripts/tui/pantallas/welcome.js +189 -189
- package/habilidades/paid-media-tracking/SKILL.md +0 -269
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
- package/habilidades/tracking-measurement/SKILL.md +0 -239
- package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
- package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"lockfileVersion": 1,
|
|
3
|
-
"generatedAt": "2026-07-
|
|
4
|
-
"skillsCount":
|
|
5
|
-
"lockHash": "sha256:
|
|
3
|
+
"generatedAt": "2026-07-09T05:48:39.413Z",
|
|
4
|
+
"skillsCount": 181,
|
|
5
|
+
"lockHash": "sha256:60e8d0c732526f1329974a4bae2894a493e92a6b506ce192ca7cd5b04f2609da",
|
|
6
6
|
"skills": [
|
|
7
7
|
{
|
|
8
8
|
"nombre": "accesibilidad-a11y",
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
{
|
|
71
71
|
"nombre": "aprendizaje-continuo",
|
|
72
72
|
"path": "habilidades/aprendizaje-continuo/SKILL.md",
|
|
73
|
-
"hash": "sha256:
|
|
74
|
-
"bytes":
|
|
75
|
-
"version": "\"1.0.
|
|
73
|
+
"hash": "sha256:eed67648fa28aabfb9e8428bf3b37cc0d5c0b1cf96fe7b323278238dcee56e38",
|
|
74
|
+
"bytes": 9315,
|
|
75
|
+
"version": "\"1.0.2\""
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"nombre": "async-python",
|
|
@@ -413,9 +413,9 @@
|
|
|
413
413
|
{
|
|
414
414
|
"nombre": "discutir-fase",
|
|
415
415
|
"path": "habilidades/discutir-fase/SKILL.md",
|
|
416
|
-
"hash": "sha256:
|
|
417
|
-
"bytes":
|
|
418
|
-
"version": "\"1.
|
|
416
|
+
"hash": "sha256:8783766ef16f9ba2db7b3e79627f92f5219a195e2e5416e957bc52f4d4cf47b2",
|
|
417
|
+
"bytes": 14760,
|
|
418
|
+
"version": "\"1.3.0\""
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
421
|
"nombre": "diseno-herramientas-agente",
|
|
@@ -441,16 +441,16 @@
|
|
|
441
441
|
{
|
|
442
442
|
"nombre": "doc-sync",
|
|
443
443
|
"path": "habilidades/doc-sync/SKILL.md",
|
|
444
|
-
"hash": "sha256:
|
|
445
|
-
"bytes":
|
|
446
|
-
"version": "\"1.
|
|
444
|
+
"hash": "sha256:17c38d773dccccf0e40697019397b99a4cbee8e49c77028828a1a38d9e430128",
|
|
445
|
+
"bytes": 35826,
|
|
446
|
+
"version": "\"1.4.0\""
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
449
|
"nombre": "doubt-driven-review",
|
|
450
450
|
"path": "habilidades/doubt-driven-review/SKILL.md",
|
|
451
|
-
"hash": "sha256:
|
|
452
|
-
"bytes":
|
|
453
|
-
"version": "\"1.
|
|
451
|
+
"hash": "sha256:0fc4bdf6c7f790062a1de38475a71711260a4cff1f1ea7258537d5919b1f7739",
|
|
452
|
+
"bytes": 9099,
|
|
453
|
+
"version": "\"1.1.0\""
|
|
454
454
|
},
|
|
455
455
|
{
|
|
456
456
|
"nombre": "drift-detection",
|
|
@@ -469,8 +469,8 @@
|
|
|
469
469
|
{
|
|
470
470
|
"nombre": "ejecutar-task-iterativo",
|
|
471
471
|
"path": "habilidades/ejecutar-task-iterativo/SKILL.md",
|
|
472
|
-
"hash": "sha256:
|
|
473
|
-
"bytes":
|
|
472
|
+
"hash": "sha256:af59419363aaec817a7f32470802c73df0c206d1506f22e6f94f5d6096b4056b",
|
|
473
|
+
"bytes": 12853,
|
|
474
474
|
"version": "\"1.0.0\""
|
|
475
475
|
},
|
|
476
476
|
{
|
|
@@ -483,9 +483,9 @@
|
|
|
483
483
|
{
|
|
484
484
|
"nombre": "estructura-proyecto-claude",
|
|
485
485
|
"path": "habilidades/estructura-proyecto-claude/SKILL.md",
|
|
486
|
-
"hash": "sha256:
|
|
487
|
-
"bytes":
|
|
488
|
-
"version": "\"1.1.
|
|
486
|
+
"hash": "sha256:aec73e210e20a12f32ddd186c8a2a5400ff0ae620d3b82c7785571fc2a07eca1",
|
|
487
|
+
"bytes": 12879,
|
|
488
|
+
"version": "\"1.1.1\""
|
|
489
489
|
},
|
|
490
490
|
{
|
|
491
491
|
"nombre": "eval-framework",
|
|
@@ -536,13 +536,6 @@
|
|
|
536
536
|
"bytes": 5635,
|
|
537
537
|
"version": "\"1.0.0\""
|
|
538
538
|
},
|
|
539
|
-
{
|
|
540
|
-
"nombre": "filament-admin",
|
|
541
|
-
"path": "habilidades/filament-admin/SKILL.md",
|
|
542
|
-
"hash": "sha256:3a1962caf54d2e87d16989df457d994c1fe7d679900c93ce2b3f6b71fa15e101",
|
|
543
|
-
"bytes": 14530,
|
|
544
|
-
"version": "\"1.0.0\""
|
|
545
|
-
},
|
|
546
539
|
{
|
|
547
540
|
"nombre": "frontend-avanzado",
|
|
548
541
|
"path": "habilidades/frontend-avanzado/SKILL.md",
|
|
@@ -609,9 +602,9 @@
|
|
|
609
602
|
{
|
|
610
603
|
"nombre": "harness-claude-code",
|
|
611
604
|
"path": "habilidades/harness-claude-code/SKILL.md",
|
|
612
|
-
"hash": "sha256:
|
|
613
|
-
"bytes":
|
|
614
|
-
"version": "\"1.0.
|
|
605
|
+
"hash": "sha256:90a45cb0d932ccd38bbb2fc09ef86149d640dd073ab6d21a841db33a6baf41db",
|
|
606
|
+
"bytes": 17714,
|
|
607
|
+
"version": "\"1.0.4\""
|
|
615
608
|
},
|
|
616
609
|
{
|
|
617
610
|
"nombre": "iam-secretos",
|
|
@@ -630,9 +623,9 @@
|
|
|
630
623
|
{
|
|
631
624
|
"nombre": "instalar-sistema",
|
|
632
625
|
"path": "habilidades/instalar-sistema/SKILL.md",
|
|
633
|
-
"hash": "sha256:
|
|
634
|
-
"bytes":
|
|
635
|
-
"version": "\"1.0.
|
|
626
|
+
"hash": "sha256:9769a473af0ec4fd05d4b7a4d05f5d2c6b46fbc9ab74abd46d754d25ef6d533f",
|
|
627
|
+
"bytes": 13241,
|
|
628
|
+
"version": "\"1.0.2\""
|
|
636
629
|
},
|
|
637
630
|
{
|
|
638
631
|
"nombre": "java-experto",
|
|
@@ -725,12 +718,19 @@
|
|
|
725
718
|
"bytes": 10423,
|
|
726
719
|
"version": "\"1.1.0\""
|
|
727
720
|
},
|
|
721
|
+
{
|
|
722
|
+
"nombre": "meta-reglas-extendido",
|
|
723
|
+
"path": "habilidades/meta-reglas-extendido/SKILL.md",
|
|
724
|
+
"hash": "sha256:0ebfdb602ea805b7c7e99e89e75066e1ea0488f02fdbbc36e1449681aa18cf42",
|
|
725
|
+
"bytes": 5626,
|
|
726
|
+
"version": "\"1.1.0\""
|
|
727
|
+
},
|
|
728
728
|
{
|
|
729
729
|
"nombre": "meta-skills-estandar",
|
|
730
730
|
"path": "habilidades/meta-skills-estandar/SKILL.md",
|
|
731
|
-
"hash": "sha256:
|
|
732
|
-
"bytes":
|
|
733
|
-
"version": "\"1.1.
|
|
731
|
+
"hash": "sha256:e7588fcb351b860e64d3ae5ec811419d2f0fa23b12ce608c58e1483ef95322b2",
|
|
732
|
+
"bytes": 23947,
|
|
733
|
+
"version": "\"1.1.3\""
|
|
734
734
|
},
|
|
735
735
|
{
|
|
736
736
|
"nombre": "microservicios",
|
|
@@ -826,9 +826,9 @@
|
|
|
826
826
|
{
|
|
827
827
|
"nombre": "nuevo-proyecto",
|
|
828
828
|
"path": "habilidades/nuevo-proyecto/SKILL.md",
|
|
829
|
-
"hash": "sha256:
|
|
830
|
-
"bytes":
|
|
831
|
-
"version": "\"1.
|
|
829
|
+
"hash": "sha256:52b0e6ad414e4fe4a7f4006b3a5e7651b1bf064dd065bff1f5d064d095ac343b",
|
|
830
|
+
"bytes": 12824,
|
|
831
|
+
"version": "\"1.1.0\""
|
|
832
832
|
},
|
|
833
833
|
{
|
|
834
834
|
"nombre": "orquestacion-async",
|
|
@@ -837,13 +837,6 @@
|
|
|
837
837
|
"bytes": 14653,
|
|
838
838
|
"version": "\"1.1.0\""
|
|
839
839
|
},
|
|
840
|
-
{
|
|
841
|
-
"nombre": "paid-media-tracking",
|
|
842
|
-
"path": "habilidades/paid-media-tracking/SKILL.md",
|
|
843
|
-
"hash": "sha256:2eec3934d77bfb9e2fb6ddb351a870f4a7f82bdc99e62f934ab57831c5c51895",
|
|
844
|
-
"bytes": 14155,
|
|
845
|
-
"version": "\"1.0.0\""
|
|
846
|
-
},
|
|
847
840
|
{
|
|
848
841
|
"nombre": "patrones-python",
|
|
849
842
|
"path": "habilidades/patrones-python/SKILL.md",
|
|
@@ -868,9 +861,9 @@
|
|
|
868
861
|
{
|
|
869
862
|
"nombre": "php-experto",
|
|
870
863
|
"path": "habilidades/php-experto/SKILL.md",
|
|
871
|
-
"hash": "sha256:
|
|
872
|
-
"bytes":
|
|
873
|
-
"version": "\"1.
|
|
864
|
+
"hash": "sha256:2c80ec13ae6fe73f6b995849fb6cc0db878f953fcf8619f98f2e5f5094a9b60c",
|
|
865
|
+
"bytes": 11580,
|
|
866
|
+
"version": "\"1.1.0\""
|
|
874
867
|
},
|
|
875
868
|
{
|
|
876
869
|
"nombre": "php-patrones",
|
|
@@ -970,6 +963,13 @@
|
|
|
970
963
|
"bytes": 8847,
|
|
971
964
|
"version": null
|
|
972
965
|
},
|
|
966
|
+
{
|
|
967
|
+
"nombre": "proceso-ingenieria-requerimientos",
|
|
968
|
+
"path": "habilidades/proceso-ingenieria-requerimientos/SKILL.md",
|
|
969
|
+
"hash": "sha256:ca484be02f9706450f063d26ac6fd180bb63fc74bf3f53d7549933bae6991ac9",
|
|
970
|
+
"bytes": 9553,
|
|
971
|
+
"version": "\"1.0.0\""
|
|
972
|
+
},
|
|
973
973
|
{
|
|
974
974
|
"nombre": "proceso-intent-engineering",
|
|
975
975
|
"path": "habilidades/proceso-intent-engineering/SKILL.md",
|
|
@@ -1201,13 +1201,6 @@
|
|
|
1201
1201
|
"bytes": 11812,
|
|
1202
1202
|
"version": "\"1.0.0\""
|
|
1203
1203
|
},
|
|
1204
|
-
{
|
|
1205
|
-
"nombre": "tracking-measurement",
|
|
1206
|
-
"path": "habilidades/tracking-measurement/SKILL.md",
|
|
1207
|
-
"hash": "sha256:afd48bce60ffbd73862e14ce83045b45921ebebcc8f4b8dddc8ac12363b8c1f1",
|
|
1208
|
-
"bytes": 12898,
|
|
1209
|
-
"version": "\"1.0.0\""
|
|
1210
|
-
},
|
|
1211
1204
|
{
|
|
1212
1205
|
"nombre": "typescript-avanzado",
|
|
1213
1206
|
"path": "habilidades/typescript-avanzado/SKILL.md",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saulwade/swl-ses",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot con
|
|
3
|
+
"version": "2.5.1",
|
|
4
|
+
"description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot con 61 agentes, 181 habilidades, 47 comandos, 77 reglas y 49 hooks. Soporta 11 lenguajes y 7 runtimes: Claude Code, OpenClaude, OpenCode, Gemini CLI, Cursor, Codex CLI (soporte completo); GitHub Copilot (soporte parcial). 100% en espanol (Mexico). Multi-target install (--target CSV / --all-runtimes), autoconfig MCP en Cursor/Codex con --with-mcp, agentes Codex en TOML, hooks Cursor (17 eventos) y Codex (6 eventos). Gateway bidireccional con relay Telegram y auditoria profunda Nemesis con loop evaluator-optimizer opt-in (ADR-0021) y 8 tools ejecutables. v1.8.0 unifica los directorios runtime de .planning/ al ingles (evolution/, auto-evolution/, user-profile/, archive/), manteniendo fases/ en espanol, con guard validar-planning-paths y allowlist canonica (ADR-0031). Hereda de v1.7.4: skill calidad-anti-patrones-universales + scripts/lib/pr-analyzer.js + 3 sub-secciones en estilo-sin-ai-isms.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"swl-ses": "bin/swl-ses.js",
|
|
7
7
|
"swl-telegram-bot": "bin/swl-telegram-bot.js",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"test:docs": "node scripts/verificar-docs-vs-codigo.js",
|
|
36
36
|
"test:smoke": "node scripts/smoke-test.js",
|
|
37
37
|
"test:aislamiento": "node scripts/validar-tests-aislamiento.js",
|
|
38
|
-
"test:all": "npm test && node scripts/validar.js && node scripts/validar-manifest.js && node scripts/verificar-docs-vs-codigo.js && node scripts/derivar-feature-list.js --check",
|
|
38
|
+
"test:all": "npm test && node scripts/validar.js && node scripts/validar-manifest.js && node scripts/verificar-docs-vs-codigo.js && node scripts/derivar-feature-list.js --check && node scripts/generar-comandos.js --check && node scripts/auditar-clases-conocidas.js && node scripts/canario-hooks.js",
|
|
39
39
|
"test:userland": "node scripts/validar-userland-vacio.js",
|
|
40
|
-
"test:release": "npm run test:all && npm run test:userland && npm run test:smoke",
|
|
40
|
+
"test:release": "npm run test:all && npm run test:userland && npm run test:smoke && node scripts/canario-hooks.js --smoke",
|
|
41
41
|
"doctor": "node scripts/doctor.js",
|
|
42
42
|
"prepack": "node scripts/limpiar-artefactos-python.js && node scripts/validar-userland-vacio.js",
|
|
43
43
|
"prepublishOnly": "npm run test:release",
|
|
@@ -45,7 +45,9 @@
|
|
|
45
45
|
"publish:github": "node scripts/publicar.js --solo-github",
|
|
46
46
|
"publish:npmjs": "node scripts/publicar.js --solo-npmjs",
|
|
47
47
|
"publish:dry": "node scripts/publicar.js --dry-run",
|
|
48
|
-
"generate:docs": "node scripts/generar-inventario.js",
|
|
48
|
+
"generate:docs": "node scripts/generar-inventario.js && node scripts/generar-comandos.js",
|
|
49
|
+
"gen-comandos": "node scripts/generar-comandos.js",
|
|
50
|
+
"gen-comandos:check": "node scripts/generar-comandos.js --check",
|
|
49
51
|
"gen-checklists": "node scripts/generar-checklists-consolidados.js",
|
|
50
52
|
"gen-checklists:check": "node scripts/generar-checklists-consolidados.js --check",
|
|
51
53
|
"gen:feature-list": "node scripts/derivar-feature-list.js",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plantillas de GitHub Actions — swl-ses
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cuatro workflows listos para copiar a `.github/workflows/` de cualquier proyecto.
|
|
4
4
|
|
|
5
5
|
## Cómo instalar
|
|
6
6
|
|
|
@@ -42,6 +42,20 @@ y el GitHub Release.
|
|
|
42
42
|
|
|
43
43
|
Ver `docs/RELEASE-PLEASE-MIGRATION.md` para comparativa con el flujo manual actual.
|
|
44
44
|
|
|
45
|
+
### `swl-devsecops.yml` — Gates de seguridad del pipeline
|
|
46
|
+
|
|
47
|
+
Corre en push a `main` y en PRs. Materializa los 2 gates zero-config del skill
|
|
48
|
+
`devsecops-pipeline-security`:
|
|
49
|
+
|
|
50
|
+
- **Secret scanning** con gitleaks sobre el historial completo (`fetch-depth: 0`)
|
|
51
|
+
- **Auditoría de dependencias** por ecosistema detectado (npm audit / pip-audit /
|
|
52
|
+
cargo audit), fallando en HIGH/CRITICAL
|
|
53
|
+
|
|
54
|
+
**No requiere** secrets en repos personales. En repos de **organización**,
|
|
55
|
+
gitleaks-action exige `GITLEAKS_LICENSE` (gratuita para individuos). Los gates
|
|
56
|
+
avanzados (SAST CodeQL/Semgrep, Trivy, DAST ZAP) se configuran por proyecto —
|
|
57
|
+
ver `Skill("devsecops-pipeline-security")` y `/swl:seguridad` capa 4.
|
|
58
|
+
|
|
45
59
|
## Skill de referencia
|
|
46
60
|
|
|
47
61
|
Para guía completa de setup, troubleshooting y gotchas: `Skill("infra-github-actions")`.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# swl-devsecops.yml — Gates de seguridad del pipeline (swl-ses)
|
|
2
|
+
#
|
|
3
|
+
# Materializa los 2 gates zero-config del skill devsecops-pipeline-security:
|
|
4
|
+
# 1. Secret scanning con gitleaks (historial completo)
|
|
5
|
+
# 2. Auditoría de dependencias por ecosistema detectado
|
|
6
|
+
#
|
|
7
|
+
# Sin secrets requeridos en repos personales. En repos de ORGANIZACIÓN,
|
|
8
|
+
# gitleaks-action exige GITLEAKS_LICENSE (gratuita para individuos:
|
|
9
|
+
# https://gitleaks.io/products.html) — agregarla en Settings → Secrets.
|
|
10
|
+
#
|
|
11
|
+
# Los gates 3-5 del skill (SAST con CodeQL/Semgrep, container scanning con
|
|
12
|
+
# Trivy, DAST con ZAP) requieren configuración por proyecto — ver
|
|
13
|
+
# Skill("devsecops-pipeline-security") y /swl:seguridad capa 4.
|
|
14
|
+
|
|
15
|
+
name: SWL DevSecOps
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
push:
|
|
19
|
+
branches: [main, master]
|
|
20
|
+
pull_request:
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
secretos:
|
|
27
|
+
name: Secret scanning (gitleaks)
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
with:
|
|
32
|
+
fetch-depth: 0 # historial completo — los secretos viven en commits viejos
|
|
33
|
+
- uses: gitleaks/gitleaks-action@v2
|
|
34
|
+
env:
|
|
35
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
36
|
+
GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} # solo necesaria en repos de organización
|
|
37
|
+
|
|
38
|
+
dependencias:
|
|
39
|
+
name: Auditoría de dependencias
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: npm audit (si hay package-lock.json)
|
|
45
|
+
if: ${{ hashFiles('package-lock.json') != '' }}
|
|
46
|
+
run: |
|
|
47
|
+
npm audit --audit-level=high --omit=dev || {
|
|
48
|
+
echo "::error::npm audit encontró vulnerabilidades HIGH/CRITICAL en dependencias de producción"
|
|
49
|
+
exit 1
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
- name: pip-audit (si hay requirements.txt o pyproject.toml)
|
|
53
|
+
if: ${{ hashFiles('requirements.txt', 'pyproject.toml') != '' }}
|
|
54
|
+
run: |
|
|
55
|
+
python -m pip install --quiet pip-audit
|
|
56
|
+
if [ -f requirements.txt ]; then
|
|
57
|
+
pip-audit -r requirements.txt --strict
|
|
58
|
+
else
|
|
59
|
+
pip-audit --strict
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
- name: cargo audit (si hay Cargo.lock)
|
|
63
|
+
if: ${{ hashFiles('Cargo.lock') != '' }}
|
|
64
|
+
run: |
|
|
65
|
+
cargo install cargo-audit --quiet || true
|
|
66
|
+
cargo audit
|
|
67
|
+
|
|
68
|
+
- name: Sin ecosistema detectado
|
|
69
|
+
if: ${{ hashFiles('package-lock.json', 'requirements.txt', 'pyproject.toml', 'Cargo.lock') == '' }}
|
|
70
|
+
run: echo "::warning::Sin lockfile reconocido (npm/pip/cargo) — la auditoría de dependencias no corrió. Agregar el auditor del stack manualmente."
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swl-ses",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot.
|
|
3
|
+
"version": "2.5.1",
|
|
4
|
+
"description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot. 61 agentes, 181 habilidades, 47 comandos, 77 reglas y 49 hooks. 76 librerias. 11 lenguajes. Soporta Claude Code, Copilot, OpenCode, Codex y Gemini CLI. Loop evaluator-optimizer en /swl:nemesis (ADR-0021). v1.8.0 unifica los directorios runtime de .planning/ al ingles (evolution/, auto-evolution/, user-profile/, archive/), manteniendo fases/ en espanol, con guard validar-planning-paths y allowlist canonica (ADR-0031). Hereda de v1.7.4: skill calidad-anti-patrones-universales + scripts/lib/pr-analyzer.js + 3 sub-secciones en estilo-sin-ai-isms.",
|
|
5
5
|
"author": "Saul Wade Leon",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "https://github.com/saul-wade/swl-ses",
|
|
@@ -82,7 +82,6 @@
|
|
|
82
82
|
"habilidades/extractor-de-aprendizajes",
|
|
83
83
|
"habilidades/fastapi-experto",
|
|
84
84
|
"habilidades/feynman-auditor-swl",
|
|
85
|
-
"habilidades/filament-admin",
|
|
86
85
|
"habilidades/frontend-avanzado",
|
|
87
86
|
"habilidades/gcp-cloud",
|
|
88
87
|
"habilidades/generacion-mermaid",
|
|
@@ -109,6 +108,7 @@
|
|
|
109
108
|
"habilidades/manejo-errores",
|
|
110
109
|
"habilidades/mapear-codebase",
|
|
111
110
|
"habilidades/memoria-busqueda",
|
|
111
|
+
"habilidades/meta-reglas-extendido",
|
|
112
112
|
"habilidades/meta-skills-estandar",
|
|
113
113
|
"habilidades/microservicios",
|
|
114
114
|
"habilidades/mobile-flutter",
|
|
@@ -125,7 +125,6 @@
|
|
|
125
125
|
"habilidades/notificaciones-multicanal",
|
|
126
126
|
"habilidades/nuevo-proyecto",
|
|
127
127
|
"habilidades/orquestacion-async",
|
|
128
|
-
"habilidades/paid-media-tracking",
|
|
129
128
|
"habilidades/patrones-python",
|
|
130
129
|
"habilidades/perfil-usuario",
|
|
131
130
|
"habilidades/performance-baseline",
|
|
@@ -144,6 +143,7 @@
|
|
|
144
143
|
"habilidades/proceso-debate-adversarial",
|
|
145
144
|
"habilidades/proceso-discovery-machote",
|
|
146
145
|
"habilidades/proceso-dynamic-workflows",
|
|
146
|
+
"habilidades/proceso-ingenieria-requerimientos",
|
|
147
147
|
"habilidades/proceso-intent-engineering",
|
|
148
148
|
"habilidades/proceso-modular-split",
|
|
149
149
|
"habilidades/prompt-engineering",
|
|
@@ -177,7 +177,6 @@
|
|
|
177
177
|
"habilidades/testing-python",
|
|
178
178
|
"habilidades/threat-model-lite",
|
|
179
179
|
"habilidades/tracing-processor",
|
|
180
|
-
"habilidades/tracking-measurement",
|
|
181
180
|
"habilidades/typescript-avanzado",
|
|
182
181
|
"habilidades/typescript-diagnosticos",
|
|
183
182
|
"habilidades/ux-diseno",
|
|
@@ -190,6 +189,7 @@
|
|
|
190
189
|
"habilidades/workflow-claude-code"
|
|
191
190
|
],
|
|
192
191
|
"agents": [
|
|
192
|
+
"agentes/abogado-diablo-swl.md",
|
|
193
193
|
"agentes/accesibilidad-wcag-swl.md",
|
|
194
194
|
"agentes/arquitecto-swl.md",
|
|
195
195
|
"agentes/auto-evolucion-swl.md",
|
|
@@ -1,172 +1,46 @@
|
|
|
1
1
|
# Regla: Análisis previo ante tareas grandes
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
adopción de patrón en N módulos.
|
|
7
|
-
|
|
8
|
-
---
|
|
3
|
+
Regla OBLIGATORIA ante solicitudes de cambio masivo: porte de sistema, refactor
|
|
4
|
+
cross-módulo, replicación de arquitectura externa, migración de stack, adopción
|
|
5
|
+
de patrón en N módulos.
|
|
9
6
|
|
|
10
7
|
## Principio
|
|
11
8
|
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
>
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Cómo aplicar
|
|
21
|
-
|
|
22
|
-
### Detección — qué cuenta como "tarea grande"
|
|
23
|
-
|
|
24
|
-
Cualquier solicitud que tenga al menos uno de estos atributos:
|
|
25
|
-
|
|
26
|
-
- Más de ~10 archivos a crear, mover o reescribir.
|
|
27
|
-
- Más de ~500 LOC estimadas a tocar en un solo turno.
|
|
28
|
-
- Toca más de un dominio (backend + frontend, o varios módulos backend).
|
|
29
|
-
- "Replicar X" donde X es un sistema externo con su propia arquitectura.
|
|
30
|
-
- "Portar todo de Y" donde Y es un repo, framework o lib voluminoso.
|
|
31
|
-
- "Implementar todo Z" donde Z es una fase, un sub-sistema, una capa nueva.
|
|
32
|
-
- Análisis de un repo en `temp/` con la pregunta abierta "¿qué adoptamos?".
|
|
33
|
-
|
|
34
|
-
Si la solicitud encaja en cualquiera de estas, aplicar la regla.
|
|
35
|
-
|
|
36
|
-
### Paso 1 — Auditar lo que ya existe
|
|
37
|
-
|
|
38
|
-
Antes de proponer el porte:
|
|
39
|
-
|
|
40
|
-
- `Glob` / `Grep` / `Read` para mapear el código actual del usuario.
|
|
41
|
-
- Identificar componentes que ya cubren parte de la solicitud.
|
|
42
|
-
- Verificar versiones, dependencias, convenciones del proyecto.
|
|
43
|
-
- Si es repo externo en `temp/`: aplicar **filtro de dominio** primero
|
|
44
|
-
(ver `reglas/arquitectura.md` § "Análisis de repositorios externos").
|
|
45
|
-
Descartar 80-95% del contenido vertical antes de análisis profundo.
|
|
46
|
-
|
|
47
|
-
### Paso 2 — Tabla comparativa
|
|
48
|
-
|
|
49
|
-
Producir una tabla con tres columnas:
|
|
50
|
-
|
|
51
|
-
| Componente del sistema externo | Equivalente actual del usuario | Gap |
|
|
52
|
-
|---|---|---|
|
|
53
|
-
| ... | ya existe / parcial / no existe | qué falta agregar |
|
|
54
|
-
|
|
55
|
-
Sin la tabla, no se proponen opciones. La tabla es la base objetiva de la decisión.
|
|
56
|
-
|
|
57
|
-
### Paso 3 — Tres opciones de alcance
|
|
58
|
-
|
|
59
|
-
Siempre presentar tres opciones:
|
|
60
|
-
|
|
61
|
-
- **Mínima** — solo cierra los gaps críticos (lo que NO existe). Esfuerzo
|
|
62
|
-
estimado bajo. Usuario acepta vivir con diferencias menores en lo demás.
|
|
63
|
-
- **Media** — cierra gaps + alinea componentes parciales con el patrón externo.
|
|
64
|
-
Esfuerzo medio. Convergencia parcial sin reescribir lo que ya funciona.
|
|
65
|
-
- **Completa** — porte literal de todo lo que el usuario pidió, sin reusar
|
|
66
|
-
componentes existentes. Esfuerzo alto. Justificable solo cuando la
|
|
67
|
-
arquitectura externa es estrictamente superior.
|
|
68
|
-
|
|
69
|
-
Cada opción incluye:
|
|
70
|
-
|
|
71
|
-
- Estimación de esfuerzo (turnos, LOC, archivos afectados).
|
|
72
|
-
- Lista de tareas concretas si se elige.
|
|
73
|
-
- Riesgos / tradeoffs específicos.
|
|
9
|
+
> Ante "replicar íntegramente X", "portar todo Y", "implementar el sistema
|
|
10
|
+
> completo Z": responder PRIMERO con análisis comparativo (qué ya existe vs.
|
|
11
|
+
> qué falta) + 3 opciones de alcance (mínima / media / completa) +
|
|
12
|
+
> recomendación explícita, y esperar la confirmación literal del usuario
|
|
13
|
+
> ("procede con la opción 2"). NUNCA arrancar el porte sin ella.
|
|
74
14
|
|
|
75
|
-
|
|
15
|
+
## Detección — qué cuenta como "tarea grande"
|
|
76
16
|
|
|
77
|
-
|
|
78
|
-
|
|
17
|
+
Cualquier solicitud con al menos uno: >~10 archivos a crear/mover/reescribir;
|
|
18
|
+
>~500 LOC en un solo turno; cruza dominios (backend+frontend o varios módulos);
|
|
19
|
+
"replicar X" / "portar todo Y" / "implementar todo Z" sobre un sistema externo;
|
|
20
|
+
repo en `temp/` con la pregunta abierta "¿qué adoptamos?".
|
|
79
21
|
|
|
80
|
-
|
|
22
|
+
## Los 5 pasos
|
|
81
23
|
|
|
82
|
-
|
|
83
|
-
|
|
24
|
+
1. **Auditar lo existente** (`Glob`/`Grep`/`Read`): componentes que ya cubren parte, versiones, convenciones. Si es repo externo en `temp/`, aplicar primero el filtro de dominio (`reglas/arquitectura.md § Repos externos`) y descartar 80-95% del contenido vertical.
|
|
25
|
+
2. **Tabla comparativa** (componente externo | equivalente actual | gap: ya existe / parcial / no existe) — sin tabla no se proponen opciones; es la base objetiva de la decisión.
|
|
26
|
+
3. **Tres opciones de alcance**: mínima (solo gaps críticos) / media (gaps + alinear parciales sin reescribir lo que funciona) / completa (porte literal, solo si la arquitectura externa es estrictamente superior); cada una con esfuerzo cuantificado (turnos/LOC/archivos), tareas concretas y riesgos.
|
|
27
|
+
4. **Recomendar UNA** con razón concreta — no dejar la decisión "abierta"; el usuario espera juicio técnico.
|
|
28
|
+
5. **Esperar confirmación literal** — nunca asumir aprobación implícita ni empezar a codificar.
|
|
84
29
|
|
|
85
|
-
|
|
30
|
+
## Excepciones
|
|
86
31
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
mínima", "hagamos la completa").
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Excepciones — cuándo NO aplicar la regla
|
|
96
|
-
|
|
97
|
-
NO aplicar cuando:
|
|
98
|
-
|
|
99
|
-
1. **El usuario ya pidió explícitamente la opción**: "implementa la versión
|
|
100
|
-
mínima de X" o "porta solo el módulo Y" — la elección ya está hecha.
|
|
101
|
-
2. **El alcance es trivial** — menos de 5 archivos, una sola dependencia.
|
|
102
|
-
3. **El usuario pidió análisis y ya decidió**: si ya hubo una sesión previa con
|
|
103
|
-
la tabla comparativa y el usuario eligió, proceder sin re-presentar.
|
|
104
|
-
4. **Es un fix urgente de producción** — bug crítico, vulnerabilidad activa,
|
|
105
|
-
incidente. El análisis se reduce a confirmar la causa y aplicar el fix
|
|
106
|
-
específico.
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Cómo presentar la tabla y opciones
|
|
111
|
-
|
|
112
|
-
### Formato de tabla comparativa (mínimo)
|
|
113
|
-
|
|
114
|
-
```markdown
|
|
115
|
-
| Componente | Sistema externo | Tu sistema actual | Gap |
|
|
116
|
-
|---|---|---|---|
|
|
117
|
-
| Auth | OAuth2 + PKCE | JWT custom | parcial — falta PKCE |
|
|
118
|
-
| Storage | S3 + presigned | filesystem local | falta — pendiente migración |
|
|
119
|
-
| ... | ... | ... | ... |
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Formato de las tres opciones (mínimo)
|
|
123
|
-
|
|
124
|
-
```markdown
|
|
125
|
-
**Opción A — Mínima** (~3 turnos, ~15 archivos)
|
|
126
|
-
- Cerrar solo gaps críticos: PKCE, presigned URLs.
|
|
127
|
-
- No tocar lo que ya funciona.
|
|
128
|
-
- Riesgo: leve divergencia con sistema externo en convenciones menores.
|
|
129
|
-
|
|
130
|
-
**Opción B — Media** (~6 turnos, ~30 archivos)
|
|
131
|
-
- Cerrar gaps + alinear `auth/` con patrón OAuth2 completo.
|
|
132
|
-
- Mantener storage actual con migración planeada en fase futura.
|
|
133
|
-
- Riesgo: refactor en `auth/` puede romper integraciones existentes.
|
|
134
|
-
|
|
135
|
-
**Opción C — Completa** (~15 turnos, ~80 archivos)
|
|
136
|
-
- Porte literal del sistema externo completo.
|
|
137
|
-
- Reemplaza todo lo equivalente, no importa que ya funcione.
|
|
138
|
-
- Riesgo: regresiones en funcionalidad madura.
|
|
139
|
-
|
|
140
|
-
**Recomiendo la Opción A**: el sistema actual cubre el 80% del valor;
|
|
141
|
-
los gaps específicos resuelven el caso concreto sin riesgo de regresión.
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
32
|
+
NO aplica cuando: el usuario ya pidió la opción explícitamente ("implementa la
|
|
33
|
+
versión mínima"); el alcance es trivial (<5 archivos, una dependencia); ya se
|
|
34
|
+
decidió con tabla en sesión previa; o es fix urgente de producción (confirmar
|
|
35
|
+
causa y aplicar el fix específico).
|
|
145
36
|
|
|
146
37
|
## Anti-patrones
|
|
147
38
|
|
|
148
39
|
- Arrancar a escribir código tras "replícame X" sin tabla comparativa.
|
|
149
|
-
- Presentar
|
|
150
|
-
- Listar 5+ opciones cuando 3
|
|
151
|
-
- Estimar esfuerzo
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
- Cuando el usuario pide la opción mínima, expandir el alcance "porque
|
|
155
|
-
conviene" sin pedir confirmación.
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Origen de esta regla
|
|
160
|
-
|
|
161
|
-
Consolidada el 2026-05-04 desde feedback del usuario en sesión 2026-04-18 sobre
|
|
162
|
-
porte de Hermes Agent: tras pedir "replicar íntegramente Hermes Agent" (~960
|
|
163
|
-
archivos Python), aceptó la propuesta de cerrar solo 3 gaps específicos
|
|
164
|
-
(perfil de usuario, cron natural, auto-evolución). Lección: la auditoría previa
|
|
165
|
-
+ opciones explícitas evita re-implementar 80% de funcionalidad ya existente.
|
|
166
|
-
|
|
167
|
-
Reforzada en análisis de repos en `temp/` durante v1.1.0 de swl-ses (2026-04-23):
|
|
168
|
-
filtro de dominio descartó 97% del contenido de 5 repos antes de análisis
|
|
169
|
-
profundo, ahorrando horas de trabajo en arquitectura externa irrelevante.
|
|
40
|
+
- Presentar opciones sin recomendar — pasar la pelota al usuario.
|
|
41
|
+
- Listar 5+ opciones cuando 3 bastan (mínima / media / completa).
|
|
42
|
+
- Estimar esfuerzo vago ("bastante trabajo") sin cuantificar turnos/archivos/LOC.
|
|
43
|
+
- Omitir la auditoría de lo existente y proponer porte literal de todo.
|
|
44
|
+
- Expandir el alcance de la opción mínima elegida "porque conviene" sin pedir confirmación.
|
|
170
45
|
|
|
171
|
-
|
|
172
|
-
redundante tras esta regla; el contenido operativo vive aquí.
|
|
46
|
+
Detalle extendido (formatos de tabla comparativa y de las 3 opciones con ejemplos completos, casos de origen Hermes/v1.1.0, anti-patrones desarrollados): `Skill("meta-reglas-extendido")` → `recursos/analisis-previo-tareas-grandes.md`.
|