@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.
Files changed (97) hide show
  1. package/CLAUDE.md +196 -196
  2. package/README.md +579 -579
  3. package/agentes/_propose-step.md +90 -0
  4. package/agentes/implementador-swl.md +2 -0
  5. package/agentes/orquestador-swl.md +2 -0
  6. package/agentes/perfilador-usuario-swl.md +14 -1
  7. package/bin/swl-ses.js +64 -1
  8. package/comandos/swl/adoptar-proyecto.md +258 -255
  9. package/comandos/swl/aprender.md +828 -840
  10. package/comandos/swl/aprobar-plan.md +26 -37
  11. package/comandos/swl/autoresearch.md +12 -14
  12. package/comandos/swl/briefing.md +119 -0
  13. package/comandos/swl/checkpoint.md +10 -15
  14. package/comandos/swl/claudemd.md +239 -234
  15. package/comandos/swl/compactar.md +29 -2
  16. package/comandos/swl/configurar-ci.md +20 -19
  17. package/comandos/swl/cron.md +10 -12
  18. package/comandos/swl/discutir-fase.md +8 -5
  19. package/comandos/swl/ejecutar-fase.md +15 -2
  20. package/comandos/swl/evolucionar.md +6 -11
  21. package/comandos/swl/inbox.md +10 -10
  22. package/comandos/swl/modelo.md +7 -9
  23. package/comandos/swl/notificaciones.md +19 -116
  24. package/comandos/swl/nuevo-proyecto.md +205 -205
  25. package/comandos/swl/planear-fase.md +5 -3
  26. package/comandos/swl/release.md +46 -0
  27. package/comandos/swl/status.md +333 -279
  28. package/comandos/swl/verificar.md +817 -812
  29. package/habilidades/changelog-generator/scripts/parse-commits.js +6 -4
  30. package/habilidades/ejecutar-fase/SKILL.md +541 -518
  31. package/habilidades/planear-fase/SKILL.md +3 -2
  32. package/habilidades/swl-claudemd/SKILL.md +10 -6
  33. package/habilidades/tdd-workflow/SKILL.md +715 -713
  34. package/habilidades/validacion-ci-sistema/SKILL.md +17 -1
  35. package/hooks/calidad-pre-commit.js +5 -1
  36. package/hooks/check-update.js +39 -1
  37. package/hooks/lib/autonomia.js +208 -0
  38. package/hooks/lib/briefing.js +474 -0
  39. package/hooks/lib/propose-step.js +358 -0
  40. package/hooks/session-briefing.js +98 -0
  41. package/hooks/telemetria-skill-routing.js +100 -0
  42. package/instintos/autonomia.yaml +27 -0
  43. package/llms.txt +4 -4
  44. package/manifiestos/hooks-config.json +18 -0
  45. package/manifiestos/modulos.json +25 -3
  46. package/manifiestos/skills-lock.json +17 -17
  47. package/package.json +93 -93
  48. package/plugin.json +371 -371
  49. package/reglas/analizar-directorios-antes-de-escribir.md +228 -0
  50. package/reglas/consultar-vault-primero.md +195 -0
  51. package/reglas/debatir-antes-de-aceptar.md +158 -0
  52. package/reglas/git-coauthor.md +100 -0
  53. package/reglas/monitor-ci.md +309 -0
  54. package/reglas/registro-componentes-nuevos.md +38 -10
  55. package/reglas/sesiones-paralelas.md +180 -0
  56. package/reglas/usar-code-review-graph.md +155 -0
  57. package/reglas/verificar-citas-normativas.md +548 -0
  58. package/scripts/auditar-claudemd.js +38 -0
  59. package/scripts/cli/aprobar-plan.js +73 -0
  60. package/scripts/cli/briefing.js +23 -0
  61. package/scripts/cli/ciclo-evolucion.js +26 -0
  62. package/scripts/cli/configurar-ci.js +40 -0
  63. package/scripts/cli/derivar-feature-list.js +25 -0
  64. package/scripts/cli/detectar-host.js +27 -0
  65. package/scripts/cli/diary-entry.js +69 -0
  66. package/scripts/cli/execution-state.js +18 -0
  67. package/scripts/cli/gateway-notify.js +41 -0
  68. package/scripts/cli/liberar-fase.js +42 -0
  69. package/scripts/cli/loop-telemetry.js +125 -0
  70. package/scripts/cli/mark-evolved.js +56 -0
  71. package/scripts/cli/metricas-dora.js +26 -0
  72. package/scripts/cli/near-duplicate.js +55 -0
  73. package/scripts/cli/notificaciones.js +123 -0
  74. package/scripts/cli/propose-step.js +29 -0
  75. package/scripts/cli/schedule-parse.js +19 -0
  76. package/scripts/cli/sugerir-modelo.js +20 -0
  77. package/scripts/cli/verificar-plan.js +36 -0
  78. package/scripts/cli/verificar-trazabilidad.js +35 -0
  79. package/scripts/derivar-feature-list.js +1 -0
  80. package/scripts/instalador.js +52 -6
  81. package/scripts/lib/auditar-invocaciones-comandos.js +104 -0
  82. package/scripts/lib/ci-reader.js +193 -0
  83. package/scripts/lib/detectar-host-swl.js +175 -0
  84. package/scripts/lib/evidencia-release.js +322 -0
  85. package/scripts/lib/gate-hooks-requires.js +249 -0
  86. package/scripts/lib/gate-licencias.js +212 -0
  87. package/scripts/lib/git-metricas.js +257 -0
  88. package/scripts/lib/metricas-dora.js +204 -0
  89. package/scripts/lib/resolver-plan-fase.js +37 -0
  90. package/scripts/tui/ejecutores.js +1 -1
  91. package/scripts/validar-manifest.js +92 -1
  92. package/scripts/validar.js +13 -0
  93. package/scripts/verificar-evolucion.js +54 -4
  94. package/scripts/verificar-release.js +102 -0
  95. package/scripts/verificar-trazabilidad.js +12 -6
  96. package/reglas/arquitectura.evolved.json +0 -7
  97. package/reglas/seguridad.evolved.json +0 -7
@@ -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
- @reglas/usar-sistema-swl.md
131
- ```
132
- Esta referencia es obligatoria — fuerza que el agente cargue la matriz
133
- operacional de uso del sistema SWL al inicio de cada sesión. Si el proyecto
134
- tiene otras reglas locales (`@reglas/seguridad.md`, `@reglas/arquitectura.md`,
135
- etc.), agregarlas debajo.
136
- - Sección **Reglas de máxima prioridad** con sub-sección obligatoria
137
- **Cuatro principios de implementación (Karpathy)**:
138
- ```markdown
139
- ### Cuatro principios de implementación (Karpathy)
140
- 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`.
141
- ```
142
- Esta sub-sección es estándar SWL y cubre los gaps cognitivos más
143
- frecuentes del agente sin agregar reglas específicas del proyecto.
144
- - Sección **Stack** poblada (lenguaje, framework, ORM, package manager)
145
- - Sección **Comandos** poblada (npm scripts detectados o comandos típicos)
146
- - Sección **Code style** vacía con placeholders
147
- - Sección **Conventions** vacía con placeholders
148
- - Sección **@references** apuntando a `.planning/PROYECTO.md`,
149
- `README.md`, etc. si existen
150
-
151
- Si CLAUDE.md ya existe, **NO lo sobreescribe**. Sugiere correr
152
- `/swl:claudemd refactor` para mejorar el actual. Si detecta que el CLAUDE.md
153
- existente NO incluye `@reglas/usar-sistema-swl.md` o NO menciona los cuatro
154
- principios Karpathy (o `prevencion-sobreingenieria`), emitir hallazgo WARN
155
- recomendando agregarlo manualmente.
156
-
157
- ### Validación síncrona post-generación
158
-
159
- Tras `init-project` generar el archivo nuevo, ejecutar inmediatamente
160
- `audit` sobre el resultado:
161
-
162
- ```bash
163
- node scripts/auditar-claudemd.js --json
164
- ```
165
-
166
- Veredicto esperado: `OK` (el template debe respetar el contrato por
167
- construcción). Cualquier WARN/ERROR es bug del template reportar al
168
- usuario y abrir issue para corrección. Este check es parte del contrato
169
- cruzado con `/swl:aprender` documentado en `@docs/contrato-aprender-claudemd.md`.
170
-
171
- ### audit checks específicos sobre Karpathy
172
-
173
- El subcomando `audit` verifica además de las dimensiones estándar:
174
-
175
- - ¿El CLAUDE.md menciona los cuatro principios Karpathy (texto literal
176
- "Karpathy" o nombres de los 4 principios) o referencia
177
- `prevencion-sobreingenieria` con `Skill(...)` o `@reglas/`?
178
-
179
- Si NO los menciona y el archivo tiene >50 líneas: emitir hallazgo WARN
180
- recomendando agregar la sub-sección compacta (4 líneas) como guía de
181
- implementación. NO emite WARN para CLAUDE.md mínimos (<50 LOC) ni para
182
- archivos `~/.claude/CLAUDE.md` user-level (esos siguen otro contrato).
183
-
184
- ### audit checks específicos sobre duplicación de reglas globales
185
-
186
- El subcomando `audit` también detecta (dimensión 7) si CLAUDE.md duplica
187
- reglas que ya viven en `~/.claude/rules/` y se cargan globalmente.
188
- Consume el catálogo declarativo
189
- `scripts/lib/reglas-globales-conocidas.json` que cataloga 6 reglas
190
- conocidas:
191
-
192
- - `brevedad-output.md` § Idioma obligatorio: español de México
193
- - `brevedad-output.md` § Brevedad y eficiencia de output
194
- - `git-coauthor.md` § Sin co-autores en commits
195
- - `arreglar-al-detectar.md` § Detectar → Informar → Arreglar
196
- - `debatir-antes-de-aceptar.md`
197
- - `usar-context7.md`
198
-
199
- Si detecta duplicación: emite hallazgo `duplicacion-reglas-globales`
200
- severidad WARN con línea aproximada y remediación específica. NO bloquea
201
- el comando — sirve como nudge para limpiar el CLAUDE.md.
202
-
203
- NO aplica a `~/.claude/CLAUDE.md` user-level (ahí sí pueden declararse
204
- preferencias personales que parafrasean reglas globales).
205
-
206
- Aplica regla `reglas/sin-duplicacion-reglas-globales.md`.
207
-
208
- ### refactor propuestas para duplicaciones de reglas globales
209
-
210
- Cuando `audit` detecta duplicaciones, el subcomando `refactor` propone
211
- el reemplazo concreto usando `construirSugerenciaRefactor()` del
212
- detector. Cada propuesta incluye:
213
-
214
- - **Bloque a eliminar** (línea aproximada en CLAUDE.md)
215
- - **Regla global afectada** (archivo + sección canónica)
216
- - **Reemplazo sugerido** (3 opciones):
217
- 1. Eliminar el bloque — la regla global YA aplica automáticamente
218
- 2. Reescribir como matiz local en ≤3 líneas referenciando la regla
219
- 3. Documentar override explícito con justificación
220
-
221
- El refactor SOLO imprime el diff propuesto. El usuario decide aplicar.
222
-
223
- ## Variables de entorno
224
-
225
- Ver `@docs/variables-entorno.md` sección "Calidad de CLAUDE.md":
226
-
227
- - `SWL_CLAUDEMD_BLOAT` (on/off) — activa hook `claudemd-bloat-detector`
228
- - `SWL_CLAUDEMD_MAX_LINES` (default 200) — umbral de líneas totales
229
- - `SWL_CLAUDEMD_MAX_BULLET_CHARS` (default 1000) — umbral de bullet/párrafo
230
-
231
- ## Exit codes
232
-
233
- - `0` — OK o WARN (consultivo)
234
- - `1` ERROR o `--strict` + WARN
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í 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 contexto está listo para continuar con sesión fresca.
273
- Próximo comando: [comando exacto]
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 `scripts/lib/configurar-ci.js` con las opciones seleccionadas:
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
- ```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
- });
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 `init` con `force: true`.
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
- ```javascript
158
- const { status } = require('./scripts/lib/configurar-ci');
159
- const resultado = status();
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
- ```javascript
191
- const { uninstall } = require('./scripts/lib/configurar-ci');
189
+ Subcomando del CLI (salida JSON). Primero listar qué se eliminaría (sin
190
+ confirmar), luego repetir con `--confirmar`:
192
191
 
193
- // Primero listar qué se eliminaría (sin confirmar)
194
- const plan = uninstall({ confirmar: false });
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:
@@ -160,21 +160,19 @@ deliverResult(job, result, process.cwd());
160
160
 
161
161
  ## Parser de lenguaje natural programático (experimental)
162
162
 
163
- El módulo `scripts/lib/schedule-parser.js` proporciona parseo programático de
164
- frases en inglés a expresiones cron, disponible para scripts y extensiones del
165
- comando. No requiere dependencias externas.
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
- Uso desde Node.js:
168
- ```javascript
169
- const { parseNaturalSchedule, isCronDue } = require('./scripts/lib/schedule-parser');
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 * * *`