@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.
- package/CLAUDE.md +12 -4
- package/README.md +1 -1
- package/bin/swl-mcp-server.js +187 -187
- package/bin/swl-webhook-server.js +198 -0
- package/comandos/swl/.evolved.json +22 -22
- package/comandos/swl/adoptar-proyecto.md +21 -1
- package/comandos/swl/claudemd.md +14 -1
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/exportar-vault.md +108 -0
- package/comandos/swl/nuevo-proyecto.md +24 -2
- package/gateway/adapters/base.js +109 -0
- package/gateway/adapters/discord.js +167 -0
- package/gateway/adapters/email.js +221 -0
- package/gateway/adapters/slack.js +192 -0
- package/gateway/adapters/telegram.js +183 -0
- package/gateway/adapters/webhook.js +113 -0
- package/gateway/adapters/whatsapp.js +214 -0
- package/gateway/agent-executor.js +322 -0
- package/gateway/command-relay.js +271 -0
- package/gateway/cron/jobs.js +263 -0
- package/gateway/cron/scheduler.js +322 -0
- package/gateway/cron/store.js +335 -0
- package/gateway/index.js +320 -0
- package/gateway/lib/event-channel.js +191 -0
- package/gateway/session.js +131 -0
- package/gateway/webhook-server.js +324 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/build-errors-nextjs/SKILL.md +55 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +171 -171
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/extractor-de-aprendizajes/SKILL.md +20 -10
- package/habilidades/harness-claude-code/SKILL.md +299 -299
- package/habilidades/infra-github-actions/SKILL.md +166 -166
- package/habilidades/legacy-code-rescue/SKILL.md +267 -267
- package/habilidades/manejo-errores/.evolved.json +8 -8
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nextjs-testing/SKILL.md +89 -5
- package/habilidades/node-experto/SKILL.md +37 -1
- package/habilidades/patrones-python/SKILL.md +229 -229
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/planear-fase/SKILL.md +319 -319
- package/habilidades/react-experto/SKILL.md +45 -4
- package/habilidades/release-semver/.evolved.json +8 -8
- package/habilidades/tdd-workflow/SKILL.md +36 -4
- package/habilidades/testing-python/SKILL.md +340 -340
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/inyeccion-contexto.js +8 -3
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-ip.js +177 -0
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/webhook-dedup.js +184 -0
- package/hooks/lib/webhook-verify.js +123 -0
- package/hooks/proteccion-rutas.js +120 -15
- package/hooks/registro-turnos.js +209 -209
- package/hooks/sugerir-regenerar-inventario.js +170 -170
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-memoria-hook.js +218 -218
- package/instintos/prompt-appendices.yaml +57 -57
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/modulos.json +1 -0
- package/manifiestos/skills-lock.json +34 -34
- package/package.json +5 -3
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +1 -1
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/arreglar-al-detectar.md +147 -147
- package/reglas/fragmentos-compartidos.md +152 -152
- package/reglas/harness-claude-code.md +213 -213
- package/reglas/usar-context7.md +226 -226
- package/reglas/usar-sistema-swl.md +251 -0
- package/schemas/diary-entry.schema.json +80 -80
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/comandos/skills.js +251 -2
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-inventario.js +420 -420
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/README.md +128 -128
- package/scripts/mcp-server/handlers.js +206 -206
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +201 -201
- package/scripts/publicar.js +511 -511
- package/scripts/run-eval.js +141 -141
- package/scripts/validar-manifest.js +195 -195
- package/scripts/validar-userland-vacio.js +110 -110
- 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
|
+
}
|
package/manifiestos/modulos.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"lockfileVersion": 1,
|
|
3
|
-
"generatedAt": "2026-05-
|
|
3
|
+
"generatedAt": "2026-05-14T02:32:41.863Z",
|
|
4
4
|
"skillsCount": 155,
|
|
5
|
-
"lockHash": "sha256:
|
|
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:
|
|
109
|
-
"bytes":
|
|
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:
|
|
116
|
-
"bytes":
|
|
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:
|
|
165
|
-
"bytes":
|
|
166
|
-
"version": "\"1.
|
|
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:
|
|
382
|
-
"bytes":
|
|
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:
|
|
417
|
-
"bytes":
|
|
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:
|
|
445
|
-
"bytes":
|
|
446
|
-
"version": "\"1.0.
|
|
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:
|
|
529
|
-
"bytes":
|
|
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:
|
|
543
|
-
"bytes":
|
|
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:
|
|
613
|
-
"bytes":
|
|
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:
|
|
711
|
-
"bytes":
|
|
712
|
-
"version": "\"1.0
|
|
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:
|
|
753
|
-
"bytes":
|
|
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:
|
|
795
|
-
"bytes":
|
|
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:
|
|
851
|
-
"bytes":
|
|
852
|
-
"version": "\"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:
|
|
1005
|
-
"bytes":
|
|
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
|
+
"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")`.
|