@saulwade/swl-ses 1.8.0 → 2.0.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 +8 -8
- package/README.md +13 -13
- package/agentes/accesibilidad-wcag-swl.md +3 -3
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/disenador-ui-swl.md +6 -5
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +4 -4
- package/agentes/frontend-swl.md +6 -6
- package/agentes/investigador-ux-swl.md +5 -5
- package/agentes/orquestador-swl.md +96 -8
- package/agentes/perfilador-usuario-swl.md +308 -308
- package/agentes/producto-prd-swl.md +1 -1
- package/agentes/red-team-swl.md +218 -218
- package/agentes/revisor-codigo-swl.md +34 -10
- package/agentes/revisor-seguridad-swl.md +7 -0
- package/agentes/tdd-qa-swl.md +39 -2
- package/comandos/swl/actualizar.md +1 -1
- package/comandos/swl/aprender.md +2 -2
- package/comandos/swl/aprobar-plan.md +152 -0
- package/comandos/swl/autoresearch.md +102 -6
- package/comandos/swl/ayuda.md +3 -3
- package/comandos/swl/discutir-fase.md +20 -2
- package/comandos/swl/ejecutar-fase.md +53 -6
- package/comandos/swl/evolucionar.md +1 -1
- package/comandos/swl/inbox.md +1 -1
- package/comandos/swl/instalar.md +1 -1
- package/comandos/swl/nemesis.md +42 -1
- package/comandos/swl/planear-fase.md +25 -1
- package/comandos/swl/plugins.md +1 -1
- package/comandos/swl/predecir.md +139 -0
- package/comandos/swl/release.md +1 -1
- package/comandos/swl/status.md +279 -0
- package/comandos/swl/verificar.md +75 -7
- package/habilidades/ai-runtime-security/SKILL.md +1 -1
- package/habilidades/angular-moderno/SKILL.md +44 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/autoresearch/SKILL.md +15 -1
- package/habilidades/benchmark-memoria/SKILL.md +1 -1
- package/habilidades/calidad-contract-testing/SKILL.md +165 -0
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -0
- package/habilidades/changelog-generator/SKILL.md +9 -2
- package/habilidades/changelog-generator/scripts/parse-commits.js +12 -1
- package/habilidades/checklist-seguridad/SKILL.md +29 -1
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -0
- package/habilidades/css-moderno/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/SKILL.md +1 -1
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/ejecutar-fase/SKILL.md +64 -14
- package/habilidades/estructura-proyecto-claude/SKILL.md +17 -14
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +34 -23
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +70 -53
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -77
- package/habilidades/extractor-de-aprendizajes/SKILL.md +9 -5
- package/habilidades/fastapi-experto/SKILL.md +56 -5
- package/habilidades/harness-claude-code/SKILL.md +10 -7
- package/{reglas/harness-claude-code.md → habilidades/harness-claude-code/recursos/disciplina-harness-regla.md} +2 -2
- package/habilidades/instalar-sistema/SKILL.md +3 -3
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +1 -1
- package/habilidades/patrones-python/SKILL.md +8 -5
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/planear-fase/SKILL.md +25 -4
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +1 -1
- package/habilidades/proceso-ddia-streaming/SKILL.md +4 -4
- package/habilidades/proceso-debate-adversarial/SKILL.md +164 -0
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -0
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -0
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -0
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -0
- package/habilidades/protocolo-revision-swl/SKILL.md +1 -1
- package/habilidades/seguridad-skills-ia/SKILL.md +1 -1
- package/habilidades/swl-claudemd/SKILL.md +50 -210
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -0
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -0
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -0
- package/habilidades/swl-dashboard/SKILL.md +9 -9
- package/habilidades/swl-revisar-impacto/SKILL.md +1 -1
- package/habilidades/tdd-workflow/SKILL.md +58 -5
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +3 -3
- package/hooks/calidad-pre-commit.js +340 -3
- package/hooks/ciclo-evolucion-subagente.js +26 -0
- package/hooks/ciclo-evolucion.js +26 -0
- package/hooks/contexto-iteracion.js +144 -0
- package/hooks/extraccion-aprendizajes.js +13 -0
- package/hooks/lib/ciclo-evolucion.js +47 -0
- package/hooks/{auto-evolucion.js → lib/etapa-auto-evolucion.js} +701 -700
- package/hooks/{metricas-evolucion.js → lib/etapa-metricas.js} +388 -376
- package/hooks/{actualizar-perfil-usuario.js → lib/etapa-perfil-usuario.js} +376 -364
- package/hooks/lib/evolution-tracker.js +24 -3
- package/hooks/lib/loop-telemetry.js +321 -0
- package/hooks/notificacion-telegram.js +11 -3
- package/hooks/spec-gate.js +211 -0
- package/hooks/tdd-gate.js +241 -0
- package/hooks/validar-intent-spec.js +30 -10
- package/llms.txt +29 -0
- package/manifiestos/hooks-config.json +36 -18
- package/manifiestos/modulos.json +23 -14
- package/manifiestos/skills-lock.json +100 -72
- package/package.json +4 -3
- package/plugin.json +9 -10
- package/reglas/accesibilidad.md +10 -0
- package/reglas/api-diseno.md +9 -0
- package/reglas/arquitectura.evolved.json +7 -0
- package/reglas/arquitectura.md +65 -0
- package/reglas/auditorias-documentales-estructurales.md +7 -0
- package/reglas/cloud-infra.md +8 -0
- package/reglas/fragmentos-compartidos.md +5 -0
- package/reglas/gobernanza.md +4 -4
- package/reglas/hooks.md +6 -0
- package/reglas/intent-engineering.md +4 -0
- package/reglas/markitdown.md +8 -0
- package/reglas/memoria-consolidada.md +1 -1
- package/reglas/patrones.md +6 -0
- package/reglas/registro-componentes-nuevos.md +10 -1
- package/reglas/seguridad-agentes.md +1 -1
- package/reglas/seguridad.evolved.json +7 -0
- package/reglas/seguridad.md +144 -0
- package/reglas/skills-estandar.md +6 -0
- package/reglas/testing.md +7 -0
- package/reglas/tests-cleanup.md +4 -0
- package/reglas/usar-sistema-swl.md +1 -1
- package/scripts/generar-inventario.js +64 -1
- package/scripts/instalador.js +32 -2
- package/scripts/lib/gitignore-manifest.js +29 -1
- package/scripts/lib/plan-lock.js +275 -0
- package/scripts/migrar-fase-dominio.js +0 -1
- package/scripts/smoke-test.js +24 -2
- package/scripts/verificar-trazabilidad.js +292 -0
- package/agentes/ux-disenador-swl.md +0 -503
- package/comandos/swl/dashboard.md +0 -146
- package/comandos/swl/evolucion-estado.md +0 -191
- package/comandos/swl/metricas.md +0 -342
- package/comandos/swl/salud.md +0 -481
- package/reglas/verificar-citas-temporales.md +0 -139
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swl-claudemd
|
|
3
3
|
description: Conocimiento operacional para auditar y mantener archivos CLAUDE.md — contrato canónico de secciones (best practices Anthropic, ADR-0016), umbrales de bloat (líneas totales, bullets gigantes, placeholders, @references rotas), reglas de extracción a archivos referenciados con @, y plantillas de inicialización (init-user para ~/.claude/CLAUDE.md, init-project para CLAUDE.md raíz detectando stack). Provee las reglas; el comando /swl:claudemd ejecuta el flujo. Cargar desde ese comando o cuando el hook claudemd-bloat-detector sugiera intervención.
|
|
4
|
-
version: "1.2.
|
|
4
|
+
version: "1.2.1"
|
|
5
5
|
herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
|
|
6
6
|
exclusiones:
|
|
7
7
|
- "No cargar para editar reglas globales en ~/.claude/rules/ — usar Edit directo."
|
|
@@ -148,19 +148,11 @@ secciones faltantes pero NO sobreescribe.
|
|
|
148
148
|
|
|
149
149
|
### Template
|
|
150
150
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|---|---|---|
|
|
157
|
-
| Stack | Sí — del proyecto | No (varía por proyecto) |
|
|
158
|
-
| Comandos | Sí — del proyecto | No |
|
|
159
|
-
| Code style | Sí — convenciones del equipo | Sí — preferencias personales (indent, naming favorito) |
|
|
160
|
-
| Conventions | Sí — del proyecto | No |
|
|
161
|
-
| Mi rol y stack preferido | No | Sí |
|
|
162
|
-
| Estilo de comunicación | No | Sí |
|
|
163
|
-
| Patrones que aplico siempre | No | Sí — meta-preferencias cross-project |
|
|
151
|
+
Las secciones canónicas user-level son DISTINTAS de project-level (Stack y
|
|
152
|
+
Comandos no aplican; sí aplican rol, estilo de comunicación y meta-preferencias).
|
|
153
|
+
Tabla comparativa completa y template: ver
|
|
154
|
+
[plantillas-init](recursos/plantillas-init.md) y el comando `/swl:claudemd`
|
|
155
|
+
sección `init-user`.
|
|
164
156
|
|
|
165
157
|
---
|
|
166
158
|
|
|
@@ -182,222 +174,70 @@ Genera `./CLAUDE.md` raíz del proyecto detectando stack actual.
|
|
|
182
174
|
- **Comandos**: npm scripts detectados o comandos típicos por lenguaje
|
|
183
175
|
- **Code style**: placeholders explícitos (`<!-- pendiente: definir convención de X -->`)
|
|
184
176
|
- **Conventions**: placeholders explícitos
|
|
177
|
+
- **SWL es tooling (frontera de versionado)** — bloque exacto definido abajo.
|
|
178
|
+
OBLIGATORIO cuando el proyecto destino NO es el repo madre de swl-ses (es
|
|
179
|
+
decir, siempre en `init-project` sobre un proyecto del usuario). Mantiene
|
|
180
|
+
el CLAUDE.md consistente con la sección swl-ses del `.gitignore`.
|
|
185
181
|
- **@references**: enlazar a `.planning/PROYECTO.md`, `README.md`,
|
|
186
182
|
`CONTRIBUTING.md` solo si existen
|
|
187
183
|
4. Imprimir mensaje con próximo paso: "ejecuta `/swl:claudemd audit`
|
|
188
184
|
para verificar".
|
|
189
185
|
|
|
190
|
-
###
|
|
186
|
+
### Bloques literales de init-project
|
|
191
187
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
```markdown
|
|
196
|
-
### Cuatro principios de implementación (Karpathy)
|
|
197
|
-
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`.
|
|
198
|
-
```
|
|
188
|
+
Los dos bloques OBLIGATORIOS que toda generación nueva inserta literal viven en
|
|
189
|
+
[plantillas-init](recursos/plantillas-init.md) (fuente de verdad de los templates):
|
|
199
190
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
191
|
+
- **Bloque SWL-tooling (frontera de versionado)**: documenta en el CLAUDE.md del
|
|
192
|
+
proyecto destino qué archivos son runtime gitignored (gestionado por
|
|
193
|
+
`scripts/lib/gitignore-manifest.js`) vs qué versiona el equipo. Si
|
|
194
|
+
`ENTRADAS_BASE` cambia, el bloque del recurso se actualiza en sync.
|
|
195
|
+
- **Bloque Karpathy (4 principios)**: sub-sección compacta en "Reglas de máxima
|
|
196
|
+
prioridad" que referencia `Skill("prevencion-sobreingenieria")` (siempre
|
|
197
|
+
resuelve — se distribuye con cada instalación SWL).
|
|
204
198
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
`scripts/auditar-claudemd.js` debe verificar (search regex case-insensitive):
|
|
208
|
-
|
|
209
|
-
- `/karpathy/i`
|
|
210
|
-
- `/cuatro principios/i` o `/4 principios/i`
|
|
211
|
-
- `/prevencion-sobreingenieria/`
|
|
212
|
-
- `/Skill\(["'`]prevencion-sobreingenieria["'`]\)/`
|
|
213
|
-
|
|
214
|
-
Si NO encuentra ninguna AND el archivo tiene >50 LOC AND es project-level
|
|
215
|
-
(no `~/.claude/CLAUDE.md`): emitir hallazgo WARN con mensaje:
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
CLAUDE.md no menciona los cuatro principios Karpathy ni el skill
|
|
219
|
-
prevencion-sobreingenieria. Considerar agregar la sub-sección compacta
|
|
220
|
-
(ver /swl:claudemd init-project § Bloque obligatorio Karpathy).
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Esta dimensión es WARN, no ERROR — guía sin imponer. CLAUDE.md user-level
|
|
224
|
-
(`~/.claude/`) NO se evalúa contra este check.
|
|
199
|
+
El recurso incluye también el **check Karpathy del auditor** (regex, condiciones
|
|
200
|
+
y mensaje WARN — project-level >50 LOC sin mención a los 4 principios).
|
|
225
201
|
|
|
226
202
|
---
|
|
227
203
|
|
|
228
204
|
## Interacción con /swl:aprender (contrato cruzado)
|
|
229
205
|
|
|
230
|
-
`/swl:aprender`
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
`/swl:aprender` Paso 6 Tipo A agrega reglas a `CLAUDE.md` del proyecto.
|
|
238
|
-
El hook `claudemd-bloat-detector.js` (PostToolUse, async, no bloqueante)
|
|
239
|
-
emite nudge tras Write/Edit/MultiEdit sobre CLAUDE.md, pero **el nudge
|
|
240
|
-
llega después** del comando de aprender. Resultado: aprender termina,
|
|
241
|
-
reporta éxito al usuario, y solo después aparece el nudge — con el
|
|
242
|
-
commit ya hecho.
|
|
243
|
-
|
|
244
|
-
Origen detectado: sesión 2026-05-22 al evaluar el flujo SIGAF→swl-ses.
|
|
245
|
-
CLAUDE.md SIGAF recibió ~25 líneas inline de "Triangulación schema
|
|
246
|
-
cross-stack" sin validación post-mutación → archivo probablemente
|
|
247
|
-
superó el umbral de 200 LOC sin warning consciente.
|
|
248
|
-
|
|
249
|
-
### Contrato canónico de interacción
|
|
250
|
-
|
|
251
|
-
Para cualquier comando SWL que escriba a CLAUDE.md del proyecto
|
|
252
|
-
(`/swl:aprender`, `/swl:adoptar-proyecto`, `/swl:nuevo-proyecto`,
|
|
253
|
-
`/swl:claudemd init-project`, futuros comandos similares):
|
|
206
|
+
`/swl:aprender` **muta** CLAUDE.md; `/swl:claudemd` **prescribe contrato**.
|
|
207
|
+
Todo comando SWL que escriba a CLAUDE.md del proyecto (`aprender`,
|
|
208
|
+
`adoptar-proyecto`, `nuevo-proyecto`, `claudemd init-project`, futuros) DEBE
|
|
209
|
+
ejecutar el auditor síncrono tras escribir (`node scripts/auditar-claudemd.js
|
|
210
|
+
--json`), evaluar el veredicto (OK→continuar; WARN→proponer condensar/extraer;
|
|
211
|
+
`ERROR placeholders`→**DETENER y revertir**) y re-auditar hasta OK/WARN aceptable.
|
|
254
212
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
213
|
+
Doble red: capa síncrona (Paso 6.5 de aprender — proactiva, bloquea el comando)
|
|
214
|
+
+ capa async (hook `claudemd-bloat-detector.js` — nudge universal para
|
|
215
|
+
escrituras fuera de comandos SWL). NO crear hook nuevo dedicado — duplicaría el
|
|
216
|
+
existente.
|
|
258
217
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
npx -y @saulwade/swl-ses@latest audit-claudemd --json
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
3. **Evaluar veredicto**:
|
|
266
|
-
- `OK` → continuar
|
|
267
|
-
- `WARN tamano-total` → proponer condensar o extraer a `@docs/lessons-<tema>.md`
|
|
268
|
-
- `WARN bullet-gigante` → proponer condensar a tabla/lista jerárquica
|
|
269
|
-
- `WARN secciones-canonicas` / `WARN sin-at-references` / `WARN karpathy-reference` → reportar al usuario, permitir continuar
|
|
270
|
-
- `ERROR placeholders` → **DETENER** y revertir
|
|
271
|
-
|
|
272
|
-
4. **Re-ejecutar el auditor** tras la corrección hasta veredicto OK o
|
|
273
|
-
WARN aceptable.
|
|
274
|
-
|
|
275
|
-
### Doble red de seguridad
|
|
276
|
-
|
|
277
|
-
El sistema tiene dos capas de protección complementarias:
|
|
278
|
-
|
|
279
|
-
| Capa | Mecanismo | Cuándo actúa | Bloqueo |
|
|
280
|
-
|------|-----------|--------------|---------|
|
|
281
|
-
| Síncrona | Paso 6.5 de `/swl:aprender` (y equivalente en otros comandos) | Justo después del Write/Edit, antes del reporte final | Bloquea pasos posteriores hasta resolver |
|
|
282
|
-
| Asíncrona | Hook `claudemd-bloat-detector.js` (PostToolUse) | Tras cualquier Write/Edit/MultiEdit a CLAUDE.md (incluso fuera de comandos SWL) | No bloquea — emite nudge a `.planning/evolution/nudges.jsonl` |
|
|
283
|
-
|
|
284
|
-
La capa síncrona es proactiva (detiene el comando antes de reportar
|
|
285
|
-
éxito). La asíncrona es retroactiva (cubre escrituras desde fuera de
|
|
286
|
-
comandos SWL, ej. edición manual).
|
|
287
|
-
|
|
288
|
-
### Por qué NO se duplica al hook
|
|
289
|
-
|
|
290
|
-
El hook async existente cubre el caso de escrituras desde **cualquier
|
|
291
|
-
fuente** (edición manual del usuario, otros comandos, scripts externos).
|
|
292
|
-
Es la red de seguridad universal. La validación síncrona en aprender es
|
|
293
|
-
específica para el flujo del comando — donde el agente puede actuar
|
|
294
|
-
sobre el WARN antes de continuar.
|
|
295
|
-
|
|
296
|
-
NO crear un hook nuevo dedicado a aprender — duplicaría el rol del
|
|
297
|
-
existente. La invocación síncrona en el Paso 6.5 es suficiente.
|
|
298
|
-
|
|
299
|
-
### Reglas duras
|
|
300
|
-
|
|
301
|
-
- `/swl:aprender` Paso 6.5 es OBLIGATORIO si se aplicó Tipo A.
|
|
302
|
-
- `/swl:adoptar-proyecto` Paso 8 debe ejecutar el auditor tras
|
|
303
|
-
generar/modificar CLAUDE.md.
|
|
304
|
-
- `/swl:nuevo-proyecto` Paso 6 debe ejecutar el auditor tras generar
|
|
305
|
-
CLAUDE.md inicial.
|
|
306
|
-
- `/swl:claudemd init-project` debe ejecutar el auditor sobre el
|
|
307
|
-
archivo recién generado.
|
|
308
|
-
|
|
309
|
-
Cualquier comando futuro que escriba a CLAUDE.md DEBE seguir este
|
|
310
|
-
contrato.
|
|
311
|
-
|
|
312
|
-
---
|
|
218
|
+
Detalle completo (gap arquitectural de origen, contrato canónico de 4 pasos,
|
|
219
|
+
tabla de capas, reglas duras por comando): ver
|
|
220
|
+
[contrato-aprender](recursos/contrato-aprender.md).
|
|
313
221
|
|
|
314
222
|
---
|
|
315
223
|
|
|
316
224
|
## Detección de duplicación de reglas globales (dimensión 8)
|
|
317
225
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
esta duplicación. Esta dimensión del auditor la detecta.
|
|
334
|
-
|
|
335
|
-
### Catálogo declarativo
|
|
336
|
-
|
|
337
|
-
`scripts/lib/reglas-globales-conocidas.json` lista las reglas globales
|
|
338
|
-
conocidas con sus patrones de detección. Estructura por entrada:
|
|
339
|
-
|
|
340
|
-
```json
|
|
341
|
-
{
|
|
342
|
-
"id": "idioma-espanol-mexico",
|
|
343
|
-
"regla_global": "brevedad-output.md",
|
|
344
|
-
"seccion_canonica": "Idioma obligatorio: español de México",
|
|
345
|
-
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Idioma obligatorio",
|
|
346
|
-
"patrones": ["\\bespañol\\s+de\\s+M[ée]xico\\b", "..."],
|
|
347
|
-
"min_matches": 2,
|
|
348
|
-
"remediacion_sugerida": "Eliminar el bloque local..."
|
|
349
|
-
}
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
Reglas incluidas en v1.7.0:
|
|
353
|
-
|
|
354
|
-
- `idioma-espanol-mexico` (brevedad-output.md § Idioma)
|
|
355
|
-
- `brevedad-sin-aiisms` (brevedad-output.md § Brevedad)
|
|
356
|
-
- `git-sin-coautores` (git-coauthor.md)
|
|
357
|
-
- `arreglar-al-detectar` (arreglar-al-detectar.md)
|
|
358
|
-
- `debatir-antes-de-aceptar` (debatir-antes-de-aceptar.md)
|
|
359
|
-
- `usar-context7` (usar-context7.md)
|
|
360
|
-
|
|
361
|
-
### Cuándo NO se evalúa
|
|
362
|
-
|
|
363
|
-
- **User-level** (`~/.claude/CLAUDE.md`): ahí sí pueden declararse
|
|
364
|
-
preferencias personales que parafrasean reglas globales. La opción
|
|
365
|
-
`esUserLevel: true` skipea la evaluación.
|
|
366
|
-
- **Archivos < 20 LOC**: CLAUDE.md mínimos no acumulan duplicaciones
|
|
367
|
-
con suficiente densidad para evaluar.
|
|
368
|
-
|
|
369
|
-
### Capa async — hook
|
|
370
|
-
|
|
371
|
-
`hooks/claudemd-duplicacion-detector.js` (PostToolUse, no bloquea)
|
|
372
|
-
ejecuta el detector tras cualquier Write/Edit a CLAUDE.md y emite
|
|
373
|
-
nudge a `.planning/evolution/nudges.jsonl` con `kind:
|
|
374
|
-
claudemd-duplicacion-reglas`. Opt-out: `SWL_CLAUDEMD_DUPLICACION=0`.
|
|
375
|
-
|
|
376
|
-
### Cómo refactorizar duplicaciones detectadas
|
|
377
|
-
|
|
378
|
-
Tres opciones para cada hallazgo:
|
|
379
|
-
|
|
380
|
-
1. **Eliminar** (default recomendado): el bloque solo repite la regla
|
|
381
|
-
global, eliminarlo no pierde información.
|
|
382
|
-
2. **Convertir a matiz local** (≤3 líneas): si el bloque agrega valor
|
|
383
|
-
local genuino, reescribirlo corto referenciando la regla global:
|
|
384
|
-
```markdown
|
|
385
|
-
Convenciones locales: identificadores técnicos en inglés (rutas,
|
|
386
|
-
comandos). Ver @~/.claude/rules/brevedad-output.md.
|
|
387
|
-
```
|
|
388
|
-
3. **Documentar override explícito** (raro): si el proyecto contradice
|
|
389
|
-
la regla global por requerimiento documentable:
|
|
390
|
-
```markdown
|
|
391
|
-
Override de @~/.claude/rules/brevedad-output.md § Brevedad: este
|
|
392
|
-
proyecto exige docstrings extendidos por compliance regulatorio.
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### Anti-patrón: "lo dejo por claridad"
|
|
396
|
-
|
|
397
|
-
La regla global YA es visible — se carga automáticamente. Duplicarla
|
|
398
|
-
no aumenta su prioridad ni su claridad; solo crea deuda. Si el WARN
|
|
399
|
-
del auditor incomoda, la respuesta correcta es **resolver la
|
|
400
|
-
duplicación**, no aceptar el WARN.
|
|
226
|
+
Las reglas de `~/.claude/rules/` se cargan automáticamente en cada sesión;
|
|
227
|
+
duplicarlas inline en un CLAUDE.md de proyecto produce bloat, drift al
|
|
228
|
+
actualizar la global y erosión del contrato (regla
|
|
229
|
+
`reglas/sin-duplicacion-reglas-globales.md`). El auditor lo detecta con el
|
|
230
|
+
catálogo declarativo `scripts/lib/reglas-globales-conocidas.json` (6 reglas en
|
|
231
|
+
v1.7.0); la capa async es `hooks/claudemd-duplicacion-detector.js` (opt-out
|
|
232
|
+
`SWL_CLAUDEMD_DUPLICACION=0`). NO se evalúa user-level ni archivos <20 LOC.
|
|
233
|
+
|
|
234
|
+
Remediación por hallazgo: **eliminar** (default), **matiz local** ≤3 líneas
|
|
235
|
+
referenciando la global, u **override explícito** documentado. Anti-patrón:
|
|
236
|
+
"lo dejo por claridad" — la global ya es visible; duplicar solo crea deuda.
|
|
237
|
+
|
|
238
|
+
Detalle completo (patologías, estructura del catálogo, ejemplos de
|
|
239
|
+
remediación): ver
|
|
240
|
+
[duplicacion-reglas-globales](recursos/duplicacion-reglas-globales.md).
|
|
401
241
|
|
|
402
242
|
---
|
|
403
243
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Contrato cruzado con /swl:aprender (y todo comando que escriba a CLAUDE.md)
|
|
2
|
+
|
|
3
|
+
`/swl:aprender` y `/swl:claudemd` operan sobre el mismo archivo desde
|
|
4
|
+
ángulos opuestos: aprender **muta**, claudemd **prescribe contrato**.
|
|
5
|
+
Sin coordinación explícita, una sesión de aprender puede romper el
|
|
6
|
+
contrato silenciosamente.
|
|
7
|
+
|
|
8
|
+
## El gap arquitectural que esta interacción cierra
|
|
9
|
+
|
|
10
|
+
`/swl:aprender` Paso 6 Tipo A agrega reglas a `CLAUDE.md` del proyecto.
|
|
11
|
+
El hook `claudemd-bloat-detector.js` (PostToolUse, async, no bloqueante)
|
|
12
|
+
emite nudge tras Write/Edit/MultiEdit sobre CLAUDE.md, pero **el nudge
|
|
13
|
+
llega después** del comando de aprender. Resultado: aprender termina,
|
|
14
|
+
reporta éxito al usuario, y solo después aparece el nudge — con el
|
|
15
|
+
commit ya hecho.
|
|
16
|
+
|
|
17
|
+
Origen detectado: sesión 2026-05-22 al evaluar el flujo SIGAF→swl-ses.
|
|
18
|
+
CLAUDE.md SIGAF recibió ~25 líneas inline de "Triangulación schema
|
|
19
|
+
cross-stack" sin validación post-mutación → archivo probablemente
|
|
20
|
+
superó el umbral de 200 LOC sin warning consciente.
|
|
21
|
+
|
|
22
|
+
## Contrato canónico de interacción
|
|
23
|
+
|
|
24
|
+
Para cualquier comando SWL que escriba a CLAUDE.md del proyecto
|
|
25
|
+
(`/swl:aprender`, `/swl:adoptar-proyecto`, `/swl:nuevo-proyecto`,
|
|
26
|
+
`/swl:claudemd init-project`, futuros comandos similares):
|
|
27
|
+
|
|
28
|
+
1. **Antes de escribir**: opcional, pero recomendado — leer el tamaño
|
|
29
|
+
actual del archivo y estimar el delta.
|
|
30
|
+
2. **Después de escribir**: OBLIGATORIO ejecutar el auditor síncrono:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
node scripts/auditar-claudemd.js --json
|
|
34
|
+
# o fallback:
|
|
35
|
+
npx -y @saulwade/swl-ses@latest audit-claudemd --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. **Evaluar veredicto**:
|
|
39
|
+
- `OK` → continuar
|
|
40
|
+
- `WARN tamano-total` → proponer condensar o extraer a `@docs/lessons-<tema>.md`
|
|
41
|
+
- `WARN bullet-gigante` → proponer condensar a tabla/lista jerárquica
|
|
42
|
+
- `WARN secciones-canonicas` / `WARN sin-at-references` / `WARN karpathy-reference` → reportar al usuario, permitir continuar
|
|
43
|
+
- `ERROR placeholders` → **DETENER** y revertir
|
|
44
|
+
|
|
45
|
+
4. **Re-ejecutar el auditor** tras la corrección hasta veredicto OK o
|
|
46
|
+
WARN aceptable.
|
|
47
|
+
|
|
48
|
+
## Doble red de seguridad
|
|
49
|
+
|
|
50
|
+
El sistema tiene dos capas de protección complementarias:
|
|
51
|
+
|
|
52
|
+
| Capa | Mecanismo | Cuándo actúa | Bloqueo |
|
|
53
|
+
|------|-----------|--------------|---------|
|
|
54
|
+
| Síncrona | Paso 6.5 de `/swl:aprender` (y equivalente en otros comandos) | Justo después del Write/Edit, antes del reporte final | Bloquea pasos posteriores hasta resolver |
|
|
55
|
+
| Asíncrona | Hook `claudemd-bloat-detector.js` (PostToolUse) | Tras cualquier Write/Edit/MultiEdit a CLAUDE.md (incluso fuera de comandos SWL) | No bloquea — emite nudge a `.planning/evolution/nudges.jsonl` |
|
|
56
|
+
|
|
57
|
+
La capa síncrona es proactiva (detiene el comando antes de reportar
|
|
58
|
+
éxito). La asíncrona es retroactiva (cubre escrituras desde fuera de
|
|
59
|
+
comandos SWL, ej. edición manual).
|
|
60
|
+
|
|
61
|
+
## Por qué NO se duplica al hook
|
|
62
|
+
|
|
63
|
+
El hook async existente cubre el caso de escrituras desde **cualquier
|
|
64
|
+
fuente** (edición manual del usuario, otros comandos, scripts externos).
|
|
65
|
+
Es la red de seguridad universal. La validación síncrona en aprender es
|
|
66
|
+
específica para el flujo del comando — donde el agente puede actuar
|
|
67
|
+
sobre el WARN antes de continuar.
|
|
68
|
+
|
|
69
|
+
NO crear un hook nuevo dedicado a aprender — duplicaría el rol del
|
|
70
|
+
existente. La invocación síncrona en el Paso 6.5 es suficiente.
|
|
71
|
+
|
|
72
|
+
## Reglas duras
|
|
73
|
+
|
|
74
|
+
- `/swl:aprender` Paso 6.5 es OBLIGATORIO si se aplicó Tipo A.
|
|
75
|
+
- `/swl:adoptar-proyecto` Paso 8 debe ejecutar el auditor tras
|
|
76
|
+
generar/modificar CLAUDE.md.
|
|
77
|
+
- `/swl:nuevo-proyecto` Paso 6 debe ejecutar el auditor tras generar
|
|
78
|
+
CLAUDE.md inicial.
|
|
79
|
+
- `/swl:claudemd init-project` debe ejecutar el auditor sobre el
|
|
80
|
+
archivo recién generado.
|
|
81
|
+
|
|
82
|
+
Cualquier comando futuro que escriba a CLAUDE.md DEBE seguir este
|
|
83
|
+
contrato.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Dimensión 8 — Detección de duplicación de reglas globales
|
|
2
|
+
|
|
3
|
+
## Por qué existe
|
|
4
|
+
|
|
5
|
+
Las reglas en `~/.claude/rules/` se cargan automáticamente en cada
|
|
6
|
+
sesión SWL. Si un proyecto duplica inline el contenido de esas reglas
|
|
7
|
+
en su `CLAUDE.md`, ocurren tres patologías:
|
|
8
|
+
|
|
9
|
+
1. **Bloat acumulativo**: 7-15 líneas por regla duplicada × N proyectos
|
|
10
|
+
= inflación silenciosa que rompe el umbral de 200 LOC.
|
|
11
|
+
2. **Drift al actualizar la global**: si la regla global cambia, las
|
|
12
|
+
copias en cada CLAUDE.md quedan obsoletas sin alerta.
|
|
13
|
+
3. **Erosión del contrato canónico**: cada CLAUDE.md re-deriva el
|
|
14
|
+
principio con palabras propias, generando 4 paráfrasis distintas
|
|
15
|
+
del mismo contenido.
|
|
16
|
+
|
|
17
|
+
La regla `reglas/sin-duplicacion-reglas-globales.md` (v1.7.0) prohíbe
|
|
18
|
+
esta duplicación. Esta dimensión del auditor la detecta.
|
|
19
|
+
|
|
20
|
+
## Catálogo declarativo
|
|
21
|
+
|
|
22
|
+
`scripts/lib/reglas-globales-conocidas.json` lista las reglas globales
|
|
23
|
+
conocidas con sus patrones de detección. Estructura por entrada:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"id": "idioma-espanol-mexico",
|
|
28
|
+
"regla_global": "brevedad-output.md",
|
|
29
|
+
"seccion_canonica": "Idioma obligatorio: español de México",
|
|
30
|
+
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Idioma obligatorio",
|
|
31
|
+
"patrones": ["\\bespañol\\s+de\\s+M[ée]xico\\b", "..."],
|
|
32
|
+
"min_matches": 2,
|
|
33
|
+
"remediacion_sugerida": "Eliminar el bloque local..."
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Reglas incluidas en v1.7.0:
|
|
38
|
+
|
|
39
|
+
- `idioma-espanol-mexico` (brevedad-output.md § Idioma)
|
|
40
|
+
- `brevedad-sin-aiisms` (brevedad-output.md § Brevedad)
|
|
41
|
+
- `git-sin-coautores` (git-coauthor.md)
|
|
42
|
+
- `arreglar-al-detectar` (arreglar-al-detectar.md)
|
|
43
|
+
- `debatir-antes-de-aceptar` (debatir-antes-de-aceptar.md)
|
|
44
|
+
- `usar-context7` (usar-context7.md)
|
|
45
|
+
|
|
46
|
+
## Cuándo NO se evalúa
|
|
47
|
+
|
|
48
|
+
- **User-level** (`~/.claude/CLAUDE.md`): ahí sí pueden declararse
|
|
49
|
+
preferencias personales que parafrasean reglas globales. La opción
|
|
50
|
+
`esUserLevel: true` skipea la evaluación.
|
|
51
|
+
- **Archivos < 20 LOC**: CLAUDE.md mínimos no acumulan duplicaciones
|
|
52
|
+
con suficiente densidad para evaluar.
|
|
53
|
+
|
|
54
|
+
## Capa async — hook
|
|
55
|
+
|
|
56
|
+
`hooks/claudemd-duplicacion-detector.js` (PostToolUse, no bloquea)
|
|
57
|
+
ejecuta el detector tras cualquier Write/Edit a CLAUDE.md y emite
|
|
58
|
+
nudge a `.planning/evolution/nudges.jsonl` con `kind:
|
|
59
|
+
claudemd-duplicacion-reglas`. Opt-out: `SWL_CLAUDEMD_DUPLICACION=0`.
|
|
60
|
+
|
|
61
|
+
## Cómo refactorizar duplicaciones detectadas
|
|
62
|
+
|
|
63
|
+
Tres opciones para cada hallazgo:
|
|
64
|
+
|
|
65
|
+
1. **Eliminar** (default recomendado): el bloque solo repite la regla
|
|
66
|
+
global, eliminarlo no pierde información.
|
|
67
|
+
2. **Convertir a matiz local** (≤3 líneas): si el bloque agrega valor
|
|
68
|
+
local genuino, reescribirlo corto referenciando la regla global:
|
|
69
|
+
```markdown
|
|
70
|
+
Convenciones locales: identificadores técnicos en inglés (rutas,
|
|
71
|
+
comandos). Ver @~/.claude/rules/brevedad-output.md.
|
|
72
|
+
```
|
|
73
|
+
3. **Documentar override explícito** (raro): si el proyecto contradice
|
|
74
|
+
la regla global por requerimiento documentable:
|
|
75
|
+
```markdown
|
|
76
|
+
Override de @~/.claude/rules/brevedad-output.md § Brevedad: este
|
|
77
|
+
proyecto exige docstrings extendidos por compliance regulatorio.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Anti-patrón: "lo dejo por claridad"
|
|
81
|
+
|
|
82
|
+
La regla global YA es visible — se carga automáticamente. Duplicarla
|
|
83
|
+
no aumenta su prioridad ni su claridad; solo crea deuda. Si el WARN
|
|
84
|
+
del auditor incomoda, la respuesta correcta es **resolver la
|
|
85
|
+
duplicación**, no aceptar el WARN.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Plantillas literales de init-project / init-user
|
|
2
|
+
|
|
3
|
+
Bloques exactos que `/swl:claudemd init-project` inserta en el CLAUDE.md
|
|
4
|
+
generado. Este recurso es la fuente de verdad de los templates — el SKILL.md
|
|
5
|
+
los referencia sin duplicarlos.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Bloque obligatorio SWL-tooling (init-project)
|
|
10
|
+
|
|
11
|
+
Toda generación nueva en un proyecto destino incluye esta sub-sección literal
|
|
12
|
+
(empareja el CLAUDE.md con la sección swl-ses del `.gitignore` — gestionada por
|
|
13
|
+
`scripts/lib/gitignore-manifest.js`). Sin ella, un compañero del equipo no sabe
|
|
14
|
+
qué archivos son del proyecto y cuáles son runtime de la herramienta:
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
## SWL es tooling de desarrollo (frontera de versionado)
|
|
18
|
+
|
|
19
|
+
Este proyecto usa [swl-ses](https://www.npmjs.com/package/@saulwade/swl-ses) como
|
|
20
|
+
herramienta de desarrollo. Lo que SWL instala y genera **no forma parte del
|
|
21
|
+
proyecto** y está en `.gitignore` (sección `# [swl-ses:inicio]`): `.claude/`
|
|
22
|
+
(framework), `hooks/`, `instintos/`, `usage.db` y el runtime bajo `.planning/`
|
|
23
|
+
(APRENDIZAJES, métricas, sesiones, traces, evolution, loops, locks, feature-list,
|
|
24
|
+
caches del grafo, etc.).
|
|
25
|
+
|
|
26
|
+
SÍ se versionan (los edita el equipo): `CLAUDE.md`, `.claude/settings.json`, el
|
|
27
|
+
manifest `.swl-ses`, y las plantillas de `.planning/` — `PROYECTO.md`,
|
|
28
|
+
`REQUISITOS.md`, `HOJA-RUTA.md`, `ESTADO.md`, `research/`, `adrs/`, y los
|
|
29
|
+
`fases/0N-{CONTEXTO,PLAN,RESUMEN,VERIFICACION}.md`.
|
|
30
|
+
|
|
31
|
+
Reinstalar/actualizar el tooling: `npx -y @saulwade/swl-ses@latest install`.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Justificación: la lista de qué se ignora vs qué se commitea es la **fuente de
|
|
35
|
+
verdad** de `gitignore-manifest.js`. Replicarla en prosa en el CLAUDE.md del
|
|
36
|
+
proyecto cierra el gap de "el .gitignore lo sabe pero el humano que lee CLAUDE.md
|
|
37
|
+
no". Mantener ambas en sync: si `ENTRADAS_BASE` cambia, este bloque se actualiza.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Bloque obligatorio Karpathy (init-project)
|
|
42
|
+
|
|
43
|
+
Toda generación nueva incluye esta sub-sección literal en "Reglas de
|
|
44
|
+
máxima prioridad":
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
### Cuatro principios de implementación (Karpathy)
|
|
48
|
+
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`.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Justificación: el skill `prevencion-sobreingenieria` y su `recursos/EXAMPLES.md`
|
|
52
|
+
se distribuyen con cada instalación SWL, así que la referencia siempre resuelve.
|
|
53
|
+
La sub-sección compacta (5 líneas) ataca los gaps cognitivos más frecuentes
|
|
54
|
+
de cualquier proyecto sin agregar opinión específica.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Check Karpathy en audit
|
|
59
|
+
|
|
60
|
+
`scripts/auditar-claudemd.js` debe verificar (search regex case-insensitive):
|
|
61
|
+
|
|
62
|
+
- `/karpathy/i`
|
|
63
|
+
- `/cuatro principios/i` o `/4 principios/i`
|
|
64
|
+
- `/prevencion-sobreingenieria/`
|
|
65
|
+
- `/Skill\(["'`]prevencion-sobreingenieria["'`]\)/`
|
|
66
|
+
|
|
67
|
+
Si NO encuentra ninguna AND el archivo tiene >50 LOC AND es project-level
|
|
68
|
+
(no `~/.claude/CLAUDE.md`): emitir hallazgo WARN con mensaje:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
CLAUDE.md no menciona los cuatro principios Karpathy ni el skill
|
|
72
|
+
prevencion-sobreingenieria. Considerar agregar la sub-sección compacta
|
|
73
|
+
(ver /swl:claudemd init-project § Bloque obligatorio Karpathy).
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Esta dimensión es WARN, no ERROR — guía sin imponer. CLAUDE.md user-level
|
|
77
|
+
(`~/.claude/`) NO se evalúa contra este check.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Secciones canónicas: project-level vs user-level (init-user)
|
|
82
|
+
|
|
83
|
+
| Sección | Project-level | User-level |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| Stack | Sí — del proyecto | No (varía por proyecto) |
|
|
86
|
+
| Comandos | Sí — del proyecto | No |
|
|
87
|
+
| Code style | Sí — convenciones del equipo | Sí — preferencias personales (indent, naming favorito) |
|
|
88
|
+
| Conventions | Sí — del proyecto | No |
|
|
89
|
+
| Mi rol y stack preferido | No | Sí |
|
|
90
|
+
| Estilo de comunicación | No | Sí |
|
|
91
|
+
| Patrones que aplico siempre | No | Sí — meta-preferencias cross-project |
|
|
92
|
+
|
|
93
|
+
El template completo de user-level vive en el comando `/swl:claudemd`
|
|
94
|
+
sección `init-user`.
|
|
@@ -11,8 +11,8 @@ user-invocable: false
|
|
|
11
11
|
version: "1.0.0"
|
|
12
12
|
herramientasPermitidas: [Read, Bash, Glob]
|
|
13
13
|
exclusiones:
|
|
14
|
-
- "No cargar para ver métricas de la sesión actual en tiempo real — usar `/swl:metricas`; este skill requiere datos históricos de múltiples sesiones en `~/.claude/projects/**/*.jsonl`."
|
|
15
|
-
- "No cargar si `claude-usage` no está disponible y el objetivo es solo verificar el estado del sistema SWL — usar `/swl:salud` que no depende de la instalación de la herramienta vendor."
|
|
14
|
+
- "No cargar para ver métricas de la sesión actual en tiempo real — usar `/swl:status metricas`; este skill requiere datos históricos de múltiples sesiones en `~/.claude/projects/**/*.jsonl`."
|
|
15
|
+
- "No cargar si `claude-usage` no está disponible y el objetivo es solo verificar el estado del sistema SWL — usar `/swl:status salud` que no depende de la instalación de la herramienta vendor."
|
|
16
16
|
- "No cargar para diagnosticar por qué un agente falló — este skill muestra métricas de tokens y costos, no trazas de error de agentes; para eso usar `tracing-processor` o revisar `.planning/traces/`."
|
|
17
17
|
- "No cargar en entornos CI/headless donde no hay browser para abrir el dashboard web — usar el subcomando `stats` o `today` que salen en terminal sin servidor HTTP."
|
|
18
18
|
evolvable: true # default para skill estandar
|
|
@@ -42,7 +42,7 @@ Si Python < 3.8 o no está disponible:
|
|
|
42
42
|
```
|
|
43
43
|
⚠ swl-dashboard requiere Python 3.8+. No se encontró intérprete compatible.
|
|
44
44
|
Instala Python desde https://python.org o usa: winget install Python.Python.3
|
|
45
|
-
Alternativa: usa /swl:metricas para métricas de la sesión actual.
|
|
45
|
+
Alternativa: usa /swl:status metricas para métricas de la sesión actual.
|
|
46
46
|
```
|
|
47
47
|
Detener y mostrar el mensaje anterior.
|
|
48
48
|
|
|
@@ -103,7 +103,7 @@ Si el resultado es `MISSING` después de los cuatro intentos:
|
|
|
103
103
|
Esto copia claude-usage a ~/.claude/scripts/vendor/claude-usage/ y lo hace
|
|
104
104
|
disponible en todos los proyectos automáticamente.
|
|
105
105
|
|
|
106
|
-
Alternativa inmediata: /swl:metricas para métricas de la sesión actual.
|
|
106
|
+
Alternativa inmediata: /swl:status metricas para métricas de la sesión actual.
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
> **Nota**: guardar `CLI_PY` y el directorio padre `VENDOR_DIR=$(dirname "$CLI_PY")` para usarlos en el Paso 2.
|
|
@@ -155,7 +155,7 @@ echo "✓ Base de datos actualizada: ~/.claude/usage.db"
|
|
|
155
155
|
|
|
156
156
|
`cli.py` detecta automáticamente el primer puerto libre (8888 → 9090 → 9191 …).
|
|
157
157
|
**Nota:** 8080 está excluido intencionalmente — suele estar ocupado por Postgres, IIS u otros servicios.
|
|
158
|
-
Si el usuario especificó un puerto con `/swl:dashboard --port 9090`, pasarlo explícitamente.
|
|
158
|
+
Si el usuario especificó un puerto con `/swl:status dashboard --port 9090`, pasarlo explícitamente.
|
|
159
159
|
|
|
160
160
|
**IMPORTANTE:** No verificar disponibilidad con `curl http://localhost:8080` — ese puerto puede estar
|
|
161
161
|
ocupado por otro servicio y devolvería un falso positivo. Usar el flujo siguiente:
|
|
@@ -331,7 +331,7 @@ const w = obtenerWidget('health-score');
|
|
|
331
331
|
|
|
332
332
|
### Integración futura en la salida del comando
|
|
333
333
|
|
|
334
|
-
Al generar la salida de `/swl:dashboard`, iterar el layout default del modo detectado
|
|
334
|
+
Al generar la salida de `/swl:status dashboard`, iterar el layout default del modo detectado
|
|
335
335
|
y renderizar cada widget con su categoría como sección:
|
|
336
336
|
|
|
337
337
|
```javascript
|
|
@@ -350,15 +350,15 @@ comando. El catálogo solo define la estructura — no accede a fuentes de datos
|
|
|
350
350
|
| Componente SWL | Scope | Complemento |
|
|
351
351
|
|---------------|-------|-------------|
|
|
352
352
|
| `tracking-costos.js` (hook) | Sesión actual, tiempo real | swl-dashboard añade histórico multi-sesión |
|
|
353
|
-
| `/swl:metricas` (comando) | Sesión actual | swl-dashboard añade visualización gráfica |
|
|
353
|
+
| `/swl:status metricas` (comando) | Sesión actual | swl-dashboard añade visualización gráfica |
|
|
354
354
|
| `.planning/METRICAS.md` | Persistencia por proyecto | swl-dashboard agrega consulta SQL cross-project |
|
|
355
355
|
| `resumen-sesion.js` (hook) | Resumen inline al Stop | swl-dashboard añade análisis post-hoc detallado |
|
|
356
356
|
| `guardrail-metrics.js` (lib) | Sesión actual | swl-dashboard `guardrails` muestra activaciones/bloqueos por hook |
|
|
357
357
|
|
|
358
358
|
## Cuándo NO cargar
|
|
359
359
|
|
|
360
|
-
- El usuario quiere ver métricas de la sesión activa actual — usar `/swl:metricas`; este skill procesa el historial persisitido en `~/.claude/projects/`, no el stream en tiempo real de la sesión.
|
|
361
|
-
- `claude-usage` no está instalado y el objetivo es diagnosticar la salud del sistema SWL — usar `/swl:salud`; no tiene sentido cargar este skill si la única acción posible sería indicar que hay que instalar la herramienta vendor.
|
|
360
|
+
- El usuario quiere ver métricas de la sesión activa actual — usar `/swl:status metricas`; este skill procesa el historial persisitido en `~/.claude/projects/`, no el stream en tiempo real de la sesión.
|
|
361
|
+
- `claude-usage` no está instalado y el objetivo es diagnosticar la salud del sistema SWL — usar `/swl:status salud`; no tiene sentido cargar este skill si la única acción posible sería indicar que hay que instalar la herramienta vendor.
|
|
362
362
|
- Se ejecuta en un entorno CI/headless o en un servidor remoto sin browser — los subcomandos `today` y `stats` funcionan en terminal, pero si el objetivo era el dashboard web interactivo, ese entorno no lo soporta.
|
|
363
363
|
- Se busca trazar el motivo de fallo de un agente específico — este skill visualiza consumo de tokens y costos; los detalles de error de agente están en `.planning/traces/` y se analizan con `tracing-processor`.
|
|
364
364
|
|
|
@@ -213,7 +213,7 @@ Invocar automáticamente este skill en estos momentos:
|
|
|
213
213
|
|
|
214
214
|
| Componente | Scope | Complemento |
|
|
215
215
|
|------------------|--------------------------------|--------------------------------------|
|
|
216
|
-
| `/swl:metricas` | Costo/tokens de sesión actual | revisar-impacto agrega análisis estructural |
|
|
216
|
+
| `/swl:status metricas` | Costo/tokens de sesión actual | revisar-impacto agrega análisis estructural |
|
|
217
217
|
| `calidad-pre-commit.js` | Lint + secretos pre-commit | revisar-impacto agrega risk score semántico |
|
|
218
218
|
| `auto-evolucion-swl` | Mejora de agentes | revisar-impacto prioriza por comunidades |
|
|
219
219
|
| `run-log.js` | Observabilidad de sesión | revisar-impacto agrega contexto de código |
|