@saulwade/swl-ses 2.6.0 → 2.6.1

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 (207) hide show
  1. package/CLAUDE.md +197 -197
  2. package/README.md +600 -600
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/accesibilidad-wcag-swl.md +690 -690
  6. package/agentes/arquitecto-swl.md +267 -267
  7. package/agentes/auto-evolucion-swl.md +932 -932
  8. package/agentes/backend-csharp-swl.md +420 -420
  9. package/agentes/backend-go-swl.md +390 -390
  10. package/agentes/backend-java-swl.md +281 -281
  11. package/agentes/backend-rust-swl.md +364 -364
  12. package/agentes/backend-workers-swl.md +482 -482
  13. package/agentes/cloud-infra-swl.md +509 -509
  14. package/agentes/consolidador-swl.md +541 -541
  15. package/agentes/depurador-swl.md +352 -352
  16. package/agentes/devops-ci-swl.md +400 -400
  17. package/agentes/disenador-ui-swl.md +569 -569
  18. package/agentes/documentador-swl.md +345 -345
  19. package/agentes/frontend-angular-swl.md +621 -621
  20. package/agentes/frontend-css-swl.md +716 -716
  21. package/agentes/frontend-react-swl.md +692 -692
  22. package/agentes/frontend-swl.md +496 -496
  23. package/agentes/frontend-tailwind-swl.md +826 -826
  24. package/agentes/investigador-swl.md +432 -432
  25. package/agentes/investigador-ux-swl.md +505 -505
  26. package/agentes/migrador-swl.md +442 -442
  27. package/agentes/mobile-android-swl.md +511 -511
  28. package/agentes/mobile-cross-swl.md +541 -541
  29. package/agentes/mobile-ios-swl.md +502 -502
  30. package/agentes/mobile-testing-swl.md +302 -302
  31. package/agentes/nemesis-auditor-swl.md +285 -285
  32. package/agentes/observabilidad-swl.md +438 -438
  33. package/agentes/pagos-swl.md +310 -310
  34. package/agentes/perfilador-usuario-swl.md +321 -321
  35. package/agentes/planificador-swl.md +399 -399
  36. package/agentes/producto-prd-swl.md +589 -589
  37. package/agentes/red-team-swl.md +218 -218
  38. package/agentes/release-manager-swl.md +590 -590
  39. package/agentes/rendimiento-swl.md +713 -713
  40. package/agentes/revisor-angular-swl.md +278 -278
  41. package/agentes/revisor-csharp-swl.md +264 -264
  42. package/agentes/revisor-go-swl.md +259 -259
  43. package/agentes/revisor-java-swl.md +257 -257
  44. package/agentes/revisor-kotlin-swl.md +273 -273
  45. package/agentes/revisor-nextjs-swl.md +281 -281
  46. package/agentes/revisor-php-swl.md +271 -271
  47. package/agentes/revisor-react-swl.md +278 -278
  48. package/agentes/revisor-rust-swl.md +346 -346
  49. package/agentes/revisor-seguridad-swl.md +399 -399
  50. package/agentes/revisor-swift-swl.md +268 -268
  51. package/agentes/revisor-typescript-swl.md +346 -346
  52. package/agentes/tdd-qa-swl.md +393 -393
  53. package/comandos/swl/actualizar.md +174 -174
  54. package/comandos/swl/adoptar-proyecto.md +265 -265
  55. package/comandos/swl/aprender.md +836 -836
  56. package/comandos/swl/aprobar-plan.md +146 -146
  57. package/comandos/swl/auditar-deps.md +134 -134
  58. package/comandos/swl/autoresearch.md +264 -264
  59. package/comandos/swl/ayuda.md +224 -224
  60. package/comandos/swl/brainstorm.md +51 -51
  61. package/comandos/swl/briefing.md +119 -119
  62. package/comandos/swl/checkpoint.md +325 -325
  63. package/comandos/swl/claudemd.md +234 -234
  64. package/comandos/swl/compactar.md +310 -310
  65. package/comandos/swl/configurar-ci.md +235 -235
  66. package/comandos/swl/contexto.md +110 -110
  67. package/comandos/swl/contribuir.md +233 -233
  68. package/comandos/swl/crear-skill.md +292 -292
  69. package/comandos/swl/cron.md +194 -194
  70. package/comandos/swl/discutir-fase.md +169 -169
  71. package/comandos/swl/ejecutar-fase.md +233 -233
  72. package/comandos/swl/evaluar-skill.md +520 -520
  73. package/comandos/swl/evolucion-continua.md +73 -73
  74. package/comandos/swl/evolucionar.md +267 -267
  75. package/comandos/swl/exportar-vault.md +583 -583
  76. package/comandos/swl/fix.md +118 -118
  77. package/comandos/swl/gateway.md +158 -158
  78. package/comandos/swl/inbox.md +116 -116
  79. package/comandos/swl/instalar.md +220 -220
  80. package/comandos/swl/instintos.md +86 -86
  81. package/comandos/swl/mapear-codebase.md +312 -312
  82. package/comandos/swl/mcp-status.md +175 -175
  83. package/comandos/swl/modelo.md +100 -100
  84. package/comandos/swl/nemesis.md +433 -433
  85. package/comandos/swl/notificaciones.md +299 -299
  86. package/comandos/swl/nuevo-proyecto.md +251 -251
  87. package/comandos/swl/planear-fase.md +263 -263
  88. package/comandos/swl/plugins.md +256 -256
  89. package/comandos/swl/predecir.md +169 -169
  90. package/comandos/swl/reflect-skills.md +125 -125
  91. package/comandos/swl/release.md +450 -450
  92. package/comandos/swl/revisar-impacto.md +201 -201
  93. package/comandos/swl/revisar.md +330 -330
  94. package/comandos/swl/seguridad.md +189 -189
  95. package/comandos/swl/sesiones.md +200 -200
  96. package/comandos/swl/skill-search.md +113 -113
  97. package/comandos/swl/status.md +345 -345
  98. package/comandos/swl/verificar.md +817 -817
  99. package/comandos/swl/wiki.md +620 -620
  100. package/gateway/cron/jobs.example.json +12 -12
  101. package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
  102. package/habilidades/backend-async-postgres-testing/SKILL.md +2 -1
  103. package/habilidades/changelog-generator/SKILL.md +174 -174
  104. package/habilidades/compactacion-contexto/SKILL.md +2 -1
  105. package/habilidades/contenedores-docker/SKILL.md +4 -2
  106. package/habilidades/doubt-driven-review/SKILL.md +207 -207
  107. package/habilidades/drift-detection/SKILL.md +1 -1
  108. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  109. package/habilidades/extractor-de-aprendizajes/SKILL.md +8 -2
  110. package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
  111. package/habilidades/harness-claude-code/SKILL.md +314 -314
  112. package/habilidades/instalar-sistema/SKILL.md +227 -227
  113. package/habilidades/planear-fase/SKILL.md +358 -358
  114. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  115. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  116. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
  117. package/habilidades/release-semver/SKILL.md +2 -2
  118. package/habilidades/tdd-workflow/SKILL.md +749 -749
  119. package/hooks/agente-lifecycle.js +1 -1
  120. package/hooks/audit-trail.js +1 -1
  121. package/hooks/auto-consolidacion.js +1 -1
  122. package/hooks/captura-acciones-post.js +1 -1
  123. package/hooks/captura-acciones-session.js +1 -1
  124. package/hooks/captura-feedback-usuario.js +1 -1
  125. package/hooks/contexto-iteracion.js +1 -1
  126. package/hooks/contexto-subagente.js +68 -68
  127. package/hooks/degradacion-instintos.js +1 -1
  128. package/hooks/grafo-contexto.js +1 -1
  129. package/hooks/guardrail-modelo.js +1 -1
  130. package/hooks/inbox-aviso.js +1 -1
  131. package/hooks/inyeccion-contexto.js +1 -1
  132. package/hooks/lib/agent-matcher.js +1 -1
  133. package/hooks/lib/agent-routing.js +1 -1
  134. package/hooks/lib/captura-acciones.js +1 -1
  135. package/hooks/lib/etapa-metricas.js +1 -1
  136. package/hooks/lib/evolution-tracker.js +1 -1
  137. package/hooks/lib/gateway-notify.js +193 -193
  138. package/hooks/lib/mcp-health.js +1 -1
  139. package/hooks/lib/notificacion-formato.js +58 -0
  140. package/hooks/lib/nudge-tracker.js +1 -1
  141. package/hooks/lib/otlp-exporter.js +1 -1
  142. package/hooks/lib/propose-step.js +1 -1
  143. package/hooks/lib/raiz-proyecto.js +127 -102
  144. package/hooks/lib/run-log.js +1 -1
  145. package/hooks/lib/singleton-guard.js +20 -13
  146. package/hooks/lib/telegram-cliente.js +11 -3
  147. package/hooks/notificacion-telegram.js +13 -3
  148. package/hooks/preservar-estado-pre-compact.js +1 -1
  149. package/hooks/registro-turnos.js +1 -1
  150. package/hooks/resumen-sesion.js +1 -1
  151. package/hooks/risk-scoring.js +1 -1
  152. package/hooks/session-briefing.js +1 -1
  153. package/hooks/spec-gate.js +1 -1
  154. package/hooks/sugerir-regenerar-inventario.js +1 -1
  155. package/hooks/tdd-gate.js +1 -1
  156. package/hooks/telemetria-agentes.js +1 -1
  157. package/hooks/telemetria-skill-routing.js +1 -1
  158. package/hooks/tracking-costos.js +1 -1
  159. package/hooks/validar-formato-post-subagente.js +1 -1
  160. package/hooks/validar-intent-spec.js +1 -1
  161. package/hooks/validar-planning-paths.js +1 -1
  162. package/llms.txt +29 -29
  163. package/manifiestos/canonical-hashes.json +5588 -5257
  164. package/manifiestos/hooks-config.json +469 -469
  165. package/manifiestos/invariantes-criticos.json +30 -30
  166. package/manifiestos/modulos.json +1429 -1428
  167. package/manifiestos/skills-lock.json +1275 -1275
  168. package/package.json +94 -94
  169. package/plugin.json +369 -369
  170. package/scripts/auditar-clases-conocidas.js +134 -134
  171. package/scripts/bootstrap-instintos.js +85 -14
  172. package/scripts/canario-hooks.js +166 -166
  173. package/scripts/cli/autonomia.js +23 -23
  174. package/scripts/cli/benchmark-memoria.js +37 -37
  175. package/scripts/cli/ciclo-autonomo.js +73 -73
  176. package/scripts/cli/ciclo-fase-b.js +102 -102
  177. package/scripts/cli/guardrail-metrics.js +39 -39
  178. package/scripts/cli/memoria-search.js +69 -69
  179. package/scripts/cli/nudge-accionar.js +39 -39
  180. package/scripts/cli/run-eval.js +38 -38
  181. package/scripts/doctor.js +26 -3
  182. package/scripts/evidencia-valor.js +101 -101
  183. package/scripts/field-report.js +16 -16
  184. package/scripts/instalador.js +13 -0
  185. package/scripts/lib/activar-hooks-proyecto.js +116 -116
  186. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
  187. package/scripts/lib/ciclo-autonomo/config.js +165 -165
  188. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
  189. package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
  190. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
  191. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
  192. package/scripts/lib/ciclo-autonomo/index.js +301 -301
  193. package/scripts/lib/ciclo-autonomo/lock.js +124 -124
  194. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
  195. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
  196. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
  197. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
  198. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -535
  199. package/scripts/lib/evidencia-valor.js +228 -228
  200. package/scripts/lib/expandir-targets.js +71 -71
  201. package/scripts/lib/limpiar-basura-global.js +161 -0
  202. package/scripts/lib/toml-merge.js +204 -204
  203. package/scripts/mcp-server/auth.js +105 -105
  204. package/scripts/mcp-server/cache.js +106 -106
  205. package/scripts/tui/pantallas/install-wizard.js +403 -403
  206. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
  207. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
@@ -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).