@saulwade/swl-ses 1.8.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.
- package/CLAUDE.md +8 -8
- package/README.md +13 -13
- package/agentes/accesibilidad-wcag-swl.md +3 -3
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/disenador-ui-swl.md +6 -5
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +4 -4
- package/agentes/frontend-swl.md +6 -6
- package/agentes/investigador-ux-swl.md +5 -5
- package/agentes/orquestador-swl.md +96 -8
- package/agentes/perfilador-usuario-swl.md +308 -308
- package/agentes/producto-prd-swl.md +1 -1
- package/agentes/red-team-swl.md +218 -218
- package/agentes/revisor-codigo-swl.md +34 -10
- package/agentes/revisor-seguridad-swl.md +7 -0
- package/agentes/tdd-qa-swl.md +39 -2
- package/comandos/swl/actualizar.md +1 -1
- package/comandos/swl/aprender.md +2 -2
- package/comandos/swl/aprobar-plan.md +152 -0
- package/comandos/swl/autoresearch.md +102 -6
- package/comandos/swl/ayuda.md +3 -3
- package/comandos/swl/discutir-fase.md +20 -2
- package/comandos/swl/ejecutar-fase.md +53 -6
- package/comandos/swl/evolucionar.md +1 -1
- package/comandos/swl/inbox.md +1 -1
- package/comandos/swl/instalar.md +1 -1
- package/comandos/swl/nemesis.md +42 -1
- package/comandos/swl/planear-fase.md +25 -1
- package/comandos/swl/plugins.md +1 -1
- package/comandos/swl/predecir.md +139 -0
- package/comandos/swl/release.md +1 -1
- package/comandos/swl/status.md +279 -0
- package/comandos/swl/verificar.md +75 -7
- package/habilidades/ai-runtime-security/SKILL.md +1 -1
- package/habilidades/angular-moderno/SKILL.md +44 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/autoresearch/SKILL.md +15 -1
- package/habilidades/benchmark-memoria/SKILL.md +1 -1
- package/habilidades/calidad-contract-testing/SKILL.md +165 -0
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -0
- package/habilidades/changelog-generator/SKILL.md +9 -2
- package/habilidades/changelog-generator/scripts/parse-commits.js +12 -1
- package/habilidades/checklist-seguridad/SKILL.md +29 -1
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -0
- package/habilidades/css-moderno/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/SKILL.md +1 -1
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/ejecutar-fase/SKILL.md +64 -14
- package/habilidades/estructura-proyecto-claude/SKILL.md +17 -14
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +34 -23
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +70 -53
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -77
- package/habilidades/extractor-de-aprendizajes/SKILL.md +9 -5
- package/habilidades/fastapi-experto/SKILL.md +56 -5
- package/habilidades/harness-claude-code/SKILL.md +10 -7
- package/{reglas/harness-claude-code.md → habilidades/harness-claude-code/recursos/disciplina-harness-regla.md} +2 -2
- package/habilidades/instalar-sistema/SKILL.md +3 -3
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +1 -1
- package/habilidades/patrones-python/SKILL.md +8 -5
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/planear-fase/SKILL.md +25 -4
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +1 -1
- package/habilidades/proceso-ddia-streaming/SKILL.md +4 -4
- package/habilidades/proceso-debate-adversarial/SKILL.md +164 -0
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -0
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -0
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -0
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -0
- package/habilidades/protocolo-revision-swl/SKILL.md +1 -1
- package/habilidades/seguridad-skills-ia/SKILL.md +1 -1
- package/habilidades/swl-claudemd/SKILL.md +50 -210
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -0
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -0
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -0
- package/habilidades/swl-dashboard/SKILL.md +9 -9
- package/habilidades/swl-revisar-impacto/SKILL.md +1 -1
- package/habilidades/tdd-workflow/SKILL.md +58 -5
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +3 -3
- package/hooks/calidad-pre-commit.js +340 -3
- package/hooks/ciclo-evolucion-subagente.js +26 -0
- package/hooks/ciclo-evolucion.js +26 -0
- package/hooks/contexto-iteracion.js +144 -0
- package/hooks/extraccion-aprendizajes.js +13 -0
- package/hooks/lib/ciclo-evolucion.js +47 -0
- package/hooks/{auto-evolucion.js → lib/etapa-auto-evolucion.js} +701 -700
- package/hooks/{metricas-evolucion.js → lib/etapa-metricas.js} +388 -376
- package/hooks/{actualizar-perfil-usuario.js → lib/etapa-perfil-usuario.js} +376 -364
- package/hooks/lib/evolution-tracker.js +24 -3
- package/hooks/lib/loop-telemetry.js +321 -0
- package/hooks/notificacion-telegram.js +11 -3
- package/hooks/spec-gate.js +211 -0
- package/hooks/tdd-gate.js +241 -0
- package/hooks/validar-intent-spec.js +30 -10
- package/llms.txt +29 -0
- package/manifiestos/hooks-config.json +36 -18
- package/manifiestos/modulos.json +23 -14
- package/manifiestos/skills-lock.json +100 -72
- package/package.json +4 -3
- package/plugin.json +9 -10
- package/reglas/accesibilidad.md +10 -0
- package/reglas/api-diseno.md +9 -0
- package/reglas/arquitectura.evolved.json +7 -0
- package/reglas/arquitectura.md +65 -0
- package/reglas/auditorias-documentales-estructurales.md +7 -0
- package/reglas/cloud-infra.md +8 -0
- package/reglas/fragmentos-compartidos.md +5 -0
- package/reglas/gobernanza.md +4 -4
- package/reglas/hooks.md +6 -0
- package/reglas/intent-engineering.md +4 -0
- package/reglas/markitdown.md +8 -0
- package/reglas/memoria-consolidada.md +1 -1
- package/reglas/patrones.md +6 -0
- package/reglas/registro-componentes-nuevos.md +10 -1
- package/reglas/seguridad-agentes.md +1 -1
- package/reglas/seguridad.evolved.json +7 -0
- package/reglas/seguridad.md +144 -0
- package/reglas/skills-estandar.md +6 -0
- package/reglas/testing.md +7 -0
- package/reglas/tests-cleanup.md +4 -0
- package/reglas/usar-sistema-swl.md +1 -1
- package/scripts/generar-inventario.js +64 -1
- package/scripts/instalador.js +32 -2
- package/scripts/lib/gitignore-manifest.js +29 -1
- package/scripts/lib/plan-lock.js +275 -0
- package/scripts/migrar-fase-dominio.js +0 -1
- package/scripts/smoke-test.js +24 -2
- package/scripts/verificar-trazabilidad.js +292 -0
- package/agentes/ux-disenador-swl.md +0 -503
- package/comandos/swl/dashboard.md +0 -146
- package/comandos/swl/evolucion-estado.md +0 -191
- package/comandos/swl/metricas.md +0 -342
- package/comandos/swl/salud.md +0 -481
- 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 `
|
|
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/
|
|
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/
|
|
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.
|
|
@@ -7,7 +7,9 @@ description: >
|
|
|
7
7
|
y mejorar skills hasta 95%+ de score. Cargar cuando se quiera mejorar la calidad
|
|
8
8
|
de un skill o agente existente de forma medible y automatizada, o cuando
|
|
9
9
|
auto-evolucion-swl necesite una metodología de mejora iterativa con scoring.
|
|
10
|
-
|
|
10
|
+
La disciplina del loop (mutación atómica, keep/revert, condiciones de salida)
|
|
11
|
+
aplica también al modo --codigo de /swl:autoresearch sobre código del usuario.
|
|
12
|
+
version: "1.1.0"
|
|
11
13
|
herramientasPermitidas: [Read, Bash]
|
|
12
14
|
exclusiones:
|
|
13
15
|
- "No cargar para mejorar el output de una sola sesión; el loop de autoresearch opera sobre el SKILL.md del skill, no sobre outputs puntuales."
|
|
@@ -210,6 +212,18 @@ Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
|
|
|
210
212
|
| 3 reverts consecutivos | **Estancamiento** — cambiar estrategia de mutación |
|
|
211
213
|
| Score baja 2 rounds seguidos | **Degradación** — revertir al mejor score alcanzado |
|
|
212
214
|
|
|
215
|
+
## Variante: loop sobre código del usuario (modo `--codigo`)
|
|
216
|
+
|
|
217
|
+
La misma disciplina aplica cuando el objetivo es código del proyecto en lugar
|
|
218
|
+
de un SKILL.md: el checklist se sustituye por un **comando Verify numérico**
|
|
219
|
+
(mutation score, cobertura, conteo de errores, latencia) y un **Guard** de
|
|
220
|
+
regresión (la suite). El protocolo completo del modo vive en
|
|
221
|
+
`comandos/swl/autoresearch.md § Modo --codigo`; la telemetría de iteraciones
|
|
222
|
+
en `hooks/lib/loop-telemetry.js` (corridas en `.planning/loops/`); las
|
|
223
|
+
métricas de mutación en `Skill("calidad-mutation-testing")`. Las reglas
|
|
224
|
+
invariantes son las mismas: UNA mutación por round, revert sin excepciones si
|
|
225
|
+
la métrica no mejora, salida por plateau.
|
|
226
|
+
|
|
213
227
|
## Integración con auto-evolución SWL
|
|
214
228
|
|
|
215
229
|
```
|
|
@@ -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
|
|