@saulwade/swl-ses 2.0.0 → 2.2.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.
- package/CLAUDE.md +196 -196
- package/README.md +579 -579
- package/agentes/_propose-step.md +90 -0
- package/agentes/implementador-swl.md +2 -0
- package/agentes/orquestador-swl.md +2 -0
- package/agentes/perfilador-usuario-swl.md +14 -1
- package/bin/swl-ses.js +64 -1
- package/comandos/swl/adoptar-proyecto.md +258 -255
- package/comandos/swl/aprender.md +828 -840
- package/comandos/swl/aprobar-plan.md +26 -37
- package/comandos/swl/autoresearch.md +12 -14
- package/comandos/swl/briefing.md +119 -0
- package/comandos/swl/checkpoint.md +10 -15
- package/comandos/swl/claudemd.md +239 -234
- package/comandos/swl/compactar.md +29 -2
- package/comandos/swl/configurar-ci.md +20 -19
- package/comandos/swl/cron.md +10 -12
- package/comandos/swl/discutir-fase.md +8 -5
- package/comandos/swl/ejecutar-fase.md +15 -2
- package/comandos/swl/evolucionar.md +6 -11
- package/comandos/swl/inbox.md +10 -10
- package/comandos/swl/modelo.md +7 -9
- package/comandos/swl/notificaciones.md +19 -116
- package/comandos/swl/nuevo-proyecto.md +205 -205
- package/comandos/swl/planear-fase.md +5 -3
- package/comandos/swl/release.md +46 -0
- package/comandos/swl/status.md +333 -279
- package/comandos/swl/verificar.md +817 -812
- package/habilidades/changelog-generator/scripts/parse-commits.js +6 -4
- package/habilidades/ejecutar-fase/SKILL.md +541 -518
- package/habilidades/planear-fase/SKILL.md +3 -2
- package/habilidades/swl-claudemd/SKILL.md +10 -6
- package/habilidades/tdd-workflow/SKILL.md +715 -713
- package/habilidades/validacion-ci-sistema/SKILL.md +17 -1
- package/hooks/calidad-pre-commit.js +5 -1
- package/hooks/check-update.js +39 -1
- package/hooks/lib/autonomia.js +208 -0
- package/hooks/lib/briefing.js +474 -0
- package/hooks/lib/propose-step.js +358 -0
- package/hooks/session-briefing.js +98 -0
- package/hooks/telemetria-skill-routing.js +100 -0
- package/instintos/autonomia.yaml +27 -0
- package/llms.txt +4 -4
- package/manifiestos/hooks-config.json +18 -0
- package/manifiestos/modulos.json +25 -3
- package/manifiestos/skills-lock.json +17 -17
- package/package.json +93 -93
- package/plugin.json +371 -371
- package/reglas/analizar-directorios-antes-de-escribir.md +228 -0
- package/reglas/consultar-vault-primero.md +195 -0
- package/reglas/debatir-antes-de-aceptar.md +158 -0
- package/reglas/git-coauthor.md +100 -0
- package/reglas/monitor-ci.md +309 -0
- package/reglas/registro-componentes-nuevos.md +38 -10
- package/reglas/sesiones-paralelas.md +180 -0
- package/reglas/usar-code-review-graph.md +155 -0
- package/reglas/verificar-citas-normativas.md +548 -0
- package/scripts/auditar-claudemd.js +38 -0
- package/scripts/cli/aprobar-plan.js +73 -0
- package/scripts/cli/briefing.js +23 -0
- package/scripts/cli/ciclo-evolucion.js +26 -0
- package/scripts/cli/configurar-ci.js +40 -0
- package/scripts/cli/derivar-feature-list.js +25 -0
- package/scripts/cli/detectar-host.js +27 -0
- package/scripts/cli/diary-entry.js +69 -0
- package/scripts/cli/execution-state.js +18 -0
- package/scripts/cli/gateway-notify.js +41 -0
- package/scripts/cli/liberar-fase.js +42 -0
- package/scripts/cli/loop-telemetry.js +125 -0
- package/scripts/cli/mark-evolved.js +56 -0
- package/scripts/cli/metricas-dora.js +26 -0
- package/scripts/cli/near-duplicate.js +55 -0
- package/scripts/cli/notificaciones.js +123 -0
- package/scripts/cli/propose-step.js +29 -0
- package/scripts/cli/schedule-parse.js +19 -0
- package/scripts/cli/sugerir-modelo.js +20 -0
- package/scripts/cli/verificar-plan.js +36 -0
- package/scripts/cli/verificar-trazabilidad.js +35 -0
- package/scripts/derivar-feature-list.js +1 -0
- package/scripts/instalador.js +52 -6
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -0
- package/scripts/lib/ci-reader.js +193 -0
- package/scripts/lib/detectar-host-swl.js +175 -0
- package/scripts/lib/evidencia-release.js +322 -0
- package/scripts/lib/gate-hooks-requires.js +249 -0
- package/scripts/lib/gate-licencias.js +212 -0
- package/scripts/lib/git-metricas.js +257 -0
- package/scripts/lib/metricas-dora.js +204 -0
- package/scripts/lib/resolver-plan-fase.js +37 -0
- package/scripts/tui/ejecutores.js +1 -1
- package/scripts/validar-manifest.js +92 -1
- package/scripts/validar.js +13 -0
- package/scripts/verificar-evolucion.js +54 -4
- package/scripts/verificar-release.js +102 -0
- package/scripts/verificar-trazabilidad.js +12 -6
- package/reglas/arquitectura.evolved.json +0 -7
- package/reglas/seguridad.evolved.json +0 -7
package/comandos/swl/claudemd.md
CHANGED
|
@@ -1,234 +1,239 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swl:claudemd
|
|
3
|
-
description: Audita, refactoriza, valida o inicializa archivos CLAUDE.md según best practices Anthropic (ADR-0016). Subcomandos audit (analiza calidad), refactor (sugiere extracciones), check (verifica secciones canónicas), init-user (crea ~/.claude/CLAUDE.md template), init-project (genera CLAUDE.md raíz del proyecto).
|
|
4
|
-
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
|
|
5
|
-
evolved: true
|
|
6
|
-
evolved-from: "1.6.9"
|
|
7
|
-
evolved-at: "2026-05-22"
|
|
8
|
-
evolved-by: "aprender"
|
|
9
|
-
evolved-note: "Audit dimensión 7 — duplicación de reglas globales (cataloga 6 reglas de ~/.claude/rules/ que NO deben duplicarse inline). Refactor propone reemplazo canónico. Aplica regla nueva sin-duplicacion-reglas-globales.md."
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /swl:claudemd — Tratamiento profesional de CLAUDE.md
|
|
13
|
-
|
|
14
|
-
Comando para auditar, refactorizar y mantener `CLAUDE.md` siguiendo las
|
|
15
|
-
cinco recomendaciones del video oficial Anthropic *"The CLAUDE.md file"*:
|
|
16
|
-
|
|
17
|
-
1. **Compacto** — empieza sin uno, agrega solo lo que tengas que corregir
|
|
18
|
-
2. **Stack arriba** — lenguaje, framework, ORM, BD
|
|
19
|
-
3. **Commands** — cómo correr dev, tests, lint, build
|
|
20
|
-
4. **Code style** — convenciones de indentación, exports, nombrado
|
|
21
|
-
5. **Conventions** — dónde van las cosas, qué patrones preferir
|
|
22
|
-
|
|
23
|
-
**Carga**: `Skill("swl-claudemd")` — contiene la lógica de auditoría, las
|
|
24
|
-
secciones canónicas, los umbrales de inflación y los templates de
|
|
25
|
-
generación. Delega análisis y criterios al skill.
|
|
26
|
-
|
|
27
|
-
## Subcomandos
|
|
28
|
-
|
|
29
|
-
| Subcomando | Propósito |
|
|
30
|
-
|---|---|
|
|
31
|
-
| `/swl:claudemd audit` | Audita el CLAUDE.md actual (líneas, bullets gigantes, secciones canónicas, @references, placeholders) |
|
|
32
|
-
| `/swl:claudemd check` | Como audit pero exit 1 si hay WARN — útil en pre-commit/CI |
|
|
33
|
-
| `/swl:claudemd refactor` | Sugiere extracciones a archivos `@`-referenciados (no modifica, solo propone diff) |
|
|
34
|
-
| `/swl:claudemd init-user` | Crea `~/.claude/CLAUDE.md` con template de preferencias personales si no existe |
|
|
35
|
-
| `/swl:claudemd init-project` | Genera CLAUDE.md raíz del proyecto detectando el stack actual |
|
|
36
|
-
|
|
37
|
-
Sin subcomando: equivale a `audit`.
|
|
38
|
-
|
|
39
|
-
## Cuándo usar
|
|
40
|
-
|
|
41
|
-
- Después de modificar manualmente CLAUDE.md (verifica calidad)
|
|
42
|
-
- Al inicio de un proyecto que no tenía CLAUDE.md (init-project)
|
|
43
|
-
- Al cambiar de máquina y querer transportar preferencias (init-user)
|
|
44
|
-
- En pre-commit hook si el proyecto trackea CLAUDE.md (check)
|
|
45
|
-
- Cuando el hook `claudemd-bloat-detector` emite nudge
|
|
46
|
-
|
|
47
|
-
## Ejecución de cada subcomando
|
|
48
|
-
|
|
49
|
-
### audit / check
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx -y @saulwade/swl-ses@latest audit-claudemd # output legible
|
|
53
|
-
npx -y @saulwade/swl-ses@latest audit-claudemd --json # output JSON estructurado
|
|
54
|
-
npx -y @saulwade/swl-ses@latest audit-claudemd --strict # exit 1 si WARN (modo check)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
El subcomando `audit-claudemd` del CLI funciona con cualquier modo de instalación
|
|
58
|
-
(global vía `npm i -g`, npx puntual o local dev) porque resuelve el script via
|
|
59
|
-
el paquete npm, no via path relativo al CWD. Es independiente del proyecto desde
|
|
60
|
-
donde se invoque.
|
|
61
|
-
|
|
62
|
-
El veredicto puede ser:
|
|
63
|
-
|
|
64
|
-
- **OK** — cumple best practices, sin hallazgos
|
|
65
|
-
- **WARN** — tiene oportunidades de mejora (líneas excesivas, bullets
|
|
66
|
-
gigantes, secciones ausentes, sin @references)
|
|
67
|
-
- **ERROR** — no existe, tiene placeholders sin reemplazar, faltan
|
|
68
|
-
secciones críticas
|
|
69
|
-
|
|
70
|
-
### refactor
|
|
71
|
-
|
|
72
|
-
Lee el CLAUDE.md actual, identifica candidatos a extracción (bullets
|
|
73
|
-
monolíticos, secciones largas, contenido duplicable a `@references`) y
|
|
74
|
-
imprime el diff propuesto. **NO modifica el archivo** — el usuario
|
|
75
|
-
revisa y aplica manualmente o con `git apply`.
|
|
76
|
-
|
|
77
|
-
Patrones de extracción típicos:
|
|
78
|
-
|
|
79
|
-
| Si el bullet/sección contiene… | Mover a… |
|
|
80
|
-
|---|---|
|
|
81
|
-
| Variables de entorno opt-in | `docs/variables-entorno.md` |
|
|
82
|
-
| Reglas de gobernanza extensas | `docs/gobernanza.md` |
|
|
83
|
-
| Catálogo de comandos completo | `COMANDOS.md` (referenciar) |
|
|
84
|
-
| Mapa de propagación detallado | `docs/mapa-propagacion.md` |
|
|
85
|
-
| Convenciones de cada capa | `docs/convenciones-{capa}.md` |
|
|
86
|
-
|
|
87
|
-
### init-user
|
|
88
|
-
|
|
89
|
-
Verifica si existe `~/.claude/CLAUDE.md` (en Windows:
|
|
90
|
-
`%USERPROFILE%\.claude\CLAUDE.md`). Si no existe, genera template
|
|
91
|
-
mínimo:
|
|
92
|
-
|
|
93
|
-
```markdown
|
|
94
|
-
# CLAUDE.md (preferencias personales transversales)
|
|
95
|
-
|
|
96
|
-
> Este archivo aplica a TODOS mis proyectos. Las reglas específicas de
|
|
97
|
-
> proyecto van en el CLAUDE.md de la raíz del proyecto, no aquí.
|
|
98
|
-
|
|
99
|
-
## Mi rol y stack preferido
|
|
100
|
-
|
|
101
|
-
- Rol: [ej. ingeniero senior backend]
|
|
102
|
-
- Stack preferido: [ej. Python + FastAPI, TypeScript + Next.js]
|
|
103
|
-
- Herramientas habituales: [ej. Neovim, ripgrep, fd, gh CLI]
|
|
104
|
-
|
|
105
|
-
## Estilo de comunicación
|
|
106
|
-
|
|
107
|
-
- Idioma: español
|
|
108
|
-
- Formato preferido para respuestas: [breve / detallado / con tablas]
|
|
109
|
-
- Cuándo prefiero ver alternativas vs. una sola recomendación
|
|
110
|
-
|
|
111
|
-
## Patrones que aplico siempre
|
|
112
|
-
|
|
113
|
-
- [ej. "Antes de implementar, mostrar el plan"]
|
|
114
|
-
- [ej. "Tests para todo código nuevo, sin excepción"]
|
|
115
|
-
- [ej. "Commits atómicos en español, formato conventional"]
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Si ya existe, NO lo sobreescribe — sugiere añadir secciones faltantes.
|
|
119
|
-
|
|
120
|
-
### init-project
|
|
121
|
-
|
|
122
|
-
Detecta el stack del proyecto actual con `scripts/lib/detectar-stack-detallado.js`
|
|
123
|
-
y genera `./CLAUDE.md` mínimo con:
|
|
124
|
-
|
|
125
|
-
- Sección **Reglas obligatorias** que **DEBE** incluir como primera línea
|
|
126
|
-
bajo el encabezado:
|
|
127
|
-
```markdown
|
|
128
|
-
## Reglas obligatorias
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
- Sección **
|
|
148
|
-
- Sección
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
- `
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
- `
|
|
234
|
-
- `
|
|
1
|
+
---
|
|
2
|
+
name: swl:claudemd
|
|
3
|
+
description: Audita, refactoriza, valida o inicializa archivos CLAUDE.md según best practices Anthropic (ADR-0016). Subcomandos audit (analiza calidad), refactor (sugiere extracciones), check (verifica secciones canónicas), init-user (crea ~/.claude/CLAUDE.md template), init-project (genera CLAUDE.md raíz del proyecto).
|
|
4
|
+
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
|
|
5
|
+
evolved: true
|
|
6
|
+
evolved-from: "1.6.9"
|
|
7
|
+
evolved-at: "2026-05-22"
|
|
8
|
+
evolved-by: "aprender"
|
|
9
|
+
evolved-note: "Audit dimensión 7 — duplicación de reglas globales (cataloga 6 reglas de ~/.claude/rules/ que NO deben duplicarse inline). Refactor propone reemplazo canónico. Aplica regla nueva sin-duplicacion-reglas-globales.md."
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /swl:claudemd — Tratamiento profesional de CLAUDE.md
|
|
13
|
+
|
|
14
|
+
Comando para auditar, refactorizar y mantener `CLAUDE.md` siguiendo las
|
|
15
|
+
cinco recomendaciones del video oficial Anthropic *"The CLAUDE.md file"*:
|
|
16
|
+
|
|
17
|
+
1. **Compacto** — empieza sin uno, agrega solo lo que tengas que corregir
|
|
18
|
+
2. **Stack arriba** — lenguaje, framework, ORM, BD
|
|
19
|
+
3. **Commands** — cómo correr dev, tests, lint, build
|
|
20
|
+
4. **Code style** — convenciones de indentación, exports, nombrado
|
|
21
|
+
5. **Conventions** — dónde van las cosas, qué patrones preferir
|
|
22
|
+
|
|
23
|
+
**Carga**: `Skill("swl-claudemd")` — contiene la lógica de auditoría, las
|
|
24
|
+
secciones canónicas, los umbrales de inflación y los templates de
|
|
25
|
+
generación. Delega análisis y criterios al skill.
|
|
26
|
+
|
|
27
|
+
## Subcomandos
|
|
28
|
+
|
|
29
|
+
| Subcomando | Propósito |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `/swl:claudemd audit` | Audita el CLAUDE.md actual (líneas, bullets gigantes, secciones canónicas, @references, placeholders) |
|
|
32
|
+
| `/swl:claudemd check` | Como audit pero exit 1 si hay WARN — útil en pre-commit/CI |
|
|
33
|
+
| `/swl:claudemd refactor` | Sugiere extracciones a archivos `@`-referenciados (no modifica, solo propone diff) |
|
|
34
|
+
| `/swl:claudemd init-user` | Crea `~/.claude/CLAUDE.md` con template de preferencias personales si no existe |
|
|
35
|
+
| `/swl:claudemd init-project` | Genera CLAUDE.md raíz del proyecto detectando el stack actual |
|
|
36
|
+
|
|
37
|
+
Sin subcomando: equivale a `audit`.
|
|
38
|
+
|
|
39
|
+
## Cuándo usar
|
|
40
|
+
|
|
41
|
+
- Después de modificar manualmente CLAUDE.md (verifica calidad)
|
|
42
|
+
- Al inicio de un proyecto que no tenía CLAUDE.md (init-project)
|
|
43
|
+
- Al cambiar de máquina y querer transportar preferencias (init-user)
|
|
44
|
+
- En pre-commit hook si el proyecto trackea CLAUDE.md (check)
|
|
45
|
+
- Cuando el hook `claudemd-bloat-detector` emite nudge
|
|
46
|
+
|
|
47
|
+
## Ejecución de cada subcomando
|
|
48
|
+
|
|
49
|
+
### audit / check
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd # output legible
|
|
53
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd --json # output JSON estructurado
|
|
54
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd --strict # exit 1 si WARN (modo check)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
El subcomando `audit-claudemd` del CLI funciona con cualquier modo de instalación
|
|
58
|
+
(global vía `npm i -g`, npx puntual o local dev) porque resuelve el script via
|
|
59
|
+
el paquete npm, no via path relativo al CWD. Es independiente del proyecto desde
|
|
60
|
+
donde se invoque.
|
|
61
|
+
|
|
62
|
+
El veredicto puede ser:
|
|
63
|
+
|
|
64
|
+
- **OK** — cumple best practices, sin hallazgos
|
|
65
|
+
- **WARN** — tiene oportunidades de mejora (líneas excesivas, bullets
|
|
66
|
+
gigantes, secciones ausentes, sin @references)
|
|
67
|
+
- **ERROR** — no existe, tiene placeholders sin reemplazar, faltan
|
|
68
|
+
secciones críticas
|
|
69
|
+
|
|
70
|
+
### refactor
|
|
71
|
+
|
|
72
|
+
Lee el CLAUDE.md actual, identifica candidatos a extracción (bullets
|
|
73
|
+
monolíticos, secciones largas, contenido duplicable a `@references`) y
|
|
74
|
+
imprime el diff propuesto. **NO modifica el archivo** — el usuario
|
|
75
|
+
revisa y aplica manualmente o con `git apply`.
|
|
76
|
+
|
|
77
|
+
Patrones de extracción típicos:
|
|
78
|
+
|
|
79
|
+
| Si el bullet/sección contiene… | Mover a… |
|
|
80
|
+
|---|---|
|
|
81
|
+
| Variables de entorno opt-in | `docs/variables-entorno.md` |
|
|
82
|
+
| Reglas de gobernanza extensas | `docs/gobernanza.md` |
|
|
83
|
+
| Catálogo de comandos completo | `COMANDOS.md` (referenciar) |
|
|
84
|
+
| Mapa de propagación detallado | `docs/mapa-propagacion.md` |
|
|
85
|
+
| Convenciones de cada capa | `docs/convenciones-{capa}.md` |
|
|
86
|
+
|
|
87
|
+
### init-user
|
|
88
|
+
|
|
89
|
+
Verifica si existe `~/.claude/CLAUDE.md` (en Windows:
|
|
90
|
+
`%USERPROFILE%\.claude\CLAUDE.md`). Si no existe, genera template
|
|
91
|
+
mínimo:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
# CLAUDE.md (preferencias personales transversales)
|
|
95
|
+
|
|
96
|
+
> Este archivo aplica a TODOS mis proyectos. Las reglas específicas de
|
|
97
|
+
> proyecto van en el CLAUDE.md de la raíz del proyecto, no aquí.
|
|
98
|
+
|
|
99
|
+
## Mi rol y stack preferido
|
|
100
|
+
|
|
101
|
+
- Rol: [ej. ingeniero senior backend]
|
|
102
|
+
- Stack preferido: [ej. Python + FastAPI, TypeScript + Next.js]
|
|
103
|
+
- Herramientas habituales: [ej. Neovim, ripgrep, fd, gh CLI]
|
|
104
|
+
|
|
105
|
+
## Estilo de comunicación
|
|
106
|
+
|
|
107
|
+
- Idioma: español
|
|
108
|
+
- Formato preferido para respuestas: [breve / detallado / con tablas]
|
|
109
|
+
- Cuándo prefiero ver alternativas vs. una sola recomendación
|
|
110
|
+
|
|
111
|
+
## Patrones que aplico siempre
|
|
112
|
+
|
|
113
|
+
- [ej. "Antes de implementar, mostrar el plan"]
|
|
114
|
+
- [ej. "Tests para todo código nuevo, sin excepción"]
|
|
115
|
+
- [ej. "Commits atómicos en español, formato conventional"]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Si ya existe, NO lo sobreescribe — sugiere añadir secciones faltantes.
|
|
119
|
+
|
|
120
|
+
### init-project
|
|
121
|
+
|
|
122
|
+
Detecta el stack del proyecto actual con `scripts/lib/detectar-stack-detallado.js`
|
|
123
|
+
y genera `./CLAUDE.md` mínimo con:
|
|
124
|
+
|
|
125
|
+
- Sección **Reglas obligatorias** que **DEBE** incluir como primera línea
|
|
126
|
+
bajo el encabezado:
|
|
127
|
+
```markdown
|
|
128
|
+
## Reglas obligatorias
|
|
129
|
+
|
|
130
|
+
Aplica la regla global `usar-sistema-swl.md` (matriz operacional del sistema
|
|
131
|
+
SWL), auto-cargada desde `.claude/rules/`. NO duplicar su contenido aquí.
|
|
132
|
+
```
|
|
133
|
+
Esta mención es obligatoria — recuerda la matriz operacional de uso del
|
|
134
|
+
sistema SWL. NO usar `@reglas/usar-sistema-swl.md`: la regla se auto-carga
|
|
135
|
+
desde `.claude/rules/` y un `@reglas/...` se rompe en proyectos downstream
|
|
136
|
+
(ahí no existe `reglas/`). Las demás reglas globales (`seguridad.md`,
|
|
137
|
+
`arquitectura.md`, etc.) también se auto-cargan desde `.claude/rules/` — NO
|
|
138
|
+
referenciarlas con `@reglas/...`; mencionarlas por nombre si hace falta.
|
|
139
|
+
- Sección **Reglas de máxima prioridad** con sub-sección obligatoria
|
|
140
|
+
**Cuatro principios de implementación (Karpathy)**:
|
|
141
|
+
```markdown
|
|
142
|
+
### Cuatro principios de implementación (Karpathy)
|
|
143
|
+
Antes de implementar, refactorizar o corregir bugs: (1) **pensar antes de codificar** (no asumir en silencio), (2) **simplicidad primero** (sin abstracciones especulativas), (3) **cambios quirúrgicos** (leer archivo completo antes de editar, no refactor de oportunidad), (4) **ejecución orientada a metas** (criterios verificables, test que reproduce bugs antes del fix). Detalle + 9 ejemplos MAL→BIEN: `Skill("prevencion-sobreingenieria")` + `recursos/EXAMPLES.md`.
|
|
144
|
+
```
|
|
145
|
+
Esta sub-sección es estándar SWL y cubre los gaps cognitivos más
|
|
146
|
+
frecuentes del agente sin agregar reglas específicas del proyecto.
|
|
147
|
+
- Sección **Stack** poblada (lenguaje, framework, ORM, package manager)
|
|
148
|
+
- Sección **Comandos** poblada (npm scripts detectados o comandos típicos)
|
|
149
|
+
- Sección **Code style** vacía con placeholders
|
|
150
|
+
- Sección **Conventions** vacía con placeholders
|
|
151
|
+
- Sección **@references** apuntando a `.planning/PROYECTO.md`,
|
|
152
|
+
`README.md`, etc. si existen
|
|
153
|
+
|
|
154
|
+
Si CLAUDE.md ya existe, **NO lo sobreescribe**. Sugiere correr
|
|
155
|
+
`/swl:claudemd refactor` para mejorar el actual. Si detecta que el CLAUDE.md
|
|
156
|
+
existente NO menciona la regla global `usar-sistema-swl` o NO menciona los cuatro
|
|
157
|
+
principios Karpathy (o `prevencion-sobreingenieria`), emitir hallazgo WARN
|
|
158
|
+
recomendando agregarlo manualmente.
|
|
159
|
+
|
|
160
|
+
### Validación síncrona post-generación
|
|
161
|
+
|
|
162
|
+
Tras `init-project` generar el archivo nuevo, ejecutar inmediatamente
|
|
163
|
+
`audit` sobre el resultado:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
swl-ses audit-claudemd --json
|
|
167
|
+
# Fallback si el script no está en el proyecto destino (instalación global vía npm):
|
|
168
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd --json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Veredicto esperado: `OK` (el template debe respetar el contrato por
|
|
172
|
+
construcción). Cualquier WARN/ERROR es bug del template — reportar al
|
|
173
|
+
usuario y abrir issue para corrección. Este check es parte del contrato
|
|
174
|
+
cruzado con `/swl:aprender` documentado en `@docs/contrato-aprender-claudemd.md`.
|
|
175
|
+
|
|
176
|
+
### audit — checks específicos sobre Karpathy
|
|
177
|
+
|
|
178
|
+
El subcomando `audit` verifica además de las dimensiones estándar:
|
|
179
|
+
|
|
180
|
+
- ¿El CLAUDE.md menciona los cuatro principios Karpathy (texto literal
|
|
181
|
+
"Karpathy" o nombres de los 4 principios) o referencia
|
|
182
|
+
`prevencion-sobreingenieria` con `Skill(...)` o `@reglas/`?
|
|
183
|
+
|
|
184
|
+
Si NO los menciona y el archivo tiene >50 líneas: emitir hallazgo WARN
|
|
185
|
+
recomendando agregar la sub-sección compacta (4 líneas) como guía de
|
|
186
|
+
implementación. NO emite WARN para CLAUDE.md mínimos (<50 LOC) ni para
|
|
187
|
+
archivos `~/.claude/CLAUDE.md` user-level (esos siguen otro contrato).
|
|
188
|
+
|
|
189
|
+
### audit — checks específicos sobre duplicación de reglas globales
|
|
190
|
+
|
|
191
|
+
El subcomando `audit` también detecta (dimensión 7) si CLAUDE.md duplica
|
|
192
|
+
reglas que ya viven en `~/.claude/rules/` y se cargan globalmente.
|
|
193
|
+
Consume el catálogo declarativo
|
|
194
|
+
`scripts/lib/reglas-globales-conocidas.json` que cataloga 6 reglas
|
|
195
|
+
conocidas:
|
|
196
|
+
|
|
197
|
+
- `brevedad-output.md` § Idioma obligatorio: español de México
|
|
198
|
+
- `brevedad-output.md` § Brevedad y eficiencia de output
|
|
199
|
+
- `git-coauthor.md` § Sin co-autores en commits
|
|
200
|
+
- `arreglar-al-detectar.md` § Detectar → Informar → Arreglar
|
|
201
|
+
- `debatir-antes-de-aceptar.md`
|
|
202
|
+
- `usar-context7.md`
|
|
203
|
+
|
|
204
|
+
Si detecta duplicación: emite hallazgo `duplicacion-reglas-globales`
|
|
205
|
+
severidad WARN con línea aproximada y remediación específica. NO bloquea
|
|
206
|
+
el comando — sirve como nudge para limpiar el CLAUDE.md.
|
|
207
|
+
|
|
208
|
+
NO aplica a `~/.claude/CLAUDE.md` user-level (ahí sí pueden declararse
|
|
209
|
+
preferencias personales que parafrasean reglas globales).
|
|
210
|
+
|
|
211
|
+
Aplica regla `reglas/sin-duplicacion-reglas-globales.md`.
|
|
212
|
+
|
|
213
|
+
### refactor — propuestas para duplicaciones de reglas globales
|
|
214
|
+
|
|
215
|
+
Cuando `audit` detecta duplicaciones, el subcomando `refactor` propone
|
|
216
|
+
el reemplazo concreto usando `construirSugerenciaRefactor()` del
|
|
217
|
+
detector. Cada propuesta incluye:
|
|
218
|
+
|
|
219
|
+
- **Bloque a eliminar** (línea aproximada en CLAUDE.md)
|
|
220
|
+
- **Regla global afectada** (archivo + sección canónica)
|
|
221
|
+
- **Reemplazo sugerido** (3 opciones):
|
|
222
|
+
1. Eliminar el bloque — la regla global YA aplica automáticamente
|
|
223
|
+
2. Reescribir como matiz local en ≤3 líneas referenciando la regla
|
|
224
|
+
3. Documentar override explícito con justificación
|
|
225
|
+
|
|
226
|
+
El refactor SOLO imprime el diff propuesto. El usuario decide aplicar.
|
|
227
|
+
|
|
228
|
+
## Variables de entorno
|
|
229
|
+
|
|
230
|
+
Ver `@docs/variables-entorno.md` sección "Calidad de CLAUDE.md":
|
|
231
|
+
|
|
232
|
+
- `SWL_CLAUDEMD_BLOAT` (on/off) — activa hook `claudemd-bloat-detector`
|
|
233
|
+
- `SWL_CLAUDEMD_MAX_LINES` (default 200) — umbral de líneas totales
|
|
234
|
+
- `SWL_CLAUDEMD_MAX_BULLET_CHARS` (default 1000) — umbral de bullet/párrafo
|
|
235
|
+
|
|
236
|
+
## Exit codes
|
|
237
|
+
|
|
238
|
+
- `0` — OK o WARN (consultivo)
|
|
239
|
+
- `1` — ERROR o `--strict` + WARN
|
|
@@ -269,10 +269,37 @@ Archivos actualizados:
|
|
|
269
269
|
- .planning/COMPACTACION.md (creado/actualizado)
|
|
270
270
|
- .planning/ESTADO.md (referencia agregada)
|
|
271
271
|
|
|
272
|
-
El
|
|
273
|
-
|
|
272
|
+
El estado está a salvo en disco. IMPORTANTE: este comando NO compacta la
|
|
273
|
+
ventana de contexto — eso es una operación del harness que el agente no
|
|
274
|
+
puede ejecutar. Para compactar de verdad, AHORA ejecuta TÚ una de estas:
|
|
275
|
+
|
|
276
|
+
/compact ← built-in de Claude Code: trunca la ventana usando
|
|
277
|
+
el estado ya persistido (recomendado para seguir
|
|
278
|
+
en la misma sesión)
|
|
279
|
+
/clear o sesión nueva ← arranque limpio; pega la instrucción de arranque
|
|
280
|
+
del Paso 7
|
|
281
|
+
|
|
282
|
+
Próximo comando de trabajo (tras compactar): [comando exacto]
|
|
274
283
|
```
|
|
275
284
|
|
|
285
|
+
## Paso 9 — Por qué este comando NO compacta la ventana (límite del harness)
|
|
286
|
+
|
|
287
|
+
La compactación REAL del contexto (truncar la conversación) es una operación
|
|
288
|
+
exclusiva del harness de Claude Code: el `/compact` built-in o el auto-compact.
|
|
289
|
+
Un comando `/swl:*` corre DENTRO de la conversación y el modelo no tiene
|
|
290
|
+
ninguna herramienta para truncar su propia ventana — por diseño.
|
|
291
|
+
|
|
292
|
+
División de responsabilidades:
|
|
293
|
+
|
|
294
|
+
| Mitad | Quién | Qué hace |
|
|
295
|
+
|-------|-------|----------|
|
|
296
|
+
| `/swl:compactar` | el agente | Persiste el estado a disco (COMPACTACION.md + ESTADO.md) para que NADA se pierda al truncar |
|
|
297
|
+
| `/compact` | el usuario (harness) | Trunca la ventana de verdad. Sin la mitad anterior, perdería las decisiones no escritas |
|
|
298
|
+
|
|
299
|
+
El error a prevenir: ejecutar `/compact` SIN haber corrido `/swl:compactar`
|
|
300
|
+
antes (estado solo en la memoria de la conversación → se pierde). El orden
|
|
301
|
+
correcto siempre es: `/swl:compactar` → `/compact`.
|
|
302
|
+
|
|
276
303
|
## Reglas de comportamiento
|
|
277
304
|
|
|
278
305
|
- El COMPACTACION.md debe reemplazar la necesidad de releer toda la conversación. Si alguien lo lee, debe poder continuar el trabajo.
|
|
@@ -59,16 +59,14 @@ Si el usuario omite `init` e invoca con flags directos, respetar esos flags sin
|
|
|
59
59
|
|
|
60
60
|
### Paso 3 — Copiar workflows
|
|
61
61
|
|
|
62
|
-
Invocar
|
|
62
|
+
Invocar el subcomando del CLI (resuelve cross-scope; ver
|
|
63
|
+
`docs/invocacion-cli-cross-scope.md`). Imprime el resultado como JSON
|
|
64
|
+
(`copiados`, `existentes`, `error`):
|
|
63
65
|
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
withCi: true,
|
|
69
|
-
withReleasePlease: false,
|
|
70
|
-
// dryRun: true, // con --dry-run
|
|
71
|
-
});
|
|
66
|
+
```bash
|
|
67
|
+
swl-ses configurar-ci init
|
|
68
|
+
# flags: --no-security --no-ci --with-release-please --dry-run --force
|
|
69
|
+
# fallback: npx -y @saulwade/swl-ses@latest configurar-ci init
|
|
72
70
|
```
|
|
73
71
|
|
|
74
72
|
Si hay archivos existentes en `resultado.existentes`, preguntar:
|
|
@@ -78,7 +76,7 @@ Los siguientes workflows ya existen en .github/workflows/:
|
|
|
78
76
|
¿Sobreescribir? (s/N)
|
|
79
77
|
```
|
|
80
78
|
|
|
81
|
-
Si el usuario dice que sí, volver a llamar
|
|
79
|
+
Si el usuario dice que sí, volver a llamar el subcomando con `--force`.
|
|
82
80
|
|
|
83
81
|
### Paso 4 — Configurar CLAUDE_API_KEY (solo si se instaló swl-security.yml)
|
|
84
82
|
|
|
@@ -152,14 +150,15 @@ Próximos pasos:
|
|
|
152
150
|
|
|
153
151
|
## /swl:configurar-ci status
|
|
154
152
|
|
|
155
|
-
Muestra el estado actual de los workflows SWL en el proyecto.
|
|
153
|
+
Muestra el estado actual de los workflows SWL en el proyecto. Subcomando del CLI
|
|
154
|
+
(salida JSON con `instalados`, `faltantes`, `secretsFaltantes`):
|
|
156
155
|
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
```bash
|
|
157
|
+
swl-ses configurar-ci status
|
|
158
|
+
# fallback: npx -y @saulwade/swl-ses@latest configurar-ci status
|
|
160
159
|
```
|
|
161
160
|
|
|
162
|
-
Formato de salida:
|
|
161
|
+
Formato de salida (presentar al usuario a partir del JSON):
|
|
163
162
|
|
|
164
163
|
```
|
|
165
164
|
Workflows SWL en .github/workflows/:
|
|
@@ -187,11 +186,13 @@ gh secret list 2>/dev/null | grep CLAUDE_API_KEY
|
|
|
187
186
|
|
|
188
187
|
Elimina los workflows gestionados por swl-ses. No toca branch protection ni otros workflows.
|
|
189
188
|
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
Subcomando del CLI (salida JSON). Primero listar qué se eliminaría (sin
|
|
190
|
+
confirmar), luego repetir con `--confirmar`:
|
|
192
191
|
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
```bash
|
|
193
|
+
swl-ses configurar-ci uninstall # plan (confirmar: false)
|
|
194
|
+
swl-ses configurar-ci uninstall --confirmar # ejecuta la eliminación
|
|
195
|
+
# fallback: npx -y @saulwade/swl-ses@latest configurar-ci uninstall [--confirmar]
|
|
195
196
|
```
|
|
196
197
|
|
|
197
198
|
Mostrar:
|
package/comandos/swl/cron.md
CHANGED
|
@@ -160,21 +160,19 @@ deliverResult(job, result, process.cwd());
|
|
|
160
160
|
|
|
161
161
|
## Parser de lenguaje natural programático (experimental)
|
|
162
162
|
|
|
163
|
-
El
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
El subcomando `swl-ses schedule-parse` parsea frases en inglés a expresiones
|
|
164
|
+
cron (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`). No
|
|
165
|
+
requiere dependencias externas.
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
// "every morning at 9am" → { cron: '0 9 * * *', descripcion: 'Diariamente a las 9:00 AM' }
|
|
172
|
-
const resultado = parseNaturalSchedule('every morning at 9am');
|
|
173
|
-
|
|
174
|
-
// Verificar si una expresión cron debe ejecutarse ahora
|
|
175
|
-
const pendiente = isCronDue('0 9 * * *', Date.now(), ultimaEjecucionMs);
|
|
167
|
+
```bash
|
|
168
|
+
# "every morning at 9am" → { "cron": "0 9 * * *", "descripcion": "Diariamente a las 9 AM" }
|
|
169
|
+
swl-ses schedule-parse "every morning at 9am"
|
|
170
|
+
# fallback: npx -y @saulwade/swl-ses@latest schedule-parse "every morning at 9am"
|
|
176
171
|
```
|
|
177
172
|
|
|
173
|
+
La verificación de si un cron debe ejecutarse ahora (`isCronDue`) la usa el
|
|
174
|
+
motor de scheduling internamente; no se expone como subcomando.
|
|
175
|
+
|
|
178
176
|
Frases reconocidas:
|
|
179
177
|
- `"hourly"` → `0 * * * *`
|
|
180
178
|
- `"daily"` / `"every day"` → `0 9 * * *`
|