@saulwade/swl-ses 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/CLAUDE.md +192 -192
  2. package/README.md +600 -600
  3. package/agentes/auto-evolucion-swl.md +27 -3
  4. package/bin/swl-ses.js +32 -7
  5. package/comandos/swl/actualizar.md +174 -174
  6. package/comandos/swl/adoptar-proyecto.md +265 -265
  7. package/comandos/swl/aprender.md +836 -823
  8. package/comandos/swl/aprobar-plan.md +146 -146
  9. package/comandos/swl/auditar-deps.md +134 -134
  10. package/comandos/swl/autoresearch.md +264 -264
  11. package/comandos/swl/ayuda.md +224 -224
  12. package/comandos/swl/brainstorm.md +51 -51
  13. package/comandos/swl/briefing.md +119 -119
  14. package/comandos/swl/checkpoint.md +325 -325
  15. package/comandos/swl/claudemd.md +234 -234
  16. package/comandos/swl/compactar.md +310 -310
  17. package/comandos/swl/configurar-ci.md +235 -235
  18. package/comandos/swl/contexto.md +110 -110
  19. package/comandos/swl/contribuir.md +233 -233
  20. package/comandos/swl/crear-skill.md +292 -292
  21. package/comandos/swl/cron.md +194 -194
  22. package/comandos/swl/deuda-codigo.md +97 -97
  23. package/comandos/swl/discutir-fase.md +169 -169
  24. package/comandos/swl/ejecutar-fase.md +233 -233
  25. package/comandos/swl/evaluar-skill.md +520 -505
  26. package/comandos/swl/evolucion-continua.md +73 -0
  27. package/comandos/swl/evolucionar.md +267 -254
  28. package/comandos/swl/exportar-vault.md +583 -583
  29. package/comandos/swl/fix.md +118 -118
  30. package/comandos/swl/gateway.md +158 -158
  31. package/comandos/swl/inbox.md +116 -116
  32. package/comandos/swl/instalar.md +220 -220
  33. package/comandos/swl/instintos.md +86 -86
  34. package/comandos/swl/mapear-codebase.md +312 -312
  35. package/comandos/swl/mcp-status.md +175 -175
  36. package/comandos/swl/modelo.md +100 -100
  37. package/comandos/swl/nemesis.md +433 -433
  38. package/comandos/swl/notificaciones.md +299 -299
  39. package/comandos/swl/nuevo-proyecto.md +251 -251
  40. package/comandos/swl/planear-fase.md +263 -263
  41. package/comandos/swl/plugins.md +256 -256
  42. package/comandos/swl/predecir.md +169 -169
  43. package/comandos/swl/reflect-skills.md +125 -125
  44. package/comandos/swl/release.md +450 -450
  45. package/comandos/swl/revisar-impacto.md +201 -201
  46. package/comandos/swl/revisar.md +330 -330
  47. package/comandos/swl/seguridad.md +189 -189
  48. package/comandos/swl/sesiones.md +200 -200
  49. package/comandos/swl/skill-search.md +113 -113
  50. package/comandos/swl/status.md +343 -343
  51. package/comandos/swl/verificar.md +817 -817
  52. package/comandos/swl/wiki.md +620 -620
  53. package/gateway/cron/jobs.example.json +12 -0
  54. package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -276
  55. package/habilidades/autoresearch/SKILL.md +3 -2
  56. package/habilidades/benchmark-memoria/SKILL.md +7 -7
  57. package/habilidades/changelog-generator/SKILL.md +174 -174
  58. package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
  59. package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
  60. package/habilidades/context-builder/SKILL.md +4 -0
  61. package/habilidades/doubt-driven-review/SKILL.md +207 -191
  62. package/habilidades/drift-detection/SKILL.md +6 -1
  63. package/habilidades/ejecutar-fase/SKILL.md +6 -6
  64. package/habilidades/eval-framework/SKILL.md +8 -3
  65. package/habilidades/harness-claude-code/SKILL.md +312 -308
  66. package/habilidades/infra-github-actions/SKILL.md +4 -3
  67. package/habilidades/instalar-sistema/SKILL.md +227 -223
  68. package/habilidades/memoria-busqueda/SKILL.md +31 -39
  69. package/habilidades/planear-fase/SKILL.md +358 -350
  70. package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
  71. package/habilidades/swl-claudemd/SKILL.md +6 -7
  72. package/habilidades/swl-dashboard/SKILL.md +11 -43
  73. package/habilidades/tdd-workflow/SKILL.md +749 -744
  74. package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
  75. package/hooks/agente-lifecycle.js +2 -1
  76. package/hooks/aiisms-detector.js +13 -4
  77. package/hooks/audit-trail.js +2 -1
  78. package/hooks/auto-consolidacion.js +2 -1
  79. package/hooks/captura-acciones-post.js +2 -1
  80. package/hooks/captura-acciones-session.js +2 -1
  81. package/hooks/captura-feedback-usuario.js +3 -2
  82. package/hooks/claudemd-bloat-detector.js +12 -3
  83. package/hooks/claudemd-duplicacion-detector.js +13 -3
  84. package/hooks/contexto-iteracion.js +2 -1
  85. package/hooks/degradacion-instintos.js +2 -1
  86. package/hooks/extraccion-aprendizajes.js +109 -15
  87. package/hooks/grafo-contexto.js +2 -1
  88. package/hooks/guardrail-modelo.js +2 -1
  89. package/hooks/inbox-aviso.js +2 -1
  90. package/hooks/inyeccion-contexto.js +2 -1
  91. package/hooks/lib/agent-matcher.js +2 -1
  92. package/hooks/lib/agent-routing.js +2 -1
  93. package/hooks/lib/autonomia.js +5 -3
  94. package/hooks/lib/captura-acciones.js +2 -1
  95. package/hooks/lib/consolidation-lock.js +21 -10
  96. package/hooks/lib/etapa-auto-evolucion.js +10 -4
  97. package/hooks/lib/etapa-metricas.js +2 -1
  98. package/hooks/lib/etapa-perfil-usuario.js +20 -4
  99. package/hooks/lib/evolution-tracker.js +2 -1
  100. package/hooks/lib/gateway-notify.js +193 -179
  101. package/hooks/lib/loop-telemetry.js +5 -4
  102. package/hooks/lib/mcp-health.js +2 -1
  103. package/hooks/lib/memory-search.js +4 -0
  104. package/hooks/lib/merkle-audit.js +58 -6
  105. package/hooks/lib/nudge-tracker.js +2 -1
  106. package/hooks/lib/otlp-exporter.js +2 -1
  107. package/hooks/lib/propose-step.js +3 -2
  108. package/hooks/lib/raiz-proyecto.js +102 -0
  109. package/hooks/lib/run-log.js +2 -1
  110. package/hooks/lib/singleton-guard.js +218 -27
  111. package/hooks/lib/telegram-cliente.js +17 -8
  112. package/hooks/preservar-estado-pre-compact.js +2 -1
  113. package/hooks/proteccion-rutas.js +59 -3
  114. package/hooks/registro-turnos.js +2 -1
  115. package/hooks/resumen-sesion.js +2 -1
  116. package/hooks/risk-scoring.js +2 -1
  117. package/hooks/rotar-audit-auto.js +46 -20
  118. package/hooks/session-briefing.js +127 -1
  119. package/hooks/spec-gate.js +2 -1
  120. package/hooks/sugerir-contribuir.js +6 -3
  121. package/hooks/sugerir-regenerar-inventario.js +3 -2
  122. package/hooks/tdd-gate.js +2 -1
  123. package/hooks/telemetria-agentes.js +2 -1
  124. package/hooks/telemetria-skill-routing.js +2 -1
  125. package/hooks/tracking-costos.js +4 -3
  126. package/hooks/validar-formato-post-subagente.js +2 -1
  127. package/hooks/validar-intent-spec.js +2 -1
  128. package/hooks/validar-memoria-hook.js +13 -3
  129. package/hooks/validar-planning-paths.js +2 -1
  130. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
  131. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
  132. package/instintos/perfil-usuario.yaml +506 -3
  133. package/instintos/proyecto.yaml +78 -0
  134. package/llms.txt +2 -2
  135. package/manifiestos/canonical-hashes.json +335 -3
  136. package/manifiestos/modulos.json +19 -14
  137. package/manifiestos/planning-paths.json +1 -0
  138. package/manifiestos/skills-lock.json +50 -50
  139. package/package.json +2 -3
  140. package/plugin.json +2 -2
  141. package/scripts/actualizar.js +3 -0
  142. package/scripts/auditar-clases-conocidas.js +32 -4
  143. package/scripts/benchmark-memoria.js +1 -0
  144. package/scripts/cli/autonomia.js +23 -0
  145. package/scripts/cli/benchmark-memoria.js +37 -0
  146. package/scripts/cli/ciclo-autonomo.js +73 -0
  147. package/scripts/cli/ciclo-fase-b.js +102 -0
  148. package/scripts/cli/guardrail-metrics.js +39 -0
  149. package/scripts/cli/loop-telemetry.js +4 -2
  150. package/scripts/cli/memoria-search.js +69 -0
  151. package/scripts/cli/nudge-accionar.js +39 -0
  152. package/scripts/cli/run-eval.js +38 -0
  153. package/scripts/cli/run-skill-evals.js +13 -2
  154. package/scripts/derivar-feature-list.js +15 -14
  155. package/scripts/desinstalar.js +11 -0
  156. package/scripts/doctor.js +24 -10
  157. package/scripts/instalador.js +85 -7
  158. package/scripts/lib/activar-hooks-proyecto.js +12 -0
  159. package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
  160. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
  161. package/scripts/lib/ciclo-autonomo/config.js +165 -0
  162. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
  163. package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
  164. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
  165. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
  166. package/scripts/lib/ciclo-autonomo/index.js +301 -0
  167. package/scripts/lib/ciclo-autonomo/lock.js +124 -0
  168. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
  169. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
  170. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
  171. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
  172. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
  173. package/scripts/lib/estado.js +9 -0
  174. package/scripts/lib/gitignore-manifest.js +8 -1
  175. package/scripts/lib/hooks-settings.js +45 -0
  176. package/scripts/rotar-audit-logs.js +48 -2
  177. package/scripts/run-eval.js +1 -0
  178. package/scripts/run-skill-evals.js +287 -8
  179. package/scripts/smoke-test.js +16 -8
  180. package/scripts/tui/pantallas/install-wizard.js +403 -347
  181. package/scripts/validar.js +40 -1
@@ -1,235 +1,235 @@
1
- ---
2
- name: swl:configurar-ci
3
- description: Instala y gestiona los workflows CI/CD de swl-ses en proyectos de usuarios. Subcomandos init (flujo interactivo completo), status (muestra qué está instalado) y uninstall (quita los workflows). Para setup automatizado de GitHub Actions con revisión de seguridad Claude, CI genérico y release automatizado.
4
- allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
5
- user-invocable: true
6
- version: "1.0.0"
7
- ---
8
-
9
- # /swl:configurar-ci — Setup de CI/CD en tu proyecto
10
-
11
- Orquesta la instalación de los workflows GitHub Actions de swl-ses en el proyecto donde estés trabajando.
12
-
13
- ## Subcomandos
14
-
15
- | Subcomando | Descripción |
16
- |-----------|-------------|
17
- | `init` | Flujo interactivo completo (default) |
18
- | `status` | Muestra qué workflows están instalados y qué secrets se necesitan |
19
- | `uninstall` | Quita los workflows SWL del proyecto |
20
-
21
- Si se invoca sin subcomando, ejecutar `init`.
22
-
23
- ---
24
-
25
- ## /swl:configurar-ci init
26
-
27
- Flujo interactivo paso a paso. Detecta el proyecto en el directorio actual.
28
-
29
- ### Paso 1 — Verificar contexto
30
-
31
- ```bash
32
- node -e "const p=require('./package.json');console.log('Proyecto:',p.name,'v'+p.version)" 2>/dev/null || echo "Sin package.json"
33
- ls .github/workflows/ 2>/dev/null && echo "Directorio .github/workflows existe" || echo "Directorio .github/workflows no existe"
34
- ```
35
-
36
- Mostrar al usuario qué se detectó y confirmar que es el proyecto correcto.
37
-
38
- ### Paso 2 — Preguntar qué workflows instalar (si TTY)
39
-
40
- ```
41
- ¿Qué workflows quieres instalar? (Enter para activar, espacio para omitir)
42
-
43
- [x] swl-security.yml — Revisión de seguridad con Claude en cada PR
44
- REQUIERE: secret CLAUDE_API_KEY en GitHub Settings → Secrets
45
-
46
- [x] swl-ci.yml — CI estándar (lint + test) en push y PRs
47
- Sin secrets adicionales
48
-
49
- [ ] release-please.yml — Releases automáticos desde conventional commits
50
- Sin secrets adicionales. Requiere conventional commits.
51
-
52
- [ ] swl-devsecops.yml — Gates de seguridad del pipeline: gitleaks (secretos,
53
- historial completo) + auditoría de dependencias por ecosistema (npm/pip/cargo)
54
- Sin secrets en repos personales; en repos de ORGANIZACIÓN gitleaks exige
55
- GITLEAKS_LICENSE (gratuita para individuos). Los gates avanzados
56
- (SAST/Trivy/DAST) se configuran por proyecto — ver Skill("devsecops-pipeline-security").
57
- ```
58
-
59
- Si el usuario omite `init` e invoca con flags directos, respetar esos flags sin preguntar:
60
- - `--with-security` / `--no-security`
61
- - `--with-ci` / `--no-ci`
62
- - `--with-release-please`
63
- - `--with-devsecops`
64
- - `--dry-run`
65
- - `--force`
66
-
67
- ### Paso 3 — Copiar workflows
68
-
69
- Invocar el subcomando del CLI (resuelve cross-scope; ver
70
- `docs/invocacion-cli-cross-scope.md`). Imprime el resultado como JSON
71
- (`copiados`, `existentes`, `error`):
72
-
73
- ```bash
74
- swl-ses configurar-ci init
75
- # flags: --no-security --no-ci --with-release-please --with-devsecops --dry-run --force
76
- # fallback: npx -y @saulwade/swl-ses@latest configurar-ci init
77
- ```
78
-
79
- Si hay archivos existentes en `resultado.existentes`, preguntar:
80
- ```
81
- Los siguientes workflows ya existen en .github/workflows/:
82
- - swl-security.yml
83
- ¿Sobreescribir? (s/N)
84
- ```
85
-
86
- Si el usuario dice que sí, volver a llamar el subcomando con `--force`.
87
-
88
- ### Paso 4 — Configurar CLAUDE_API_KEY (solo si se instaló swl-security.yml)
89
-
90
- Preguntar:
91
- ```
92
- swl-security.yml requiere el secret CLAUDE_API_KEY en GitHub.
93
-
94
- ¿Quieres configurarlo ahora con gh CLI? (s/N)
95
- ```
96
-
97
- Si dice sí, verificar que `gh` esté disponible:
98
-
99
- ```bash
100
- gh auth status 2>&1 | head -3
101
- ```
102
-
103
- Si está autenticado, guiar al usuario para que pegue su API key (sin almacenarla):
104
-
105
- ```
106
- Pega tu CLAUDE_API_KEY (la input estará oculta):
107
- ```
108
-
109
- Luego ejecutar:
110
- ```bash
111
- gh secret set CLAUDE_API_KEY
112
- # gh leerá el valor desde stdin de forma segura
113
- ```
114
-
115
- Si `gh` no está disponible o el usuario dice que no, mostrar el link para hacerlo manualmente:
116
- ```
117
- Para configurar manualmente:
118
- https://github.com/<owner>/<repo>/settings/secrets/actions/new
119
- Nombre: CLAUDE_API_KEY
120
- Valor: tu clave de https://console.anthropic.com
121
- ```
122
-
123
- ### Paso 5 — Configurar branch protection (opcional)
124
-
125
- Preguntar:
126
- ```
127
- ¿Aplicar branch protection en main?
128
- Esto requiere gh CLI autenticado y permisos de admin en el repo.
129
- (s/N)
130
- ```
131
-
132
- Si dice sí:
133
- ```bash
134
- npx -y @saulwade/swl-ses@latest configure-branch-protection --dry-run
135
- # Mostrar el plan al usuario
136
- # Si confirma:
137
- npx -y @saulwade/swl-ses@latest configure-branch-protection
138
- ```
139
-
140
- El subcomando `configure-branch-protection` del CLI funciona desde cualquier proyecto: detecta el repo actual con `gh repo view`, aplica las reglas a su rama `main` y reporta resultado. No depende de la ubicación del paquete swl-ses.
141
-
142
- ### Paso 6 — Resumen final
143
-
144
- ```
145
- Setup completado:
146
- ✓ .github/workflows/swl-security.yml
147
- ✓ .github/workflows/swl-ci.yml
148
- - release-please.yml (omitido)
149
-
150
- Próximos pasos:
151
- 1. git add .github/workflows/ && git commit -m "ci: agregar workflows CI/CD swl-ses"
152
- 2. Abrir un PR para ver el workflow en acción
153
- 3. Verificar que CLAUDE_API_KEY esté en GitHub Settings → Secrets
154
- ```
155
-
156
- ---
157
-
158
- ## /swl:configurar-ci status
159
-
160
- Muestra el estado actual de los workflows SWL en el proyecto. Subcomando del CLI
161
- (salida JSON con `instalados`, `faltantes`, `secretsFaltantes`):
162
-
163
- ```bash
164
- swl-ses configurar-ci status
165
- # fallback: npx -y @saulwade/swl-ses@latest configurar-ci status
166
- ```
167
-
168
- Formato de salida (presentar al usuario a partir del JSON):
169
-
170
- ```
171
- Workflows SWL en .github/workflows/:
172
-
173
- Instalados:
174
- ✓ swl-security.yml
175
- Secrets requeridos: CLAUDE_API_KEY (verificar en GitHub Settings)
176
- ✓ swl-ci.yml
177
- Sin secrets adicionales
178
-
179
- No instalados:
180
- - release-please.yml
181
-
182
- Para instalar los faltantes: /swl:configurar-ci init
183
- ```
184
-
185
- Si `gh` está disponible, intentar verificar si el secret existe:
186
- ```bash
187
- gh secret list 2>/dev/null | grep CLAUDE_API_KEY
188
- ```
189
-
190
- ---
191
-
192
- ## /swl:configurar-ci uninstall
193
-
194
- Elimina los workflows gestionados por swl-ses. No toca branch protection ni otros workflows.
195
-
196
- Subcomando del CLI (salida JSON). Primero listar qué se eliminaría (sin
197
- confirmar), luego repetir con `--confirmar`:
198
-
199
- ```bash
200
- swl-ses configurar-ci uninstall # plan (confirmar: false)
201
- swl-ses configurar-ci uninstall --confirmar # ejecuta la eliminación
202
- # fallback: npx -y @saulwade/swl-ses@latest configurar-ci uninstall [--confirmar]
203
- ```
204
-
205
- Mostrar:
206
- ```
207
- Los siguientes workflows serán eliminados:
208
- - .github/workflows/swl-security.yml
209
- - .github/workflows/swl-ci.yml
210
-
211
- ¿Confirmar? (s/N)
212
- ```
213
-
214
- Si el usuario confirma:
215
- ```javascript
216
- const resultado = uninstall({ confirmar: true });
217
- ```
218
-
219
- Mostrar confirmación de archivos eliminados. Recordar que la branch protection NO se toca.
220
-
221
- ---
222
-
223
- ## Flags globales
224
-
225
- | Flag | Descripción |
226
- |------|-------------|
227
- | `--dry-run` | Muestra qué se haría sin modificar nada |
228
- | `--force` | Sobreescribe archivos existentes sin preguntar |
229
- | `--with-release-please` | Incluir release-please.yml |
230
- | `--no-security` | Omitir swl-security.yml |
231
- | `--no-ci` | Omitir swl-ci.yml |
232
-
233
- ## Skill de referencia
234
-
235
- Para troubleshooting, gotchas y guía avanzada: `Skill("infra-github-actions")`.
1
+ ---
2
+ name: swl:configurar-ci
3
+ description: Instala y gestiona los workflows CI/CD de swl-ses en proyectos de usuarios. Subcomandos init (flujo interactivo completo), status (muestra qué está instalado) y uninstall (quita los workflows). Para setup automatizado de GitHub Actions con revisión de seguridad Claude, CI genérico y release automatizado.
4
+ allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
5
+ user-invocable: true
6
+ version: "1.0.0"
7
+ ---
8
+
9
+ # /swl:configurar-ci — Setup de CI/CD en tu proyecto
10
+
11
+ Orquesta la instalación de los workflows GitHub Actions de swl-ses en el proyecto donde estés trabajando.
12
+
13
+ ## Subcomandos
14
+
15
+ | Subcomando | Descripción |
16
+ |-----------|-------------|
17
+ | `init` | Flujo interactivo completo (default) |
18
+ | `status` | Muestra qué workflows están instalados y qué secrets se necesitan |
19
+ | `uninstall` | Quita los workflows SWL del proyecto |
20
+
21
+ Si se invoca sin subcomando, ejecutar `init`.
22
+
23
+ ---
24
+
25
+ ## /swl:configurar-ci init
26
+
27
+ Flujo interactivo paso a paso. Detecta el proyecto en el directorio actual.
28
+
29
+ ### Paso 1 — Verificar contexto
30
+
31
+ ```bash
32
+ node -e "const p=require('./package.json');console.log('Proyecto:',p.name,'v'+p.version)" 2>/dev/null || echo "Sin package.json"
33
+ ls .github/workflows/ 2>/dev/null && echo "Directorio .github/workflows existe" || echo "Directorio .github/workflows no existe"
34
+ ```
35
+
36
+ Mostrar al usuario qué se detectó y confirmar que es el proyecto correcto.
37
+
38
+ ### Paso 2 — Preguntar qué workflows instalar (si TTY)
39
+
40
+ ```
41
+ ¿Qué workflows quieres instalar? (Enter para activar, espacio para omitir)
42
+
43
+ [x] swl-security.yml — Revisión de seguridad con Claude en cada PR
44
+ REQUIERE: secret CLAUDE_API_KEY en GitHub Settings → Secrets
45
+
46
+ [x] swl-ci.yml — CI estándar (lint + test) en push y PRs
47
+ Sin secrets adicionales
48
+
49
+ [ ] release-please.yml — Releases automáticos desde conventional commits
50
+ Sin secrets adicionales. Requiere conventional commits.
51
+
52
+ [ ] swl-devsecops.yml — Gates de seguridad del pipeline: gitleaks (secretos,
53
+ historial completo) + auditoría de dependencias por ecosistema (npm/pip/cargo)
54
+ Sin secrets en repos personales; en repos de ORGANIZACIÓN gitleaks exige
55
+ GITLEAKS_LICENSE (gratuita para individuos). Los gates avanzados
56
+ (SAST/Trivy/DAST) se configuran por proyecto — ver Skill("devsecops-pipeline-security").
57
+ ```
58
+
59
+ Si el usuario omite `init` e invoca con flags directos, respetar esos flags sin preguntar:
60
+ - `--with-security` / `--no-security`
61
+ - `--with-ci` / `--no-ci`
62
+ - `--with-release-please`
63
+ - `--with-devsecops`
64
+ - `--dry-run`
65
+ - `--force`
66
+
67
+ ### Paso 3 — Copiar workflows
68
+
69
+ Invocar el subcomando del CLI (resuelve cross-scope; ver
70
+ `docs/invocacion-cli-cross-scope.md`). Imprime el resultado como JSON
71
+ (`copiados`, `existentes`, `error`):
72
+
73
+ ```bash
74
+ swl-ses configurar-ci init
75
+ # flags: --no-security --no-ci --with-release-please --with-devsecops --dry-run --force
76
+ # fallback: npx -y @saulwade/swl-ses@latest configurar-ci init
77
+ ```
78
+
79
+ Si hay archivos existentes en `resultado.existentes`, preguntar:
80
+ ```
81
+ Los siguientes workflows ya existen en .github/workflows/:
82
+ - swl-security.yml
83
+ ¿Sobreescribir? (s/N)
84
+ ```
85
+
86
+ Si el usuario dice que sí, volver a llamar el subcomando con `--force`.
87
+
88
+ ### Paso 4 — Configurar CLAUDE_API_KEY (solo si se instaló swl-security.yml)
89
+
90
+ Preguntar:
91
+ ```
92
+ swl-security.yml requiere el secret CLAUDE_API_KEY en GitHub.
93
+
94
+ ¿Quieres configurarlo ahora con gh CLI? (s/N)
95
+ ```
96
+
97
+ Si dice sí, verificar que `gh` esté disponible:
98
+
99
+ ```bash
100
+ gh auth status 2>&1 | head -3
101
+ ```
102
+
103
+ Si está autenticado, guiar al usuario para que pegue su API key (sin almacenarla):
104
+
105
+ ```
106
+ Pega tu CLAUDE_API_KEY (la input estará oculta):
107
+ ```
108
+
109
+ Luego ejecutar:
110
+ ```bash
111
+ gh secret set CLAUDE_API_KEY
112
+ # gh leerá el valor desde stdin de forma segura
113
+ ```
114
+
115
+ Si `gh` no está disponible o el usuario dice que no, mostrar el link para hacerlo manualmente:
116
+ ```
117
+ Para configurar manualmente:
118
+ https://github.com/<owner>/<repo>/settings/secrets/actions/new
119
+ Nombre: CLAUDE_API_KEY
120
+ Valor: tu clave de https://console.anthropic.com
121
+ ```
122
+
123
+ ### Paso 5 — Configurar branch protection (opcional)
124
+
125
+ Preguntar:
126
+ ```
127
+ ¿Aplicar branch protection en main?
128
+ Esto requiere gh CLI autenticado y permisos de admin en el repo.
129
+ (s/N)
130
+ ```
131
+
132
+ Si dice sí:
133
+ ```bash
134
+ npx -y @saulwade/swl-ses@latest configure-branch-protection --dry-run
135
+ # Mostrar el plan al usuario
136
+ # Si confirma:
137
+ npx -y @saulwade/swl-ses@latest configure-branch-protection
138
+ ```
139
+
140
+ El subcomando `configure-branch-protection` del CLI funciona desde cualquier proyecto: detecta el repo actual con `gh repo view`, aplica las reglas a su rama `main` y reporta resultado. No depende de la ubicación del paquete swl-ses.
141
+
142
+ ### Paso 6 — Resumen final
143
+
144
+ ```
145
+ Setup completado:
146
+ ✓ .github/workflows/swl-security.yml
147
+ ✓ .github/workflows/swl-ci.yml
148
+ - release-please.yml (omitido)
149
+
150
+ Próximos pasos:
151
+ 1. git add .github/workflows/ && git commit -m "ci: agregar workflows CI/CD swl-ses"
152
+ 2. Abrir un PR para ver el workflow en acción
153
+ 3. Verificar que CLAUDE_API_KEY esté en GitHub Settings → Secrets
154
+ ```
155
+
156
+ ---
157
+
158
+ ## /swl:configurar-ci status
159
+
160
+ Muestra el estado actual de los workflows SWL en el proyecto. Subcomando del CLI
161
+ (salida JSON con `instalados`, `faltantes`, `secretsFaltantes`):
162
+
163
+ ```bash
164
+ swl-ses configurar-ci status
165
+ # fallback: npx -y @saulwade/swl-ses@latest configurar-ci status
166
+ ```
167
+
168
+ Formato de salida (presentar al usuario a partir del JSON):
169
+
170
+ ```
171
+ Workflows SWL en .github/workflows/:
172
+
173
+ Instalados:
174
+ ✓ swl-security.yml
175
+ Secrets requeridos: CLAUDE_API_KEY (verificar en GitHub Settings)
176
+ ✓ swl-ci.yml
177
+ Sin secrets adicionales
178
+
179
+ No instalados:
180
+ - release-please.yml
181
+
182
+ Para instalar los faltantes: /swl:configurar-ci init
183
+ ```
184
+
185
+ Si `gh` está disponible, intentar verificar si el secret existe:
186
+ ```bash
187
+ gh secret list 2>/dev/null | grep CLAUDE_API_KEY
188
+ ```
189
+
190
+ ---
191
+
192
+ ## /swl:configurar-ci uninstall
193
+
194
+ Elimina los workflows gestionados por swl-ses. No toca branch protection ni otros workflows.
195
+
196
+ Subcomando del CLI (salida JSON). Primero listar qué se eliminaría (sin
197
+ confirmar), luego repetir con `--confirmar`:
198
+
199
+ ```bash
200
+ swl-ses configurar-ci uninstall # plan (confirmar: false)
201
+ swl-ses configurar-ci uninstall --confirmar # ejecuta la eliminación
202
+ # fallback: npx -y @saulwade/swl-ses@latest configurar-ci uninstall [--confirmar]
203
+ ```
204
+
205
+ Mostrar:
206
+ ```
207
+ Los siguientes workflows serán eliminados:
208
+ - .github/workflows/swl-security.yml
209
+ - .github/workflows/swl-ci.yml
210
+
211
+ ¿Confirmar? (s/N)
212
+ ```
213
+
214
+ Si el usuario confirma:
215
+ ```javascript
216
+ const resultado = uninstall({ confirmar: true });
217
+ ```
218
+
219
+ Mostrar confirmación de archivos eliminados. Recordar que la branch protection NO se toca.
220
+
221
+ ---
222
+
223
+ ## Flags globales
224
+
225
+ | Flag | Descripción |
226
+ |------|-------------|
227
+ | `--dry-run` | Muestra qué se haría sin modificar nada |
228
+ | `--force` | Sobreescribe archivos existentes sin preguntar |
229
+ | `--with-release-please` | Incluir release-please.yml |
230
+ | `--no-security` | Omitir swl-security.yml |
231
+ | `--no-ci` | Omitir swl-ci.yml |
232
+
233
+ ## Skill de referencia
234
+
235
+ Para troubleshooting, gotchas y guía avanzada: `Skill("infra-github-actions")`.