@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,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")`.