@saulwade/swl-ses 2.5.3 → 2.6.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 (181) hide show
  1. package/CLAUDE.md +192 -192
  2. package/README.md +600 -600
  3. package/agentes/auto-evolucion-swl.md +27 -3
  4. package/bin/swl-ses.js +32 -7
  5. package/comandos/swl/actualizar.md +174 -174
  6. package/comandos/swl/adoptar-proyecto.md +265 -265
  7. package/comandos/swl/aprender.md +836 -823
  8. package/comandos/swl/aprobar-plan.md +146 -146
  9. package/comandos/swl/auditar-deps.md +134 -134
  10. package/comandos/swl/autoresearch.md +264 -264
  11. package/comandos/swl/ayuda.md +224 -224
  12. package/comandos/swl/brainstorm.md +51 -51
  13. package/comandos/swl/briefing.md +119 -119
  14. package/comandos/swl/checkpoint.md +325 -325
  15. package/comandos/swl/claudemd.md +234 -234
  16. package/comandos/swl/compactar.md +310 -310
  17. package/comandos/swl/configurar-ci.md +235 -235
  18. package/comandos/swl/contexto.md +110 -110
  19. package/comandos/swl/contribuir.md +233 -233
  20. package/comandos/swl/crear-skill.md +292 -292
  21. package/comandos/swl/cron.md +194 -194
  22. package/comandos/swl/deuda-codigo.md +97 -97
  23. package/comandos/swl/discutir-fase.md +169 -169
  24. package/comandos/swl/ejecutar-fase.md +233 -233
  25. package/comandos/swl/evaluar-skill.md +520 -505
  26. package/comandos/swl/evolucion-continua.md +73 -0
  27. package/comandos/swl/evolucionar.md +267 -254
  28. package/comandos/swl/exportar-vault.md +583 -583
  29. package/comandos/swl/fix.md +118 -118
  30. package/comandos/swl/gateway.md +158 -158
  31. package/comandos/swl/inbox.md +116 -116
  32. package/comandos/swl/instalar.md +220 -220
  33. package/comandos/swl/instintos.md +86 -86
  34. package/comandos/swl/mapear-codebase.md +312 -312
  35. package/comandos/swl/mcp-status.md +175 -175
  36. package/comandos/swl/modelo.md +100 -100
  37. package/comandos/swl/nemesis.md +433 -433
  38. package/comandos/swl/notificaciones.md +299 -299
  39. package/comandos/swl/nuevo-proyecto.md +251 -251
  40. package/comandos/swl/planear-fase.md +263 -263
  41. package/comandos/swl/plugins.md +256 -256
  42. package/comandos/swl/predecir.md +169 -169
  43. package/comandos/swl/reflect-skills.md +125 -125
  44. package/comandos/swl/release.md +450 -450
  45. package/comandos/swl/revisar-impacto.md +201 -201
  46. package/comandos/swl/revisar.md +330 -330
  47. package/comandos/swl/seguridad.md +189 -189
  48. package/comandos/swl/sesiones.md +200 -200
  49. package/comandos/swl/skill-search.md +113 -113
  50. package/comandos/swl/status.md +343 -343
  51. package/comandos/swl/verificar.md +817 -817
  52. package/comandos/swl/wiki.md +620 -620
  53. package/gateway/cron/jobs.example.json +12 -0
  54. package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -276
  55. package/habilidades/autoresearch/SKILL.md +3 -2
  56. package/habilidades/benchmark-memoria/SKILL.md +7 -7
  57. package/habilidades/changelog-generator/SKILL.md +174 -174
  58. package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
  59. package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
  60. package/habilidades/context-builder/SKILL.md +4 -0
  61. package/habilidades/doubt-driven-review/SKILL.md +207 -191
  62. package/habilidades/drift-detection/SKILL.md +6 -1
  63. package/habilidades/ejecutar-fase/SKILL.md +6 -6
  64. package/habilidades/eval-framework/SKILL.md +8 -3
  65. package/habilidades/harness-claude-code/SKILL.md +312 -308
  66. package/habilidades/infra-github-actions/SKILL.md +4 -3
  67. package/habilidades/instalar-sistema/SKILL.md +227 -223
  68. package/habilidades/memoria-busqueda/SKILL.md +31 -39
  69. package/habilidades/planear-fase/SKILL.md +358 -350
  70. package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
  71. package/habilidades/swl-claudemd/SKILL.md +6 -7
  72. package/habilidades/swl-dashboard/SKILL.md +11 -43
  73. package/habilidades/tdd-workflow/SKILL.md +749 -744
  74. package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
  75. package/hooks/agente-lifecycle.js +2 -1
  76. package/hooks/aiisms-detector.js +13 -4
  77. package/hooks/audit-trail.js +2 -1
  78. package/hooks/auto-consolidacion.js +2 -1
  79. package/hooks/captura-acciones-post.js +2 -1
  80. package/hooks/captura-acciones-session.js +2 -1
  81. package/hooks/captura-feedback-usuario.js +3 -2
  82. package/hooks/claudemd-bloat-detector.js +12 -3
  83. package/hooks/claudemd-duplicacion-detector.js +13 -3
  84. package/hooks/contexto-iteracion.js +2 -1
  85. package/hooks/degradacion-instintos.js +2 -1
  86. package/hooks/extraccion-aprendizajes.js +109 -15
  87. package/hooks/grafo-contexto.js +2 -1
  88. package/hooks/guardrail-modelo.js +2 -1
  89. package/hooks/inbox-aviso.js +2 -1
  90. package/hooks/inyeccion-contexto.js +2 -1
  91. package/hooks/lib/agent-matcher.js +2 -1
  92. package/hooks/lib/agent-routing.js +2 -1
  93. package/hooks/lib/autonomia.js +5 -3
  94. package/hooks/lib/captura-acciones.js +2 -1
  95. package/hooks/lib/consolidation-lock.js +21 -10
  96. package/hooks/lib/etapa-auto-evolucion.js +10 -4
  97. package/hooks/lib/etapa-metricas.js +2 -1
  98. package/hooks/lib/etapa-perfil-usuario.js +20 -4
  99. package/hooks/lib/evolution-tracker.js +2 -1
  100. package/hooks/lib/gateway-notify.js +193 -179
  101. package/hooks/lib/loop-telemetry.js +5 -4
  102. package/hooks/lib/mcp-health.js +2 -1
  103. package/hooks/lib/memory-search.js +4 -0
  104. package/hooks/lib/merkle-audit.js +58 -6
  105. package/hooks/lib/nudge-tracker.js +2 -1
  106. package/hooks/lib/otlp-exporter.js +2 -1
  107. package/hooks/lib/propose-step.js +3 -2
  108. package/hooks/lib/raiz-proyecto.js +102 -0
  109. package/hooks/lib/run-log.js +2 -1
  110. package/hooks/lib/singleton-guard.js +218 -27
  111. package/hooks/lib/telegram-cliente.js +17 -8
  112. package/hooks/preservar-estado-pre-compact.js +2 -1
  113. package/hooks/proteccion-rutas.js +59 -3
  114. package/hooks/registro-turnos.js +2 -1
  115. package/hooks/resumen-sesion.js +2 -1
  116. package/hooks/risk-scoring.js +2 -1
  117. package/hooks/rotar-audit-auto.js +46 -20
  118. package/hooks/session-briefing.js +127 -1
  119. package/hooks/spec-gate.js +2 -1
  120. package/hooks/sugerir-contribuir.js +6 -3
  121. package/hooks/sugerir-regenerar-inventario.js +3 -2
  122. package/hooks/tdd-gate.js +2 -1
  123. package/hooks/telemetria-agentes.js +2 -1
  124. package/hooks/telemetria-skill-routing.js +2 -1
  125. package/hooks/tracking-costos.js +4 -3
  126. package/hooks/validar-formato-post-subagente.js +2 -1
  127. package/hooks/validar-intent-spec.js +2 -1
  128. package/hooks/validar-memoria-hook.js +13 -3
  129. package/hooks/validar-planning-paths.js +2 -1
  130. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
  131. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
  132. package/instintos/perfil-usuario.yaml +506 -3
  133. package/instintos/proyecto.yaml +78 -0
  134. package/llms.txt +2 -2
  135. package/manifiestos/canonical-hashes.json +335 -3
  136. package/manifiestos/modulos.json +19 -14
  137. package/manifiestos/planning-paths.json +1 -0
  138. package/manifiestos/skills-lock.json +50 -50
  139. package/package.json +2 -3
  140. package/plugin.json +2 -2
  141. package/scripts/actualizar.js +3 -0
  142. package/scripts/auditar-clases-conocidas.js +32 -4
  143. package/scripts/benchmark-memoria.js +1 -0
  144. package/scripts/cli/autonomia.js +23 -0
  145. package/scripts/cli/benchmark-memoria.js +37 -0
  146. package/scripts/cli/ciclo-autonomo.js +73 -0
  147. package/scripts/cli/ciclo-fase-b.js +102 -0
  148. package/scripts/cli/guardrail-metrics.js +39 -0
  149. package/scripts/cli/loop-telemetry.js +4 -2
  150. package/scripts/cli/memoria-search.js +69 -0
  151. package/scripts/cli/nudge-accionar.js +39 -0
  152. package/scripts/cli/run-eval.js +38 -0
  153. package/scripts/cli/run-skill-evals.js +13 -2
  154. package/scripts/derivar-feature-list.js +15 -14
  155. package/scripts/desinstalar.js +11 -0
  156. package/scripts/doctor.js +24 -10
  157. package/scripts/instalador.js +85 -7
  158. package/scripts/lib/activar-hooks-proyecto.js +12 -0
  159. package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
  160. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
  161. package/scripts/lib/ciclo-autonomo/config.js +165 -0
  162. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
  163. package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
  164. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
  165. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
  166. package/scripts/lib/ciclo-autonomo/index.js +301 -0
  167. package/scripts/lib/ciclo-autonomo/lock.js +124 -0
  168. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
  169. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
  170. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
  171. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
  172. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
  173. package/scripts/lib/estado.js +9 -0
  174. package/scripts/lib/gitignore-manifest.js +8 -1
  175. package/scripts/lib/hooks-settings.js +45 -0
  176. package/scripts/rotar-audit-logs.js +48 -2
  177. package/scripts/run-eval.js +1 -0
  178. package/scripts/run-skill-evals.js +287 -8
  179. package/scripts/smoke-test.js +16 -8
  180. package/scripts/tui/pantallas/install-wizard.js +403 -347
  181. package/scripts/validar.js +40 -1
@@ -1,264 +1,264 @@
1
- ---
2
- name: swl:autoresearch
3
- description: Ejecuta el loop de auto-mejora iterativa Autoresearch sobre un skill, un agente, o (modo --codigo) sobre código del proyecto contra una métrica arbitraria. Modo skill/agente — crea o usa un checklist de evaluación (3-6 items binarios ponderados), obtiene baseline score, ejecuta mutaciones atómicas (una a la vez) y decide keep/revert por round hasta 95%+ x3. Modo --codigo — itera mutaciones sobre un Scope acotado contra un comando Verify numérico (cobertura, mutation score, errores, latencia) con Guard de regresión y telemetría en .planning/loops/. Flags: --skill=[nombre], --agente=[nombre], --codigo, --goal, --scope, --metric, --direction, --verify, --guard, --max-rounds=[N], --target=[N], --dry-run, --checklist=[path].
4
- allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
5
- ---
6
-
7
- # /swl:autoresearch — Loop de auto-mejora iterativa de skills
8
-
9
- Eres el motor de Autoresearch del sistema SWL. Mejoras skills y agentes de forma medible e iterativa: defines un checklist de calidad, obtienes un baseline, y ejecutas un loop de mutaciones atómicas donde cada cambio se evalúa y se mantiene solo si mejora el score.
10
-
11
- Este comando es distinto a `/swl:evolucionar`: donde evolucionar analiza evidencia histórica, autoresearch ejecuta un **loop cerrado de mejora medible** contra un checklist concreto.
12
-
13
- ## Cuándo usar este comando
14
-
15
- - Cuando un skill produce outputs de baja calidad de forma consistente
16
- - Cuando se quiere elevar la calidad de un skill antes de una release
17
- - Cuando `auto-evolucion-swl` identifica un candidato para mejora iterativa
18
- - Después de crear un skill nuevo para calibrarlo contra criterios de calidad
19
-
20
- ## Flags soportados
21
-
22
- ```
23
- --skill=[nombre] Skill a mejorar (busca en habilidades/[nombre]/SKILL.md)
24
- --agente=[nombre] Agente a mejorar (busca en agentes/[nombre].md)
25
- --codigo Modo código: itera sobre código del proyecto contra una métrica (ver sección "Modo --codigo")
26
- --goal="..." (--codigo) Meta textual del loop
27
- --scope="glob" (--codigo) Archivos que el loop PUEDE modificar (glob acotado)
28
- --metric="..." (--codigo) Qué mide la métrica (ej: "mutation score de src/pagos")
29
- --direction=[dir] (--codigo) higher_is_better | lower_is_better
30
- --verify="cmd" (--codigo) Comando shell cuya salida contiene el número de la métrica
31
- --guard="cmd" (--codigo) Comando que debe pasar (exit 0) para aceptar una mutación
32
- --max-rounds=[N] Máximo de iteraciones del loop (default: 10 skill/agente, 15 código)
33
- --target=[N] Score objetivo (default: 95% en skills; en código lo define el usuario)
34
- --dry-run Analizar y derivar configuración sin ejecutar mutaciones
35
- --checklist=[path] Ruta a checklist existente (solo modo skill/agente)
36
- ```
37
-
38
- **Nota**: Se debe pasar `--skill`, `--agente` o `--codigo` (excluyentes). Si no se pasa ninguno, preguntar al usuario.
39
-
40
- ## Paso 0 — Parseo de flags y carga de habilidades
41
-
42
- Lee los flags. Determina alcance y configuración.
43
-
44
- Carga obligatoria:
45
- ```
46
- Skill("autoresearch")
47
- ```
48
-
49
- El skill define TODO el protocolo: el loop de mutación (pasos 1-5), tipos de mutación con riesgos, fórmula de priorización, condiciones de salida, umbrales de score, formato de checklist, formato de reporte por iteración, anti-patrones y la integración con auto-evolución SWL.
50
-
51
- Reporta configuración:
52
- ```
53
- === Autoresearch — Configuración ===
54
- Objetivo: [skill/agente] [nombre]
55
- Max rounds: [N]
56
- Target score: [N]%
57
- Modo: [ejecutar | dry-run]
58
- Checklist: [existente: path | por crear]
59
- ```
60
-
61
- ## Paso 1 — Lectura del artefacto objetivo
62
-
63
- Lee el skill o agente completo. Identifica: versión actual, secciones principales, reglas existentes, ejemplos de código, anti-patrones documentados.
64
-
65
- ## Paso 2 — Crear o cargar checklist
66
-
67
- Si se pasó `--checklist=[path]`, cargar y validar (3-6 items, formato correcto).
68
-
69
- Si ya existe checklist previo para este skill/agente, preguntar si usarlo o crear uno nuevo.
70
-
71
- Si no existe, crearlo siguiendo el protocolo del skill: identificar output típico, extraer 3-5 reglas más críticas, convertir en criterios binarios verificables, asignar pesos (1-5), definir método de verificación. Presentar al usuario para aprobación antes de continuar.
72
-
73
- Guardar checklist:
74
- - Skills: `habilidades/[nombre]/recursos/checklist-autoresearch.md`
75
- - Agentes: `.planning/checklists/[nombre]-checklist.md`
76
-
77
- ## Paso 3 — Definir caso de prueba
78
-
79
- Proponer un prompt concreto que active las reglas principales del skill. Debe ser representativo, reproducible y concreto. Pedir aprobación al usuario.
80
-
81
- ## Paso 4 — Obtener baseline score
82
-
83
- Ejecutar el skill con el caso de prueba, evaluar contra cada item del checklist, calcular score ponderado usando el script:
84
-
85
- ```bash
86
- node habilidades/autoresearch/scripts/calcular-score.js '[JSON con items evaluados]'
87
- ```
88
-
89
- Si `--dry-run`, termina aquí con recomendaciones de qué mutar primero.
90
-
91
- Si el baseline ya es >= target, reportar que no se requiere autoresearch.
92
-
93
- ## Paso 5 — Loop de mutación
94
-
95
- Ejecutar el loop siguiendo el protocolo completo del skill. Para cada round:
96
-
97
- 1. **Seleccionar item target** — usar la fórmula de priorización del skill (peso x no_cumple x factor_tipo)
98
- 2. **Proponer mutación atómica** — UN solo cambio, siguiendo los tipos de mutación del skill (agregar > refinar > reordenar > eliminar)
99
- 3. **Aplicar** la mutación con Edit. Registrar estado previo para poder revertir.
100
- 4. **Re-evaluar** contra el checklist con el mismo caso de prueba
101
- 5. **Decidir keep/revert** — si score >= anterior: KEEP; si baja: REVERT
102
- 6. **Registrar** en changelog del loop
103
- 7. **Verificar condiciones de salida** del skill:
104
- - 95%+ x 3 consecutivas: ÉXITO
105
- - 3 reverts consecutivos: ESTANCAMIENTO
106
- - Score baja 2 rounds seguidos: DEGRADACIÓN (revertir al mejor score)
107
- - Max rounds alcanzado: PLATEAU
108
-
109
- ## Paso 6 — Reporte final
110
-
111
- ```
112
- === Reporte Autoresearch — [nombre] ===
113
-
114
- Fecha: [fecha]
115
- Rounds ejecutados: [N]
116
- Score: [baseline]% → [final]%
117
- Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
118
- Resultado: [ÉXITO | PLATEAU | ESTANCAMIENTO | DEGRADACIÓN]
119
-
120
- ### Mutaciones aplicadas (en orden)
121
- 1. [tipo]: [descripción] — Score [X]% → [Y]%
122
-
123
- ### Mutaciones revertidas
124
- 1. [tipo]: [descripción] — Razón: [por qué empeoró]
125
-
126
- ### Score final por item
127
- | # | Criterio | Peso | check |
128
- |---|----------|------|-------|
129
-
130
- ### Recomendaciones
131
- - [qué hacer si no se alcanzó el target]
132
- ```
133
-
134
- ## Paso 7 — Versionado, marcado de evolución y persistencia
135
-
136
- Si el score mejoró respecto al baseline:
137
- 1. Actualizar versión del skill/agente (< 10 pts: PATCH, >= 10 pts: MINOR)
138
- 2. **OBLIGATORIO — Marcar como evolucionado** con el subcomando del CLI
139
- (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
140
- ```bash
141
- swl-ses mark-evolved "[RUTA_ARCHIVO_MODIFICADO]" \
142
- --by=autoresearch \
143
- --rounds=[N_ROUNDS] \
144
- --score="[BASELINE]% → [FINAL]%" \
145
- --note="[descripción breve de las mutaciones]"
146
- # fallback: npx -y @saulwade/swl-ses@latest mark-evolved "[RUTA]" --by=autoresearch ...
147
- ```
148
- Reemplazar los placeholders entre corchetes con los valores reales.
149
- Si el comando Bash no está disponible, agregar manualmente en el frontmatter:
150
- ```yaml
151
- evolved: true
152
- evolved-from: "[versión actual del sistema]"
153
- evolved-at: "[fecha YYYY-MM-DD]"
154
- evolved-by: "autoresearch"
155
- evolved-rounds: [N rounds ejecutados]
156
- evolved-score: "[baseline]% → [final]%"
157
- ```
158
- **SIN ESTE MARCADO, LAS MUTACIONES SE PERDERÁN EN LA PRÓXIMA ACTUALIZACIÓN.**
159
- 3. Guardar reporte en `.planning/autoresearch/[nombre]-[fecha].md`
160
- 4. Registrar en APRENDIZAJES.md las mutaciones más impactantes
161
- 5. Actualizar el checklist si se descubrieron items nuevos
162
-
163
- ## Reglas de comportamiento
164
-
165
- - NUNCA ejecutar mutaciones sin checklist aprobado por el usuario
166
- - NUNCA cambiar más de una cosa por round — regla más importante del protocolo
167
- - NUNCA modificar el checklist durante el loop
168
- - SIEMPRE revertir si el score baja — sin excepciones
169
- - SIEMPRE mostrar el diff concreto antes de cada mutación
170
- - Si después de 3 rounds sin mejora, preguntar al usuario si continuar o parar
171
- - El caso de prueba NO cambia durante el loop
172
- - Mantener log completo del loop para auditoría
173
-
174
- ---
175
-
176
- ## Modo `--codigo` — Loop métrico sobre código del proyecto
177
-
178
- Generaliza el loop a **código del usuario**: la misma disciplina (mutación
179
- atómica → medir → keep/revert) pero la evaluación es un **comando Verify
180
- numérico** en lugar de un checklist. Patrón adoptado del análisis de
181
- autoresearch v2.1 (loop core), adaptado a las reglas SWL (HITL, git-workflow,
182
- telemetría en `.planning/loops/`).
183
-
184
- Métricas típicas: mutation score (cargar `Skill("calidad-mutation-testing")`),
185
- cobertura de tests, conteo de errores de tsc/lint (lower_is_better), latencia
186
- p95 de un benchmark, bundle size, tiempo de suite.
187
-
188
- ### Paso C0 — Derivar y aprobar la configuración (HITL obligatorio)
189
-
190
- Completar con el usuario los campos faltantes y presentar el bloque para
191
- aprobación explícita ANTES de la primera mutación:
192
-
193
- ```
194
- === Autoresearch --codigo — Configuración ===
195
- Goal: [meta textual]
196
- Scope: [glob de archivos que el loop PUEDE tocar]
197
- Metric: [qué mide] | Direction: [higher|lower]_is_better
198
- Verify: [comando shell]
199
- Guard: [comando shell o "(ninguno)"]
200
- Target: [valor objetivo o "(mejora máxima en N rounds)"]
201
- Rounds: [N, default 15]
202
- ```
203
-
204
- **Safety screen del Verify/Guard (bloqueante)**: rechazar comandos que
205
- contengan `rm -rf`, `curl|sh`/`wget|sh`, `sudo`, `git push`, `--force`,
206
- redirecciones a archivos fuera del repo, o credenciales inline. El Verify se
207
- ejecuta una vez en dry-run para confirmar que produce un número parseable —
208
- si no, corregir el comando antes de iterar.
209
-
210
- **Guard por default**: si el proyecto tiene suite de tests, el Guard es la
211
- suite (`npm test` / `pytest`). Iterar sin Guard solo si el usuario lo aprueba
212
- explícitamente — una métrica que sube con la suite rota no es mejora.
213
-
214
- Si `--dry-run`: terminar aquí mostrando la configuración derivada.
215
-
216
- ### Paso C1 — Baseline y telemetría
217
-
218
- Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`).
219
- Imprime el `<dir>` de la corrida:
220
-
221
- ```bash
222
- swl-ses loop-telemetry iniciar --tipo=autoresearch --direccion=[direction] --config='{"goal":"[goal]","scope":"[scope]","verify":"[verify]","guard":"[guard]"}'
223
- ```
224
-
225
- Correr Verify, extraer la métrica, registrar la iteración 0 (`estado:
226
- baseline`). Si el baseline ya cumple el target, terminar: no hay loop que correr.
227
-
228
- ### Paso C2 — El loop
229
-
230
- Por cada round (hasta `--max-rounds`, default 15):
231
-
232
- 1. **Revisar memoria**: últimas filas del TSV + `git log --oneline -10` — qué
233
- funcionó, qué se revirtió. No repetir mutaciones ya revertidas.
234
- 2. **UNA mutación atómica** dentro del Scope. Archivos fuera del Scope son
235
- intocables — si la mejora "necesita" tocar otro archivo, pausar y
236
- preguntar al usuario (anti-proxy-goal-drift).
237
- 3. **Medir**: correr Verify → métrica nueva; correr Guard.
238
- 4. **Decidir**:
239
- - Métrica mejora Y Guard pasa → **keep**: commit `experiment(autoresearch): [descripción]`.
240
- - Métrica no mejora O Guard falla → **revert**: descartar los cambios del
241
- working tree (`git checkout -- [archivos tocados]`). NUNCA reescribir
242
- historia para revertir — solo se commitea lo que se conserva.
243
- - Verify truena → estado `crash`: descartar cambios, registrar, continuar.
244
- 5. **Registrar** la iteración con `registrarIteracion` (métrica, delta, estado, descripción).
245
- 6. **Condiciones de salida**: target alcanzado → ÉXITO; `detectarPlateau`
246
- sobre las últimas 3 filas → PLATEAU (parar, no quemar rounds sin mejora);
247
- 3 reverts consecutivos → ESTANCAMIENTO (preguntar al usuario);
248
- max rounds → ACOTADO.
249
-
250
- ### Paso C3 — Cierre
251
-
252
- 1. Escribir handoff: `escribirHandoff(dir, {source: 'swl:autoresearch', status: [COMPLETO|PLATEAU|ACOTADO|INTERRUMPIDO], config})`.
253
- 2. Reporte final con trayectoria (`analizarTrayectoria`): rounds, keep/revert,
254
- métrica inicial → final, mayor salto, y los commits `experiment(...)` generados.
255
- 3. Ofrecer al usuario squash de los commits experimentales en un commit
256
- semántico final (`git-workflow.md § Squash antes de merge`).
257
-
258
- ### Reglas adicionales del modo `--codigo`
259
-
260
- - NUNCA `git push` desde el loop — los commits experimentales son locales.
261
- - NUNCA tocar archivos fuera del Scope aprobado.
262
- - NUNCA continuar tras plateau "por si acaso" — el plateau ES la señal de salida.
263
- - El hook `contexto-iteracion.js` inyecta el estado del loop en sesiones
264
- largas; no releer el TSV completo en cada round (las últimas 3 filas bastan).
1
+ ---
2
+ name: swl:autoresearch
3
+ description: Ejecuta el loop de auto-mejora iterativa Autoresearch sobre un skill, un agente, o (modo --codigo) sobre código del proyecto contra una métrica arbitraria. Modo skill/agente — crea o usa un checklist de evaluación (3-6 items binarios ponderados), obtiene baseline score, ejecuta mutaciones atómicas (una a la vez) y decide keep/revert por round hasta 95%+ x3. Modo --codigo — itera mutaciones sobre un Scope acotado contra un comando Verify numérico (cobertura, mutation score, errores, latencia) con Guard de regresión y telemetría en .planning/loops/. Flags: --skill=[nombre], --agente=[nombre], --codigo, --goal, --scope, --metric, --direction, --verify, --guard, --max-rounds=[N], --target=[N], --dry-run, --checklist=[path].
4
+ allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
5
+ ---
6
+
7
+ # /swl:autoresearch — Loop de auto-mejora iterativa de skills
8
+
9
+ Eres el motor de Autoresearch del sistema SWL. Mejoras skills y agentes de forma medible e iterativa: defines un checklist de calidad, obtienes un baseline, y ejecutas un loop de mutaciones atómicas donde cada cambio se evalúa y se mantiene solo si mejora el score.
10
+
11
+ Este comando es distinto a `/swl:evolucionar`: donde evolucionar analiza evidencia histórica, autoresearch ejecuta un **loop cerrado de mejora medible** contra un checklist concreto.
12
+
13
+ ## Cuándo usar este comando
14
+
15
+ - Cuando un skill produce outputs de baja calidad de forma consistente
16
+ - Cuando se quiere elevar la calidad de un skill antes de una release
17
+ - Cuando `auto-evolucion-swl` identifica un candidato para mejora iterativa
18
+ - Después de crear un skill nuevo para calibrarlo contra criterios de calidad
19
+
20
+ ## Flags soportados
21
+
22
+ ```
23
+ --skill=[nombre] Skill a mejorar (busca en habilidades/[nombre]/SKILL.md)
24
+ --agente=[nombre] Agente a mejorar (busca en agentes/[nombre].md)
25
+ --codigo Modo código: itera sobre código del proyecto contra una métrica (ver sección "Modo --codigo")
26
+ --goal="..." (--codigo) Meta textual del loop
27
+ --scope="glob" (--codigo) Archivos que el loop PUEDE modificar (glob acotado)
28
+ --metric="..." (--codigo) Qué mide la métrica (ej: "mutation score de src/pagos")
29
+ --direction=[dir] (--codigo) higher_is_better | lower_is_better
30
+ --verify="cmd" (--codigo) Comando shell cuya salida contiene el número de la métrica
31
+ --guard="cmd" (--codigo) Comando que debe pasar (exit 0) para aceptar una mutación
32
+ --max-rounds=[N] Máximo de iteraciones del loop (default: 10 skill/agente, 15 código)
33
+ --target=[N] Score objetivo (default: 95% en skills; en código lo define el usuario)
34
+ --dry-run Analizar y derivar configuración sin ejecutar mutaciones
35
+ --checklist=[path] Ruta a checklist existente (solo modo skill/agente)
36
+ ```
37
+
38
+ **Nota**: Se debe pasar `--skill`, `--agente` o `--codigo` (excluyentes). Si no se pasa ninguno, preguntar al usuario.
39
+
40
+ ## Paso 0 — Parseo de flags y carga de habilidades
41
+
42
+ Lee los flags. Determina alcance y configuración.
43
+
44
+ Carga obligatoria:
45
+ ```
46
+ Skill("autoresearch")
47
+ ```
48
+
49
+ El skill define TODO el protocolo: el loop de mutación (pasos 1-5), tipos de mutación con riesgos, fórmula de priorización, condiciones de salida, umbrales de score, formato de checklist, formato de reporte por iteración, anti-patrones y la integración con auto-evolución SWL.
50
+
51
+ Reporta configuración:
52
+ ```
53
+ === Autoresearch — Configuración ===
54
+ Objetivo: [skill/agente] [nombre]
55
+ Max rounds: [N]
56
+ Target score: [N]%
57
+ Modo: [ejecutar | dry-run]
58
+ Checklist: [existente: path | por crear]
59
+ ```
60
+
61
+ ## Paso 1 — Lectura del artefacto objetivo
62
+
63
+ Lee el skill o agente completo. Identifica: versión actual, secciones principales, reglas existentes, ejemplos de código, anti-patrones documentados.
64
+
65
+ ## Paso 2 — Crear o cargar checklist
66
+
67
+ Si se pasó `--checklist=[path]`, cargar y validar (3-6 items, formato correcto).
68
+
69
+ Si ya existe checklist previo para este skill/agente, preguntar si usarlo o crear uno nuevo.
70
+
71
+ Si no existe, crearlo siguiendo el protocolo del skill: identificar output típico, extraer 3-5 reglas más críticas, convertir en criterios binarios verificables, asignar pesos (1-5), definir método de verificación. Presentar al usuario para aprobación antes de continuar.
72
+
73
+ Guardar checklist:
74
+ - Skills: `habilidades/[nombre]/recursos/checklist-autoresearch.md`
75
+ - Agentes: `.planning/checklists/[nombre]-checklist.md`
76
+
77
+ ## Paso 3 — Definir caso de prueba
78
+
79
+ Proponer un prompt concreto que active las reglas principales del skill. Debe ser representativo, reproducible y concreto. Pedir aprobación al usuario.
80
+
81
+ ## Paso 4 — Obtener baseline score
82
+
83
+ Ejecutar el skill con el caso de prueba, evaluar contra cada item del checklist, calcular score ponderado usando el script:
84
+
85
+ ```bash
86
+ node habilidades/autoresearch/scripts/calcular-score.js '[JSON con items evaluados]'
87
+ ```
88
+
89
+ Si `--dry-run`, termina aquí con recomendaciones de qué mutar primero.
90
+
91
+ Si el baseline ya es >= target, reportar que no se requiere autoresearch.
92
+
93
+ ## Paso 5 — Loop de mutación
94
+
95
+ Ejecutar el loop siguiendo el protocolo completo del skill. Para cada round:
96
+
97
+ 1. **Seleccionar item target** — usar la fórmula de priorización del skill (peso x no_cumple x factor_tipo)
98
+ 2. **Proponer mutación atómica** — UN solo cambio, siguiendo los tipos de mutación del skill (agregar > refinar > reordenar > eliminar)
99
+ 3. **Aplicar** la mutación con Edit. Registrar estado previo para poder revertir.
100
+ 4. **Re-evaluar** contra el checklist con el mismo caso de prueba
101
+ 5. **Decidir keep/revert** — si score >= anterior: KEEP; si baja: REVERT
102
+ 6. **Registrar** en changelog del loop
103
+ 7. **Verificar condiciones de salida** del skill:
104
+ - 95%+ x 3 consecutivas: ÉXITO
105
+ - 3 reverts consecutivos: ESTANCAMIENTO
106
+ - Score baja 2 rounds seguidos: DEGRADACIÓN (revertir al mejor score)
107
+ - Max rounds alcanzado: PLATEAU
108
+
109
+ ## Paso 6 — Reporte final
110
+
111
+ ```
112
+ === Reporte Autoresearch — [nombre] ===
113
+
114
+ Fecha: [fecha]
115
+ Rounds ejecutados: [N]
116
+ Score: [baseline]% → [final]%
117
+ Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
118
+ Resultado: [ÉXITO | PLATEAU | ESTANCAMIENTO | DEGRADACIÓN]
119
+
120
+ ### Mutaciones aplicadas (en orden)
121
+ 1. [tipo]: [descripción] — Score [X]% → [Y]%
122
+
123
+ ### Mutaciones revertidas
124
+ 1. [tipo]: [descripción] — Razón: [por qué empeoró]
125
+
126
+ ### Score final por item
127
+ | # | Criterio | Peso | check |
128
+ |---|----------|------|-------|
129
+
130
+ ### Recomendaciones
131
+ - [qué hacer si no se alcanzó el target]
132
+ ```
133
+
134
+ ## Paso 7 — Versionado, marcado de evolución y persistencia
135
+
136
+ Si el score mejoró respecto al baseline:
137
+ 1. Actualizar versión del skill/agente (< 10 pts: PATCH, >= 10 pts: MINOR)
138
+ 2. **OBLIGATORIO — Marcar como evolucionado** con el subcomando del CLI
139
+ (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
140
+ ```bash
141
+ swl-ses mark-evolved "[RUTA_ARCHIVO_MODIFICADO]" \
142
+ --by=autoresearch \
143
+ --rounds=[N_ROUNDS] \
144
+ --score="[BASELINE]% → [FINAL]%" \
145
+ --note="[descripción breve de las mutaciones]"
146
+ # fallback: npx -y @saulwade/swl-ses@latest mark-evolved "[RUTA]" --by=autoresearch ...
147
+ ```
148
+ Reemplazar los placeholders entre corchetes con los valores reales.
149
+ Si el comando Bash no está disponible, agregar manualmente en el frontmatter:
150
+ ```yaml
151
+ evolved: true
152
+ evolved-from: "[versión actual del sistema]"
153
+ evolved-at: "[fecha YYYY-MM-DD]"
154
+ evolved-by: "autoresearch"
155
+ evolved-rounds: [N rounds ejecutados]
156
+ evolved-score: "[baseline]% → [final]%"
157
+ ```
158
+ **SIN ESTE MARCADO, LAS MUTACIONES SE PERDERÁN EN LA PRÓXIMA ACTUALIZACIÓN.**
159
+ 3. Guardar reporte en `.planning/autoresearch/[nombre]-[fecha].md`
160
+ 4. Registrar en APRENDIZAJES.md las mutaciones más impactantes
161
+ 5. Actualizar el checklist si se descubrieron items nuevos
162
+
163
+ ## Reglas de comportamiento
164
+
165
+ - NUNCA ejecutar mutaciones sin checklist aprobado por el usuario
166
+ - NUNCA cambiar más de una cosa por round — regla más importante del protocolo
167
+ - NUNCA modificar el checklist durante el loop
168
+ - SIEMPRE revertir si el score baja — sin excepciones
169
+ - SIEMPRE mostrar el diff concreto antes de cada mutación
170
+ - Si después de 3 rounds sin mejora, preguntar al usuario si continuar o parar
171
+ - El caso de prueba NO cambia durante el loop
172
+ - Mantener log completo del loop para auditoría
173
+
174
+ ---
175
+
176
+ ## Modo `--codigo` — Loop métrico sobre código del proyecto
177
+
178
+ Generaliza el loop a **código del usuario**: la misma disciplina (mutación
179
+ atómica → medir → keep/revert) pero la evaluación es un **comando Verify
180
+ numérico** en lugar de un checklist. Patrón adoptado del análisis de
181
+ autoresearch v2.1 (loop core), adaptado a las reglas SWL (HITL, git-workflow,
182
+ telemetría en `.planning/loops/`).
183
+
184
+ Métricas típicas: mutation score (cargar `Skill("calidad-mutation-testing")`),
185
+ cobertura de tests, conteo de errores de tsc/lint (lower_is_better), latencia
186
+ p95 de un benchmark, bundle size, tiempo de suite.
187
+
188
+ ### Paso C0 — Derivar y aprobar la configuración (HITL obligatorio)
189
+
190
+ Completar con el usuario los campos faltantes y presentar el bloque para
191
+ aprobación explícita ANTES de la primera mutación:
192
+
193
+ ```
194
+ === Autoresearch --codigo — Configuración ===
195
+ Goal: [meta textual]
196
+ Scope: [glob de archivos que el loop PUEDE tocar]
197
+ Metric: [qué mide] | Direction: [higher|lower]_is_better
198
+ Verify: [comando shell]
199
+ Guard: [comando shell o "(ninguno)"]
200
+ Target: [valor objetivo o "(mejora máxima en N rounds)"]
201
+ Rounds: [N, default 15]
202
+ ```
203
+
204
+ **Safety screen del Verify/Guard (bloqueante)**: rechazar comandos que
205
+ contengan `rm -rf`, `curl|sh`/`wget|sh`, `sudo`, `git push`, `--force`,
206
+ redirecciones a archivos fuera del repo, o credenciales inline. El Verify se
207
+ ejecuta una vez en dry-run para confirmar que produce un número parseable —
208
+ si no, corregir el comando antes de iterar.
209
+
210
+ **Guard por default**: si el proyecto tiene suite de tests, el Guard es la
211
+ suite (`npm test` / `pytest`). Iterar sin Guard solo si el usuario lo aprueba
212
+ explícitamente — una métrica que sube con la suite rota no es mejora.
213
+
214
+ Si `--dry-run`: terminar aquí mostrando la configuración derivada.
215
+
216
+ ### Paso C1 — Baseline y telemetría
217
+
218
+ Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`).
219
+ Imprime el `<dir>` de la corrida:
220
+
221
+ ```bash
222
+ swl-ses loop-telemetry iniciar --tipo=autoresearch --direccion=[direction] --config='{"goal":"[goal]","scope":"[scope]","verify":"[verify]","guard":"[guard]"}'
223
+ ```
224
+
225
+ Correr Verify, extraer la métrica, registrar la iteración 0 (`estado:
226
+ baseline`). Si el baseline ya cumple el target, terminar: no hay loop que correr.
227
+
228
+ ### Paso C2 — El loop
229
+
230
+ Por cada round (hasta `--max-rounds`, default 15):
231
+
232
+ 1. **Revisar memoria**: últimas filas del TSV + `git log --oneline -10` — qué
233
+ funcionó, qué se revirtió. No repetir mutaciones ya revertidas.
234
+ 2. **UNA mutación atómica** dentro del Scope. Archivos fuera del Scope son
235
+ intocables — si la mejora "necesita" tocar otro archivo, pausar y
236
+ preguntar al usuario (anti-proxy-goal-drift).
237
+ 3. **Medir**: correr Verify → métrica nueva; correr Guard.
238
+ 4. **Decidir**:
239
+ - Métrica mejora Y Guard pasa → **keep**: commit `experiment(autoresearch): [descripción]`.
240
+ - Métrica no mejora O Guard falla → **revert**: descartar los cambios del
241
+ working tree (`git checkout -- [archivos tocados]`). NUNCA reescribir
242
+ historia para revertir — solo se commitea lo que se conserva.
243
+ - Verify truena → estado `crash`: descartar cambios, registrar, continuar.
244
+ 5. **Registrar** la iteración con `registrarIteracion` (métrica, delta, estado, descripción).
245
+ 6. **Condiciones de salida**: target alcanzado → ÉXITO; `detectarPlateau`
246
+ sobre las últimas 3 filas → PLATEAU (parar, no quemar rounds sin mejora);
247
+ 3 reverts consecutivos → ESTANCAMIENTO (preguntar al usuario);
248
+ max rounds → ACOTADO.
249
+
250
+ ### Paso C3 — Cierre
251
+
252
+ 1. Escribir handoff: `escribirHandoff(dir, {source: 'swl:autoresearch', status: [COMPLETO|PLATEAU|ACOTADO|INTERRUMPIDO], config})`.
253
+ 2. Reporte final con trayectoria (`analizarTrayectoria`): rounds, keep/revert,
254
+ métrica inicial → final, mayor salto, y los commits `experiment(...)` generados.
255
+ 3. Ofrecer al usuario squash de los commits experimentales en un commit
256
+ semántico final (`git-workflow.md § Squash antes de merge`).
257
+
258
+ ### Reglas adicionales del modo `--codigo`
259
+
260
+ - NUNCA `git push` desde el loop — los commits experimentales son locales.
261
+ - NUNCA tocar archivos fuera del Scope aprobado.
262
+ - NUNCA continuar tras plateau "por si acaso" — el plateau ES la señal de salida.
263
+ - El hook `contexto-iteracion.js` inyecta el estado del loop en sesiones
264
+ largas; no releer el TSV completo en cada round (las últimas 3 filas bastan).