@saulwade/swl-ses 1.3.1 → 1.3.3
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.
- package/CLAUDE.md +199 -199
- package/README.md +1 -1
- package/bin/swl-ses.js +77 -5
- package/comandos/swl/aprender.md +1 -1
- package/comandos/swl/claudemd.md +141 -136
- package/comandos/swl/configurar-ci.md +227 -227
- package/comandos/swl/evolucion-estado.md +1 -1
- package/comandos/swl/evolucionar.md +3 -3
- package/comandos/swl/inbox.md +1 -1
- package/comandos/swl/reflect-skills.md +1 -1
- package/comandos/swl/salud.md +7 -7
- package/comandos/swl/skill-search.md +4 -4
- package/manifiestos/perfiles.json +2 -1
- package/manifiestos/skills-lock.json +1093 -1093
- package/package.json +87 -87
- package/plugin.json +343 -343
- package/scripts/auditar-claudemd.js +297 -297
- package/scripts/bootstrap-instintos.js +1 -1
- package/scripts/cli/audit-agents-gaps.js +36 -0
- package/scripts/cli/audit-claudemd.js +43 -0
- package/scripts/cli/audit-coverage-frameworks.js +39 -0
- package/scripts/cli/bootstrap-instincts.js +38 -0
- package/scripts/cli/configure-branch-protection.js +42 -0
- package/scripts/cli/generate-skills-lock.js +31 -0
- package/scripts/cli/inbox-tmux-inject.js +49 -0
- package/scripts/cli/reflect-skills.js +40 -0
- package/scripts/cli/run-skill-evals.js +47 -0
- package/scripts/cli/skill-discovery.js +38 -0
- package/scripts/cli/verify-evolution.js +36 -0
- package/scripts/generar-skills-lock.js +190 -190
- package/scripts/inbox-tmux-inject.js +6 -0
- package/scripts/lib/autostart-windows.js +51 -28
- package/scripts/lib/skill-discovery.js +11 -3
- package/scripts/verificar-evolucion.js +1 -1
|
@@ -1,227 +1,227 @@
|
|
|
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
|
-
|
|
53
|
-
Si el usuario omite `init` e invoca con flags directos, respetar esos flags sin preguntar:
|
|
54
|
-
- `--with-security` / `--no-security`
|
|
55
|
-
- `--with-ci` / `--no-ci`
|
|
56
|
-
- `--with-release-please`
|
|
57
|
-
- `--dry-run`
|
|
58
|
-
- `--force`
|
|
59
|
-
|
|
60
|
-
### Paso 3 — Copiar workflows
|
|
61
|
-
|
|
62
|
-
Invocar `scripts/lib/configurar-ci.js` con las opciones seleccionadas:
|
|
63
|
-
|
|
64
|
-
```javascript
|
|
65
|
-
const { init } = require('./scripts/lib/configurar-ci');
|
|
66
|
-
const resultado = init({
|
|
67
|
-
withSecurity: true,
|
|
68
|
-
withCi: true,
|
|
69
|
-
withReleasePlease: false,
|
|
70
|
-
// dryRun: true, // con --dry-run
|
|
71
|
-
});
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Si hay archivos existentes en `resultado.existentes`, preguntar:
|
|
75
|
-
```
|
|
76
|
-
Los siguientes workflows ya existen en .github/workflows/:
|
|
77
|
-
- swl-security.yml
|
|
78
|
-
¿Sobreescribir? (s/N)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Si el usuario dice que sí, volver a llamar `init` con `force: true`.
|
|
82
|
-
|
|
83
|
-
### Paso 4 — Configurar CLAUDE_API_KEY (solo si se instaló swl-security.yml)
|
|
84
|
-
|
|
85
|
-
Preguntar:
|
|
86
|
-
```
|
|
87
|
-
swl-security.yml requiere el secret CLAUDE_API_KEY en GitHub.
|
|
88
|
-
|
|
89
|
-
¿Quieres configurarlo ahora con gh CLI? (s/N)
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Si dice sí, verificar que `gh` esté disponible:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
gh auth status 2>&1 | head -3
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Si está autenticado, guiar al usuario para que pegue su API key (sin almacenarla):
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
Pega tu CLAUDE_API_KEY (la input estará oculta):
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Luego ejecutar:
|
|
105
|
-
```bash
|
|
106
|
-
gh secret set CLAUDE_API_KEY
|
|
107
|
-
# gh leerá el valor desde stdin de forma segura
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Si `gh` no está disponible o el usuario dice que no, mostrar el link para hacerlo manualmente:
|
|
111
|
-
```
|
|
112
|
-
Para configurar manualmente:
|
|
113
|
-
https://github.com/<owner>/<repo>/settings/secrets/actions/new
|
|
114
|
-
Nombre: CLAUDE_API_KEY
|
|
115
|
-
Valor: tu clave de https://console.anthropic.com
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Paso 5 — Configurar branch protection (opcional)
|
|
119
|
-
|
|
120
|
-
Preguntar:
|
|
121
|
-
```
|
|
122
|
-
¿Aplicar branch protection en main?
|
|
123
|
-
Esto requiere gh CLI autenticado y permisos de admin en el repo.
|
|
124
|
-
(s/N)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Si dice sí:
|
|
128
|
-
```bash
|
|
129
|
-
|
|
130
|
-
# Mostrar el plan al usuario
|
|
131
|
-
# Si confirma:
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
### Paso 6 — Resumen final
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
Setup completado:
|
|
141
|
-
✓ .github/workflows/swl-security.yml
|
|
142
|
-
✓ .github/workflows/swl-ci.yml
|
|
143
|
-
- release-please.yml (omitido)
|
|
144
|
-
|
|
145
|
-
Próximos pasos:
|
|
146
|
-
1. git add .github/workflows/ && git commit -m "ci: agregar workflows CI/CD swl-ses"
|
|
147
|
-
2. Abrir un PR para ver el workflow en acción
|
|
148
|
-
3. Verificar que CLAUDE_API_KEY esté en GitHub Settings → Secrets
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## /swl:configurar-ci status
|
|
154
|
-
|
|
155
|
-
Muestra el estado actual de los workflows SWL en el proyecto.
|
|
156
|
-
|
|
157
|
-
```javascript
|
|
158
|
-
const { status } = require('./scripts/lib/configurar-ci');
|
|
159
|
-
const resultado = status();
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Formato de salida:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
Workflows SWL en .github/workflows/:
|
|
166
|
-
|
|
167
|
-
Instalados:
|
|
168
|
-
✓ swl-security.yml
|
|
169
|
-
Secrets requeridos: CLAUDE_API_KEY (verificar en GitHub Settings)
|
|
170
|
-
✓ swl-ci.yml
|
|
171
|
-
Sin secrets adicionales
|
|
172
|
-
|
|
173
|
-
No instalados:
|
|
174
|
-
- release-please.yml
|
|
175
|
-
|
|
176
|
-
Para instalar los faltantes: /swl:configurar-ci init
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Si `gh` está disponible, intentar verificar si el secret existe:
|
|
180
|
-
```bash
|
|
181
|
-
gh secret list 2>/dev/null | grep CLAUDE_API_KEY
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## /swl:configurar-ci uninstall
|
|
187
|
-
|
|
188
|
-
Elimina los workflows gestionados por swl-ses. No toca branch protection ni otros workflows.
|
|
189
|
-
|
|
190
|
-
```javascript
|
|
191
|
-
const { uninstall } = require('./scripts/lib/configurar-ci');
|
|
192
|
-
|
|
193
|
-
// Primero listar qué se eliminaría (sin confirmar)
|
|
194
|
-
const plan = uninstall({ confirmar: false });
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
Mostrar:
|
|
198
|
-
```
|
|
199
|
-
Los siguientes workflows serán eliminados:
|
|
200
|
-
- .github/workflows/swl-security.yml
|
|
201
|
-
- .github/workflows/swl-ci.yml
|
|
202
|
-
|
|
203
|
-
¿Confirmar? (s/N)
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
Si el usuario confirma:
|
|
207
|
-
```javascript
|
|
208
|
-
const resultado = uninstall({ confirmar: true });
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Mostrar confirmación de archivos eliminados. Recordar que la branch protection NO se toca.
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## Flags globales
|
|
216
|
-
|
|
217
|
-
| Flag | Descripción |
|
|
218
|
-
|------|-------------|
|
|
219
|
-
| `--dry-run` | Muestra qué se haría sin modificar nada |
|
|
220
|
-
| `--force` | Sobreescribe archivos existentes sin preguntar |
|
|
221
|
-
| `--with-release-please` | Incluir release-please.yml |
|
|
222
|
-
| `--no-security` | Omitir swl-security.yml |
|
|
223
|
-
| `--no-ci` | Omitir swl-ci.yml |
|
|
224
|
-
|
|
225
|
-
## Skill de referencia
|
|
226
|
-
|
|
227
|
-
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
|
+
|
|
53
|
+
Si el usuario omite `init` e invoca con flags directos, respetar esos flags sin preguntar:
|
|
54
|
+
- `--with-security` / `--no-security`
|
|
55
|
+
- `--with-ci` / `--no-ci`
|
|
56
|
+
- `--with-release-please`
|
|
57
|
+
- `--dry-run`
|
|
58
|
+
- `--force`
|
|
59
|
+
|
|
60
|
+
### Paso 3 — Copiar workflows
|
|
61
|
+
|
|
62
|
+
Invocar `scripts/lib/configurar-ci.js` con las opciones seleccionadas:
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
const { init } = require('./scripts/lib/configurar-ci');
|
|
66
|
+
const resultado = init({
|
|
67
|
+
withSecurity: true,
|
|
68
|
+
withCi: true,
|
|
69
|
+
withReleasePlease: false,
|
|
70
|
+
// dryRun: true, // con --dry-run
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Si hay archivos existentes en `resultado.existentes`, preguntar:
|
|
75
|
+
```
|
|
76
|
+
Los siguientes workflows ya existen en .github/workflows/:
|
|
77
|
+
- swl-security.yml
|
|
78
|
+
¿Sobreescribir? (s/N)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Si el usuario dice que sí, volver a llamar `init` con `force: true`.
|
|
82
|
+
|
|
83
|
+
### Paso 4 — Configurar CLAUDE_API_KEY (solo si se instaló swl-security.yml)
|
|
84
|
+
|
|
85
|
+
Preguntar:
|
|
86
|
+
```
|
|
87
|
+
swl-security.yml requiere el secret CLAUDE_API_KEY en GitHub.
|
|
88
|
+
|
|
89
|
+
¿Quieres configurarlo ahora con gh CLI? (s/N)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Si dice sí, verificar que `gh` esté disponible:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
gh auth status 2>&1 | head -3
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Si está autenticado, guiar al usuario para que pegue su API key (sin almacenarla):
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Pega tu CLAUDE_API_KEY (la input estará oculta):
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Luego ejecutar:
|
|
105
|
+
```bash
|
|
106
|
+
gh secret set CLAUDE_API_KEY
|
|
107
|
+
# gh leerá el valor desde stdin de forma segura
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Si `gh` no está disponible o el usuario dice que no, mostrar el link para hacerlo manualmente:
|
|
111
|
+
```
|
|
112
|
+
Para configurar manualmente:
|
|
113
|
+
https://github.com/<owner>/<repo>/settings/secrets/actions/new
|
|
114
|
+
Nombre: CLAUDE_API_KEY
|
|
115
|
+
Valor: tu clave de https://console.anthropic.com
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Paso 5 — Configurar branch protection (opcional)
|
|
119
|
+
|
|
120
|
+
Preguntar:
|
|
121
|
+
```
|
|
122
|
+
¿Aplicar branch protection en main?
|
|
123
|
+
Esto requiere gh CLI autenticado y permisos de admin en el repo.
|
|
124
|
+
(s/N)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Si dice sí:
|
|
128
|
+
```bash
|
|
129
|
+
npx -y @saulwade/swl-ses@latest configure-branch-protection --dry-run
|
|
130
|
+
# Mostrar el plan al usuario
|
|
131
|
+
# Si confirma:
|
|
132
|
+
npx -y @saulwade/swl-ses@latest configure-branch-protection
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
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.
|
|
136
|
+
|
|
137
|
+
### Paso 6 — Resumen final
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Setup completado:
|
|
141
|
+
✓ .github/workflows/swl-security.yml
|
|
142
|
+
✓ .github/workflows/swl-ci.yml
|
|
143
|
+
- release-please.yml (omitido)
|
|
144
|
+
|
|
145
|
+
Próximos pasos:
|
|
146
|
+
1. git add .github/workflows/ && git commit -m "ci: agregar workflows CI/CD swl-ses"
|
|
147
|
+
2. Abrir un PR para ver el workflow en acción
|
|
148
|
+
3. Verificar que CLAUDE_API_KEY esté en GitHub Settings → Secrets
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## /swl:configurar-ci status
|
|
154
|
+
|
|
155
|
+
Muestra el estado actual de los workflows SWL en el proyecto.
|
|
156
|
+
|
|
157
|
+
```javascript
|
|
158
|
+
const { status } = require('./scripts/lib/configurar-ci');
|
|
159
|
+
const resultado = status();
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Formato de salida:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
Workflows SWL en .github/workflows/:
|
|
166
|
+
|
|
167
|
+
Instalados:
|
|
168
|
+
✓ swl-security.yml
|
|
169
|
+
Secrets requeridos: CLAUDE_API_KEY (verificar en GitHub Settings)
|
|
170
|
+
✓ swl-ci.yml
|
|
171
|
+
Sin secrets adicionales
|
|
172
|
+
|
|
173
|
+
No instalados:
|
|
174
|
+
- release-please.yml
|
|
175
|
+
|
|
176
|
+
Para instalar los faltantes: /swl:configurar-ci init
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Si `gh` está disponible, intentar verificar si el secret existe:
|
|
180
|
+
```bash
|
|
181
|
+
gh secret list 2>/dev/null | grep CLAUDE_API_KEY
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## /swl:configurar-ci uninstall
|
|
187
|
+
|
|
188
|
+
Elimina los workflows gestionados por swl-ses. No toca branch protection ni otros workflows.
|
|
189
|
+
|
|
190
|
+
```javascript
|
|
191
|
+
const { uninstall } = require('./scripts/lib/configurar-ci');
|
|
192
|
+
|
|
193
|
+
// Primero listar qué se eliminaría (sin confirmar)
|
|
194
|
+
const plan = uninstall({ confirmar: false });
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Mostrar:
|
|
198
|
+
```
|
|
199
|
+
Los siguientes workflows serán eliminados:
|
|
200
|
+
- .github/workflows/swl-security.yml
|
|
201
|
+
- .github/workflows/swl-ci.yml
|
|
202
|
+
|
|
203
|
+
¿Confirmar? (s/N)
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Si el usuario confirma:
|
|
207
|
+
```javascript
|
|
208
|
+
const resultado = uninstall({ confirmar: true });
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Mostrar confirmación de archivos eliminados. Recordar que la branch protection NO se toca.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Flags globales
|
|
216
|
+
|
|
217
|
+
| Flag | Descripción |
|
|
218
|
+
|------|-------------|
|
|
219
|
+
| `--dry-run` | Muestra qué se haría sin modificar nada |
|
|
220
|
+
| `--force` | Sobreescribe archivos existentes sin preguntar |
|
|
221
|
+
| `--with-release-please` | Incluir release-please.yml |
|
|
222
|
+
| `--no-security` | Omitir swl-security.yml |
|
|
223
|
+
| `--no-ci` | Omitir swl-ci.yml |
|
|
224
|
+
|
|
225
|
+
## Skill de referencia
|
|
226
|
+
|
|
227
|
+
Para troubleshooting, gotchas y guía avanzada: `Skill("infra-github-actions")`.
|
|
@@ -149,7 +149,7 @@ Template de salida:
|
|
|
149
149
|
Al final del dashboard, sugerir acciones según las métricas:
|
|
150
150
|
|
|
151
151
|
- Si `instintos.proyecto === 0` y `aprendizajes_totales > 10`:
|
|
152
|
-
→ `
|
|
152
|
+
→ `npx -y @saulwade/swl-ses@latest bootstrap-instincts` (pobla desde APRENDIZAJES.md)
|
|
153
153
|
|
|
154
154
|
- Si `nudges.tasaAccion < 0.3` y `nudges.total > 5`:
|
|
155
155
|
→ "Muchos nudges ignorados. Revisa `.planning/evolucion/alertas-persistentes.json`"
|
|
@@ -172,7 +172,7 @@ garantizar que la evolución no degradó el skill/agente:
|
|
|
172
172
|
### 6.5.1 — Verificar si existe archivo de evals
|
|
173
173
|
|
|
174
174
|
```bash
|
|
175
|
-
|
|
175
|
+
npx -y @saulwade/swl-ses@latest run-skill-evals <nombre> --list 2>/dev/null | grep "<nombre>"
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
Si NO hay evals: saltar este paso y registrar en CHANGELOG:
|
|
@@ -193,7 +193,7 @@ score_baseline = (evals_pass / evals_total) * 100 × factor_peso
|
|
|
193
193
|
Registrar:
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
|
-
|
|
196
|
+
npx -y @saulwade/swl-ses@latest run-skill-evals <nombre> --record-baseline --score=<N>
|
|
197
197
|
```
|
|
198
198
|
|
|
199
199
|
### 6.5.3 — Aplicar el cambio (lo que ya hacía el Paso 6)
|
|
@@ -210,7 +210,7 @@ score_after = (evals_pass / evals_total) * 100 × factor_peso
|
|
|
210
210
|
|
|
211
211
|
| Condición | Acción |
|
|
212
212
|
|---|---|
|
|
213
|
-
| `score_after >= score_baseline` | **Aceptar** — `
|
|
213
|
+
| `score_after >= score_baseline` | **Aceptar** — `npx -y @saulwade/swl-ses@latest run-skill-evals <nombre> --record-after --score=<N>` |
|
|
214
214
|
| `score_after < score_baseline - 5` | **Revertir** — restaurar el archivo anterior + `--record-revert --score=<N>` |
|
|
215
215
|
| `score_baseline - 5 <= score_after < score_baseline` | **Requiere revisión humana** — reportar diferencia; usuario decide si acepta la regresión menor o revierte |
|
|
216
216
|
|
package/comandos/swl/inbox.md
CHANGED
|
@@ -89,7 +89,7 @@ Si tu sesión de Claude Code corre dentro de `tmux`, puedes usar el daemon opt-i
|
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
# Correr en una terminal separada
|
|
92
|
-
|
|
92
|
+
npx -y @saulwade/swl-ses@latest inbox-tmux-inject --session=claude --poll=2
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
Ese daemon monitorea `.planning/inbox/` y usa `tmux send-keys` para inyectar el comando a la sesión Claude. No funciona en Windows (no hay tmux).
|
|
@@ -31,7 +31,7 @@ Complementa a `/swl:aprender` (que trabaja sobre la sesión actual) y a `/swl:ev
|
|
|
31
31
|
Corre el script determinista que lee los JSONL del proyecto actual y clusteriza intenciones:
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
34
|
+
npx -y @saulwade/swl-ses@latest reflect-skills --ventana=30 --umbral=3
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Parámetros:
|
package/comandos/swl/salud.md
CHANGED
|
@@ -227,7 +227,7 @@ Si la variable de entorno `SWL_AUDIT_FRAMEWORKS=1` está presente, ejecutar el
|
|
|
227
227
|
auditor de cobertura:
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
|
-
|
|
230
|
+
npx -y @saulwade/swl-ses@latest audit-coverage-frameworks --resumen
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
Propósito: reportar cuántos skills declaran mapeos a los 5 frameworks de
|
|
@@ -249,13 +249,13 @@ cada framework.
|
|
|
249
249
|
**Filtrado por framework**:
|
|
250
250
|
|
|
251
251
|
```bash
|
|
252
|
-
SWL_AUDIT_FRAMEWORKS=1
|
|
252
|
+
SWL_AUDIT_FRAMEWORKS=1 npx -y @saulwade/swl-ses@latest audit-coverage-frameworks --framework=nist_ai_rmf --resumen
|
|
253
253
|
```
|
|
254
254
|
|
|
255
255
|
**Persistir snapshot**:
|
|
256
256
|
|
|
257
257
|
```bash
|
|
258
|
-
|
|
258
|
+
npx -y @saulwade/swl-ses@latest audit-coverage-frameworks --save
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
Persiste en `.planning/evolucion/cobertura-frameworks.json` para comparación
|
|
@@ -271,7 +271,7 @@ Si la variable de entorno `SWL_AUDIT_AGENTES=1` está presente, ejecutar el
|
|
|
271
271
|
auditor de agentes:
|
|
272
272
|
|
|
273
273
|
```bash
|
|
274
|
-
|
|
274
|
+
npx -y @saulwade/swl-ses@latest audit-agents-gaps --resumen
|
|
275
275
|
```
|
|
276
276
|
|
|
277
277
|
Propósito: reportar cuántos agentes carecen de Exclusion Clause (campo
|
|
@@ -294,7 +294,7 @@ monolíticos, secciones canónicas (Stack/Comandos/Code style/Conventions),
|
|
|
294
294
|
uso de `@references`, placeholders sin reemplazar.
|
|
295
295
|
|
|
296
296
|
```bash
|
|
297
|
-
|
|
297
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd --json
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
Veredictos posibles:
|
|
@@ -322,7 +322,7 @@ Si existe `manifiestos/skills-lock.json`, comparar el hash actual de cada
|
|
|
322
322
|
skills entre release y release.
|
|
323
323
|
|
|
324
324
|
```bash
|
|
325
|
-
|
|
325
|
+
npx -y @saulwade/swl-ses@latest generate-skills-lock --check
|
|
326
326
|
```
|
|
327
327
|
|
|
328
328
|
Estados posibles:
|
|
@@ -333,7 +333,7 @@ Estados posibles:
|
|
|
333
333
|
| `✗ skills-lock DRIFT detectado` | Skills modificados, nuevos o faltantes | Listar diferencias y proponer regenerar |
|
|
334
334
|
|
|
335
335
|
Si NO existe el lock (proyecto fresco o pre-1.1.0), este paso se omite y
|
|
336
|
-
emite advertencia sugerente: `
|
|
336
|
+
emite advertencia sugerente: `npx -y @saulwade/swl-ses@latest generate-skills-lock`.
|
|
337
337
|
|
|
338
338
|
El lock se regenera automáticamente como parte de `/swl:release`. Drift
|
|
339
339
|
fuera de release indica ediciones manuales no committed.
|
|
@@ -32,16 +32,16 @@ Si falta, indicar al usuario que actualice SWL con `/swl:actualizar`.
|
|
|
32
32
|
### Sin query (catálogo completo)
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
npx -y @saulwade/swl-ses@latest skill-discovery
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
### Con query (búsqueda filtrada)
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
|
|
41
|
+
npx -y @saulwade/swl-ses@latest skill-discovery "<query>"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Ejemplo: `
|
|
44
|
+
Ejemplo: `npx -y @saulwade/swl-ses@latest skill-discovery "typescript"` muestra skills de TypeScript.
|
|
45
45
|
|
|
46
46
|
### Búsqueda por intent (--intent)
|
|
47
47
|
|
|
@@ -75,7 +75,7 @@ o por las keywords del dominio en la descripción.
|
|
|
75
75
|
### Reconstruir índice
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
|
-
|
|
78
|
+
npx -y @saulwade/swl-ses@latest skill-discovery --rebuild
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
## Paso 3 — Presentar resultados
|