@saulwade/swl-ses 1.9.0 → 2.0.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 (108) hide show
  1. package/CLAUDE.md +8 -8
  2. package/README.md +12 -12
  3. package/agentes/accesibilidad-wcag-swl.md +3 -3
  4. package/agentes/auto-evolucion-swl.md +908 -908
  5. package/agentes/disenador-ui-swl.md +6 -5
  6. package/agentes/frontend-angular-swl.md +2 -2
  7. package/agentes/frontend-css-swl.md +2 -2
  8. package/agentes/frontend-react-swl.md +4 -4
  9. package/agentes/frontend-swl.md +6 -6
  10. package/agentes/investigador-ux-swl.md +5 -5
  11. package/agentes/orquestador-swl.md +7 -7
  12. package/agentes/perfilador-usuario-swl.md +308 -308
  13. package/agentes/producto-prd-swl.md +1 -1
  14. package/agentes/red-team-swl.md +218 -218
  15. package/agentes/tdd-qa-swl.md +17 -1
  16. package/comandos/swl/actualizar.md +1 -1
  17. package/comandos/swl/aprender.md +2 -2
  18. package/comandos/swl/aprobar-plan.md +152 -0
  19. package/comandos/swl/ayuda.md +3 -3
  20. package/comandos/swl/discutir-fase.md +20 -2
  21. package/comandos/swl/ejecutar-fase.md +53 -6
  22. package/comandos/swl/evolucionar.md +1 -1
  23. package/comandos/swl/inbox.md +1 -1
  24. package/comandos/swl/instalar.md +1 -1
  25. package/comandos/swl/nemesis.md +1 -1
  26. package/comandos/swl/planear-fase.md +17 -1
  27. package/comandos/swl/plugins.md +1 -1
  28. package/comandos/swl/release.md +1 -1
  29. package/comandos/swl/status.md +279 -0
  30. package/comandos/swl/verificar.md +26 -1
  31. package/habilidades/ai-runtime-security/SKILL.md +1 -1
  32. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
  33. package/habilidades/benchmark-memoria/SKILL.md +1 -1
  34. package/habilidades/calidad-contract-testing/SKILL.md +165 -0
  35. package/habilidades/changelog-generator/SKILL.md +9 -2
  36. package/habilidades/changelog-generator/scripts/parse-commits.js +11 -1
  37. package/habilidades/diagrama-arquitectura/SKILL.md +1 -1
  38. package/habilidades/drift-detection/SKILL.md +179 -179
  39. package/habilidades/ejecutar-fase/SKILL.md +64 -14
  40. package/habilidades/estructura-proyecto-claude/SKILL.md +17 -14
  41. package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +34 -23
  42. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +70 -53
  43. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -77
  44. package/habilidades/extractor-de-aprendizajes/SKILL.md +9 -5
  45. package/habilidades/harness-claude-code/SKILL.md +10 -7
  46. package/{reglas/harness-claude-code.md → habilidades/harness-claude-code/recursos/disciplina-harness-regla.md} +2 -2
  47. package/habilidades/instalar-sistema/SKILL.md +3 -3
  48. package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +1 -1
  49. package/habilidades/perfil-usuario/SKILL.md +200 -200
  50. package/habilidades/planear-fase/SKILL.md +25 -4
  51. package/habilidades/proceso-ddia-fundamentos/SKILL.md +1 -1
  52. package/habilidades/proceso-ddia-streaming/SKILL.md +4 -4
  53. package/habilidades/proceso-debate-adversarial/SKILL.md +2 -2
  54. package/habilidades/protocolo-revision-swl/SKILL.md +1 -1
  55. package/habilidades/seguridad-skills-ia/SKILL.md +1 -1
  56. package/habilidades/swl-claudemd/SKILL.md +50 -210
  57. package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -0
  58. package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -0
  59. package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -0
  60. package/habilidades/swl-dashboard/SKILL.md +9 -9
  61. package/habilidades/swl-revisar-impacto/SKILL.md +1 -1
  62. package/habilidades/tdd-workflow/SKILL.md +45 -5
  63. package/habilidades/validacion-ci-sistema/SKILL.md +3 -3
  64. package/hooks/calidad-pre-commit.js +340 -3
  65. package/hooks/ciclo-evolucion-subagente.js +26 -0
  66. package/hooks/ciclo-evolucion.js +26 -0
  67. package/hooks/extraccion-aprendizajes.js +13 -0
  68. package/hooks/lib/ciclo-evolucion.js +47 -0
  69. package/hooks/{auto-evolucion.js → lib/etapa-auto-evolucion.js} +701 -700
  70. package/hooks/{metricas-evolucion.js → lib/etapa-metricas.js} +388 -376
  71. package/hooks/{actualizar-perfil-usuario.js → lib/etapa-perfil-usuario.js} +376 -364
  72. package/hooks/lib/evolution-tracker.js +24 -3
  73. package/hooks/spec-gate.js +211 -0
  74. package/hooks/tdd-gate.js +241 -0
  75. package/hooks/validar-intent-spec.js +30 -10
  76. package/llms.txt +6 -6
  77. package/manifiestos/hooks-config.json +26 -17
  78. package/manifiestos/modulos.json +17 -14
  79. package/manifiestos/skills-lock.json +63 -56
  80. package/package.json +2 -2
  81. package/plugin.json +6 -10
  82. package/reglas/accesibilidad.md +10 -0
  83. package/reglas/api-diseno.md +9 -0
  84. package/reglas/auditorias-documentales-estructurales.md +7 -0
  85. package/reglas/cloud-infra.md +8 -0
  86. package/reglas/fragmentos-compartidos.md +5 -0
  87. package/reglas/gobernanza.md +4 -4
  88. package/reglas/hooks.md +6 -0
  89. package/reglas/intent-engineering.md +4 -0
  90. package/reglas/markitdown.md +8 -0
  91. package/reglas/memoria-consolidada.md +1 -1
  92. package/reglas/patrones.md +6 -0
  93. package/reglas/registro-componentes-nuevos.md +10 -1
  94. package/reglas/seguridad-agentes.md +1 -1
  95. package/reglas/skills-estandar.md +6 -0
  96. package/reglas/testing.md +7 -0
  97. package/reglas/tests-cleanup.md +4 -0
  98. package/reglas/usar-sistema-swl.md +1 -1
  99. package/scripts/lib/gitignore-manifest.js +29 -1
  100. package/scripts/lib/plan-lock.js +275 -0
  101. package/scripts/migrar-fase-dominio.js +0 -1
  102. package/scripts/verificar-trazabilidad.js +292 -0
  103. package/agentes/ux-disenador-swl.md +0 -503
  104. package/comandos/swl/dashboard.md +0 -146
  105. package/comandos/swl/evolucion-estado.md +0 -191
  106. package/comandos/swl/metricas.md +0 -376
  107. package/comandos/swl/salud.md +0 -481
  108. package/reglas/verificar-citas-temporales.md +0 -139
@@ -1,276 +1,276 @@
1
- ---
2
- name: auto-evolucion-protocolo
3
- description: >
4
- Protocolo de auto-evolución del sistema SWL. Cómo los agentes aprenden y se mejoran,
5
- proponen cambios, versionado semántico de agentes, changelog, métricas de evolución,
6
- governance de cambios, parser de señales de fricción y safety checks.
7
- version: "1.1.1"
8
- herramientasPermitidas: [Read, Bash, Grep]
9
- evolvable: false # bloqueado por lista (skill de seguridad/privacidad)
10
- exclusiones:
11
- - "No cargar para evolución del código de aplicación del usuario (migración de APIs de frameworks, refactors de módulos propios) — para eso cargar el skill del framework correspondiente (`angular-moderno`, `react-optimizacion`, backend-*) o invocar `implementador-swl`."
12
- - "No cargar para migraciones de schema de base de datos o datos en reposo — para migraciones de persistencia cargar `postgresql-experto` y usar `migrador-swl`."
13
- - "No cargar para aplicar automáticamente cambios sobre skills o agentes con `evolvable: false` — estos artefactos requieren ADR explícito y decisión humana fuera del ciclo AGP."
14
- - "No cargar para evoluciones de dependencias externas (bumps de versión, deprecación de librerías) — para eso cargar `dependencias-auditoria` + `deprecacion-migracion`."
15
- ---
16
- # Protocolo de Auto-Evolución del Sistema SWL
17
-
18
- ## Cuándo NO cargar
19
-
20
- - La evolución es sobre código de aplicación del usuario (API de un framework cambió, hay que actualizar componentes): cargar el skill del framework (`angular-moderno`, `react-optimizacion`, backend-*) o invocar `implementador-swl`. Este skill es para evolución de artefactos del sistema SWL (agentes, skills, reglas), no del producto.
21
- - La tarea es migrar schemas de base de datos o datos en producción: cargar `postgresql-experto` y delegar a `migrador-swl`. La auto-evolución no cubre migraciones de persistencia — son irreversibles y requieren plan propio.
22
- - El artefacto objetivo tiene `evolvable: false`: este skill NO se auto-aplica sobre artefactos bloqueados. Requiere ADR explícito y edición manual por decisión humana.
23
- - La evolución es un bump de versión de dependencia externa (npm, pip): cargar `dependencias-auditoria` y `deprecacion-migracion`. Este skill cubre evolución de conocimiento interno del sistema, no del árbol de deps.
24
-
25
- ## ¿Por qué auto-evolución?
26
-
27
- El sistema SWL es una colección de agentes y skills que guían la implementación
28
- de software. Con el tiempo, estos artefactos envejecen:
29
- - Los frameworks cambian sus APIs.
30
- - Los equipos descubren nuevos anti-patrones.
31
- - Los errores recurrentes revelan gaps en los skills.
32
- - Los workflows ineficientes se vuelven visibles a través de la práctica.
33
-
34
- La auto-evolución es el proceso sistemático por el cual el sistema actualiza su propio
35
- conocimiento de forma controlada, versionada y auditable.
36
-
37
- ---
38
-
39
- ## Anatomía de un Cambio Evolutivo
40
-
41
- Todo cambio al sistema SWL pasa por este ciclo:
42
-
43
- ```
44
- Observación → Diagnóstico → Propuesta → Revisión → Aplicación → Verificación → Registro
45
- ```
46
-
47
- ### 1. Observación — ¿Qué triggerea un cambio?
48
-
49
- | Trigger | Ejemplo | Prioridad |
50
- |---------|---------|-----------|
51
- | Error recurrente en producción | `MissingGreenlet` en SQLAlchemy aparece 3+ veces | ALTA |
52
- | Nueva versión mayor de framework | Angular v20 cambia la Resource API | ALTA |
53
- | Patrón nuevo identificado | `satisfies` operator mejora type safety | MEDIA |
54
- | Deprecación de API | `*ngIf` eliminado en Angular v21 | ALTA |
55
- | Feedback de desarrollador | "Este skill no cubre migrations con datos" | MEDIA |
56
-
57
- ### 2. Diagnóstico — ¿Qué está desactualizado exactamente?
58
-
59
- Documentar: fecha, observador, error recurrente, síntoma, causa raíz,
60
- artefacto afectado (archivo + línea), severidad del gap.
61
-
62
- ---
63
-
64
- ## Versionado Semántico de Agentes y Skills
65
-
66
- ```
67
- MAYOR.MENOR.PARCHE
68
-
69
- MAYOR: cambio que rompe compatibilidad backward con proyectos existentes
70
- Requiere: aprobación de revisor humano
71
-
72
- MENOR: nueva funcionalidad o cobertura de nuevos casos
73
- Requiere: revisión del plan-checker
74
-
75
- PARCHE: corrección de error, clarificación, ejemplo mejorado
76
- Requiere: auto-aplicable por el verificador
77
- ```
78
-
79
- ---
80
-
81
- ## Protocolo de Propuesta de Cambio
82
-
83
- Formato estándar:
84
-
85
- ```markdown
86
- # PROPUESTA-EVOLUCION-NNN
87
-
88
- ## Metadatos
89
- - **Fecha**: YYYY-MM-DD
90
- - **Proponente**: agente
91
- - **Tipo**: PARCHE | MENOR | MAYOR
92
- - **Artefacto**: ruta/al/archivo
93
- - **Urgencia**: Alta | Media | Baja
94
-
95
- ## Problema Observado
96
- Descripción del error o gap.
97
-
98
- ## Evidencia
99
- - PR/sesión donde se observó (mínimo 2 instancias)
100
-
101
- ## Cambio Propuesto
102
- Diff o descripción del cambio.
103
-
104
- ## Impacto Estimado
105
- Breaking changes, estimación de mejora.
106
-
107
- ## Verificación Post-Cambio
108
- Cómo verificar que el cambio resolvió el problema.
109
- ```
110
-
111
- ---
112
-
113
- ## Governance — Quién Puede Cambiar Qué
114
-
115
- ```yaml
116
- cambios_autonomos:
117
- - tipo: PARCHE
118
- condicion: "corrección de ejemplo de código erróneo"
119
- - tipo: PARCHE
120
- condicion: "agregar anti-patrón observado 3+ veces"
121
-
122
- cambios_con_revision:
123
- - tipo: MENOR
124
- condicion: "nueva sección temática en un skill"
125
- aprobadores: ["planificador"]
126
- - tipo: MENOR
127
- condicion: "nuevo skill creado desde cero"
128
- aprobadores: ["planificador", "revisor"]
129
-
130
- cambios_con_aprobacion_humana:
131
- - tipo: MAYOR
132
- condicion: "cambio de convención que afecta código existente"
133
- - tipo: cualquiera
134
- condicion: "modificar agentes (no skills)"
135
- - tipo: cualquiera
136
- condicion: "cambiar reglas en CLAUDE.md"
137
- ```
138
-
139
- ---
140
-
141
- ## Safety Checks — Antes de Aplicar un Cambio
142
-
143
- Todo agente que proponga modificar un artefacto del sistema DEBE verificar:
144
-
145
- 1. **Consistencia**: Un PARCHE no modifica más de 50 líneas
146
- 2. **Scope**: Modificar agentes requiere aprobación humana
147
- 3. **Evidencia**: Mínimo 2 instancias de evidencia para un cambio
148
- 4. **Reversibilidad**: Todo cambio tiene un plan de rollback documentado
149
- 5. **No contradicciones**: El cambio no contradice otros skills o reglas
150
-
151
- ---
152
-
153
- ## Formato de Commit Evolutivo
154
-
155
- ```
156
- evolucion(nombre-artefacto): descripción [TIPO v.anterior→v.nueva]
157
- ```
158
-
159
- Rollback: `git revert <hash-del-commit-evolutivo>`
160
-
161
- ---
162
-
163
- ## Escalera de Adquisición de Capacidades
164
-
165
- Cuando se identifica un patrón útil, la tentación es saltar de "lo resolví una vez"
166
- a "crear un skill". Pero la maduración tiene niveles intermedios. Saltar niveles
167
- produce skills frágiles que no se activan, workflows sin verificación y automatizaciones
168
- que fallan silenciosamente.
169
-
170
- | Nivel | Nombre | Qué implica | Criterio para avanzar al siguiente |
171
- |-------|--------|-------------|-----------------------------------|
172
- | 1 | **Solución ad hoc** | Se resolvió el problema una vez, en una sesión | El mismo problema aparece en otra sesión |
173
- | 2 | **Repetible** | Pasos documentados en ESTADO.md o DECISIONS.md | Se ejecutó 3+ veces con éxito siguiendo los pasos |
174
- | 3 | **Skill** | Codificado en SKILL.md con gotchas y restricciones | El skill se activa correctamente y cambia comportamiento (3-arm test) |
175
- | 4 | **Workflow** | Orquestación multi-agente con delegación definida | Los agentes completan el flujo sin intervención manual en 70%+ |
176
- | 5 | **Harness determinista** | Scripts en `scripts/` que validan output automáticamente | La validación detecta 90%+ de los errores conocidos |
177
- | 6 | **Cobertura evaluativa** | Métricas pass@k registradas en EVALUACION.md | pass@1 ≥ objetivo del tipo de agente durante 10+ ejecuciones |
178
- | 7 | **Automatizado** | Hook o cron que dispara la capacidad sin invocación manual | El hook se ejecuta sin errores en 95%+ de las veces |
179
- | 8 | **Monitoreado** | Métricas observables: latencia, tasa de error, drift | Dashboards activos y alertas configuradas |
180
- | 9 | **Autónomo con evidencia** | El sistema decide cuándo usar la capacidad basado en métricas, no en heurísticas | Decisiones autónomas acertadas en 85%+ |
181
- | 10 | **Empaquetado** | Reutilizable entre proyectos como plugin o módulo independiente | Funciona en 2+ proyectos distintos sin modificación |
182
-
183
- **Cómo usar**: Al proponer una evolución, identificar en qué nivel está la capacidad
184
- actual y proponer avanzar **un solo nivel**. Saltar niveles requiere justificación
185
- explícita en la propuesta de evolución — la mayoría de las veces es síntoma de
186
- optimismo injustificado.
187
-
188
- Para métricas de evolución, plantilla de changelog, proceso de retroalimentación
189
- del verificador y checklist completo de revisión,
190
- ver [recursos/referencia-completa.md](recursos/referencia-completa.md).
191
-
192
- ---
193
-
194
- ## Parser de señales de fricción (v1.1)
195
-
196
- El hook `hooks/auto-evolucion.js` (SubagentStop) alimenta el log
197
- `.planning/auto-evolution/agentes.jsonl` y emite *nudges* hacia
198
- `auto-evolucion-swl` cuando detecta umbrales cruzados. Este skill define
199
- **qué cuenta como fricción** para que el agente tenga criterio uniforme al
200
- interpretar el log.
201
-
202
- ### Categorías de fricción
203
-
204
- | Categoría | Fuente | Fuerza | Contraseña en el log |
205
- |-----------|--------|--------|----------------------|
206
- | **Fallo duro** | Subagente terminó con `is_error:true` o excepción | Alta | `status: "failed"` |
207
- | **Run vacío** | Subagente terminó sin producir cambios útiles (0 Edit/Write) | Media | `toolCalls < 3` en agente de implementación |
208
- | **Trivial recurrente** | 10+ runs triviales (≤5 tool calls) del mismo agente | Baja | `trivial: true` |
209
- | **Corrección del usuario** | Mensaje del usuario con keywords de corrección en el turno posterior al run | Alta | detectada por `actualizar-perfil-usuario.js` |
210
- | **Repetición de error** | Mismo tipo de error documentado ya en `APRENDIZAJES.md` | Alta | cruzar log con grep |
211
- | **Reintento manual** | Usuario vuelve a invocar el mismo agente con instrucciones ajustadas | Media | comparar `session_id` + `agente` consecutivos |
212
-
213
- ### Keywords de corrección (es-MX)
214
-
215
- Reutilizar la lista definida en `hooks/actualizar-perfil-usuario.js`:
216
-
217
- ```
218
- KEYWORDS_CORRECCION = [
219
- 'no así', 'no asi', 'mejor', 'en vez de', 'en lugar de',
220
- 'evita', 'evites', 'no uses', 'nunca uses', 'nunca hagas',
221
- 'siempre quiero', 'siempre usa', 'prefiero', 'prefiere',
222
- 'no me gusta', 'deja de',
223
- ]
224
- ```
225
-
226
- Si el mensaje del usuario inmediatamente posterior a un SubagentStop contiene
227
- ≥1 keyword de esta lista, **el último agente registrado hereda un punto de
228
- fricción** en el reporte del próximo `/swl:evolucionar`.
229
-
230
- ### Cómo usar el log al evolucionar
231
-
232
- Al invocar `auto-evolucion-swl` o `/swl:evolucionar <agente>`:
233
-
234
- 1. **Leer el log filtrado por agente:**
235
- ```bash
236
- grep "\"agente\":\"<nombre>\"" .planning/auto-evolution/agentes.jsonl | tail -50
237
- ```
238
-
239
- 2. **Cuantificar las 6 categorías** (fallo duro, run vacío, trivial recurrente,
240
- corrección, repetición, reintento).
241
-
242
- 3. **Priorizar la hipótesis de evolución** según la categoría dominante:
243
-
244
- | Categoría dominante | Hipótesis más probable |
245
- |---------------------|------------------------|
246
- | Fallo duro | Skills faltantes o instrucciones ambiguas del agente |
247
- | Corrección del usuario | Contradicción entre el comportamiento del agente y el perfil/instintos |
248
- | Repetición de error | Gap en `APRENDIZAJES.md` que no fue promovido a skill |
249
- | Trivial recurrente | El agente se invoca para trabajo que debería ir a uno más liviano (Haiku) |
250
- | Reintento manual | Prompts del agente con defaults malos; faltan preguntas de clarificación |
251
-
252
- 4. **Aplicar la escalera de adquisición** de capacidades (sección anterior)
253
- para decidir si el arreglo es un patch del skill, un skill nuevo, o un
254
- agente nuevo.
255
-
256
- ### Límites del parser
257
-
258
- - **No interpretar sentimiento** ("esto está mal" es ambiguo; requiere contexto).
259
- - **No evolucionar por 1 señal** sin importar la fuerza — mínimo 3 señales
260
- correlacionadas o 1 corrección explícita en CLAUDE.md.
261
- - **No modificar agentes con `nivelRiesgo: ALTO`** automáticamente — siempre
262
- requieren confirmación humana (ver CLAUDE.md regla de privilegio mínimo).
263
- - **No borrar entradas del log** — el log es append-only auditoría.
264
-
265
- ### Gotchas / Errores comunes no obvios
266
-
267
- - **Saltar niveles de la escalera de adquisición**: proponer crear un skill nuevo cuando la capacidad está en nivel 1 ("se resolvió una vez") produce skills frágiles que no se activan y workflows sin verificación. Causa: la presión por capturar el patrón rápido ignora que cada nivel exige un criterio medible para avanzar. Solución: identificar el nivel actual según la tabla, proponer avanzar un solo nivel, y si se salta, justificar explícitamente en la propuesta por qué no es optimismo injustificado.
268
- - **Evolucionar por 1 señal aislada**: aplicar un cambio tras detectar un solo fallo duro o una sola trivial recurrente produce churn sobre el artefacto sin evidencia real. Causa: el parser emite nudges por umbral cruzado, pero un nudge individual no prueba un patrón. Solución: requerir mínimo 3 señales correlacionadas del log o 1 corrección explícita en CLAUDE.md antes de redactar la propuesta; documentar ambas evidencias en el campo "Evidencia" de PROPUESTA-EVOLUCION.
269
- - **Auto-aplicar sobre agentes con `nivelRiesgo: ALTO`**: el ciclo automatizado puede intentar modificar agentes de alto riesgo si el gate de governance no se consulta primero, violando el principio de privilegio mínimo de CLAUDE.md. Causa: los cambios tipo PARCHE son auto-aplicables por default, pero esa regla aplica a skills — no a agentes de alto riesgo. Solución: antes de aplicar cualquier cambio, verificar el frontmatter del artefacto; si es agente con `nivelRiesgo: ALTO` o si el artefacto tiene `evolvable: false`, escalar a aprobación humana sin importar el tipo de bump.
270
- - **Interpretar sentimiento del usuario como señal de fricción**: capturar frases ambiguas ("esto está mal", "no me convence") como corrección atribuible al último agente produce evoluciones por ruido semántico. Causa: el parser reconoce solo keywords concretas de corrección; ampliar la lista por interpretación lleva a falsos positivos. Solución: usar exclusivamente la lista `KEYWORDS_CORRECCION` definida en `hooks/actualizar-perfil-usuario.js`; si el mensaje es ambiguo, no imputar fricción y esperar la siguiente señal.
271
-
272
- ### CHANGELOG del skill
273
-
274
- - **v1.1.0** (2026-04-18): añadido parser de señales de fricción y tabla de
275
- categorías. Cierra gap "skill autoevolutiva tras cada tarea" vs. Hermes.
276
- - **v1.0.0**: versión inicial del protocolo.
1
+ ---
2
+ name: auto-evolucion-protocolo
3
+ description: >
4
+ Protocolo de auto-evolución del sistema SWL. Cómo los agentes aprenden y se mejoran,
5
+ proponen cambios, versionado semántico de agentes, changelog, métricas de evolución,
6
+ governance de cambios, parser de señales de fricción y safety checks.
7
+ version: "1.1.1"
8
+ herramientasPermitidas: [Read, Bash, Grep]
9
+ evolvable: false # bloqueado por lista (skill de seguridad/privacidad)
10
+ exclusiones:
11
+ - "No cargar para evolución del código de aplicación del usuario (migración de APIs de frameworks, refactors de módulos propios) — para eso cargar el skill del framework correspondiente (`angular-moderno`, `react-optimizacion`, backend-*) o invocar `implementador-swl`."
12
+ - "No cargar para migraciones de schema de base de datos o datos en reposo — para migraciones de persistencia cargar `postgresql-experto` y usar `migrador-swl`."
13
+ - "No cargar para aplicar automáticamente cambios sobre skills o agentes con `evolvable: false` — estos artefactos requieren ADR explícito y decisión humana fuera del ciclo AGP."
14
+ - "No cargar para evoluciones de dependencias externas (bumps de versión, deprecación de librerías) — para eso cargar `dependencias-auditoria` + `deprecacion-migracion`."
15
+ ---
16
+ # Protocolo de Auto-Evolución del Sistema SWL
17
+
18
+ ## Cuándo NO cargar
19
+
20
+ - La evolución es sobre código de aplicación del usuario (API de un framework cambió, hay que actualizar componentes): cargar el skill del framework (`angular-moderno`, `react-optimizacion`, backend-*) o invocar `implementador-swl`. Este skill es para evolución de artefactos del sistema SWL (agentes, skills, reglas), no del producto.
21
+ - La tarea es migrar schemas de base de datos o datos en producción: cargar `postgresql-experto` y delegar a `migrador-swl`. La auto-evolución no cubre migraciones de persistencia — son irreversibles y requieren plan propio.
22
+ - El artefacto objetivo tiene `evolvable: false`: este skill NO se auto-aplica sobre artefactos bloqueados. Requiere ADR explícito y edición manual por decisión humana.
23
+ - La evolución es un bump de versión de dependencia externa (npm, pip): cargar `dependencias-auditoria` y `deprecacion-migracion`. Este skill cubre evolución de conocimiento interno del sistema, no del árbol de deps.
24
+
25
+ ## ¿Por qué auto-evolución?
26
+
27
+ El sistema SWL es una colección de agentes y skills que guían la implementación
28
+ de software. Con el tiempo, estos artefactos envejecen:
29
+ - Los frameworks cambian sus APIs.
30
+ - Los equipos descubren nuevos anti-patrones.
31
+ - Los errores recurrentes revelan gaps en los skills.
32
+ - Los workflows ineficientes se vuelven visibles a través de la práctica.
33
+
34
+ La auto-evolución es el proceso sistemático por el cual el sistema actualiza su propio
35
+ conocimiento de forma controlada, versionada y auditable.
36
+
37
+ ---
38
+
39
+ ## Anatomía de un Cambio Evolutivo
40
+
41
+ Todo cambio al sistema SWL pasa por este ciclo:
42
+
43
+ ```
44
+ Observación → Diagnóstico → Propuesta → Revisión → Aplicación → Verificación → Registro
45
+ ```
46
+
47
+ ### 1. Observación — ¿Qué triggerea un cambio?
48
+
49
+ | Trigger | Ejemplo | Prioridad |
50
+ |---------|---------|-----------|
51
+ | Error recurrente en producción | `MissingGreenlet` en SQLAlchemy aparece 3+ veces | ALTA |
52
+ | Nueva versión mayor de framework | Angular v20 cambia la Resource API | ALTA |
53
+ | Patrón nuevo identificado | `satisfies` operator mejora type safety | MEDIA |
54
+ | Deprecación de API | `*ngIf` eliminado en Angular v21 | ALTA |
55
+ | Feedback de desarrollador | "Este skill no cubre migrations con datos" | MEDIA |
56
+
57
+ ### 2. Diagnóstico — ¿Qué está desactualizado exactamente?
58
+
59
+ Documentar: fecha, observador, error recurrente, síntoma, causa raíz,
60
+ artefacto afectado (archivo + línea), severidad del gap.
61
+
62
+ ---
63
+
64
+ ## Versionado Semántico de Agentes y Skills
65
+
66
+ ```
67
+ MAYOR.MENOR.PARCHE
68
+
69
+ MAYOR: cambio que rompe compatibilidad backward con proyectos existentes
70
+ Requiere: aprobación de revisor humano
71
+
72
+ MENOR: nueva funcionalidad o cobertura de nuevos casos
73
+ Requiere: revisión del plan-checker
74
+
75
+ PARCHE: corrección de error, clarificación, ejemplo mejorado
76
+ Requiere: auto-aplicable por el verificador
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Protocolo de Propuesta de Cambio
82
+
83
+ Formato estándar:
84
+
85
+ ```markdown
86
+ # PROPUESTA-EVOLUCION-NNN
87
+
88
+ ## Metadatos
89
+ - **Fecha**: YYYY-MM-DD
90
+ - **Proponente**: agente
91
+ - **Tipo**: PARCHE | MENOR | MAYOR
92
+ - **Artefacto**: ruta/al/archivo
93
+ - **Urgencia**: Alta | Media | Baja
94
+
95
+ ## Problema Observado
96
+ Descripción del error o gap.
97
+
98
+ ## Evidencia
99
+ - PR/sesión donde se observó (mínimo 2 instancias)
100
+
101
+ ## Cambio Propuesto
102
+ Diff o descripción del cambio.
103
+
104
+ ## Impacto Estimado
105
+ Breaking changes, estimación de mejora.
106
+
107
+ ## Verificación Post-Cambio
108
+ Cómo verificar que el cambio resolvió el problema.
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Governance — Quién Puede Cambiar Qué
114
+
115
+ ```yaml
116
+ cambios_autonomos:
117
+ - tipo: PARCHE
118
+ condicion: "corrección de ejemplo de código erróneo"
119
+ - tipo: PARCHE
120
+ condicion: "agregar anti-patrón observado 3+ veces"
121
+
122
+ cambios_con_revision:
123
+ - tipo: MENOR
124
+ condicion: "nueva sección temática en un skill"
125
+ aprobadores: ["planificador"]
126
+ - tipo: MENOR
127
+ condicion: "nuevo skill creado desde cero"
128
+ aprobadores: ["planificador", "revisor"]
129
+
130
+ cambios_con_aprobacion_humana:
131
+ - tipo: MAYOR
132
+ condicion: "cambio de convención que afecta código existente"
133
+ - tipo: cualquiera
134
+ condicion: "modificar agentes (no skills)"
135
+ - tipo: cualquiera
136
+ condicion: "cambiar reglas en CLAUDE.md"
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Safety Checks — Antes de Aplicar un Cambio
142
+
143
+ Todo agente que proponga modificar un artefacto del sistema DEBE verificar:
144
+
145
+ 1. **Consistencia**: Un PARCHE no modifica más de 50 líneas
146
+ 2. **Scope**: Modificar agentes requiere aprobación humana
147
+ 3. **Evidencia**: Mínimo 2 instancias de evidencia para un cambio
148
+ 4. **Reversibilidad**: Todo cambio tiene un plan de rollback documentado
149
+ 5. **No contradicciones**: El cambio no contradice otros skills o reglas
150
+
151
+ ---
152
+
153
+ ## Formato de Commit Evolutivo
154
+
155
+ ```
156
+ evolucion(nombre-artefacto): descripción [TIPO v.anterior→v.nueva]
157
+ ```
158
+
159
+ Rollback: `git revert <hash-del-commit-evolutivo>`
160
+
161
+ ---
162
+
163
+ ## Escalera de Adquisición de Capacidades
164
+
165
+ Cuando se identifica un patrón útil, la tentación es saltar de "lo resolví una vez"
166
+ a "crear un skill". Pero la maduración tiene niveles intermedios. Saltar niveles
167
+ produce skills frágiles que no se activan, workflows sin verificación y automatizaciones
168
+ que fallan silenciosamente.
169
+
170
+ | Nivel | Nombre | Qué implica | Criterio para avanzar al siguiente |
171
+ |-------|--------|-------------|-----------------------------------|
172
+ | 1 | **Solución ad hoc** | Se resolvió el problema una vez, en una sesión | El mismo problema aparece en otra sesión |
173
+ | 2 | **Repetible** | Pasos documentados en ESTADO.md o DECISIONS.md | Se ejecutó 3+ veces con éxito siguiendo los pasos |
174
+ | 3 | **Skill** | Codificado en SKILL.md con gotchas y restricciones | El skill se activa correctamente y cambia comportamiento (3-arm test) |
175
+ | 4 | **Workflow** | Orquestación multi-agente con delegación definida | Los agentes completan el flujo sin intervención manual en 70%+ |
176
+ | 5 | **Harness determinista** | Scripts en `scripts/` que validan output automáticamente | La validación detecta 90%+ de los errores conocidos |
177
+ | 6 | **Cobertura evaluativa** | Métricas pass@k registradas en EVALUACION.md | pass@1 ≥ objetivo del tipo de agente durante 10+ ejecuciones |
178
+ | 7 | **Automatizado** | Hook o cron que dispara la capacidad sin invocación manual | El hook se ejecuta sin errores en 95%+ de las veces |
179
+ | 8 | **Monitoreado** | Métricas observables: latencia, tasa de error, drift | Dashboards activos y alertas configuradas |
180
+ | 9 | **Autónomo con evidencia** | El sistema decide cuándo usar la capacidad basado en métricas, no en heurísticas | Decisiones autónomas acertadas en 85%+ |
181
+ | 10 | **Empaquetado** | Reutilizable entre proyectos como plugin o módulo independiente | Funciona en 2+ proyectos distintos sin modificación |
182
+
183
+ **Cómo usar**: Al proponer una evolución, identificar en qué nivel está la capacidad
184
+ actual y proponer avanzar **un solo nivel**. Saltar niveles requiere justificación
185
+ explícita en la propuesta de evolución — la mayoría de las veces es síntoma de
186
+ optimismo injustificado.
187
+
188
+ Para métricas de evolución, plantilla de changelog, proceso de retroalimentación
189
+ del verificador y checklist completo de revisión,
190
+ ver [recursos/referencia-completa.md](recursos/referencia-completa.md).
191
+
192
+ ---
193
+
194
+ ## Parser de señales de fricción (v1.1)
195
+
196
+ El hook `hooks/lib/etapa-auto-evolucion.js` (SubagentStop) alimenta el log
197
+ `.planning/auto-evolution/agentes.jsonl` y emite *nudges* hacia
198
+ `auto-evolucion-swl` cuando detecta umbrales cruzados. Este skill define
199
+ **qué cuenta como fricción** para que el agente tenga criterio uniforme al
200
+ interpretar el log.
201
+
202
+ ### Categorías de fricción
203
+
204
+ | Categoría | Fuente | Fuerza | Contraseña en el log |
205
+ |-----------|--------|--------|----------------------|
206
+ | **Fallo duro** | Subagente terminó con `is_error:true` o excepción | Alta | `status: "failed"` |
207
+ | **Run vacío** | Subagente terminó sin producir cambios útiles (0 Edit/Write) | Media | `toolCalls < 3` en agente de implementación |
208
+ | **Trivial recurrente** | 10+ runs triviales (≤5 tool calls) del mismo agente | Baja | `trivial: true` |
209
+ | **Corrección del usuario** | Mensaje del usuario con keywords de corrección en el turno posterior al run | Alta | detectada por `etapa-perfil-usuario.js` |
210
+ | **Repetición de error** | Mismo tipo de error documentado ya en `APRENDIZAJES.md` | Alta | cruzar log con grep |
211
+ | **Reintento manual** | Usuario vuelve a invocar el mismo agente con instrucciones ajustadas | Media | comparar `session_id` + `agente` consecutivos |
212
+
213
+ ### Keywords de corrección (es-MX)
214
+
215
+ Reutilizar la lista definida en `hooks/lib/etapa-perfil-usuario.js`:
216
+
217
+ ```
218
+ KEYWORDS_CORRECCION = [
219
+ 'no así', 'no asi', 'mejor', 'en vez de', 'en lugar de',
220
+ 'evita', 'evites', 'no uses', 'nunca uses', 'nunca hagas',
221
+ 'siempre quiero', 'siempre usa', 'prefiero', 'prefiere',
222
+ 'no me gusta', 'deja de',
223
+ ]
224
+ ```
225
+
226
+ Si el mensaje del usuario inmediatamente posterior a un SubagentStop contiene
227
+ ≥1 keyword de esta lista, **el último agente registrado hereda un punto de
228
+ fricción** en el reporte del próximo `/swl:evolucionar`.
229
+
230
+ ### Cómo usar el log al evolucionar
231
+
232
+ Al invocar `auto-evolucion-swl` o `/swl:evolucionar <agente>`:
233
+
234
+ 1. **Leer el log filtrado por agente:**
235
+ ```bash
236
+ grep "\"agente\":\"<nombre>\"" .planning/auto-evolution/agentes.jsonl | tail -50
237
+ ```
238
+
239
+ 2. **Cuantificar las 6 categorías** (fallo duro, run vacío, trivial recurrente,
240
+ corrección, repetición, reintento).
241
+
242
+ 3. **Priorizar la hipótesis de evolución** según la categoría dominante:
243
+
244
+ | Categoría dominante | Hipótesis más probable |
245
+ |---------------------|------------------------|
246
+ | Fallo duro | Skills faltantes o instrucciones ambiguas del agente |
247
+ | Corrección del usuario | Contradicción entre el comportamiento del agente y el perfil/instintos |
248
+ | Repetición de error | Gap en `APRENDIZAJES.md` que no fue promovido a skill |
249
+ | Trivial recurrente | El agente se invoca para trabajo que debería ir a uno más liviano (Haiku) |
250
+ | Reintento manual | Prompts del agente con defaults malos; faltan preguntas de clarificación |
251
+
252
+ 4. **Aplicar la escalera de adquisición** de capacidades (sección anterior)
253
+ para decidir si el arreglo es un patch del skill, un skill nuevo, o un
254
+ agente nuevo.
255
+
256
+ ### Límites del parser
257
+
258
+ - **No interpretar sentimiento** ("esto está mal" es ambiguo; requiere contexto).
259
+ - **No evolucionar por 1 señal** sin importar la fuerza — mínimo 3 señales
260
+ correlacionadas o 1 corrección explícita en CLAUDE.md.
261
+ - **No modificar agentes con `nivelRiesgo: ALTO`** automáticamente — siempre
262
+ requieren confirmación humana (ver CLAUDE.md regla de privilegio mínimo).
263
+ - **No borrar entradas del log** — el log es append-only auditoría.
264
+
265
+ ### Gotchas / Errores comunes no obvios
266
+
267
+ - **Saltar niveles de la escalera de adquisición**: proponer crear un skill nuevo cuando la capacidad está en nivel 1 ("se resolvió una vez") produce skills frágiles que no se activan y workflows sin verificación. Causa: la presión por capturar el patrón rápido ignora que cada nivel exige un criterio medible para avanzar. Solución: identificar el nivel actual según la tabla, proponer avanzar un solo nivel, y si se salta, justificar explícitamente en la propuesta por qué no es optimismo injustificado.
268
+ - **Evolucionar por 1 señal aislada**: aplicar un cambio tras detectar un solo fallo duro o una sola trivial recurrente produce churn sobre el artefacto sin evidencia real. Causa: el parser emite nudges por umbral cruzado, pero un nudge individual no prueba un patrón. Solución: requerir mínimo 3 señales correlacionadas del log o 1 corrección explícita en CLAUDE.md antes de redactar la propuesta; documentar ambas evidencias en el campo "Evidencia" de PROPUESTA-EVOLUCION.
269
+ - **Auto-aplicar sobre agentes con `nivelRiesgo: ALTO`**: el ciclo automatizado puede intentar modificar agentes de alto riesgo si el gate de governance no se consulta primero, violando el principio de privilegio mínimo de CLAUDE.md. Causa: los cambios tipo PARCHE son auto-aplicables por default, pero esa regla aplica a skills — no a agentes de alto riesgo. Solución: antes de aplicar cualquier cambio, verificar el frontmatter del artefacto; si es agente con `nivelRiesgo: ALTO` o si el artefacto tiene `evolvable: false`, escalar a aprobación humana sin importar el tipo de bump.
270
+ - **Interpretar sentimiento del usuario como señal de fricción**: capturar frases ambiguas ("esto está mal", "no me convence") como corrección atribuible al último agente produce evoluciones por ruido semántico. Causa: el parser reconoce solo keywords concretas de corrección; ampliar la lista por interpretación lleva a falsos positivos. Solución: usar exclusivamente la lista `KEYWORDS_CORRECCION` definida en `hooks/lib/etapa-perfil-usuario.js`; si el mensaje es ambiguo, no imputar fricción y esperar la siguiente señal.
271
+
272
+ ### CHANGELOG del skill
273
+
274
+ - **v1.1.0** (2026-04-18): añadido parser de señales de fricción y tabla de
275
+ categorías. Cierra gap "skill autoevolutiva tras cada tarea" vs. Hermes.
276
+ - **v1.0.0**: versión inicial del protocolo.
@@ -26,7 +26,7 @@ evolvable: true # default para skill estandar
26
26
  - Tras agregar fuentes de búsqueda nuevas (ej. evals, instintos globales).
27
27
  - Antes de un release que toque la capa de memoria, para confirmar que no
28
28
  hay regresión en R@5.
29
- - Como parte opcional de `/swl:salud` cuando `SWL_BENCHMARK_MEMORIA=1`.
29
+ - Como parte opcional de `/swl:status salud` cuando `SWL_BENCHMARK_MEMORIA=1`.
30
30
 
31
31
  ---
32
32