@saulwade/swl-ses 2.5.2 → 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 (183) hide show
  1. package/CLAUDE.md +194 -192
  2. package/README.md +600 -600
  3. package/agentes/auto-evolucion-swl.md +27 -3
  4. package/bin/swl-ses.js +32 -6
  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 +314 -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/release-semver/SKILL.md +4 -2
  72. package/habilidades/swl-claudemd/SKILL.md +6 -7
  73. package/habilidades/swl-dashboard/SKILL.md +11 -43
  74. package/habilidades/tdd-workflow/SKILL.md +749 -744
  75. package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
  76. package/hooks/agente-lifecycle.js +2 -1
  77. package/hooks/aiisms-detector.js +13 -4
  78. package/hooks/audit-trail.js +2 -1
  79. package/hooks/auto-consolidacion.js +2 -1
  80. package/hooks/captura-acciones-post.js +2 -1
  81. package/hooks/captura-acciones-session.js +2 -1
  82. package/hooks/captura-feedback-usuario.js +3 -2
  83. package/hooks/claudemd-bloat-detector.js +12 -3
  84. package/hooks/claudemd-duplicacion-detector.js +13 -3
  85. package/hooks/contexto-iteracion.js +2 -1
  86. package/hooks/degradacion-instintos.js +2 -1
  87. package/hooks/extraccion-aprendizajes.js +109 -15
  88. package/hooks/grafo-contexto.js +2 -1
  89. package/hooks/guardrail-modelo.js +2 -1
  90. package/hooks/inbox-aviso.js +2 -1
  91. package/hooks/inyeccion-contexto.js +2 -1
  92. package/hooks/lib/agent-matcher.js +2 -1
  93. package/hooks/lib/agent-routing.js +2 -1
  94. package/hooks/lib/autonomia.js +5 -3
  95. package/hooks/lib/captura-acciones.js +2 -1
  96. package/hooks/lib/consolidation-lock.js +21 -10
  97. package/hooks/lib/etapa-auto-evolucion.js +10 -4
  98. package/hooks/lib/etapa-metricas.js +2 -1
  99. package/hooks/lib/etapa-perfil-usuario.js +20 -4
  100. package/hooks/lib/evolution-tracker.js +2 -1
  101. package/hooks/lib/gateway-notify.js +193 -179
  102. package/hooks/lib/loop-telemetry.js +5 -4
  103. package/hooks/lib/mcp-health.js +2 -1
  104. package/hooks/lib/memory-search.js +4 -0
  105. package/hooks/lib/merkle-audit.js +58 -6
  106. package/hooks/lib/nudge-tracker.js +2 -1
  107. package/hooks/lib/otlp-exporter.js +2 -1
  108. package/hooks/lib/propose-step.js +3 -2
  109. package/hooks/lib/raiz-proyecto.js +102 -0
  110. package/hooks/lib/run-log.js +2 -1
  111. package/hooks/lib/singleton-guard.js +218 -27
  112. package/hooks/lib/telegram-cliente.js +17 -8
  113. package/hooks/preservar-estado-pre-compact.js +2 -1
  114. package/hooks/proteccion-rutas.js +59 -3
  115. package/hooks/registro-turnos.js +2 -1
  116. package/hooks/resumen-sesion.js +2 -1
  117. package/hooks/risk-scoring.js +2 -1
  118. package/hooks/rotar-audit-auto.js +46 -20
  119. package/hooks/session-briefing.js +127 -1
  120. package/hooks/spec-gate.js +2 -1
  121. package/hooks/sugerir-contribuir.js +6 -3
  122. package/hooks/sugerir-regenerar-inventario.js +3 -2
  123. package/hooks/tdd-gate.js +2 -1
  124. package/hooks/telemetria-agentes.js +2 -1
  125. package/hooks/telemetria-skill-routing.js +2 -1
  126. package/hooks/tracking-costos.js +4 -3
  127. package/hooks/validar-formato-post-subagente.js +2 -1
  128. package/hooks/validar-intent-spec.js +2 -1
  129. package/hooks/validar-memoria-hook.js +13 -3
  130. package/hooks/validar-planning-paths.js +2 -1
  131. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
  132. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
  133. package/instintos/perfil-usuario.yaml +506 -3
  134. package/instintos/proyecto.yaml +78 -0
  135. package/llms.txt +2 -2
  136. package/manifiestos/canonical-hashes.json +664 -2
  137. package/manifiestos/modulos.json +19 -14
  138. package/manifiestos/planning-paths.json +1 -0
  139. package/manifiestos/skills-lock.json +53 -53
  140. package/package.json +2 -3
  141. package/plugin.json +2 -2
  142. package/scripts/actualizar.js +3 -0
  143. package/scripts/auditar-clases-conocidas.js +32 -4
  144. package/scripts/benchmark-memoria.js +1 -0
  145. package/scripts/cli/autonomia.js +23 -0
  146. package/scripts/cli/benchmark-memoria.js +37 -0
  147. package/scripts/cli/ciclo-autonomo.js +73 -0
  148. package/scripts/cli/ciclo-fase-b.js +102 -0
  149. package/scripts/cli/guardrail-metrics.js +39 -0
  150. package/scripts/cli/loop-telemetry.js +4 -2
  151. package/scripts/cli/memoria-search.js +69 -0
  152. package/scripts/cli/nudge-accionar.js +39 -0
  153. package/scripts/cli/run-eval.js +38 -0
  154. package/scripts/cli/run-skill-evals.js +13 -2
  155. package/scripts/derivar-feature-list.js +15 -14
  156. package/scripts/desinstalar.js +11 -0
  157. package/scripts/doctor.js +24 -10
  158. package/scripts/instalador.js +106 -7
  159. package/scripts/lib/activar-hooks-proyecto.js +116 -0
  160. package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
  161. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
  162. package/scripts/lib/ciclo-autonomo/config.js +165 -0
  163. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
  164. package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
  165. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
  166. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
  167. package/scripts/lib/ciclo-autonomo/index.js +301 -0
  168. package/scripts/lib/ciclo-autonomo/lock.js +124 -0
  169. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
  170. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
  171. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
  172. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
  173. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
  174. package/scripts/lib/estado.js +9 -0
  175. package/scripts/lib/evidencia-valor.js +1 -1
  176. package/scripts/lib/gitignore-manifest.js +8 -1
  177. package/scripts/lib/hooks-settings.js +45 -0
  178. package/scripts/rotar-audit-logs.js +48 -2
  179. package/scripts/run-eval.js +1 -0
  180. package/scripts/run-skill-evals.js +287 -8
  181. package/scripts/smoke-test.js +16 -8
  182. package/scripts/tui/pantallas/install-wizard.js +403 -347
  183. package/scripts/validar.js +40 -1
@@ -1,200 +1,200 @@
1
- ---
2
- name: swl:sesiones
3
- description: Gestiona el historial de sesiones SWL (listar, resumir, inspeccionar la sesión activa y generar continue-here.md desde cualquier sesión pasada)
4
- allowed_tools: ["Read", "Write", "Bash", "Glob"]
5
- ---
6
-
7
- # /swl:sesiones — Gestionar historial de sesiones SWL
8
-
9
- Administra las sesiones de trabajo persistidas en `.planning/sessions/`.
10
- Cada sesión registra tool calls, costo estimado, archivos modificados y agentes invocados.
11
-
12
- ## Uso
13
-
14
- ```
15
- /swl:sesiones — Lista las últimas 10 sesiones
16
- /swl:sesiones list [N] — Lista las últimas N sesiones
17
- /swl:sesiones resume [id] — Genera continue-here.md desde una sesión
18
- /swl:sesiones inspect [id] — Muestra detalle completo de una sesión
19
- /swl:sesiones active — Muestra la sesión activa actual
20
- /swl:sesiones wake [id] — Reconstruye estado de sesión desde eventos JSONL (Managed Agents wake pattern)
21
- ```
22
-
23
- ## Comportamiento por subcomando
24
-
25
- ### list [N]
26
-
27
- 1. Leer todos los archivos `ses-*.json` en `.planning/sessions/`.
28
- 2. Ordenar por nombre de archivo descendente (el nombre encode el timestamp).
29
- 3. Aplicar límite: 10 por defecto, o el N proporcionado.
30
- 4. Mostrar tabla compacta:
31
-
32
- ```
33
- | ID | Fecha | Modo | Tool Calls | Costo | Estado |
34
- |---------------------|------------|------|------------|--------|-----------|
35
- | ses-20260331-143000 | 2026-03-31 | dev | 47 | $1.87 | completed |
36
- | ses-20260331-093000 | 2026-03-31 | dev | 23 | $0.69 | completed |
37
- ```
38
-
39
- Si `.planning/sessions/` no existe o está vacío, mostrar:
40
- ```
41
- No hay sesiones registradas en .planning/sessions/
42
- ```
43
-
44
- ### resume [id]
45
-
46
- 1. Si no se proporciona `id`, usar la sesión de `.planning/sessions/latest.json`.
47
- 2. Si se proporciona `id`, buscar el archivo `ses-{id}.json` o `{id}.json` en `.planning/sessions/`.
48
- 3. Leer el objeto de sesión.
49
- 4. Construir el contenido del continue-here.md con esta estructura:
50
-
51
- ```markdown
52
- # Continue Here — {id}
53
-
54
- **Sesión**: {id}
55
- **Inicio**: {startTime}
56
- **Duración**: {N min | en progreso}
57
- **Modo**: {mode}
58
- **Tool calls**: {toolCalls}
59
- **Costo estimado**: ${costEstimated} USD
60
-
61
- ## Archivos modificados
62
- - ruta/archivo1
63
- - ruta/archivo2
64
-
65
- ## Agentes invocados
66
- - nombre-agente-1
67
-
68
- ## Herramientas más usadas
69
- - Bash: 21 llamadas
70
- - Read: 15 llamadas
71
-
72
- ## Resumen
73
- {summary o "(sin resumen)"}
74
- ```
75
-
76
- 5. Escribir el contenido en `.planning/continue-here.md`.
77
- 6. Confirmar al usuario:
78
- ```
79
- continue-here.md generado desde la sesión {id}.
80
- Archivo: .planning/continue-here.md
81
- ```
82
-
83
- ### inspect [id]
84
-
85
- 1. Localizar el archivo de sesión igual que en `resume`.
86
- 2. Mostrar TODOS los campos del JSON con formato legible:
87
-
88
- ```
89
- Sesión: ses-20260331-143000
90
- Estado: completed
91
- Inicio: 2026-03-31T14:30:00.000Z
92
- Fin: 2026-03-31T16:45:00.000Z
93
- Modo: dev
94
-
95
- Métricas generales:
96
- Tool calls: 47
97
- Tokens estimados: 23,500
98
- Costo estimado: $1.87 USD
99
-
100
- Herramientas:
101
- Bash 21
102
- Read 15
103
- Write 6
104
- Edit 3
105
- Grep 2
106
-
107
- Modelos:
108
- claude-sonnet-5 47
109
-
110
- Archivos modificados (6):
111
- hooks/lib/session-store.js
112
- comandos/swl/sesiones.md
113
- ...
114
-
115
- Agentes invocados (2):
116
- planificador-swl
117
- backend-python-swl
118
-
119
- Resumen:
120
- (sin resumen)
121
- ```
122
-
123
- ### active
124
-
125
- 1. Leer `.planning/sessions/latest.json` para obtener el ID de la sesión activa.
126
- 2. Leer el archivo de sesión correspondiente.
127
- 3. Mostrar las métricas en tiempo real con el mismo formato de `inspect`.
128
- 4. Si no hay sesión activa:
129
- ```
130
- No hay sesión activa en este momento.
131
- Para iniciar una nueva sesión, el sistema la crea automáticamente al primer tool call.
132
- ```
133
-
134
- ### wake [id]
135
-
136
- Reconstruye el estado de una sesión desde su log de eventos JSONL en `.planning/runs/`.
137
- Implementa el patrón `wake(sessionId)` de Managed Agents: permite retomar sesiones
138
- interrumpidas sin recargar el contexto completo en la ventana del modelo.
139
-
140
- 1. Si no se proporciona `id`, usar el ID de la sesión activa en `latest.json`.
141
- 2. Buscar el archivo `.planning/runs/{id}.jsonl`.
142
- 3. Leer el módulo `hooks/lib/run-log.js` para acceder a `wakeSession(id)`.
143
- 4. Mostrar el estado reconstruido:
144
-
145
- ```
146
- Sesión reconstruida: {id}
147
- Estado: {active|completed|aborted|unknown}
148
-
149
- Inicio: {startTs}
150
- Último evento: {lastTs}
151
- Tool calls: {toolCalls}
152
- Último tool: {lastToolCall}
153
- Abortada: {sí|no}
154
-
155
- Agentes invocados ({N}):
156
- - planificador-swl
157
- - implementador-swl
158
-
159
- Skills cargados ({N}):
160
- - ejecutar-fase
161
- - git-workflow
162
-
163
- Contexto disponible en: .planning/runs/{id}.jsonl
164
- Para retomar: /swl:sesiones resume {id}
165
- ```
166
-
167
- 5. Si el archivo JSONL no existe pero sí existe `ses-{id}.json`, mostrar:
168
- ```
169
- Run log no disponible para {id}. Usa /swl:sesiones inspect {id} para ver la sesión.
170
- ```
171
-
172
- ## Resolución de ID parcial
173
-
174
- Cuando el usuario proporciona un ID parcial (ej: `143000` o `20260331`), buscar el
175
- primer archivo `ses-*.json` cuyo nombre contenga ese fragmento. Si hay múltiples
176
- coincidencias, listarlas y pedir al usuario que especifique.
177
-
178
- ## Datos persistidos por sesión
179
-
180
- Cada archivo `ses-YYYYMMDD-HHmmss.json` contiene:
181
-
182
- | Campo | Tipo | Descripción |
183
- |------------------|----------|----------------------------------------------|
184
- | id | string | Identificador único de la sesión |
185
- | startTime | string | ISO timestamp de inicio |
186
- | endTime | string | ISO timestamp de fin (null si activa) |
187
- | status | string | `active` o `completed` |
188
- | mode | string | Modo activo (`dev`, `review`, `research`) |
189
- | toolCalls | number | Total de invocaciones de herramientas |
190
- | tokensEstimated | number | Suma de tokens estimados |
191
- | costEstimated | number | Costo acumulado en USD |
192
- | filesChanged | string[] | Rutas de archivos modificados (deduplicados) |
193
- | agentsInvoked | string[] | Nombres de agentes invocados (deduplicados) |
194
- | summary | string | Resumen generado al cerrar la sesión |
195
- | metricas | object | `{ herramientas: {}, modelos: {} }` |
196
-
197
- ## Directorio de sesiones
198
-
199
- `.planning/sessions/` — creado automáticamente por `session-store.js`.
200
- `latest.json` — puntero lógico a la sesión activa: `{ currentSession, path }`.
1
+ ---
2
+ name: swl:sesiones
3
+ description: Gestiona el historial de sesiones SWL (listar, resumir, inspeccionar la sesión activa y generar continue-here.md desde cualquier sesión pasada)
4
+ allowed_tools: ["Read", "Write", "Bash", "Glob"]
5
+ ---
6
+
7
+ # /swl:sesiones — Gestionar historial de sesiones SWL
8
+
9
+ Administra las sesiones de trabajo persistidas en `.planning/sessions/`.
10
+ Cada sesión registra tool calls, costo estimado, archivos modificados y agentes invocados.
11
+
12
+ ## Uso
13
+
14
+ ```
15
+ /swl:sesiones — Lista las últimas 10 sesiones
16
+ /swl:sesiones list [N] — Lista las últimas N sesiones
17
+ /swl:sesiones resume [id] — Genera continue-here.md desde una sesión
18
+ /swl:sesiones inspect [id] — Muestra detalle completo de una sesión
19
+ /swl:sesiones active — Muestra la sesión activa actual
20
+ /swl:sesiones wake [id] — Reconstruye estado de sesión desde eventos JSONL (Managed Agents wake pattern)
21
+ ```
22
+
23
+ ## Comportamiento por subcomando
24
+
25
+ ### list [N]
26
+
27
+ 1. Leer todos los archivos `ses-*.json` en `.planning/sessions/`.
28
+ 2. Ordenar por nombre de archivo descendente (el nombre encode el timestamp).
29
+ 3. Aplicar límite: 10 por defecto, o el N proporcionado.
30
+ 4. Mostrar tabla compacta:
31
+
32
+ ```
33
+ | ID | Fecha | Modo | Tool Calls | Costo | Estado |
34
+ |---------------------|------------|------|------------|--------|-----------|
35
+ | ses-20260331-143000 | 2026-03-31 | dev | 47 | $1.87 | completed |
36
+ | ses-20260331-093000 | 2026-03-31 | dev | 23 | $0.69 | completed |
37
+ ```
38
+
39
+ Si `.planning/sessions/` no existe o está vacío, mostrar:
40
+ ```
41
+ No hay sesiones registradas en .planning/sessions/
42
+ ```
43
+
44
+ ### resume [id]
45
+
46
+ 1. Si no se proporciona `id`, usar la sesión de `.planning/sessions/latest.json`.
47
+ 2. Si se proporciona `id`, buscar el archivo `ses-{id}.json` o `{id}.json` en `.planning/sessions/`.
48
+ 3. Leer el objeto de sesión.
49
+ 4. Construir el contenido del continue-here.md con esta estructura:
50
+
51
+ ```markdown
52
+ # Continue Here — {id}
53
+
54
+ **Sesión**: {id}
55
+ **Inicio**: {startTime}
56
+ **Duración**: {N min | en progreso}
57
+ **Modo**: {mode}
58
+ **Tool calls**: {toolCalls}
59
+ **Costo estimado**: ${costEstimated} USD
60
+
61
+ ## Archivos modificados
62
+ - ruta/archivo1
63
+ - ruta/archivo2
64
+
65
+ ## Agentes invocados
66
+ - nombre-agente-1
67
+
68
+ ## Herramientas más usadas
69
+ - Bash: 21 llamadas
70
+ - Read: 15 llamadas
71
+
72
+ ## Resumen
73
+ {summary o "(sin resumen)"}
74
+ ```
75
+
76
+ 5. Escribir el contenido en `.planning/continue-here.md`.
77
+ 6. Confirmar al usuario:
78
+ ```
79
+ continue-here.md generado desde la sesión {id}.
80
+ Archivo: .planning/continue-here.md
81
+ ```
82
+
83
+ ### inspect [id]
84
+
85
+ 1. Localizar el archivo de sesión igual que en `resume`.
86
+ 2. Mostrar TODOS los campos del JSON con formato legible:
87
+
88
+ ```
89
+ Sesión: ses-20260331-143000
90
+ Estado: completed
91
+ Inicio: 2026-03-31T14:30:00.000Z
92
+ Fin: 2026-03-31T16:45:00.000Z
93
+ Modo: dev
94
+
95
+ Métricas generales:
96
+ Tool calls: 47
97
+ Tokens estimados: 23,500
98
+ Costo estimado: $1.87 USD
99
+
100
+ Herramientas:
101
+ Bash 21
102
+ Read 15
103
+ Write 6
104
+ Edit 3
105
+ Grep 2
106
+
107
+ Modelos:
108
+ claude-sonnet-5 47
109
+
110
+ Archivos modificados (6):
111
+ hooks/lib/session-store.js
112
+ comandos/swl/sesiones.md
113
+ ...
114
+
115
+ Agentes invocados (2):
116
+ planificador-swl
117
+ backend-python-swl
118
+
119
+ Resumen:
120
+ (sin resumen)
121
+ ```
122
+
123
+ ### active
124
+
125
+ 1. Leer `.planning/sessions/latest.json` para obtener el ID de la sesión activa.
126
+ 2. Leer el archivo de sesión correspondiente.
127
+ 3. Mostrar las métricas en tiempo real con el mismo formato de `inspect`.
128
+ 4. Si no hay sesión activa:
129
+ ```
130
+ No hay sesión activa en este momento.
131
+ Para iniciar una nueva sesión, el sistema la crea automáticamente al primer tool call.
132
+ ```
133
+
134
+ ### wake [id]
135
+
136
+ Reconstruye el estado de una sesión desde su log de eventos JSONL en `.planning/runs/`.
137
+ Implementa el patrón `wake(sessionId)` de Managed Agents: permite retomar sesiones
138
+ interrumpidas sin recargar el contexto completo en la ventana del modelo.
139
+
140
+ 1. Si no se proporciona `id`, usar el ID de la sesión activa en `latest.json`.
141
+ 2. Buscar el archivo `.planning/runs/{id}.jsonl`.
142
+ 3. Leer el módulo `hooks/lib/run-log.js` para acceder a `wakeSession(id)`.
143
+ 4. Mostrar el estado reconstruido:
144
+
145
+ ```
146
+ Sesión reconstruida: {id}
147
+ Estado: {active|completed|aborted|unknown}
148
+
149
+ Inicio: {startTs}
150
+ Último evento: {lastTs}
151
+ Tool calls: {toolCalls}
152
+ Último tool: {lastToolCall}
153
+ Abortada: {sí|no}
154
+
155
+ Agentes invocados ({N}):
156
+ - planificador-swl
157
+ - implementador-swl
158
+
159
+ Skills cargados ({N}):
160
+ - ejecutar-fase
161
+ - git-workflow
162
+
163
+ Contexto disponible en: .planning/runs/{id}.jsonl
164
+ Para retomar: /swl:sesiones resume {id}
165
+ ```
166
+
167
+ 5. Si el archivo JSONL no existe pero sí existe `ses-{id}.json`, mostrar:
168
+ ```
169
+ Run log no disponible para {id}. Usa /swl:sesiones inspect {id} para ver la sesión.
170
+ ```
171
+
172
+ ## Resolución de ID parcial
173
+
174
+ Cuando el usuario proporciona un ID parcial (ej: `143000` o `20260331`), buscar el
175
+ primer archivo `ses-*.json` cuyo nombre contenga ese fragmento. Si hay múltiples
176
+ coincidencias, listarlas y pedir al usuario que especifique.
177
+
178
+ ## Datos persistidos por sesión
179
+
180
+ Cada archivo `ses-YYYYMMDD-HHmmss.json` contiene:
181
+
182
+ | Campo | Tipo | Descripción |
183
+ |------------------|----------|----------------------------------------------|
184
+ | id | string | Identificador único de la sesión |
185
+ | startTime | string | ISO timestamp de inicio |
186
+ | endTime | string | ISO timestamp de fin (null si activa) |
187
+ | status | string | `active` o `completed` |
188
+ | mode | string | Modo activo (`dev`, `review`, `research`) |
189
+ | toolCalls | number | Total de invocaciones de herramientas |
190
+ | tokensEstimated | number | Suma de tokens estimados |
191
+ | costEstimated | number | Costo acumulado en USD |
192
+ | filesChanged | string[] | Rutas de archivos modificados (deduplicados) |
193
+ | agentsInvoked | string[] | Nombres de agentes invocados (deduplicados) |
194
+ | summary | string | Resumen generado al cerrar la sesión |
195
+ | metricas | object | `{ herramientas: {}, modelos: {} }` |
196
+
197
+ ## Directorio de sesiones
198
+
199
+ `.planning/sessions/` — creado automáticamente por `session-store.js`.
200
+ `latest.json` — puntero lógico a la sesión activa: `{ currentSession, path }`.
@@ -1,113 +1,113 @@
1
- ---
2
- name: swl:skill-search
3
- description: Busca habilidades (skills) SWL disponibles por nombre o descripción. Genera o reutiliza el índice auto-descubierto de habilidades/*/SKILL.md. Cargar cuando el usuario quiera explorar skills disponibles, verificar si existe una habilidad concreta, o repasar el catálogo completo.
4
- allowed_tools: ["Bash", "Read"]
5
- ---
6
-
7
- # /swl:skill-search — Explorar habilidades SWL
8
-
9
- Muestra el catálogo de habilidades disponibles en el sistema SWL.
10
- El índice se genera automáticamente leyendo `habilidades/*/SKILL.md`.
11
-
12
- ## Uso
13
-
14
- ```
15
- /swl:skill-search — Lista todas las habilidades
16
- /swl:skill-search <query> — Filtra por nombre o descripción
17
- /swl:skill-search --intent <desc> — Busca por intención (qué quiero hacer)
18
- /swl:skill-search --dominio <dom> — Filtra por dominio (backend, frontend, etc.)
19
- /swl:skill-search --rebuild — Regenera el índice desde disco
20
- ```
21
-
22
- ## Paso 1 — Verificar disponibilidad del script
23
-
24
- ```bash
25
- ls scripts/lib/skill-discovery.js 2>/dev/null && echo "OK" || echo "FALTA"
26
- ```
27
-
28
- Si falta, indicar al usuario que actualice SWL con `/swl:actualizar`.
29
-
30
- ## Paso 2 — Ejecutar búsqueda o listar todo
31
-
32
- ### Sin query (catálogo completo)
33
-
34
- ```bash
35
- npx -y @saulwade/swl-ses@latest skill-discovery
36
- ```
37
-
38
- ### Con query (búsqueda filtrada)
39
-
40
- ```bash
41
- npx -y @saulwade/swl-ses@latest skill-discovery "<query>"
42
- ```
43
-
44
- Ejemplo: `npx -y @saulwade/swl-ses@latest skill-discovery "typescript"` muestra skills de TypeScript.
45
-
46
- ### Búsqueda por intent (--intent)
47
-
48
- Cuando el usuario describe lo que quiere hacer en lugar de buscar por nombre técnico,
49
- usar la siguiente tabla de sinónimos para mapear intención → skills relevantes:
50
-
51
- | Intención del usuario | Keywords a buscar | Skills probables |
52
- |----------------------|-------------------|------------------|
53
- | "quiero hacer tests" | test, tdd, qa, cobertura | tdd-workflow, testing-* |
54
- | "necesito autenticación" | auth, login, jwt, oauth, sesión | auth-patrones |
55
- | "optimizar rendimiento" | performance, lento, caché, índice | performance-baseline |
56
- | "crear API" | api, rest, endpoint, graphql | api-rest-diseno, fastapi-experto |
57
- | "base de datos" | sql, query, migración, orm | postgresql-experto |
58
- | "desplegar" | deploy, ci, cd, docker, pipeline | ci-cd-pipelines |
59
- | "documentar" | docs, readme, changelog, adr | documentacion-tecnica |
60
- | "seguridad" | owasp, xss, inyección, csrf, secretos | seguridad-skills-ia |
61
- | "frontend" | componente, ui, css, react, angular | angular-moderno, frontend-* |
62
- | "errores" | error, debug, excepción, stack trace | manejo-errores |
63
-
64
- Si `--intent` está presente, buscar en la descripción de cada skill por coincidencia
65
- semántica con la intención expresada, no solo por string matching exacto.
66
-
67
- ### Filtrar por dominio (--dominio)
68
-
69
- Dominios soportados: `backend`, `frontend`, `mobile`, `datos`, `infra`, `seguridad`,
70
- `ux`, `calidad`, `proceso`, `docs`.
71
-
72
- Filtra usando el prefijo de dominio del nombre del skill (ej: `backend-*`, `frontend-*`)
73
- o por las keywords del dominio en la descripción.
74
-
75
- ### Reconstruir índice
76
-
77
- ```bash
78
- npx -y @saulwade/swl-ses@latest skill-discovery --rebuild
79
- ```
80
-
81
- ## Paso 3 — Presentar resultados
82
-
83
- Mostrar la tabla generada por el script, que tiene el formato:
84
-
85
- ```
86
- Habilidades SWL disponibles (N)
87
- ──────────────────────────────────────────────────────────────────────
88
- nombre-de-habilidad v1.0.0 Descripción breve
89
- ...
90
- ──────────────────────────────────────────────────────────────────────
91
- Generado: YYYY-MM-DD | Índice: .planning/skill-index.json
92
- ```
93
-
94
- ## Paso 4 — Cómo usar una habilidad
95
-
96
- Indicar al usuario la sintaxis para cargar la habilidad seleccionada:
97
-
98
- ```
99
- Skill("nombre-de-habilidad")
100
- ```
101
-
102
- Por ejemplo, si encontró `typescript-avanzado`:
103
-
104
- ```
105
- Skill("typescript-avanzado")
106
- ```
107
-
108
- ## Notas
109
-
110
- - El índice persiste en `.planning/skill-index.json` entre sesiones.
111
- - Si una habilidad no tiene frontmatter YAML válido, aparece con su nombre de directorio.
112
- - Para ver detalles de una habilidad específica: `Read("habilidades/<nombre>/SKILL.md")`.
113
- - La descripción del índice viene del campo `description` en el frontmatter YAML del SKILL.md.
1
+ ---
2
+ name: swl:skill-search
3
+ description: Busca habilidades (skills) SWL disponibles por nombre o descripción. Genera o reutiliza el índice auto-descubierto de habilidades/*/SKILL.md. Cargar cuando el usuario quiera explorar skills disponibles, verificar si existe una habilidad concreta, o repasar el catálogo completo.
4
+ allowed_tools: ["Bash", "Read"]
5
+ ---
6
+
7
+ # /swl:skill-search — Explorar habilidades SWL
8
+
9
+ Muestra el catálogo de habilidades disponibles en el sistema SWL.
10
+ El índice se genera automáticamente leyendo `habilidades/*/SKILL.md`.
11
+
12
+ ## Uso
13
+
14
+ ```
15
+ /swl:skill-search — Lista todas las habilidades
16
+ /swl:skill-search <query> — Filtra por nombre o descripción
17
+ /swl:skill-search --intent <desc> — Busca por intención (qué quiero hacer)
18
+ /swl:skill-search --dominio <dom> — Filtra por dominio (backend, frontend, etc.)
19
+ /swl:skill-search --rebuild — Regenera el índice desde disco
20
+ ```
21
+
22
+ ## Paso 1 — Verificar disponibilidad del script
23
+
24
+ ```bash
25
+ ls scripts/lib/skill-discovery.js 2>/dev/null && echo "OK" || echo "FALTA"
26
+ ```
27
+
28
+ Si falta, indicar al usuario que actualice SWL con `/swl:actualizar`.
29
+
30
+ ## Paso 2 — Ejecutar búsqueda o listar todo
31
+
32
+ ### Sin query (catálogo completo)
33
+
34
+ ```bash
35
+ npx -y @saulwade/swl-ses@latest skill-discovery
36
+ ```
37
+
38
+ ### Con query (búsqueda filtrada)
39
+
40
+ ```bash
41
+ npx -y @saulwade/swl-ses@latest skill-discovery "<query>"
42
+ ```
43
+
44
+ Ejemplo: `npx -y @saulwade/swl-ses@latest skill-discovery "typescript"` muestra skills de TypeScript.
45
+
46
+ ### Búsqueda por intent (--intent)
47
+
48
+ Cuando el usuario describe lo que quiere hacer en lugar de buscar por nombre técnico,
49
+ usar la siguiente tabla de sinónimos para mapear intención → skills relevantes:
50
+
51
+ | Intención del usuario | Keywords a buscar | Skills probables |
52
+ |----------------------|-------------------|------------------|
53
+ | "quiero hacer tests" | test, tdd, qa, cobertura | tdd-workflow, testing-* |
54
+ | "necesito autenticación" | auth, login, jwt, oauth, sesión | auth-patrones |
55
+ | "optimizar rendimiento" | performance, lento, caché, índice | performance-baseline |
56
+ | "crear API" | api, rest, endpoint, graphql | api-rest-diseno, fastapi-experto |
57
+ | "base de datos" | sql, query, migración, orm | postgresql-experto |
58
+ | "desplegar" | deploy, ci, cd, docker, pipeline | ci-cd-pipelines |
59
+ | "documentar" | docs, readme, changelog, adr | documentacion-tecnica |
60
+ | "seguridad" | owasp, xss, inyección, csrf, secretos | seguridad-skills-ia |
61
+ | "frontend" | componente, ui, css, react, angular | angular-moderno, frontend-* |
62
+ | "errores" | error, debug, excepción, stack trace | manejo-errores |
63
+
64
+ Si `--intent` está presente, buscar en la descripción de cada skill por coincidencia
65
+ semántica con la intención expresada, no solo por string matching exacto.
66
+
67
+ ### Filtrar por dominio (--dominio)
68
+
69
+ Dominios soportados: `backend`, `frontend`, `mobile`, `datos`, `infra`, `seguridad`,
70
+ `ux`, `calidad`, `proceso`, `docs`.
71
+
72
+ Filtra usando el prefijo de dominio del nombre del skill (ej: `backend-*`, `frontend-*`)
73
+ o por las keywords del dominio en la descripción.
74
+
75
+ ### Reconstruir índice
76
+
77
+ ```bash
78
+ npx -y @saulwade/swl-ses@latest skill-discovery --rebuild
79
+ ```
80
+
81
+ ## Paso 3 — Presentar resultados
82
+
83
+ Mostrar la tabla generada por el script, que tiene el formato:
84
+
85
+ ```
86
+ Habilidades SWL disponibles (N)
87
+ ──────────────────────────────────────────────────────────────────────
88
+ nombre-de-habilidad v1.0.0 Descripción breve
89
+ ...
90
+ ──────────────────────────────────────────────────────────────────────
91
+ Generado: YYYY-MM-DD | Índice: .planning/skill-index.json
92
+ ```
93
+
94
+ ## Paso 4 — Cómo usar una habilidad
95
+
96
+ Indicar al usuario la sintaxis para cargar la habilidad seleccionada:
97
+
98
+ ```
99
+ Skill("nombre-de-habilidad")
100
+ ```
101
+
102
+ Por ejemplo, si encontró `typescript-avanzado`:
103
+
104
+ ```
105
+ Skill("typescript-avanzado")
106
+ ```
107
+
108
+ ## Notas
109
+
110
+ - El índice persiste en `.planning/skill-index.json` entre sesiones.
111
+ - Si una habilidad no tiene frontmatter YAML válido, aparece con su nombre de directorio.
112
+ - Para ver detalles de una habilidad específica: `Read("habilidades/<nombre>/SKILL.md")`.
113
+ - La descripción del índice viene del campo `description` en el frontmatter YAML del SKILL.md.