@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
@@ -15,7 +15,7 @@ modeloAlterno: haiku
15
15
  ventanaContexto: 200k
16
16
  permissionMode: acceptEdits
17
17
  color: gold
18
- version: 1.6.0
18
+ version: 1.6.1
19
19
  nivelRiesgo: ALTO
20
20
  skillsInvocables: [auto-evolucion-protocolo, aprendizaje-continuo, validacion-ci-sistema, extractor-de-aprendizajes, autoresearch, evaluacion-agentes, seguridad-skills-ia]
21
21
  skillsRestringidos: [fastapi-python, angular-component, django-expert, postgresql-table-design]
@@ -173,17 +173,41 @@ probablemente no resolverá el problema observado. El `score_after` caerá y el
173
173
  gate revertirá. Deja claro en la hipótesis por qué el cambio aborda el tipo de
174
174
  fallo reportado.
175
175
 
176
+ ### Cierre del nudge atendido (obligatorio)
177
+
178
+ Al terminar una evolución disparada por un nudge, márcalo como accionado con
179
+ `swl-ses nudge-accionar <id> --por auto-evolucion-swl` (el `id` viene en el
180
+ JSONL del nudge). Sin este cierre, `session-briefing` seguirá reportándolo
181
+ como pendiente y el escalamiento a alerta persistente contará ruido.
182
+
176
183
  ### Formato de hipótesis a registrar en `evoluciones.jsonl`
177
184
 
178
185
  Al llamar a `run-skill-evals.js --record-baseline` y `--record-after`, usa
179
- `--hypothesis=` con un enunciado causal explícito:
186
+ `--hypothesis=` con un enunciado causal explícito.
187
+
188
+ **Anti-gaming (obligatorio — regla `seguridad-agentes.md § Anti-gaming`)**:
189
+ NUNCA declares tú el score de `--record-after`. El score que aprueba una
190
+ evolución debe venir del artefacto de evaluación con procedencia que emite
191
+ `/swl:evaluar-skill` (actor independiente). El flujo correcto:
180
192
 
181
193
  ```bash
182
- node scripts/run-skill-evals.js TU_TARGET --record-after --score=87 \
194
+ # 1. Evaluación INDEPENDIENTE del target (no la corres tú sobre tu propio
195
+ # cambio — la ejecuta /swl:evaluar-skill, que emite el artefacto):
196
+ # /swl:evaluar-skill TU_TARGET
197
+ # → escribe .planning/evolution/evaluaciones/TU_TARGET.json
198
+
199
+ # 2. Registro del after: el score se LEE del artefacto (sin --score):
200
+ node scripts/run-skill-evals.js TU_TARGET --record-after \
183
201
  --hypothesis="reforce seccion OUTPUT con template explicito; esperaba reducir bad_output_format" \
184
202
  --check-invariants
185
203
  ```
186
204
 
205
+ `--record-after` FALLA (exit 8) si el artefacto no existe, está vencido
206
+ (>7 días) o declara `producido_por` igual al target; y FALLA (exit 9) si
207
+ pasas un `--score` que discrepa del artefacto. El evento en
208
+ `evoluciones.jsonl` registra `producido_por`, `evaluacion_path` y
209
+ `evaluacion_fecha` — la cadena de procedencia que audita `validar.js`.
210
+
187
211
  El texto de la hipótesis queda en el log y será consultado después por
188
212
  `/swl:status evolucion` y por la consolidación de aprendizajes.
189
213
 
package/bin/swl-ses.js CHANGED
@@ -106,8 +106,8 @@ const COMANDOS = {
106
106
  doctor: '../scripts/doctor.js',
107
107
  update: '../scripts/actualizar.js',
108
108
  uninstall: '../scripts/desinstalar.js',
109
- prune: '../scripts/prune.js',
110
- valor: '../scripts/evidencia-valor.js',
109
+ prune: '../scripts/prune.js',
110
+ valor: '../scripts/evidencia-valor.js',
111
111
  'field-report': '../scripts/field-report.js',
112
112
  'check-update': '../scripts/check-update.js',
113
113
  'install-git-hook': '../scripts/instalar-git-hook.js',
@@ -141,7 +141,14 @@ const COMANDOS = {
141
141
  'loop-telemetry': '../scripts/cli/loop-telemetry.js',
142
142
  'configurar-ci': '../scripts/cli/configurar-ci.js',
143
143
  'ciclo-evolucion': '../scripts/cli/ciclo-evolucion.js',
144
+ 'ciclo-autonomo': '../scripts/cli/ciclo-autonomo.js',
145
+ 'ciclo-fase-b': '../scripts/cli/ciclo-fase-b.js',
144
146
  notificaciones: '../scripts/cli/notificaciones.js',
147
+ autonomia: '../scripts/cli/autonomia.js',
148
+ 'memoria-search': '../scripts/cli/memoria-search.js',
149
+ 'guardrail-metrics': '../scripts/cli/guardrail-metrics.js',
150
+ 'run-eval': '../scripts/cli/run-eval.js',
151
+ 'benchmark-memoria': '../scripts/cli/benchmark-memoria.js',
145
152
  };
146
153
 
147
154
  // Comandos con subcomandos (nivel 2)
@@ -164,9 +171,9 @@ COMANDOS PRINCIPALES:
164
171
  doctor Diagnóstica problemas de instalación
165
172
  update Actualiza componentes instalados
166
173
  uninstall Desinstala componentes del runtime
167
- prune Purga componentes retirados del paquete (dry-run; --confirmar ejecuta)
168
- valor Panel de evidencia de valor del harness (intercepciones, defectos, DORA/CI, uso; --json, --dias N)
169
- install --solo-hooks Activa hooks (telemetría) a nivel proyecto apuntando al scope global — sin duplicar componentes en la UI
174
+ prune Purga componentes retirados del paquete (dry-run; --confirmar ejecuta)
175
+ valor Panel de evidencia de valor del harness (intercepciones, defectos, DORA/CI, uso; --json, --dias N)
176
+ install --solo-hooks Activa hooks (telemetría) a nivel proyecto apuntando al scope global — sin duplicar componentes en la UI
170
177
  field-report Reporte de agregados anónimos para compartir con el autor (opt-in, revisión manual)
171
178
  check-update Fuerza consulta inmediata de nueva versión en npm (sin throttle)
172
179
  install-git-hook [--force] Instala pre-commit hook que avisa de nuevas versiones.
@@ -244,9 +251,26 @@ COMANDOS PRINCIPALES:
244
251
  Usado por /swl:configurar-ci.
245
252
  ciclo-evolucion Regenera .planning/evolution/metricas.json.
246
253
  Usado por /swl:status.
254
+ ciclo-autonomo [on|off|status] Motor determinista de aprendizaje (Fase A,
255
+ ADR-0041). Nace encendido; off = kill-switch.
256
+ Usado por /swl:evolucion-continua.
257
+ ciclo-fase-b [--dry-run|status] Runner headless de Fase B (ADR-0042 gate
258
+ G-B). En esta versión siempre dry-run.
259
+ nudge-accionar <id> [--por X] Marca un nudge como accionado (cierra el
260
+ ciclo). Usado por /swl:aprender y /swl:evolucionar.
247
261
  notificaciones <op> Telegram: init|status|disable|repair|bot-start|
248
262
  bot-stop|bot-status|bot-restart|bot-enable-autostart|
249
263
  bot-disable-autostart. Usado por /swl:notificaciones.
264
+ autonomia --accion="..." Registra auto-checkpoint según el dial de
265
+ autonomía. Usado por ejecutar-fase.
266
+ memoria-search <op> Búsqueda en memoria del proyecto: search|timeline|
267
+ fetch (JSON). Usado por memoria-busqueda.
268
+ guardrail-metrics [--json] Métricas + diagnóstico de guardrails de la sesión.
269
+ Usado por /swl:status (dashboard).
270
+ run-eval <eval.json> Ejecuta un eval del framework de validación de
271
+ outputs. --rebuild-aggregate reconstruye métricas.
272
+ benchmark-memoria [--json] Benchmark de retrieval de memoria (--dataset,
273
+ --limit, --verbose).
250
274
  info [--target <runtime>] Muestra información del sistema instalado
251
275
  help Muestra esta ayuda (alias de --help)
252
276
  list [--target <runtime>] Lista todos los agentes y skills instalados
@@ -263,8 +287,9 @@ OPCIONES DE INSTALL:
263
287
  --target <runtime> Runtime destino: claude|openclaude|copilot|opencode|codex|gemini|cursor (default: claude)
264
288
  --profile <perfil> Perfil: core|backend-python|backend-node|frontend-react|frontend-angular|
265
289
  fullstack-python-angular|fullstack-node-react|mobile|devops|completo (default: completo)
266
- --with <componentes> Incluir componentes adicionales (separados por coma)
267
- --without <comps> Excluir componentes (separados por coma)
290
+ --with <modulos> Incluir módulos adicionales, incluidos los opt-in fuera de todo perfil
291
+ (p. ej. reglas-personales). Quedan en el install-state y update los preserva
292
+ --without <modulos> Excluir módulos (separados por coma; también quita extras preservados)
268
293
  --global Instalar en directorio global del runtime (~/.claude, etc.)
269
294
  --local Instalar en directorio local del proyecto (.claude/, etc.)
270
295
  --dry-run Mostrar plan sin aplicar cambios
@@ -1,174 +1,174 @@
1
- ---
2
- name: swl:actualizar
3
- description: Actualiza el sistema SWL a la última versión disponible. Detecta automáticamente el perfil instalado y re-instala con --force preservando la configuración del usuario. No requiere desinstalar primero.
4
- allowed_tools: ["Read", "Bash", "Glob"]
5
- ---
6
-
7
- # /swl:actualizar — Actualizar sistema SWL
8
-
9
- Eres el actualizador del sistema SWL dentro de Claude Code. Tu misión es actualizar los componentes instalados a la última versión disponible sin perder la configuración del usuario ni requerir desinstalación previa.
10
-
11
- ## Cuándo usar este comando
12
-
13
- - Cuando se publicó una nueva versión del sistema SWL y quieres obtener las mejoras
14
- - Después de que `/swl:status salud` reporta que la versión instalada está desactualizada
15
- - Cuando otro miembro del equipo indica que hay actualización disponible
16
- - Para re-instalar el mismo perfil después de modificaciones manuales que dejaron el sistema inconsistente
17
-
18
- No usar si SWL no está instalado — en ese caso usar `/swl:instalar`.
19
-
20
- ## Paso 0 — Verificar que SWL está instalado
21
-
22
- ```bash
23
- cat .claude/.swl-install-state.json 2>/dev/null
24
- ```
25
-
26
- Si NO existe archivo de estado:
27
- - Informa: "No se encontró una instalación de SWL en este proyecto."
28
- - Sugiere: "Usa `/swl:instalar` para instalar SWL por primera vez."
29
- - DETENTE.
30
-
31
- Si existe, extrae:
32
- - `perfil`: el perfil actualmente instalado
33
- - `versionSistema`: la versión instalada
34
- - `global`: si fue instalación global
35
- - `archivosInstalados`: cantidad de archivos
36
-
37
- Informa al usuario:
38
- ```
39
- SWL instalado:
40
- Versión: <versionSistema>
41
- Perfil: <perfil>
42
- Archivos: <N>
43
- Tipo: <local|global>
44
- ```
45
-
46
- ## Paso 1 — Verificar versión disponible
47
-
48
- ```bash
49
- npm view @saulwade/swl-ses version 2>/dev/null \
50
- || npm view @saul-wade/swl-ses version --registry=https://npm.pkg.github.com 2>/dev/null
51
- ```
52
-
53
- Si hay una versión más nueva, informa:
54
- - "Versión instalada: **X**. Versión disponible: **Y**."
55
-
56
- Si ya está en la última versión:
57
- - "Ya tienes la última versión (**X**). ¿Deseas re-instalar de todos modos?"
58
- - Si el usuario dice no, DETENTE.
59
-
60
- ## Paso 1.5 — Descubrimiento de features nuevas
61
-
62
- Cuando hay una versión nueva disponible, mostrar qué cambió entre la versión
63
- instalada y la disponible para que el usuario tome una decisión informada.
64
-
65
- ```bash
66
- # Obtener changelog entre versiones (si está disponible localmente o via npm)
67
- CURRENT="<version_instalada>"
68
- AVAILABLE="<version_disponible>"
69
-
70
- # Opción 1: Si el repo SWL está disponible como referencia
71
- if [ -f "CHANGELOG.md" ]; then
72
- # Extraer entradas del changelog entre las dos versiones
73
- sed -n "/## \[$AVAILABLE\]/,/## \[$CURRENT\]/p" CHANGELOG.md | head -50
74
- fi
75
- ```
76
-
77
- Presentar al usuario un resumen categorizado:
78
-
79
- ```
80
- === Novedades entre v<CURRENT> y v<AVAILABLE> ===
81
-
82
- 📦 Componentes nuevos:
83
- - [agentes/skills/hooks/comandos nuevos]
84
-
85
- 🔧 Mejoras:
86
- - [mejoras a componentes existentes]
87
-
88
- 🐛 Correcciones:
89
- - [bugs corregidos]
90
-
91
- ⚠ Cambios que requieren atención:
92
- - [breaking changes o migraciones necesarias]
93
- - [reglas nuevas obligatorias]
94
- - [hooks nuevos que podrían afectar el flujo]
95
-
96
- 💡 Guía de migración:
97
- - [Si hay cambios breaking, pasos concretos para adaptar el proyecto]
98
- - [Si hay hooks nuevos, cómo configurarlos]
99
- ```
100
-
101
- Si no se puede obtener el changelog, informar:
102
- ```
103
- No se pudo obtener el detalle de cambios entre versiones.
104
- Consulta el CHANGELOG.md del repositorio SWL para ver las novedades.
105
- ```
106
-
107
- ## Paso 2 — Confirmar actualización
108
-
109
- ```
110
- === Actualización SWL ===
111
-
112
- Versión actual: <version instalada>
113
- Versión disponible: <version nueva>
114
- Perfil: <perfil>
115
- Tipo: <local|global>
116
-
117
- La actualización:
118
- - Sobrescribe agentes, skills, comandos, reglas y hooks
119
- - Actualiza hooks en settings.json
120
- - Preserva _userland/ (extensiones del usuario)
121
- - Preserva .planning/ (estado del proyecto)
122
-
123
- ¿Proceder?
124
- ```
125
-
126
- Espera confirmación del usuario.
127
-
128
- ## Paso 3 — Ejecutar actualización
129
-
130
- ```bash
131
- npx @saulwade/swl-ses@latest install --target claude --profile <PERFIL> [--global] --force
132
- ```
133
-
134
- Usa el mismo perfil y ubicación de la instalación original.
135
-
136
- ## Paso 4 — Ejecutar doctor
137
-
138
- ```bash
139
- npx @saulwade/swl-ses@latest doctor
140
- ```
141
-
142
- ## Paso 5 — Reportar resultado
143
-
144
- ```
145
- === Actualización SWL completada ===
146
-
147
- Versión anterior: <X>
148
- Versión nueva: <Y>
149
- Perfil: <perfil>
150
- Archivos: <N> actualizados
151
-
152
- Doctor: <resultado>
153
- ```
154
-
155
- ## Cambio de perfil durante actualización
156
-
157
- Si el usuario dice algo como "actualiza y cambia a perfil completo", ejecuta:
158
-
159
- ```bash
160
- npx @saulwade/swl-ses@latest install --target claude --profile <NUEVO_PERFIL> [--global] --force
161
- ```
162
-
163
- Informa que el cambio de perfil puede agregar componentes nuevos pero no elimina los del perfil anterior. Si quiere una instalación limpia con otro perfil, sugiere:
164
- 1. `npx swl-ses uninstall --target claude`
165
- 2. `/swl:instalar` con el nuevo perfil
166
-
167
- ## Reglas de comportamiento
168
-
169
- - SIEMPRE verifica que SWL está instalado antes de intentar actualizar.
170
- - SIEMPRE muestra versión actual vs disponible.
171
- - SIEMPRE confirma antes de ejecutar.
172
- - NUNCA cambia el perfil sin que el usuario lo pida explícitamente.
173
- - Preserva `_userland/` y `.planning/` siempre.
174
- - Si la actualización falla, el sistema queda en el estado anterior (los archivos existentes no se borran antes de copiar los nuevos).
1
+ ---
2
+ name: swl:actualizar
3
+ description: Actualiza el sistema SWL a la última versión disponible. Detecta automáticamente el perfil instalado y re-instala con --force preservando la configuración del usuario. No requiere desinstalar primero.
4
+ allowed_tools: ["Read", "Bash", "Glob"]
5
+ ---
6
+
7
+ # /swl:actualizar — Actualizar sistema SWL
8
+
9
+ Eres el actualizador del sistema SWL dentro de Claude Code. Tu misión es actualizar los componentes instalados a la última versión disponible sin perder la configuración del usuario ni requerir desinstalación previa.
10
+
11
+ ## Cuándo usar este comando
12
+
13
+ - Cuando se publicó una nueva versión del sistema SWL y quieres obtener las mejoras
14
+ - Después de que `/swl:status salud` reporta que la versión instalada está desactualizada
15
+ - Cuando otro miembro del equipo indica que hay actualización disponible
16
+ - Para re-instalar el mismo perfil después de modificaciones manuales que dejaron el sistema inconsistente
17
+
18
+ No usar si SWL no está instalado — en ese caso usar `/swl:instalar`.
19
+
20
+ ## Paso 0 — Verificar que SWL está instalado
21
+
22
+ ```bash
23
+ cat .claude/.swl-install-state.json 2>/dev/null
24
+ ```
25
+
26
+ Si NO existe archivo de estado:
27
+ - Informa: "No se encontró una instalación de SWL en este proyecto."
28
+ - Sugiere: "Usa `/swl:instalar` para instalar SWL por primera vez."
29
+ - DETENTE.
30
+
31
+ Si existe, extrae:
32
+ - `perfil`: el perfil actualmente instalado
33
+ - `versionSistema`: la versión instalada
34
+ - `global`: si fue instalación global
35
+ - `archivosInstalados`: cantidad de archivos
36
+
37
+ Informa al usuario:
38
+ ```
39
+ SWL instalado:
40
+ Versión: <versionSistema>
41
+ Perfil: <perfil>
42
+ Archivos: <N>
43
+ Tipo: <local|global>
44
+ ```
45
+
46
+ ## Paso 1 — Verificar versión disponible
47
+
48
+ ```bash
49
+ npm view @saulwade/swl-ses version 2>/dev/null \
50
+ || npm view @saul-wade/swl-ses version --registry=https://npm.pkg.github.com 2>/dev/null
51
+ ```
52
+
53
+ Si hay una versión más nueva, informa:
54
+ - "Versión instalada: **X**. Versión disponible: **Y**."
55
+
56
+ Si ya está en la última versión:
57
+ - "Ya tienes la última versión (**X**). ¿Deseas re-instalar de todos modos?"
58
+ - Si el usuario dice no, DETENTE.
59
+
60
+ ## Paso 1.5 — Descubrimiento de features nuevas
61
+
62
+ Cuando hay una versión nueva disponible, mostrar qué cambió entre la versión
63
+ instalada y la disponible para que el usuario tome una decisión informada.
64
+
65
+ ```bash
66
+ # Obtener changelog entre versiones (si está disponible localmente o via npm)
67
+ CURRENT="<version_instalada>"
68
+ AVAILABLE="<version_disponible>"
69
+
70
+ # Opción 1: Si el repo SWL está disponible como referencia
71
+ if [ -f "CHANGELOG.md" ]; then
72
+ # Extraer entradas del changelog entre las dos versiones
73
+ sed -n "/## \[$AVAILABLE\]/,/## \[$CURRENT\]/p" CHANGELOG.md | head -50
74
+ fi
75
+ ```
76
+
77
+ Presentar al usuario un resumen categorizado:
78
+
79
+ ```
80
+ === Novedades entre v<CURRENT> y v<AVAILABLE> ===
81
+
82
+ 📦 Componentes nuevos:
83
+ - [agentes/skills/hooks/comandos nuevos]
84
+
85
+ 🔧 Mejoras:
86
+ - [mejoras a componentes existentes]
87
+
88
+ 🐛 Correcciones:
89
+ - [bugs corregidos]
90
+
91
+ ⚠ Cambios que requieren atención:
92
+ - [breaking changes o migraciones necesarias]
93
+ - [reglas nuevas obligatorias]
94
+ - [hooks nuevos que podrían afectar el flujo]
95
+
96
+ 💡 Guía de migración:
97
+ - [Si hay cambios breaking, pasos concretos para adaptar el proyecto]
98
+ - [Si hay hooks nuevos, cómo configurarlos]
99
+ ```
100
+
101
+ Si no se puede obtener el changelog, informar:
102
+ ```
103
+ No se pudo obtener el detalle de cambios entre versiones.
104
+ Consulta el CHANGELOG.md del repositorio SWL para ver las novedades.
105
+ ```
106
+
107
+ ## Paso 2 — Confirmar actualización
108
+
109
+ ```
110
+ === Actualización SWL ===
111
+
112
+ Versión actual: <version instalada>
113
+ Versión disponible: <version nueva>
114
+ Perfil: <perfil>
115
+ Tipo: <local|global>
116
+
117
+ La actualización:
118
+ - Sobrescribe agentes, skills, comandos, reglas y hooks
119
+ - Actualiza hooks en settings.json
120
+ - Preserva _userland/ (extensiones del usuario)
121
+ - Preserva .planning/ (estado del proyecto)
122
+
123
+ ¿Proceder?
124
+ ```
125
+
126
+ Espera confirmación del usuario.
127
+
128
+ ## Paso 3 — Ejecutar actualización
129
+
130
+ ```bash
131
+ npx -y @saulwade/swl-ses@latest install --target claude --profile <PERFIL> [--global] --force
132
+ ```
133
+
134
+ Usa el mismo perfil y ubicación de la instalación original.
135
+
136
+ ## Paso 4 — Ejecutar doctor
137
+
138
+ ```bash
139
+ npx -y @saulwade/swl-ses@latest doctor
140
+ ```
141
+
142
+ ## Paso 5 — Reportar resultado
143
+
144
+ ```
145
+ === Actualización SWL completada ===
146
+
147
+ Versión anterior: <X>
148
+ Versión nueva: <Y>
149
+ Perfil: <perfil>
150
+ Archivos: <N> actualizados
151
+
152
+ Doctor: <resultado>
153
+ ```
154
+
155
+ ## Cambio de perfil durante actualización
156
+
157
+ Si el usuario dice algo como "actualiza y cambia a perfil completo", ejecuta:
158
+
159
+ ```bash
160
+ npx -y @saulwade/swl-ses@latest install --target claude --profile <NUEVO_PERFIL> [--global] --force
161
+ ```
162
+
163
+ Informa que el cambio de perfil puede agregar componentes nuevos pero no elimina los del perfil anterior. Si quiere una instalación limpia con otro perfil, sugiere:
164
+ 1. `npx swl-ses uninstall --target claude`
165
+ 2. `/swl:instalar` con el nuevo perfil
166
+
167
+ ## Reglas de comportamiento
168
+
169
+ - SIEMPRE verifica que SWL está instalado antes de intentar actualizar.
170
+ - SIEMPRE muestra versión actual vs disponible.
171
+ - SIEMPRE confirma antes de ejecutar.
172
+ - NUNCA cambia el perfil sin que el usuario lo pida explícitamente.
173
+ - Preserva `_userland/` y `.planning/` siempre.
174
+ - Si la actualización falla, el sistema queda en el estado anterior (los archivos existentes no se borran antes de copiar los nuevos).