@saulwade/swl-ses 1.3.8 → 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.
Files changed (128) hide show
  1. package/CLAUDE.md +12 -4
  2. package/README.md +1 -1
  3. package/bin/swl-mcp-server.js +187 -187
  4. package/bin/swl-webhook-server.js +198 -0
  5. package/comandos/swl/.evolved.json +22 -22
  6. package/comandos/swl/adoptar-proyecto.md +21 -1
  7. package/comandos/swl/claudemd.md +14 -1
  8. package/comandos/swl/contribuir.md +233 -233
  9. package/comandos/swl/exportar-vault.md +108 -0
  10. package/comandos/swl/nuevo-proyecto.md +24 -2
  11. package/gateway/adapters/base.js +109 -0
  12. package/gateway/adapters/discord.js +167 -0
  13. package/gateway/adapters/email.js +221 -0
  14. package/gateway/adapters/slack.js +192 -0
  15. package/gateway/adapters/telegram.js +183 -0
  16. package/gateway/adapters/webhook.js +113 -0
  17. package/gateway/adapters/whatsapp.js +214 -0
  18. package/gateway/agent-executor.js +322 -0
  19. package/gateway/command-relay.js +271 -0
  20. package/gateway/cron/jobs.js +263 -0
  21. package/gateway/cron/scheduler.js +322 -0
  22. package/gateway/cron/store.js +335 -0
  23. package/gateway/index.js +320 -0
  24. package/gateway/lib/event-channel.js +191 -0
  25. package/gateway/session.js +131 -0
  26. package/gateway/webhook-server.js +324 -0
  27. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  28. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  29. package/habilidades/build-errors-nextjs/SKILL.md +55 -1
  30. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  31. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  32. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  33. package/habilidades/eval-framework/SKILL.md +212 -212
  34. package/habilidades/extractor-de-aprendizajes/SKILL.md +20 -10
  35. package/habilidades/harness-claude-code/SKILL.md +299 -299
  36. package/habilidades/infra-github-actions/SKILL.md +166 -166
  37. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  38. package/habilidades/manejo-errores/.evolved.json +8 -8
  39. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  40. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  41. package/habilidades/nextjs-testing/SKILL.md +89 -5
  42. package/habilidades/node-experto/SKILL.md +37 -1
  43. package/habilidades/patrones-python/SKILL.md +229 -229
  44. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  45. package/habilidades/planear-fase/SKILL.md +319 -319
  46. package/habilidades/react-experto/SKILL.md +45 -4
  47. package/habilidades/release-semver/.evolved.json +8 -8
  48. package/habilidades/tdd-workflow/SKILL.md +36 -4
  49. package/habilidades/testing-python/SKILL.md +340 -340
  50. package/hooks/claudemd-bloat-detector.js +161 -161
  51. package/hooks/inyeccion-contexto.js +8 -3
  52. package/hooks/lib/agent-routing.js +107 -107
  53. package/hooks/lib/auto-consolidator.js +335 -335
  54. package/hooks/lib/error-classifier.js +308 -308
  55. package/hooks/lib/merkle-audit.js +96 -96
  56. package/hooks/lib/provenance-tracker.js +191 -191
  57. package/hooks/lib/rate-limit-ip.js +177 -0
  58. package/hooks/lib/rate-limit-tracker.js +253 -253
  59. package/hooks/lib/resource-quota.js +122 -122
  60. package/hooks/lib/retry-jitter.js +165 -165
  61. package/hooks/lib/skill-auditor.js +588 -588
  62. package/hooks/lib/sync-status.js +228 -228
  63. package/hooks/lib/taint-tracker.js +107 -107
  64. package/hooks/lib/text-similarity.js +241 -241
  65. package/hooks/lib/toon-compressor.js +245 -245
  66. package/hooks/lib/webhook-dedup.js +184 -0
  67. package/hooks/lib/webhook-verify.js +123 -0
  68. package/hooks/proteccion-rutas.js +120 -15
  69. package/hooks/registro-turnos.js +209 -209
  70. package/hooks/sugerir-regenerar-inventario.js +170 -170
  71. package/hooks/validar-formato-post-subagente.js +140 -140
  72. package/hooks/validar-memoria-hook.js +218 -218
  73. package/instintos/prompt-appendices.yaml +57 -57
  74. package/manifiestos/agent-output-schemas.json +57 -57
  75. package/manifiestos/modulos.json +1 -0
  76. package/manifiestos/skills-lock.json +34 -34
  77. package/package.json +5 -3
  78. package/plantillas/auditor-veto-template.md +105 -105
  79. package/plantillas/github-workflows/README.md +47 -47
  80. package/plantillas/github-workflows/release-please.yml +44 -44
  81. package/plantillas/github-workflows/swl-ci.yml +107 -107
  82. package/plantillas/github-workflows/swl-security.yml +51 -51
  83. package/plugin.json +1 -1
  84. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  85. package/reglas/arreglar-al-detectar.md +147 -147
  86. package/reglas/fragmentos-compartidos.md +152 -152
  87. package/reglas/harness-claude-code.md +213 -213
  88. package/reglas/usar-context7.md +226 -226
  89. package/reglas/usar-sistema-swl.md +251 -0
  90. package/schemas/diary-entry.schema.json +80 -80
  91. package/scripts/benchmark-memoria.js +167 -167
  92. package/scripts/comandos/skills.js +251 -2
  93. package/scripts/configurar-branch-protection.js +418 -418
  94. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  95. package/scripts/field-report.js +199 -199
  96. package/scripts/generar-checklists-consolidados.js +273 -273
  97. package/scripts/generar-inventario.js +420 -420
  98. package/scripts/generar-matriz-lenguajes.js +271 -271
  99. package/scripts/lib/artefactos-python.js +43 -43
  100. package/scripts/lib/benchmark-metrics.js +160 -160
  101. package/scripts/lib/budget-enforcer.js +252 -252
  102. package/scripts/lib/configurar-ci.js +380 -380
  103. package/scripts/lib/contadores-inventario.js +217 -217
  104. package/scripts/lib/detectar-stack-detallado.js +307 -307
  105. package/scripts/lib/diary-entry.js +234 -234
  106. package/scripts/lib/eval-metrics-store.js +218 -218
  107. package/scripts/lib/eval-quality.js +171 -171
  108. package/scripts/lib/eval-schemas.js +144 -144
  109. package/scripts/lib/eval-self-correct.js +106 -106
  110. package/scripts/lib/eval-validator.js +185 -185
  111. package/scripts/lib/jaccard-similarity.js +98 -98
  112. package/scripts/lib/longmemeval-runner.js +125 -125
  113. package/scripts/lib/npm-version.js +261 -261
  114. package/scripts/lib/paquetes-conocidos.js +50 -50
  115. package/scripts/lib/prompt-builder.js +264 -264
  116. package/scripts/lib/rrf-fusion.js +175 -175
  117. package/scripts/lib/scoring-instintos.js +277 -277
  118. package/scripts/lib/semantic-search.js +252 -252
  119. package/scripts/limpiar-artefactos-python.js +131 -131
  120. package/scripts/mcp-server/README.md +128 -128
  121. package/scripts/mcp-server/handlers.js +206 -206
  122. package/scripts/migrar-csv-a-array.js +168 -168
  123. package/scripts/migrar-fase-dominio.js +201 -201
  124. package/scripts/publicar.js +511 -511
  125. package/scripts/run-eval.js +141 -141
  126. package/scripts/validar-manifest.js +195 -195
  127. package/scripts/validar-userland-vacio.js +110 -110
  128. package/scripts/verificar-release.js +110 -0
@@ -1,57 +1,57 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "descripcion": "Schemas de output esperado por agente — formato compacto declarado en reglas/brevedad-output.md. El hook validar-formato-post-subagente.js usa estos patrones para detectar cuándo un agente devuelve output fuera de contrato.",
4
- "version": "1.0.0",
5
- "schemas": {
6
- "revisor-codigo-swl": {
7
- "descripcion": "Revisión de calidad — formato compacto",
8
- "patronesRequeridos": [
9
- "(?im)VEREDICTO\\s*:\\s*(APROBADO|APROBADO_CON_OBSERVACIONES|RECHAZADO|REQUIERE_CORRECCIONES|CUMPLE|PARCIAL|NO\\s+CUMPLE)",
10
- "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
11
- "(?im)MAYORES\\s*:\\s*\\d+",
12
- "(?im)MENORES\\s*:\\s*\\d+",
13
- "(?im)HALLAZGOS\\s*:"
14
- ]
15
- },
16
- "revisor-seguridad-swl": {
17
- "descripcion": "Revisión de seguridad OWASP — formato compacto",
18
- "patronesRequeridos": [
19
- "(?im)VEREDICTO\\s*:\\s*(APROBADO|APROBADO_CON_OBSERVACIONES|RECHAZADO|REQUIERE_CORRECCIONES)",
20
- "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
21
- "(?im)MAYORES\\s*:\\s*\\d+",
22
- "(?im)HALLAZGOS\\s*:"
23
- ]
24
- },
25
- "revisor-typescript-swl": {
26
- "descripcion": "Revisión TypeScript — formato compacto",
27
- "patronesRequeridos": [
28
- "(?im)VEREDICTO\\s*:\\s*\\w+",
29
- "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
30
- "(?im)HALLAZGOS\\s*:"
31
- ]
32
- },
33
- "revisor-react-swl": {
34
- "descripcion": "Revisión React — formato compacto",
35
- "patronesRequeridos": [
36
- "(?im)VEREDICTO\\s*:\\s*\\w+",
37
- "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
38
- "(?im)HALLAZGOS\\s*:"
39
- ]
40
- },
41
- "revisor-angular-swl": {
42
- "descripcion": "Revisión Angular — formato compacto",
43
- "patronesRequeridos": [
44
- "(?im)VEREDICTO\\s*:\\s*\\w+",
45
- "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
46
- "(?im)HALLAZGOS\\s*:"
47
- ]
48
- },
49
- "tdd-qa-swl": {
50
- "descripcion": "QA con TDD — reporte de implementación",
51
- "patronesRequeridos": [
52
- "(?im)ESTADO\\s*:\\s*(COMPLETADO|PARCIAL|BLOQUEADO)",
53
- "(?im)(SLICES|TESTS)\\s*:"
54
- ]
55
- }
56
- }
57
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "descripcion": "Schemas de output esperado por agente — formato compacto declarado en reglas/brevedad-output.md. El hook validar-formato-post-subagente.js usa estos patrones para detectar cuándo un agente devuelve output fuera de contrato.",
4
+ "version": "1.0.0",
5
+ "schemas": {
6
+ "revisor-codigo-swl": {
7
+ "descripcion": "Revisión de calidad — formato compacto",
8
+ "patronesRequeridos": [
9
+ "(?im)VEREDICTO\\s*:\\s*(APROBADO|APROBADO_CON_OBSERVACIONES|RECHAZADO|REQUIERE_CORRECCIONES|CUMPLE|PARCIAL|NO\\s+CUMPLE)",
10
+ "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
11
+ "(?im)MAYORES\\s*:\\s*\\d+",
12
+ "(?im)MENORES\\s*:\\s*\\d+",
13
+ "(?im)HALLAZGOS\\s*:"
14
+ ]
15
+ },
16
+ "revisor-seguridad-swl": {
17
+ "descripcion": "Revisión de seguridad OWASP — formato compacto",
18
+ "patronesRequeridos": [
19
+ "(?im)VEREDICTO\\s*:\\s*(APROBADO|APROBADO_CON_OBSERVACIONES|RECHAZADO|REQUIERE_CORRECCIONES)",
20
+ "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
21
+ "(?im)MAYORES\\s*:\\s*\\d+",
22
+ "(?im)HALLAZGOS\\s*:"
23
+ ]
24
+ },
25
+ "revisor-typescript-swl": {
26
+ "descripcion": "Revisión TypeScript — formato compacto",
27
+ "patronesRequeridos": [
28
+ "(?im)VEREDICTO\\s*:\\s*\\w+",
29
+ "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
30
+ "(?im)HALLAZGOS\\s*:"
31
+ ]
32
+ },
33
+ "revisor-react-swl": {
34
+ "descripcion": "Revisión React — formato compacto",
35
+ "patronesRequeridos": [
36
+ "(?im)VEREDICTO\\s*:\\s*\\w+",
37
+ "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
38
+ "(?im)HALLAZGOS\\s*:"
39
+ ]
40
+ },
41
+ "revisor-angular-swl": {
42
+ "descripcion": "Revisión Angular — formato compacto",
43
+ "patronesRequeridos": [
44
+ "(?im)VEREDICTO\\s*:\\s*\\w+",
45
+ "(?im)CR[IÍ]TICOS\\s*:\\s*\\d+",
46
+ "(?im)HALLAZGOS\\s*:"
47
+ ]
48
+ },
49
+ "tdd-qa-swl": {
50
+ "descripcion": "QA con TDD — reporte de implementación",
51
+ "patronesRequeridos": [
52
+ "(?im)ESTADO\\s*:\\s*(COMPLETADO|PARCIAL|BLOQUEADO)",
53
+ "(?im)(SLICES|TESTS)\\s*:"
54
+ ]
55
+ }
56
+ }
57
+ }
@@ -842,6 +842,7 @@
842
842
  "reglas/seguridad-agentes.md",
843
843
  "reglas/memoria-consolidada.md",
844
844
  "reglas/usar-context7.md",
845
+ "reglas/usar-sistema-swl.md",
845
846
  "reglas/arreglar-al-detectar.md",
846
847
  "reglas/analisis-previo-tareas-grandes.md"
847
848
  ],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "lockfileVersion": 1,
3
- "generatedAt": "2026-05-11T22:55:18.517Z",
3
+ "generatedAt": "2026-05-14T02:32:41.863Z",
4
4
  "skillsCount": 155,
5
- "lockHash": "sha256:b4860049091d23b9e822f9b2930f5d1bfb19cd9299fa074e4bb71852518769cc",
5
+ "lockHash": "sha256:da4b9d4896cb83fc4bfd630384e3a16cd50722bf2afb54df09869d7ac02ffabc",
6
6
  "skills": [
7
7
  {
8
8
  "nombre": "accesibilidad-a11y",
@@ -105,15 +105,15 @@
105
105
  {
106
106
  "nombre": "backend-production-resilience",
107
107
  "path": "habilidades/backend-production-resilience/SKILL.md",
108
- "hash": "sha256:965f048f705172d01c38829662a74653f649f753e0315854c3f874fb2af54456",
109
- "bytes": 13908,
108
+ "hash": "sha256:82e47b4e1d4296fd10f0d0610963fdc9f2b7b931dfc0fc1d8af73730657b7fb2",
109
+ "bytes": 13620,
110
110
  "version": "\"1.0.0\""
111
111
  },
112
112
  {
113
113
  "nombre": "benchmark-memoria",
114
114
  "path": "habilidades/benchmark-memoria/SKILL.md",
115
- "hash": "sha256:73f9701cc0df2caa0e24193173cac241cbafbd9a1ce8b097f2fb95a1df73a6aa",
116
- "bytes": 7670,
115
+ "hash": "sha256:9f2c36b648fb667d6edce9135e04226d2f932f6b23eef6b27625ef72eee9c77e",
116
+ "bytes": 7484,
117
117
  "version": "\"1.0.0\""
118
118
  },
119
119
  {
@@ -161,9 +161,9 @@
161
161
  {
162
162
  "nombre": "build-errors-nextjs",
163
163
  "path": "habilidades/build-errors-nextjs/SKILL.md",
164
- "hash": "sha256:1b509220c9004ee2ce4fea30dd8695e876146860dfa8c5d6f6d1f953aeeff474",
165
- "bytes": 12029,
166
- "version": "\"1.0.0\""
164
+ "hash": "sha256:e7f41d7825608884bc64d993b9b1fd21c509a2478bb3606a4f038929fcb9b2a4",
165
+ "bytes": 14962,
166
+ "version": "\"1.1.0\""
167
167
  },
168
168
  {
169
169
  "nombre": "build-errors-php",
@@ -378,8 +378,8 @@
378
378
  {
379
379
  "nombre": "doubt-driven-review",
380
380
  "path": "habilidades/doubt-driven-review/SKILL.md",
381
- "hash": "sha256:f47f47edc6030bdea685f3b9d8e12ec5911302b663956d9b98b537e1b78e0f27",
382
- "bytes": 7791,
381
+ "hash": "sha256:5677f6c92a0fc183f9bbe06171cca14e3ad85695dba055acd1de56d81bff182b",
382
+ "bytes": 7620,
383
383
  "version": null
384
384
  },
385
385
  {
@@ -413,8 +413,8 @@
413
413
  {
414
414
  "nombre": "eval-framework",
415
415
  "path": "habilidades/eval-framework/SKILL.md",
416
- "hash": "sha256:812a1560e3209c4e2ab10b2385ac9513e63b22d1801bc4ada34bf63d4f937432",
417
- "bytes": 7990,
416
+ "hash": "sha256:0b00cfaa631e0bd6af0bf5d9a01aa54fcc7d0656b8c9760c97d56f8493fdfb5d",
417
+ "bytes": 7778,
418
418
  "version": "\"1.0.0\""
419
419
  },
420
420
  {
@@ -441,9 +441,9 @@
441
441
  {
442
442
  "nombre": "extractor-de-aprendizajes",
443
443
  "path": "habilidades/extractor-de-aprendizajes/SKILL.md",
444
- "hash": "sha256:4e7ec2961f7c4c6bc52759516a1d7f9f9c839883c09b95951f0c68b4d803ad3d",
445
- "bytes": 20527,
446
- "version": "\"1.0.4\""
444
+ "hash": "sha256:db8531b14d1153aa97ec8181536e0a1f625c1c45a65298a9aead81a8e2fb1e80",
445
+ "bytes": 22166,
446
+ "version": "\"1.0.5\""
447
447
  },
448
448
  {
449
449
  "nombre": "fastapi-experto",
@@ -525,8 +525,8 @@
525
525
  {
526
526
  "nombre": "harness-claude-code",
527
527
  "path": "habilidades/harness-claude-code/SKILL.md",
528
- "hash": "sha256:609a77cb5ae5c87d539cef20353a997dc8a0888490630aabaec337ab84d518a0",
529
- "bytes": 12986,
528
+ "hash": "sha256:cc548661287c0b321994428e59ae685c9e0c53e197d1b4ffae7183f158878db3",
529
+ "bytes": 12687,
530
530
  "version": "\"1.0.0\""
531
531
  },
532
532
  {
@@ -539,8 +539,8 @@
539
539
  {
540
540
  "nombre": "infra-github-actions",
541
541
  "path": "habilidades/infra-github-actions/SKILL.md",
542
- "hash": "sha256:16dfeb02c736c03dfaff2350d105606974a3f4e60dfbc333a21fec8a72de391a",
543
- "bytes": 7355,
542
+ "hash": "sha256:50b85b21dd0e5f5fa8f211f6d0f31f4649bbe20c9480e0017184f1dd0b7fc8dc",
543
+ "bytes": 7189,
544
544
  "version": null
545
545
  },
546
546
  {
@@ -609,8 +609,8 @@
609
609
  {
610
610
  "nombre": "legacy-code-rescue",
611
611
  "path": "habilidades/legacy-code-rescue/SKILL.md",
612
- "hash": "sha256:8faac07a7308f86493a7fc14ecc35a40ac74b91527a55449ef05e1837c9102c5",
613
- "bytes": 13185,
612
+ "hash": "sha256:8c3834a022c7ef47f1da1aee5dabb935285c05f400196eaa375e6d824e222378",
613
+ "bytes": 12918,
614
614
  "version": "\"1.0.0\""
615
615
  },
616
616
  {
@@ -707,9 +707,9 @@
707
707
  {
708
708
  "nombre": "nextjs-testing",
709
709
  "path": "habilidades/nextjs-testing/SKILL.md",
710
- "hash": "sha256:66742e5c32822ffd1b79ab44922fed64367d28c2510f4c55efd4cd7ad5727a6d",
711
- "bytes": 15435,
712
- "version": "\"1.0.1\""
710
+ "hash": "sha256:8df768e4971018902c8ed088901e8ffc860d45f1b28c8e78edaed5f93d9fffcd",
711
+ "bytes": 19451,
712
+ "version": "\"1.1.0\""
713
713
  },
714
714
  {
715
715
  "nombre": "node-experto",
@@ -749,8 +749,8 @@
749
749
  {
750
750
  "nombre": "patrones-python",
751
751
  "path": "habilidades/patrones-python/SKILL.md",
752
- "hash": "sha256:c762a681d0192f71a1e0c4c5d338aa31e468a7ddccb71a76e5bf813d815d72e5",
753
- "bytes": 10654,
752
+ "hash": "sha256:cd6dc3154b9392f1be705cfe93b9b66366484f36647770cd3dc09abbd7285fa2",
753
+ "bytes": 10425,
754
754
  "version": "\"1.3.1\""
755
755
  },
756
756
  {
@@ -791,8 +791,8 @@
791
791
  {
792
792
  "nombre": "planear-fase",
793
793
  "path": "habilidades/planear-fase/SKILL.md",
794
- "hash": "sha256:ab580a293a0c228c6a30cc18e60c6c905eda589853c72ef385cedff3330eb9a5",
795
- "bytes": 14691,
794
+ "hash": "sha256:199b9abb865739d17b0654a3a67d116d95a2133140ffde92bda89d3ed9f41b98",
795
+ "bytes": 14372,
796
796
  "version": "\"1.2.0\""
797
797
  },
798
798
  {
@@ -847,9 +847,9 @@
847
847
  {
848
848
  "nombre": "react-experto",
849
849
  "path": "habilidades/react-experto/SKILL.md",
850
- "hash": "sha256:f1f0d478de5c16b1b0fb787caf45ca7151a0eab3dcf71352fdc3f871b1d1948b",
851
- "bytes": 11776,
852
- "version": "\"1.1.1\""
850
+ "hash": "sha256:cce96f67db8370d78d92d94ce252a48182f664438c9c2f694473f74c2d590695",
851
+ "bytes": 13672,
852
+ "version": "\"1.2.0\""
853
853
  },
854
854
  {
855
855
  "nombre": "react-optimizacion",
@@ -1001,8 +1001,8 @@
1001
1001
  {
1002
1002
  "nombre": "testing-python",
1003
1003
  "path": "habilidades/testing-python/SKILL.md",
1004
- "hash": "sha256:edc86364dd5289da75b1a6276fa2e9743e85c734a67621443f67871ce43ee24b",
1005
- "bytes": 17324,
1004
+ "hash": "sha256:701ec10d954d9e2d08820aa46d8f72ff7eba5a0ff96695d10bdce5c7d15b233d",
1005
+ "bytes": 16984,
1006
1006
  "version": "\"1.2.1\""
1007
1007
  },
1008
1008
  {
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@saulwade/swl-ses",
3
- "version": "1.3.8",
3
+ "version": "1.4.0",
4
4
  "description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot con 59 agentes, 155 habilidades, 43 comandos, 64 reglas y 41 hooks. Soporta 11 lenguajes y 5 runtimes: Claude Code, Copilot, OpenCode, Codex y Gemini CLI. 100% en espanol (Mexico). Incluye gateway bidireccional con relay Telegram a Claude Code.",
5
5
  "bin": {
6
6
  "swl-ses": "bin/swl-ses.js",
7
7
  "swl-telegram-bot": "bin/swl-telegram-bot.js",
8
- "swl-mcp-server": "bin/swl-mcp-server.js"
8
+ "swl-mcp-server": "bin/swl-mcp-server.js",
9
+ "swl-webhook-server": "bin/swl-webhook-server.js"
9
10
  },
10
11
  "files": [
11
12
  "bin",
@@ -16,6 +17,7 @@
16
17
  "comandos",
17
18
  "reglas",
18
19
  "hooks",
20
+ "gateway",
19
21
  "plantillas",
20
22
  "contextos",
21
23
  "instintos",
@@ -26,7 +28,7 @@
26
28
  ],
27
29
  "scripts": {
28
30
  "postinstall": "echo '\n swl-software-engineering-system instalado.\n Ejecuta: npx swl-ses init\n'",
29
- "test": "node --test tests/lib/*.test.js tests/scripts/*.test.js tests/scripts/lib/*.test.js tests/hooks/*.test.js",
31
+ "test": "node --test tests/lib/*.test.js tests/scripts/*.test.js tests/scripts/lib/*.test.js tests/hooks/*.test.js tests/gateway/*.test.js tests/bin/*.test.js",
30
32
  "test:validate": "node scripts/validar.js",
31
33
  "test:manifest": "node scripts/validar-manifest.js",
32
34
  "test:smoke": "node scripts/smoke-test.js",
@@ -1,105 +1,105 @@
1
- # Plantilla: Auditor con Veto Items + Cap Enforcement
2
-
3
- Plantilla reusable para revisores SWL que aplican el patrón "veto items + cap
4
- enforcement". Ver `reglas/gobernanza.md` sección "Veto items y cap enforcement".
5
-
6
- ---
7
-
8
- ## Cuándo usar esta plantilla
9
-
10
- Cuando crees o actualices un revisor (`revisor-*-swl.md`) que:
11
-
12
- - Audita cumplimiento de reglas globales del sistema (`reglas/*.md`).
13
- - Necesita comunicar al lector cuáles violaciones son **no negociables**.
14
- - Debe evitar que un score promedio "redondeado" oculte un problema crítico.
15
-
16
- ---
17
-
18
- ## Estructura a copiar (insertar antes de "Formato de reporte obligatorio")
19
-
20
- ```markdown
21
- ## Veto items — cap enforcement a [LÍMITE]
22
-
23
- Ciertos hallazgos son **no negociables**. Si encuentras CUALQUIERA de los
24
- siguientes, el `score` del reporte queda **CAP a [LÍMITE] como máximo absoluto**,
25
- independientemente de qué tan limpio esté el resto del código. Patrón adaptado
26
- del modelo de auditor con veto items (ver `reglas/gobernanza.md`).
27
-
28
- **Lista de veto items**:
29
-
30
- 1. **[Nombre del veto]**: [descripción específica + regla que viola].
31
- 2. ...
32
- N. ...
33
-
34
- **Reglas del cap**:
35
-
36
- - Encontrar 1 veto item → `score ≤ [LÍMITE]`. Veredicto automático:
37
- `RECHAZADO` o `APROBADO CON CORRECCIONES` (nunca `APROBADO` limpio).
38
- - Encontrar 2+ veto items → `score ≤ [LÍMITE_ESTRICTO]`. Bloqueo absoluto.
39
- - El veto NO se puede negociar bajando severidad.
40
- - El cap se levanta SOLO cuando se demuestra remediación (commit + test) y el
41
- revisor re-ejecuta la auditoría.
42
-
43
- Reportar al inicio del reporte con bloque dedicado:
44
-
45
- \`\`\`
46
- ### VETO ITEMS DETECTADOS
47
- - [VI-1] <descripción>: \`archivo:linea\` — <evidencia>
48
- - [VI-N] <descripción>: \`archivo:linea\` — <evidencia>
49
- → score CAP a [VALOR] ([N] veto items). Veredicto: [VEREDICTO].
50
- \`\`\`
51
-
52
- Si no se detecta ninguno: \`### VETO ITEMS DETECTADOS\n- Ninguno\`.
53
- ```
54
-
55
- ---
56
-
57
- ## Reglas para definir veto items
58
-
59
- Antes de declarar un veto item, verifica:
60
-
61
- 1. **¿Existe una regla global que lo respalde?** Si no, no es veto. Crear o
62
- actualizar la regla primero (`reglas/<dominio>.md`).
63
- 2. **¿Es objetivamente detectable?** Un veto debe ser binario (presente o
64
- ausente). Criterios subjetivos como "código feo" no califican.
65
- 3. **¿Su presencia justifica bloquear el merge?** Si el equipo puede aprobar
66
- el código sin corregirlo, no es veto — es hallazgo regular.
67
- 4. **¿Es proporcional al dominio del revisor?** Un revisor de seguridad no
68
- declara vetos de estilo. Cada revisor solo veta lo de su dominio.
69
- 5. **¿Está la lista cerrada?** Una lista de 50 veto items es señal de mala
70
- curación. Lo razonable: 8-15 items por revisor.
71
-
72
- ---
73
-
74
- ## Escalas recomendadas
75
-
76
- | Tipo de reporte | Cap con 1 veto | Cap con 2+ vetos |
77
- |-----------------|---------------|-----------------|
78
- | Score 0-100 (CVSSv3-like) | 60/100 | 30/100 |
79
- | Score 0-10 promedio por dimensión | 6.0/10 | 3.0/10 |
80
- | Score 0-1 (probabilístico) | 0.6 | 0.3 |
81
-
82
- ---
83
-
84
- ## Ejemplos en agentes existentes
85
-
86
- - `agentes/revisor-seguridad-swl.md` — 10 veto items de OWASP Top 10 + secrets + CVEs
87
- - `agentes/revisor-codigo-swl.md` — 10 veto items mapeando a `reglas/estilo-codigo.md`
88
- y `reglas/arquitectura.md`
89
-
90
- ---
91
-
92
- ## Cómo el ejecutor responde a un cap
93
-
94
- Si recibes un reporte con veto items detectados:
95
-
96
- 1. **NO negocies la severidad**. El cap está justificado por regla global.
97
- 2. **Aplica las correcciones específicas** que el revisor indica con
98
- archivo:línea.
99
- 3. **Agrega un test que pruebe la corrección** (regression test). Sin test,
100
- el veto puede regresar.
101
- 4. **Solicita re-revisión** al mismo revisor. Si el veto desapareció, el cap
102
- se levanta y el score se recalcula sin penalización.
103
- 5. **Si NO puedes corregir** (limitación externa, blocker técnico): documenta
104
- en `.planning/AUDITORIA.md` y escala al humano. NUNCA marques el trabajo
105
- como completado con vetos abiertos.
1
+ # Plantilla: Auditor con Veto Items + Cap Enforcement
2
+
3
+ Plantilla reusable para revisores SWL que aplican el patrón "veto items + cap
4
+ enforcement". Ver `reglas/gobernanza.md` sección "Veto items y cap enforcement".
5
+
6
+ ---
7
+
8
+ ## Cuándo usar esta plantilla
9
+
10
+ Cuando crees o actualices un revisor (`revisor-*-swl.md`) que:
11
+
12
+ - Audita cumplimiento de reglas globales del sistema (`reglas/*.md`).
13
+ - Necesita comunicar al lector cuáles violaciones son **no negociables**.
14
+ - Debe evitar que un score promedio "redondeado" oculte un problema crítico.
15
+
16
+ ---
17
+
18
+ ## Estructura a copiar (insertar antes de "Formato de reporte obligatorio")
19
+
20
+ ```markdown
21
+ ## Veto items — cap enforcement a [LÍMITE]
22
+
23
+ Ciertos hallazgos son **no negociables**. Si encuentras CUALQUIERA de los
24
+ siguientes, el `score` del reporte queda **CAP a [LÍMITE] como máximo absoluto**,
25
+ independientemente de qué tan limpio esté el resto del código. Patrón adaptado
26
+ del modelo de auditor con veto items (ver `reglas/gobernanza.md`).
27
+
28
+ **Lista de veto items**:
29
+
30
+ 1. **[Nombre del veto]**: [descripción específica + regla que viola].
31
+ 2. ...
32
+ N. ...
33
+
34
+ **Reglas del cap**:
35
+
36
+ - Encontrar 1 veto item → `score ≤ [LÍMITE]`. Veredicto automático:
37
+ `RECHAZADO` o `APROBADO CON CORRECCIONES` (nunca `APROBADO` limpio).
38
+ - Encontrar 2+ veto items → `score ≤ [LÍMITE_ESTRICTO]`. Bloqueo absoluto.
39
+ - El veto NO se puede negociar bajando severidad.
40
+ - El cap se levanta SOLO cuando se demuestra remediación (commit + test) y el
41
+ revisor re-ejecuta la auditoría.
42
+
43
+ Reportar al inicio del reporte con bloque dedicado:
44
+
45
+ \`\`\`
46
+ ### VETO ITEMS DETECTADOS
47
+ - [VI-1] <descripción>: \`archivo:linea\` — <evidencia>
48
+ - [VI-N] <descripción>: \`archivo:linea\` — <evidencia>
49
+ → score CAP a [VALOR] ([N] veto items). Veredicto: [VEREDICTO].
50
+ \`\`\`
51
+
52
+ Si no se detecta ninguno: \`### VETO ITEMS DETECTADOS\n- Ninguno\`.
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Reglas para definir veto items
58
+
59
+ Antes de declarar un veto item, verifica:
60
+
61
+ 1. **¿Existe una regla global que lo respalde?** Si no, no es veto. Crear o
62
+ actualizar la regla primero (`reglas/<dominio>.md`).
63
+ 2. **¿Es objetivamente detectable?** Un veto debe ser binario (presente o
64
+ ausente). Criterios subjetivos como "código feo" no califican.
65
+ 3. **¿Su presencia justifica bloquear el merge?** Si el equipo puede aprobar
66
+ el código sin corregirlo, no es veto — es hallazgo regular.
67
+ 4. **¿Es proporcional al dominio del revisor?** Un revisor de seguridad no
68
+ declara vetos de estilo. Cada revisor solo veta lo de su dominio.
69
+ 5. **¿Está la lista cerrada?** Una lista de 50 veto items es señal de mala
70
+ curación. Lo razonable: 8-15 items por revisor.
71
+
72
+ ---
73
+
74
+ ## Escalas recomendadas
75
+
76
+ | Tipo de reporte | Cap con 1 veto | Cap con 2+ vetos |
77
+ |-----------------|---------------|-----------------|
78
+ | Score 0-100 (CVSSv3-like) | 60/100 | 30/100 |
79
+ | Score 0-10 promedio por dimensión | 6.0/10 | 3.0/10 |
80
+ | Score 0-1 (probabilístico) | 0.6 | 0.3 |
81
+
82
+ ---
83
+
84
+ ## Ejemplos en agentes existentes
85
+
86
+ - `agentes/revisor-seguridad-swl.md` — 10 veto items de OWASP Top 10 + secrets + CVEs
87
+ - `agentes/revisor-codigo-swl.md` — 10 veto items mapeando a `reglas/estilo-codigo.md`
88
+ y `reglas/arquitectura.md`
89
+
90
+ ---
91
+
92
+ ## Cómo el ejecutor responde a un cap
93
+
94
+ Si recibes un reporte con veto items detectados:
95
+
96
+ 1. **NO negocies la severidad**. El cap está justificado por regla global.
97
+ 2. **Aplica las correcciones específicas** que el revisor indica con
98
+ archivo:línea.
99
+ 3. **Agrega un test que pruebe la corrección** (regression test). Sin test,
100
+ el veto puede regresar.
101
+ 4. **Solicita re-revisión** al mismo revisor. Si el veto desapareció, el cap
102
+ se levanta y el score se recalcula sin penalización.
103
+ 5. **Si NO puedes corregir** (limitación externa, blocker técnico): documenta
104
+ en `.planning/AUDITORIA.md` y escala al humano. NUNCA marques el trabajo
105
+ como completado con vetos abiertos.
@@ -1,47 +1,47 @@
1
- # Plantillas de GitHub Actions — swl-ses
2
-
3
- Tres workflows listos para copiar a `.github/workflows/` de cualquier proyecto.
4
-
5
- ## Cómo instalar
6
-
7
- La forma recomendada es via el comando interactivo:
8
-
9
- ```bash
10
- /swl:configurar-ci init
11
- ```
12
-
13
- O manualmente: copiar los archivos de esta carpeta a `.github/workflows/` de tu proyecto.
14
-
15
- ## Workflows disponibles
16
-
17
- ### `swl-security.yml` — Revisión de seguridad con Claude
18
-
19
- Corre en cada PR a `main`. Analiza el diff con `anthropics/claude-code-security-review`
20
- y comenta hallazgos directamente en el PR.
21
-
22
- **Requiere**: secret `CLAUDE_API_KEY` en GitHub Settings → Secrets and variables → Actions.
23
-
24
- ### `swl-ci.yml` — CI estándar
25
-
26
- Corre en push y PRs a `main`. Detecta Node.js automáticamente. Incluye secciones
27
- comentadas para Python, Rust y Go — activar las que correspondan al proyecto.
28
-
29
- - Matrix Node 22 + 24
30
- - `npm ci` → lint → type-check (si hay tsconfig.json) → tests
31
- - `concurrency: cancel-in-progress: true`
32
-
33
- **No requiere** secrets adicionales.
34
-
35
- ### `release-please.yml` — Releases automáticos
36
-
37
- Tras merge a `main`, crea un Release PR con el bump de versión y CHANGELOG
38
- generados desde conventional commits. Al mergear el Release PR, crea el tag
39
- y el GitHub Release.
40
-
41
- **No requiere** secrets adicionales (usa `GITHUB_TOKEN`). Requiere conventional commits.
42
-
43
- Ver `docs/RELEASE-PLEASE-MIGRATION.md` para comparativa con el flujo manual actual.
44
-
45
- ## Skill de referencia
46
-
47
- Para guía completa de setup, troubleshooting y gotchas: `Skill("infra-github-actions")`.
1
+ # Plantillas de GitHub Actions — swl-ses
2
+
3
+ Tres workflows listos para copiar a `.github/workflows/` de cualquier proyecto.
4
+
5
+ ## Cómo instalar
6
+
7
+ La forma recomendada es via el comando interactivo:
8
+
9
+ ```bash
10
+ /swl:configurar-ci init
11
+ ```
12
+
13
+ O manualmente: copiar los archivos de esta carpeta a `.github/workflows/` de tu proyecto.
14
+
15
+ ## Workflows disponibles
16
+
17
+ ### `swl-security.yml` — Revisión de seguridad con Claude
18
+
19
+ Corre en cada PR a `main`. Analiza el diff con `anthropics/claude-code-security-review`
20
+ y comenta hallazgos directamente en el PR.
21
+
22
+ **Requiere**: secret `CLAUDE_API_KEY` en GitHub Settings → Secrets and variables → Actions.
23
+
24
+ ### `swl-ci.yml` — CI estándar
25
+
26
+ Corre en push y PRs a `main`. Detecta Node.js automáticamente. Incluye secciones
27
+ comentadas para Python, Rust y Go — activar las que correspondan al proyecto.
28
+
29
+ - Matrix Node 22 + 24
30
+ - `npm ci` → lint → type-check (si hay tsconfig.json) → tests
31
+ - `concurrency: cancel-in-progress: true`
32
+
33
+ **No requiere** secrets adicionales.
34
+
35
+ ### `release-please.yml` — Releases automáticos
36
+
37
+ Tras merge a `main`, crea un Release PR con el bump de versión y CHANGELOG
38
+ generados desde conventional commits. Al mergear el Release PR, crea el tag
39
+ y el GitHub Release.
40
+
41
+ **No requiere** secrets adicionales (usa `GITHUB_TOKEN`). Requiere conventional commits.
42
+
43
+ Ver `docs/RELEASE-PLEASE-MIGRATION.md` para comparativa con el flujo manual actual.
44
+
45
+ ## Skill de referencia
46
+
47
+ Para guía completa de setup, troubleshooting y gotchas: `Skill("infra-github-actions")`.