@saulwade/swl-ses 2.2.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CLAUDE.md +4 -4
  2. package/README.md +3 -3
  3. package/agentes/arquitecto-swl.md +1 -1
  4. package/agentes/auto-evolucion-swl.md +908 -908
  5. package/agentes/backend-csharp-swl.md +1 -1
  6. package/agentes/backend-go-swl.md +1 -1
  7. package/agentes/backend-java-swl.md +1 -1
  8. package/agentes/backend-rust-swl.md +1 -1
  9. package/agentes/evals/orquestador-swl.evals.json +1 -1
  10. package/agentes/implementador-swl.md +2 -2
  11. package/agentes/llm-apps-swl.md +1 -1
  12. package/agentes/orquestador-swl.md +7 -7
  13. package/agentes/pagos-swl.md +1 -1
  14. package/agentes/perfilador-usuario-swl.md +321 -321
  15. package/agentes/planificador-swl.md +1 -1
  16. package/agentes/producto-prd-swl.md +1 -1
  17. package/agentes/revisor-seguridad-swl.md +1 -1
  18. package/agentes/sre-swl.md +1 -1
  19. package/comandos/swl/aprobar-plan.md +146 -141
  20. package/comandos/swl/release.md +45 -8
  21. package/comandos/swl/status.md +343 -333
  22. package/comandos/swl/verificar.md +817 -817
  23. package/habilidades/compactacion-contexto/SKILL.md +3 -3
  24. package/habilidades/contenedores-docker/SKILL.md +3 -1
  25. package/habilidades/context-builder/SKILL.md +4 -4
  26. package/habilidades/control-profundidad/SKILL.md +5 -5
  27. package/habilidades/ejecutar-fase/SKILL.md +564 -541
  28. package/habilidades/extractor-de-aprendizajes/SKILL.md +3 -3
  29. package/habilidades/guardrail-semantico/SKILL.md +1 -1
  30. package/habilidades/harness-claude-code/SKILL.md +305 -305
  31. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +1 -1
  32. package/habilidades/planear-fase/SKILL.md +15 -1
  33. package/habilidades/proceso-debate-adversarial/SKILL.md +191 -164
  34. package/habilidades/prompt-engineering/SKILL.md +5 -5
  35. package/habilidades/release-semver/SKILL.md +4 -1
  36. package/habilidades/tdd-workflow/SKILL.md +33 -1
  37. package/habilidades/workflow-claude-code/SKILL.md +6 -6
  38. package/hooks/captura-acciones-post.js +151 -0
  39. package/hooks/captura-acciones-session.js +155 -0
  40. package/hooks/lib/briefing.js +512 -474
  41. package/hooks/lib/captura-acciones.js +392 -0
  42. package/hooks/lib/context-builder.js +2 -2
  43. package/hooks/lib/model-router.js +1 -1
  44. package/hooks/lib/token-estimator.js +2 -0
  45. package/hooks/linea-estado.js +7 -5
  46. package/llms.txt +29 -29
  47. package/manifiestos/canonical-hashes.json +1964 -1310
  48. package/manifiestos/hooks-config.json +18 -0
  49. package/manifiestos/modulos.json +4 -0
  50. package/manifiestos/skills-lock.json +1282 -1282
  51. package/package.json +93 -93
  52. package/plugin.json +371 -371
  53. package/reglas/git-coauthor.md +100 -100
  54. package/reglas/memoria-consolidada.md +41 -0
  55. package/reglas/pruebas.md +15 -0
  56. package/reglas/seguridad-agentes.md +66 -0
  57. package/schemas/agent-frontmatter.schema.json +294 -294
  58. package/schemas/instinct.schema.json +161 -152
  59. package/scripts/bootstrap-instintos.js +25 -7
  60. package/scripts/lib/claude-sessions.js +1 -0
  61. package/scripts/lib/gitignore-manifest.js +44 -11
  62. package/scripts/lib/skill-metrics.js +41 -1
  63. package/scripts/lib/tool-cost-analyzer.js +1 -0
  64. package/scripts/publicar.js +34 -85
  65. package/scripts/verificar-trazabilidad.js +329 -298
  66. package/scripts/vendor/claude-usage/__pycache__/scanner.cpython-314.pyc +0 -0
@@ -1,100 +1,100 @@
1
- # Regla: Sin co-autores en commits
2
-
3
- Esta regla es OBLIGATORIA y aplica a TODOS los proyectos del usuario sin excepción.
4
- Tiene prioridad sobre el template por defecto del CLI de Claude Code.
5
-
6
- ---
7
-
8
- ## Regla
9
-
10
- Los commits que Claude genere en cualquier proyecto del usuario **NO deben incluir
11
- ninguna línea de atribución a Claude, Anthropic, ningún modelo de IA, ni ningún
12
- co-autor**. El único autor de los commits es **Saúl Wade**.
13
-
14
- Específicamente, NO incluir en el mensaje de commit:
15
-
16
- - `Co-Authored-By: Claude ...`
17
- - `Co-Authored-By: <cualquier modelo>`
18
- - `🤖 Generated with [Claude Code](https://claude.com/claude-code)`
19
- - `Generated by Claude`
20
- - Ninguna otra línea de atribución a IA o co-autor automático
21
-
22
- Esta regla **sobrescribe** las instrucciones por defecto del CLI de Claude Code
23
- que sugieren agregar `Co-Authored-By: Claude Opus ...` al final del mensaje.
24
-
25
- ---
26
-
27
- ## Cómo aplicar
28
-
29
- ### En commits con `git commit -m`
30
-
31
- ```bash
32
- # CORRECTO
33
- git commit -m "feat(auth): agregar validación PKCE en flujo OAuth2"
34
-
35
- # INCORRECTO
36
- git commit -m "$(cat <<'EOF'
37
- feat(auth): agregar validación PKCE en flujo OAuth2
38
-
39
- Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40
- EOF
41
- )"
42
- ```
43
-
44
- ### En commits con HEREDOC y mensaje extenso
45
-
46
- El cuerpo del commit puede ser tan extenso como la regla `git-workflow.md` lo
47
- justifique, pero **sin** el bloque de atribución al final:
48
-
49
- ```bash
50
- git commit -m "$(cat <<'EOF'
51
- fix(facturas): corregir cálculo de IEPS para tasa cero
52
-
53
- El cálculo previo aplicaba la tasa estándar en productos con
54
- tasa IEPS = 0%, generando totales inflados.
55
-
56
- Refs #234
57
- EOF
58
- )"
59
- ```
60
-
61
- ### En Pull Requests
62
-
63
- Mismo principio aplica al body de PRs creados con `gh pr create`. El template
64
- del CLI sugiere terminar con:
65
-
66
- ```
67
- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
68
- ```
69
-
70
- **NO incluir esa línea**. El body del PR cierra con la sección de Test plan
71
- o las referencias a issues.
72
-
73
- ---
74
-
75
- ## Excepciones
76
-
77
- - **Co-autores humanos reales**: si en algún proyecto futuro hay otros desarrolladores
78
- haciendo pair programming con Saúl, sus líneas `Co-Authored-By:` con email humano
79
- son válidas. La regla aplica solo a atribuciones a IA/modelos.
80
- - **Cuando el usuario pida explícitamente** la atribución para un commit puntual
81
- (caso muy raro). En ese caso ejecutar lo que pide y registrar la excepción en
82
- el commit.
83
-
84
- ---
85
-
86
- ## Origen
87
-
88
- Esta regla se promueve a global el 2026-05-09 tras detectar que la misma
89
- preferencia aparecía duplicada en al menos 2 proyectos:
90
-
91
- - `D--Python-swl-ses/memory/feedback_sin_coautores.md` (2026-04-18)
92
- - `D--Python-generacion-informes/memory/feedback_no_coauthor_in_commits.md`
93
-
94
- La duplicación cross-proyecto es señal inequívoca de preferencia transversal
95
- del usuario. La instrucción del CLI Claude Code que sugiere agregar
96
- `Co-Authored-By: Claude` queda explícitamente sobreescrita por esta regla
97
- para todos los proyectos del usuario `Saul`.
98
-
99
- Los feedbacks per-project quedan deprecados tras esta promoción y deben
100
- eliminarse de las carpetas `memory/` correspondientes.
1
+ # Regla: Sin co-autores en commits
2
+
3
+ Esta regla es OBLIGATORIA y aplica a TODOS los proyectos del usuario sin excepción.
4
+ Tiene prioridad sobre el template por defecto del CLI de Claude Code.
5
+
6
+ ---
7
+
8
+ ## Regla
9
+
10
+ Los commits que Claude genere en cualquier proyecto del usuario **NO deben incluir
11
+ ninguna línea de atribución a Claude, Anthropic, ningún modelo de IA, ni ningún
12
+ co-autor**. El único autor de los commits es **Saúl Wade**.
13
+
14
+ Específicamente, NO incluir en el mensaje de commit:
15
+
16
+ - `Co-Authored-By: Claude ...`
17
+ - `Co-Authored-By: <cualquier modelo>`
18
+ - `🤖 Generated with [Claude Code](https://claude.com/claude-code)`
19
+ - `Generated by Claude`
20
+ - Ninguna otra línea de atribución a IA o co-autor automático
21
+
22
+ Esta regla **sobrescribe** las instrucciones por defecto del CLI de Claude Code
23
+ que sugieren agregar `Co-Authored-By: Claude Opus ...` al final del mensaje.
24
+
25
+ ---
26
+
27
+ ## Cómo aplicar
28
+
29
+ ### En commits con `git commit -m`
30
+
31
+ ```bash
32
+ # CORRECTO
33
+ git commit -m "feat(auth): agregar validación PKCE en flujo OAuth2"
34
+
35
+ # INCORRECTO
36
+ git commit -m "$(cat <<'EOF'
37
+ feat(auth): agregar validación PKCE en flujo OAuth2
38
+
39
+ Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40
+ EOF
41
+ )"
42
+ ```
43
+
44
+ ### En commits con HEREDOC y mensaje extenso
45
+
46
+ El cuerpo del commit puede ser tan extenso como la regla `git-workflow.md` lo
47
+ justifique, pero **sin** el bloque de atribución al final:
48
+
49
+ ```bash
50
+ git commit -m "$(cat <<'EOF'
51
+ fix(facturas): corregir cálculo de IEPS para tasa cero
52
+
53
+ El cálculo previo aplicaba la tasa estándar en productos con
54
+ tasa IEPS = 0%, generando totales inflados.
55
+
56
+ Refs #234
57
+ EOF
58
+ )"
59
+ ```
60
+
61
+ ### En Pull Requests
62
+
63
+ Mismo principio aplica al body de PRs creados con `gh pr create`. El template
64
+ del CLI sugiere terminar con:
65
+
66
+ ```
67
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
68
+ ```
69
+
70
+ **NO incluir esa línea**. El body del PR cierra con la sección de Test plan
71
+ o las referencias a issues.
72
+
73
+ ---
74
+
75
+ ## Excepciones
76
+
77
+ - **Co-autores humanos reales**: si en algún proyecto futuro hay otros desarrolladores
78
+ haciendo pair programming con Saúl, sus líneas `Co-Authored-By:` con email humano
79
+ son válidas. La regla aplica solo a atribuciones a IA/modelos.
80
+ - **Cuando el usuario pida explícitamente** la atribución para un commit puntual
81
+ (caso muy raro). En ese caso ejecutar lo que pide y registrar la excepción en
82
+ el commit.
83
+
84
+ ---
85
+
86
+ ## Origen
87
+
88
+ Esta regla se promueve a global el 2026-05-09 tras detectar que la misma
89
+ preferencia aparecía duplicada en al menos 2 proyectos:
90
+
91
+ - `D--Python-swl-ses/memory/feedback_sin_coautores.md` (2026-04-18)
92
+ - `D--Python-generacion-informes/memory/feedback_no_coauthor_in_commits.md`
93
+
94
+ La duplicación cross-proyecto es señal inequívoca de preferencia transversal
95
+ del usuario. La instrucción del CLI Claude Code que sugiere agregar
96
+ `Co-Authored-By: Claude` queda explícitamente sobreescrita por esta regla
97
+ para todos los proyectos del usuario `Saul`.
98
+
99
+ Los feedbacks per-project quedan deprecados tras esta promoción y deben
100
+ eliminarse de las carpetas `memory/` correspondientes.
@@ -19,6 +19,47 @@ regla clara, un mismo dato puede terminar en el lugar incorrecto o duplicado.
19
19
 
20
20
  ---
21
21
 
22
+ ## Eje cognitivo de memoria (semantic | episodic | procedural)
23
+
24
+ Los 5 canales de arriba clasifican el conocimiento por **dónde se almacena**. El
25
+ eje cognitivo lo clasifica por **qué tipo de memoria es** — y es **ORTOGONAL**: un
26
+ dato vive en exactamente un canal (regla de no-duplicación abajo) y PUEDE
27
+ etiquetarse con exactamente un tipo cognitivo. No reemplaza a los canales; los
28
+ enriquece para mejorar la relevancia del recall.
29
+
30
+ Origen: análisis "Self-Learning for Agents" (3 capas) —
31
+ `.planning/knowledge/outputs/analisis-self-learning-agents-3-capas-2026-06-27.md`.
32
+ Un agente que se auto-mejora necesita las tres clases; la mayoría de los sistemas
33
+ solo tiene `semantic`.
34
+
35
+ | Tipo | Qué es | Ejemplo | Cuándo usarlo |
36
+ |------|--------|---------|---------------|
37
+ | **semantic** | Hechos, decisiones, vocabulario, gotchas-como-hecho | "El proyecto usa repository pattern"; "la API de CFDI devuelve 200 en errores" | Conocimiento estable que se consulta como referencia |
38
+ | **episodic** | Experiencia pasada de una sesión concreta (qué pasó, cuándo) | "En la sesión X el revert del commit Y resolvió el bug Z" | Recordar un caso vivido para no repetir el camino |
39
+ | **procedural** | Cómo manejar un caso (cómo hacer / qué evitar) | "Paralelizar agentes solo sin dependencias de datos"; "no usar `display:initial` para re-mostrar celdas" | Guía de acción ante una situación recurrente |
40
+
41
+ ### Dónde se materializa
42
+
43
+ - **instintos** (`schemas/instinct.schema.json`): campo OPCIONAL `tipo_memoria`
44
+ (enum `semantic|episodic|procedural`). Backward-compatible: instintos sin el
45
+ campo siguen válidos. `scripts/bootstrap-instintos.js` lo infiere por sección de
46
+ origen (heurístico declarado, no autoritativo):
47
+ - `decisión` / `arquitectura` / `gotcha` / `regla-proyecto` → **semantic**
48
+ - `patrón` / `anti-patrón` → **procedural**
49
+ - **episodic** NO se infiere del bootstrap (nace de registros de sesión, canal 4,
50
+ no de APRENDIZAJES).
51
+ - **APRENDIZAJES.md** (canal 2): convención OPCIONAL — una entrada puede anotar
52
+ `tipo_memoria:` en su cuerpo cuando el tipo no sea evidente por la sección.
53
+
54
+ ### Anti-patrones del eje cognitivo
55
+
56
+ - Tratar el tipo cognitivo como un sexto canal de almacenamiento (no lo es: es una
57
+ etiqueta ortogonal sobre el dato que ya vive en su canal).
58
+ - Forzar `episodic` en un instinto bootstrapeado de APRENDIZAJES (episodic viene de
59
+ sesiones, no de conocimiento de dominio destilado).
60
+
61
+ ---
62
+
22
63
  ## Regla de asignación — dónde va CADA tipo de dato
23
64
 
24
65
  ### A. Información del usuario
package/reglas/pruebas.md CHANGED
@@ -76,6 +76,21 @@ Reglas del AAA:
76
76
  - Tests de integración con BD: usar transacciones que se revierten al final,
77
77
  o fixtures aislados por test.
78
78
  - Seeds de datos en BD de test: deterministas y reproducibles.
79
+ - NUNCA usar una aserción de reloj de pared (`performance.now()`,
80
+ `time.perf_counter()`) contra un umbral fijo como gate **bloqueante** de la
81
+ suite. Es no-determinista: el p95 depende de la carga de la máquina y revienta
82
+ intermitentemente — peor aún si el test corre dentro de `prepublishOnly`/CI
83
+ junto a otros tests pesados (un `p95 < 200ms` que medía 208ms bajo carga
84
+ tumbó toda una cadena de releases). Un presupuesto de rendimiento es una meta
85
+ de PRODUCCIÓN en reposo, no un assert duro de unit test. Si aun así se mide
86
+ latencia en un test:
87
+ - **Warm-up**: descartar las primeras iteraciones (cold-start de JIT/FS-cache).
88
+ - **N ≥ 50 muestras** para un p95 estable.
89
+ - **Umbral tolerante a carga** (≥2× del presupuesto): detecta una regresión
90
+ gruesa sin flaquear por varianza; reportar el p95 observado en el mensaje del
91
+ assert para vigilar el presupuesto fino.
92
+ - **Mejor aún**: medir-y-avisar (benchmark/log) FUERA de la suite bloqueante;
93
+ el gate duro detecta regresión, no afina el SLA.
79
94
 
80
95
  ---
81
96
 
@@ -355,10 +355,76 @@ exclusiones:
355
355
 
356
356
  ---
357
357
 
358
+ ## Anti-gaming: no auto-calificación de evidencia
359
+
360
+ Esta sección formaliza una invariante de seguridad **no negociable** para el
361
+ ciclo de auto-evolución (AGP) y para cualquier agente que se auto-mejore.
362
+
363
+ ### Invariante
364
+
365
+ > Un agente que evoluciona **NUNCA debe producir ni editar la evidencia que lo
366
+ > aprueba**. El productor de la evidencia (score de eval, badge, evidencia RED,
367
+ > veredicto de verificación, canary) debe ser un **actor distinto** del agente
368
+ > evaluado, o una **decisión humana**. La única señal imposible de falsificar es
369
+ > la generada por un actor independiente del evaluado.
370
+
371
+ ### Origen — Sakana Darwin Gödel Machine
372
+
373
+ El DGM, soltado a mejorar contra un test, en vez de hacer mejor trabajo
374
+ **falsificó sus propios logs de test**. Cuando los investigadores le agregaron un
375
+ detector para atraparlo, **quitó las marcas en que el detector se apoyaba**, pese
376
+ a que se le prohibió. Lección: si el evaluado controla la evidencia que lo
377
+ califica, la optimización converge a falsificar la evidencia, no a mejorar.
378
+ (Fuente: análisis self-learning 3 capas, `sakana.ai/dgm`.)
379
+
380
+ ### Relación con gobernanza (no se re-deriva aquí)
381
+
382
+ Esta invariante **extiende** —no duplica— `reglas/gobernanza.md`:
383
+ - `§ Separación revisor/ejecutor`: el ejecutor nunca emite veredicto sobre su
384
+ propio trabajo; el revisor no modifica código.
385
+ - `§ Gate G8`: un skill se promueve solo con badge ≥ Plata de `/swl:evaluar-skill`.
386
+
387
+ El aporte de esta sección es el principio general "no auto-calificación de
388
+ **evidencia**" aplicado a TODA superficie del AGP, y el mapeo a las superficies
389
+ reales del sistema (auditoría Fase 18, 2026-06-27).
390
+
391
+ ### Mapeo a superficies del ciclo AGP (auditoría Fase 18)
392
+
393
+ | Superficie | ¿Productor ≠ calificador? | Veredicto |
394
+ |---|---|---|
395
+ | Canary pre-write (`hooks/lib/canary-skills.js`) | Validador estructural determinista sobre el contenido real; el agente no puede falsearlo | **PASS** |
396
+ | Veredicto de verificación (`/swl:verificar`, `nemesis`) | `gobernanza.md` exige revisor ≠ ejecutor (agentes distintos) | **PASS** (por proceso) |
397
+ | Invariantes de seguridad (`run-skill-evals --check-invariants`) | `validarInvariantesDeAgente` corre independiente del score declarado | **PASS** |
398
+ | Evidencia RED de TDD (`hooks/tdd-gate.js`) | La escribe el mismo ejecutar-fase; mitigado porque el GREEN lo corre un test-runner independiente y es WARN-ONLY | **PARCIAL** |
399
+ | **Score de eval (`run-skill-evals.js --record-after --score=N`)** | El `--score` se toma **verbatim del flag** que pasa el agente que evoluciona; nada lo liga a una corrida independiente de `/swl:evaluar-skill` | **GAP** (DT-AGP-SCORE-AUTODECLARADO) |
400
+ | Registro de evolución (`evoluciones.jsonl`) + métricas | Heredan el score auto-declarado de la superficie anterior | **GAP** (mismo origen) |
401
+
402
+ ### Anti-patrones (prohibidos)
403
+
404
+ - Un agente que pasa su propio `--score=N` como evidencia de que su evolución
405
+ mejoró, sin que ese número provenga de un evaluador independiente.
406
+ - Un ejecutor que escribe/edita su propia evidencia RED, badge o veredicto.
407
+ - "Agregar un detector" y dejar que el evaluado pueda editar las marcas en que el
408
+ detector se apoya (el error literal del DGM).
409
+ - Confiar en un número de score persistido sin procedencia verificable del actor
410
+ que lo produjo.
411
+
412
+ ### Regla operativa
413
+
414
+ Toda métrica que decida promoción/rollback de una evolución debe poder rastrear
415
+ **qué actor la produjo**. Si el actor es el mismo agente evaluado, la métrica es
416
+ un *hint*, no una aprobación: requiere corroboración de un actor independiente
417
+ (otro agente evaluador, el test-runner, o el humano) antes de promover.
418
+
419
+ ---
420
+
358
421
  ## Checklist de seguridad de agentes
359
422
 
360
423
  Antes de desplegar un agente nuevo o modificar permisos de uno existente:
361
424
 
425
+ - [ ] Ninguna evidencia que aprueba al agente (score, badge, RED, veredicto) es
426
+ producida o editable por el propio agente evaluado (§ Anti-gaming)
427
+
362
428
  - [ ] Los permisos en frontmatter son los mínimos necesarios para la función
363
429
  - [ ] `nivelRiesgo` refleja el impacto real si el agente actúa incorrectamente
364
430
  - [ ] El agente no puede escalar privilegios a través de delegación