@saulwade/swl-ses 1.5.2 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +32 -61
- package/README.md +20 -3
- package/agentes/datos-swl.md +1 -1
- package/agentes/frontend-angular-swl.md +7 -7
- package/agentes/frontend-css-swl.md +4 -4
- package/agentes/frontend-react-swl.md +7 -7
- package/agentes/frontend-swl.md +9 -9
- package/agentes/frontend-tailwind-swl.md +4 -4
- package/agentes/rendimiento-swl.md +2 -2
- package/bin/swl-ses.js +49 -7
- package/comandos/swl/brainstorm.md +1 -0
- package/comandos/swl/compactar.md +1 -1
- package/comandos/swl/discutir-fase.md +15 -1
- package/comandos/swl/mapear-codebase.md +1 -1
- package/comandos/swl/nemesis.md +29 -0
- package/comandos/swl/planear-fase.md +2 -2
- package/comandos/swl/verificar.md +4 -4
- package/habilidades/aprendizaje-continuo/SKILL.md +7 -1
- package/habilidades/diseno-herramientas-agente/SKILL.md +1 -0
- package/habilidades/doc-sync/SKILL.md +441 -1
- package/habilidades/doubt-driven-review/SKILL.md +177 -171
- package/habilidades/feynman-auditor-swl/SKILL.md +129 -123
- package/habilidades/infra-github-actions/SKILL.md +172 -166
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nemesis-evaluacion-json/SKILL.md +5 -0
- package/habilidades/nemesis-redistribuir/SKILL.md +5 -0
- package/habilidades/node-experto/SKILL.md +197 -3
- package/habilidades/prevencion-racionalizacion/SKILL.md +1 -0
- package/habilidades/privacy-memoria/SKILL.md +1 -0
- package/habilidades/sre-patrones/SKILL.md +1 -1
- package/habilidades/state-inconsistency-auditor-swl/SKILL.md +172 -166
- package/habilidades/tdd-workflow/SKILL.md +178 -3
- package/habilidades/verificacion-evidencia/SKILL.md +1 -0
- package/habilidades/web-fetcher-routing/SKILL.md +81 -75
- package/habilidades/workflow-claude-code/SKILL.md +2 -2
- package/hooks/extraccion-aprendizajes.js +11 -0
- package/manifiestos/modulos.json +2 -1
- package/manifiestos/skills-lock.json +1142 -1114
- package/package.json +7 -4
- package/plugin.json +4 -2
- package/reglas/auditorias-documentales-estructurales.md +205 -0
- package/schemas/agent-frontmatter.schema.json +1 -1
- package/scripts/desinstalar.js +105 -24
- package/scripts/generar-inventario.js +450 -420
- package/scripts/instalador.js +55 -4
- package/scripts/lib/parsear-opciones.js +3 -0
- package/scripts/lib/ui.js +148 -22
- package/scripts/tui/componentes/selector-multi.js +189 -0
- package/scripts/tui/componentes/selector-unico.js +158 -0
- package/scripts/tui/ejecutores.js +375 -0
- package/scripts/tui/index.js +162 -0
- package/scripts/tui/lib/colores.js +129 -0
- package/scripts/tui/lib/render.js +264 -0
- package/scripts/tui/lib/teclas.js +113 -0
- package/scripts/tui/pantallas/inspect.js +173 -0
- package/scripts/tui/pantallas/install-wizard.js +334 -0
- package/scripts/tui/pantallas/menu-principal.js +52 -0
- package/scripts/tui/pantallas/progreso.js +274 -0
- package/scripts/tui/pantallas/resumen.js +132 -0
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -0
- package/scripts/tui/pantallas/update-wizard.js +232 -0
- package/scripts/tui/pantallas/welcome.js +187 -0
- package/scripts/verificar-docs-vs-codigo.js +654 -0
- package/scripts/verificar-evolucion.js +19 -3
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: doc-sync
|
|
3
3
|
description: Sincronización de documentación con el estado actual del código. Detecta documentos desactualizados (README, ADRs, docstrings, comentarios de API), genera un changelog estructurado de los cambios relevantes, y mantiene los Architecture Decision Records (ADRs) actualizados con las decisiones tomadas durante el desarrollo.
|
|
4
|
-
version: "1.
|
|
4
|
+
version: "1.3.0"
|
|
5
|
+
evolved: true
|
|
6
|
+
evolved-from: "1.2.0"
|
|
7
|
+
evolved-at: "2026-05-16"
|
|
8
|
+
evolved-by: "aprender"
|
|
9
|
+
evolved-note: "v1.3.0 (MINOR): sección nueva 'Protocolo proactivo: qué hacer al modificar componentes SWL' con sub-secciones por tipo (agente, skill, comando, hook, regla, variable de entorno, ADR, dependencia opt-in). Cierra el gap entre detección post-hoc (verificadores) y guía prescriptiva proactiva. Origen: feedback usuario 2026-05-16 — la información del flujo operativo estaba dispersa en 5 archivos (registro-componentes-nuevos.md + CLAUDE.md § Mapa + verificadores + reglas) sin un punto único invocable."
|
|
5
10
|
herramientasPermitidas: [Read, Bash, Glob, Grep]
|
|
6
11
|
exclusiones:
|
|
7
12
|
- "No cargar para crear documentación nueva desde cero — este skill sincroniza documentación existente con el código actual; para crear documentación de feature nueva usar `documentador-swl` o escribir el README/ADR directamente."
|
|
@@ -260,6 +265,441 @@ NUNCA eliminar ADRs — son historia del proyecto.
|
|
|
260
265
|
|
|
261
266
|
---
|
|
262
267
|
|
|
268
|
+
## Verificador automatizado doc-vs-código
|
|
269
|
+
|
|
270
|
+
Para proyectos con documentación extensa (>3 archivos `.md` activos) y
|
|
271
|
+
componentes inventariables (skills, comandos, agentes, flags, schemas), un
|
|
272
|
+
verificador automatizado **detecta drift sistemático** entre los archivos
|
|
273
|
+
de doc y el estado real del código. Es complementario al checklist manual.
|
|
274
|
+
|
|
275
|
+
### Patrón de los 5 checks portables
|
|
276
|
+
|
|
277
|
+
| # | Check | Qué verifica | FAIL vs WARN |
|
|
278
|
+
|---|---|---|---|
|
|
279
|
+
| **1** | **Contadores** | Cifras en `INVENTARIO.md` / `README.md` (60 agentes, 162 skills, etc.) vs conteo real en disco | FAIL si difiere |
|
|
280
|
+
| **2** | **Comandos / componentes en disco vs docs** | Cada componente con archivo en `comandos/`, `agentes/`, etc. tiene mención en `COMANDOS.md` y `MANUAL_USO.md` | WARN (deuda preexistente OK) |
|
|
281
|
+
| **3** | **Flags del parser vs `--help` y docs** | Booleanas declaradas en `scripts/lib/parsear-opciones.js` (o equivalente) aparecen en `bin --help` y tabla de opciones | FAIL para flags críticos |
|
|
282
|
+
| **4** | **Versión `package.json` vs encabezados** | Primera línea de cada `.md` canónico (`README`, `CLAUDE.md`, etc.) menciona la versión actual | FAIL |
|
|
283
|
+
| **5** | **Componentes UI vs docs** | Cada archivo en `scripts/tui/pantallas/` (o equivalente UI) tiene al menos una mención en `MANUAL_USO.md` | FAIL |
|
|
284
|
+
|
|
285
|
+
### Estructura recomendada del script
|
|
286
|
+
|
|
287
|
+
```javascript
|
|
288
|
+
// scripts/verificar-docs-vs-codigo.js — esqueleto portable
|
|
289
|
+
const fs = require('fs');
|
|
290
|
+
const path = require('path');
|
|
291
|
+
const RAIZ = path.resolve(__dirname, '..');
|
|
292
|
+
|
|
293
|
+
function leerArchivo(rel) { /* ... */ }
|
|
294
|
+
const resultados = [];
|
|
295
|
+
function reportar(check, etiqueta, ok, detalle) { /* OK / FAIL / WARN */ }
|
|
296
|
+
|
|
297
|
+
// Cada check es una función pura que llama reportar() N veces
|
|
298
|
+
function check1Contadores() { /* INVENTARIO.md tabla vs disco */ }
|
|
299
|
+
function check2Comandos() { /* archivos en disco vs docs (WARN para deuda) */ }
|
|
300
|
+
function check3Flags() { /* parser BOOLEANAS vs --help + docs */ }
|
|
301
|
+
function check4Versiones() { /* package.json vs encabezados de .md */ }
|
|
302
|
+
function check5UIComponents() { /* archivos UI vs MANUAL_USO.md */ }
|
|
303
|
+
|
|
304
|
+
function main() {
|
|
305
|
+
check1Contadores(); check2Comandos(); check3Flags();
|
|
306
|
+
check4Versiones(); check5UIComponents();
|
|
307
|
+
const fails = resultados.filter(r => !r.ok).length;
|
|
308
|
+
process.exit(fails === 0 ? 0 : 1);
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Reglas operativas
|
|
313
|
+
|
|
314
|
+
- **WARN no falla CI** (deuda preexistente): use WARN para checks que
|
|
315
|
+
detectan gaps de adopción incremental (ej: comandos viejos sin
|
|
316
|
+
documentar). Si fuera FAIL, bloquearía el merge cuando lo correcto es
|
|
317
|
+
documentar incrementalmente.
|
|
318
|
+
- **FAIL bloquea CI** (drift de release): use FAIL solo para checks que
|
|
319
|
+
invalidarían el release (contadores incorrectos, versión incorrecta,
|
|
320
|
+
flags críticos sin documentar).
|
|
321
|
+
- **Soporta flags `--check N` y `--quiet`**: permite ejecutar un check
|
|
322
|
+
específico durante triage y suprimir output OK durante CI.
|
|
323
|
+
- **Integrado en `npm run test:all`**: el verificador corre tras los
|
|
324
|
+
validadores estructurales (`validar.js`, `validar-manifest.js`) para
|
|
325
|
+
que un PR con drift de docs falle CI antes del merge.
|
|
326
|
+
- **Exit codes 0/1/2**: 0 todo OK; 1 ≥1 FAIL; 2 error de invocación
|
|
327
|
+
(archivo no existe, regex inválido).
|
|
328
|
+
|
|
329
|
+
### Origen del patrón
|
|
330
|
+
|
|
331
|
+
Aplicado en swl-ses v1.6.0 (`scripts/verificar-docs-vs-codigo.js`,
|
|
332
|
+
425 LOC). Detectó: 5 comandos `/swl:*` sin documentar (WARN, resuelto
|
|
333
|
+
incrementalmente), 0 drift de contadores, 0 drift de versiones, 1
|
|
334
|
+
pantalla TUI sin mención (resuelto en mismo commit). Tras integrar a
|
|
335
|
+
`npm run test:all`, drift futuro será bloqueado automáticamente.
|
|
336
|
+
|
|
337
|
+
**Portabilidad**: el patrón aplica a cualquier proyecto con `INVENTARIO`
|
|
338
|
+
+ docs + componentes inventariables. Adaptar las rutas y los regex de
|
|
339
|
+
extracción al stack del proyecto destino.
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Auditorías estructurales vs cosméticas
|
|
344
|
+
|
|
345
|
+
Un verificador automático que reporta "N/N checks OK" **no es prueba** de
|
|
346
|
+
que la documentación esté sincronizada — solo prueba que pasaron los
|
|
347
|
+
checks que ese verificador concretamente mide. La diferencia entre
|
|
348
|
+
**auditoría cosmética** y **auditoría estructural** es la dimensión más
|
|
349
|
+
importante de este skill.
|
|
350
|
+
|
|
351
|
+
### Diferencia operativa
|
|
352
|
+
|
|
353
|
+
| Dimensión | Auditoría cosmética | Auditoría estructural |
|
|
354
|
+
|---|---|---|
|
|
355
|
+
| **Métrica** | "¿aparece la palabra X?" | "¿está documentada con profundidad ≥ N?" |
|
|
356
|
+
| **Cobertura** | Muestra (whitelist hardcodeada) | Universo (catálogo completo cross-archivo) |
|
|
357
|
+
| **WARN treatment** | "WARN no falla, paso a OK" | "WARN es deuda visible que cuento separado" |
|
|
358
|
+
| **Reporte al usuario** | "N/N checks OK ✓" | "N/N gate formal OK + sondeo manual: X gaps detectados" |
|
|
359
|
+
| **Skip treatment** | "✓ skip" sumado al conteo positivo | "skip" reportado aparte, no como pass |
|
|
360
|
+
|
|
361
|
+
### Anti-patrones específicos a detectar
|
|
362
|
+
|
|
363
|
+
- **Verificador que cuenta "1 mención" como "documentado"**: bug grave.
|
|
364
|
+
Un comando complejo con flags y dependencias externas necesita al
|
|
365
|
+
menos 4 menciones (TOC + encabezado + uso + ejemplo). El gate debe
|
|
366
|
+
exigir profundidad, no solo presencia.
|
|
367
|
+
- **Whitelist hardcodeada en check de flags**: "estas 7 flags
|
|
368
|
+
críticas" deja fuera el universo real (todas las booleanas del
|
|
369
|
+
parser). Cruzar contra `BOOLEANAS` completo o explicitar las
|
|
370
|
+
excepciones.
|
|
371
|
+
- **WARN convertido en OK**: agregar `WARN no falla el verificador`
|
|
372
|
+
al detalle pero seguir contando como OK en el agregado. Usuario
|
|
373
|
+
ve "verde" y la deuda se acumula.
|
|
374
|
+
- **Reportar verde sin sondeo manual**: aceptar el output del
|
|
375
|
+
verificador como prueba sin tomar 2-3 ítems del dominio y
|
|
376
|
+
verificar profundidad real.
|
|
377
|
+
- **No detectar drift de catálogo**: variables de entorno, ADRs,
|
|
378
|
+
skills nuevos — todos pueden aparecer en código sin entrar al
|
|
379
|
+
catálogo documental si no hay gate de cobertura completa.
|
|
380
|
+
|
|
381
|
+
### Gates de profundidad obligatorios (referencia)
|
|
382
|
+
|
|
383
|
+
Para sistemas tipo SWL con catálogo formal de componentes:
|
|
384
|
+
|
|
385
|
+
| Dimensión | Métrica | Gate FAIL si... |
|
|
386
|
+
|---|---|---|
|
|
387
|
+
| Comandos `/swl:*` | Menciones en MANUAL_USO | <4 menciones para comando no trivial |
|
|
388
|
+
| Variables de entorno `SWL_*` | Cobertura en `docs/variables-entorno.md` | Cualquier variable en código sin entrada en catálogo |
|
|
389
|
+
| ADRs | Referencias en MANUAL_USO + CHANGELOG | ADR que cambia comportamiento sin referencia |
|
|
390
|
+
| Integraciones opt-in | Estructura mínima de 8 secciones | Cualquier dependencia documentada solo con instalación |
|
|
391
|
+
|
|
392
|
+
### Patrón de reporte al usuario (correcto)
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
Verificador docs-vs-código: 10/10 OK formal.
|
|
396
|
+
- Check #1 contadores: 5/5 OK
|
|
397
|
+
- Check #2 comandos: 44/44 con profundidad >= 4 (o triviales)
|
|
398
|
+
- Check #3 flags: 7/7 críticas
|
|
399
|
+
- Check #4 versiones: 6/6
|
|
400
|
+
- Check #5 pantallas TUI: 8/8
|
|
401
|
+
- Check #6 variables SWL_*: 55/58 (3 huérfanas restantes — TIPO B documentar)
|
|
402
|
+
|
|
403
|
+
Sondeo manual estructural:
|
|
404
|
+
- ADRs no referenciados: 0/22 (todos vinculados en MANUAL_USO)
|
|
405
|
+
- Integraciones opt-in con estructura completa: 7/7
|
|
406
|
+
- Comandos infra-documentados detectados por gate: 0 (cerrados en mismo commit)
|
|
407
|
+
|
|
408
|
+
Conclusión: docs sincronizadas a profundidad estructural.
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Patrón de reporte al usuario (INCORRECTO — evitar)
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
Verificador: 9/9 OK. ✓ Docs alineadas con código.
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Sin desglose de qué mide cada check, sin sondeo manual, sin enumerar
|
|
418
|
+
qué NO mide el verificador. Es lo que el usuario detectó como
|
|
419
|
+
"auditoría minimizada" en sesión 2026-05-16.
|
|
420
|
+
|
|
421
|
+
### Cómo aplicar este patrón a otros proyectos
|
|
422
|
+
|
|
423
|
+
El skeleton `scripts/verificar-docs-vs-codigo.js` de swl-ses (~425 LOC
|
|
424
|
+
con 6 checks) es portable a cualquier proyecto Node.js con manifiestos.
|
|
425
|
+
Adaptaciones típicas por proyecto:
|
|
426
|
+
|
|
427
|
+
1. **Check de comandos** → equivalente al de "endpoints documentados",
|
|
428
|
+
"componentes UI documentados", "hooks documentados".
|
|
429
|
+
2. **Check de variables de entorno** → universal, mismo patrón.
|
|
430
|
+
3. **Check de ADRs/Decisiones** → si el proyecto trackea decisiones.
|
|
431
|
+
4. **Gates de profundidad** → ajustar `PROFUNDIDAD_MINIMA` según el
|
|
432
|
+
dominio (4 para CLIs, 6-8 para endpoints HTTP con OpenAPI).
|
|
433
|
+
|
|
434
|
+
Origen del patrón: regla local `reglas/auditorias-documentales-estructurales.md`
|
|
435
|
+
en swl-ses + ADR-0023.
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Protocolo proactivo — qué hacer al modificar componentes SWL
|
|
440
|
+
|
|
441
|
+
Esta sección es **prescriptiva**: dice qué archivos tocar, qué comandos
|
|
442
|
+
ejecutar y qué verificar **cuando agregas o modificas** un componente
|
|
443
|
+
del sistema SWL. Cierra el gap entre detección post-hoc (verificadores)
|
|
444
|
+
y guía proactiva (no esperar a que el gate falle).
|
|
445
|
+
|
|
446
|
+
**Cuándo cargar este skill como protocolo**: el agente debe invocar
|
|
447
|
+
`Skill("doc-sync")` ANTES de hacer commits cuando ha modificado
|
|
448
|
+
componentes estructurales del sistema. CLAUDE.md § Mapa de propagación
|
|
449
|
+
de cambios tiene la tabla rápida y apunta aquí para el detalle.
|
|
450
|
+
|
|
451
|
+
### Principios generales que aplican a TODOS los tipos
|
|
452
|
+
|
|
453
|
+
1. **Registro en mismo commit**: cualquier componente nuevo/modificado se registra en sus manifiestos en el MISMO commit. Nunca diferir al siguiente. Origen: `reglas/registro-componentes-nuevos.md`.
|
|
454
|
+
2. **Profundidad ≥4 menciones**: para componentes con interfaz al usuario (comandos `/swl:*`, integraciones opt-in). Origen: `reglas/auditorias-documentales-estructurales.md`.
|
|
455
|
+
3. **Catálogo formal único**: variables de entorno en `docs/variables-entorno.md`, ADRs en `.planning/adrs/README.md`, componentes en `INVENTARIO.md`. NO duplicar entre archivos.
|
|
456
|
+
4. **Regenerar inventario al final**: `node scripts/generar-inventario.js` actualiza `INVENTARIO.md` y `SALUD.md`. Hacerlo antes del commit final.
|
|
457
|
+
5. **Gate antes de commit**: `npm run test:all` (incluye `verificar-docs-vs-codigo.js`). Si falla, NO commitear hasta corregir.
|
|
458
|
+
|
|
459
|
+
### Tipo 1 — Agente nuevo o modificado (`agentes/*.md`)
|
|
460
|
+
|
|
461
|
+
**Crear nuevo `agentes/X-swl.md`:**
|
|
462
|
+
|
|
463
|
+
| Archivo | Acción | Por qué |
|
|
464
|
+
|---|---|---|
|
|
465
|
+
| `agentes/X-swl.md` | Crear con frontmatter completo (`name`, `description`, `version`, `nivelRiesgo`, `tools`, `exclusiones`, `model` si aplica) | Componente principal |
|
|
466
|
+
| `plugin.json` | Agregar a array `agents` | Plugin descriptor para runtimes Claude Code |
|
|
467
|
+
| `manifiestos/modulos.json` | Agregar al módulo del dominio (backend/frontend/calidad/etc.) | Instalador propaga al destino |
|
|
468
|
+
| `AGENTS.md` | Agregar entrada al catálogo con capacidades | Documentación humana del catálogo |
|
|
469
|
+
| `INVENTARIO.md` | Regenerar con `node scripts/generar-inventario.js` | Contador oficial |
|
|
470
|
+
| `SALUD.md` | Regenerar (mismo script) | Health check |
|
|
471
|
+
|
|
472
|
+
**Modificar agente existente:**
|
|
473
|
+
|
|
474
|
+
- Si cambias `model`: verificar que la asignación respeta la tabla de Model-Tier del CLAUDE.md (crítico=Opus, estándar=Sonnet, ligero=Haiku).
|
|
475
|
+
- Si cambias `tools`: si declaras `skillsInvocables: [...]` Y usas `Skill(...)` en el cuerpo, debe incluir `Skill` en `tools:` (regla CLAUDE.md).
|
|
476
|
+
- Si agregas/quitas fragmentos: declarar `fragmentos: [_nombre]` en frontmatter (regla `fragmentos-compartidos.md`).
|
|
477
|
+
|
|
478
|
+
**Comando a ejecutar al final**: `npm run test:all`. El gate valida frontmatter, manifiestos y permisos.
|
|
479
|
+
|
|
480
|
+
### Tipo 2 — Skill nuevo o modificado (`habilidades/X/SKILL.md`)
|
|
481
|
+
|
|
482
|
+
**Crear nuevo `habilidades/X/SKILL.md`:**
|
|
483
|
+
|
|
484
|
+
| Archivo | Acción | Por qué |
|
|
485
|
+
|---|---|---|
|
|
486
|
+
| `habilidades/X/SKILL.md` | Crear con frontmatter (`name`, `description`, `version`, `evolved: false`, `herramientasPermitidas`, `exclusiones`) y prefijo de dominio en el nombre (backend-/frontend-/mobile-/datos-/etc.) | Componente principal |
|
|
487
|
+
| `plugin.json` | Agregar a array `skills` | Plugin descriptor |
|
|
488
|
+
| `manifiestos/modulos.json` | Agregar al módulo del dominio | Instalador |
|
|
489
|
+
| `manifiestos/skills-lock.json` | (auto-generado al ejecutar inventario) | Lock de versión por skill |
|
|
490
|
+
| `INVENTARIO.md` + `SALUD.md` | Regenerar | Contador oficial |
|
|
491
|
+
| `CLAUDE.md` § Sistema de habilidades | Solo si aplica al dominio principal | Discoverability |
|
|
492
|
+
|
|
493
|
+
**Modificar skill existente con cambio de contenido:**
|
|
494
|
+
|
|
495
|
+
Aplica el bump SemVer y los metadatos `evolved`:
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
# 1. Detectar tipo de cambio
|
|
499
|
+
# - Gotcha nuevo, regla nueva, fix redacción: PATCH (X.Y.Z → X.Y.Z+1)
|
|
500
|
+
# - Sección nueva, alcance ampliado: MINOR (X.Y.0 → X.Y+1.0)
|
|
501
|
+
# - Redefinición incompatible: MAJOR (X.0.0 → X+1.0.0)
|
|
502
|
+
|
|
503
|
+
# 2. Editar frontmatter del skill:
|
|
504
|
+
# version: "1.X.Y" (bump según tipo)
|
|
505
|
+
# evolved: true
|
|
506
|
+
# evolved-from: "<versión-anterior>"
|
|
507
|
+
# evolved-at: "YYYY-MM-DD"
|
|
508
|
+
# evolved-by: "aprender" (o "evolucionar", "manual")
|
|
509
|
+
# evolved-note: "<descripción breve>"
|
|
510
|
+
|
|
511
|
+
# 3. Verificar antes de commit
|
|
512
|
+
node bin/swl-ses.js verify-evolution --changed --since=HEAD
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Comando a ejecutar al final**: `npm run test:all` + `npx swl-ses verify-evolution --changed --since=HEAD`. La verificación de evolución es gate obligatorio (regla `gobernanza.md` G8).
|
|
516
|
+
|
|
517
|
+
### Tipo 3 — Comando `/swl:*` nuevo o modificado (`comandos/swl/X.md`)
|
|
518
|
+
|
|
519
|
+
**Crear nuevo `comandos/swl/X.md`:**
|
|
520
|
+
|
|
521
|
+
| Archivo | Acción | Por qué |
|
|
522
|
+
|---|---|---|
|
|
523
|
+
| `comandos/swl/X.md` | Crear archivo del slash command con frontmatter y cuerpo de instrucciones | Componente principal |
|
|
524
|
+
| `manifiestos/modulos.json` | Agregar a módulo del dominio | Instalador |
|
|
525
|
+
| `COMANDOS.md` | Agregar entrada con flags, descripción, ejemplo | Catálogo de referencia |
|
|
526
|
+
| `CLAUDE.md` § tabla de comandos `/swl:*` | Agregar línea con propósito | Discovery rápida |
|
|
527
|
+
| `MANUAL_USO.md` | Agregar sección dedicada con **mínimo 4 menciones del comando** (TOC + encabezado + Uso + ejemplo) | **Gate Check #2 endurecido** |
|
|
528
|
+
| `INVENTARIO.md` | Regenerar | Contador oficial |
|
|
529
|
+
|
|
530
|
+
**Estructura mínima obligatoria en MANUAL_USO.md** (gate de profundidad):
|
|
531
|
+
|
|
532
|
+
```markdown
|
|
533
|
+
### `/swl:nombre-comando`
|
|
534
|
+
|
|
535
|
+
**Uso:** `/swl:nombre-comando [flags y argumentos]`
|
|
536
|
+
|
|
537
|
+
**¿Qué hace?**
|
|
538
|
+
Descripción funcional en 2-3 oraciones.
|
|
539
|
+
|
|
540
|
+
**Cuándo usarlo:**
|
|
541
|
+
- Caso de uso 1
|
|
542
|
+
- Caso de uso 2
|
|
543
|
+
|
|
544
|
+
**Ejemplos concretos**:
|
|
545
|
+
\`\`\`bash
|
|
546
|
+
/swl:nombre-comando # caso default
|
|
547
|
+
/swl:nombre-comando --flag valor # con argumentos
|
|
548
|
+
\`\`\`
|
|
549
|
+
|
|
550
|
+
**Troubleshooting** (si tiene dependencias externas):
|
|
551
|
+
Problemas frecuentes y soluciones.
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
Los comandos triviales (`ayuda`, `salud`, `modelo`, `contexto`, `dashboard`, `sesiones`, `instintos`, `metricas`, `mcp-status`) están exentos del gate ≥4 menciones (lista hardcodeada en `scripts/verificar-docs-vs-codigo.js`).
|
|
555
|
+
|
|
556
|
+
**Comando a ejecutar al final**: `npm run test:all`.
|
|
557
|
+
|
|
558
|
+
### Tipo 4 — Hook nuevo o modificado (`hooks/X.js`)
|
|
559
|
+
|
|
560
|
+
**Crear nuevo `hooks/X.js`:**
|
|
561
|
+
|
|
562
|
+
| Archivo | Acción | Por qué |
|
|
563
|
+
|---|---|---|
|
|
564
|
+
| `hooks/X.js` | Crear con zero-deps (importar solo de `hooks/lib/`) y exit code 0 (regla seguridad-agentes) | Componente principal |
|
|
565
|
+
| `plugin.json` | Agregar a array `hooks` (si aplica) | Plugin descriptor |
|
|
566
|
+
| `.claude/settings.json` | Agregar event + matcher (`PreToolUse`, `PostToolUse`, `Stop`, etc.) | Settings local |
|
|
567
|
+
| `manifiestos/hooks-config.json` | Agregar `event` + `matcher` + `blocking` | Instalador propaga la config |
|
|
568
|
+
| `manifiestos/modulos.json` | Agregar ruta del archivo al módulo | Instalador copia el archivo |
|
|
569
|
+
| `INVENTARIO.md` + `SALUD.md` | Regenerar | Contador oficial |
|
|
570
|
+
|
|
571
|
+
**Punto crítico — AMBOS manifiestos son obligatorios**: si solo agregas a `.claude/settings.json` pero no a `manifiestos/hooks-config.json`, el hook NO se propaga al destino del instalador. Y viceversa.
|
|
572
|
+
|
|
573
|
+
**Si el hook usa variable de entorno opt-in `SWL_*`**:
|
|
574
|
+
- Documentarla en `docs/variables-entorno.md` en sección apropiada (Auditoría / Notificaciones / Drift / Daemon / etc.) en el MISMO commit.
|
|
575
|
+
- Gate Check #6 falla si la variable existe en código pero no en catálogo.
|
|
576
|
+
|
|
577
|
+
**Comando a ejecutar al final**: `npm run test:manifest` (valida ambos manifiestos) + `npm run test:all`.
|
|
578
|
+
|
|
579
|
+
### Tipo 5 — Regla nueva o modificada (`reglas/X.md`)
|
|
580
|
+
|
|
581
|
+
**Crear nueva `reglas/X.md`:**
|
|
582
|
+
|
|
583
|
+
| Archivo | Acción | Por qué |
|
|
584
|
+
|---|---|---|
|
|
585
|
+
| `reglas/X.md` | Crear archivo con título, principio, cómo aplicar, anti-patrones, origen | Componente principal |
|
|
586
|
+
| `CLAUDE.md` § tabla de reglas | Agregar línea con matcher | Discovery + carga automática |
|
|
587
|
+
| `manifiestos/modulos.json` | Agregar al módulo correspondiente | Instalador |
|
|
588
|
+
| `INVENTARIO.md` + `SALUD.md` | Regenerar | Contador oficial |
|
|
589
|
+
|
|
590
|
+
**Si la regla es transversal a múltiples proyectos del usuario**:
|
|
591
|
+
- Considerar promoverla a `~/.claude/rules/X.md` (regla global) en lugar de local del proyecto.
|
|
592
|
+
- Las globales se cargan automáticamente en TODOS los proyectos del usuario.
|
|
593
|
+
|
|
594
|
+
**Regla obligatoria nueva**: si declaras la regla como obligatoria para todos los agentes, es un cambio **MAJOR** del sistema (regla `gobernanza.md`). Requiere ADR + período de revisión.
|
|
595
|
+
|
|
596
|
+
**Comando a ejecutar al final**: `npm run test:all`.
|
|
597
|
+
|
|
598
|
+
### Tipo 6 — Variable de entorno opt-in `SWL_*` nueva o modificada
|
|
599
|
+
|
|
600
|
+
**Agregar variable nueva `SWL_NUEVA_VAR` en hook o script:**
|
|
601
|
+
|
|
602
|
+
| Archivo | Acción | Por qué |
|
|
603
|
+
|---|---|---|
|
|
604
|
+
| `hooks/X.js` o `scripts/Y.js` | Código que usa `process.env.SWL_NUEVA_VAR` con patrón `if (!process.env.X) return` | Componente principal |
|
|
605
|
+
| `docs/variables-entorno.md` | Agregar entrada en sección apropiada con: nombre, default, archivo que la consume, qué activa, cómo desactivar | **Catálogo formal único — gate Check #6** |
|
|
606
|
+
| `MANUAL_USO.md` | (opcional) Mención si es relevante al flujo del usuario final | Discovery |
|
|
607
|
+
|
|
608
|
+
**Sección apropiada en `docs/variables-entorno.md`** según el dominio:
|
|
609
|
+
- Auditoría y observabilidad
|
|
610
|
+
- Mission Control externo
|
|
611
|
+
- Calidad de CLAUDE.md
|
|
612
|
+
- Drift y auto-evolución
|
|
613
|
+
- Clasificador y monitor de contexto
|
|
614
|
+
- Webhook entrante HTTP local
|
|
615
|
+
- Protección de rutas
|
|
616
|
+
- Daemon SWL
|
|
617
|
+
- MCP server
|
|
618
|
+
- Notificaciones y output
|
|
619
|
+
- Captura de feedback y perfil de usuario
|
|
620
|
+
- Update check y release
|
|
621
|
+
- Hooks: control de wrapper y paths
|
|
622
|
+
- Telemetría y registro de turnos
|
|
623
|
+
- Workflows y herramientas inferidas
|
|
624
|
+
- Filtros de extracción
|
|
625
|
+
- Debug y desarrollo del propio SWL
|
|
626
|
+
|
|
627
|
+
Si tu variable no encaja en ninguna, **NO** crees sección nueva por una sola variable — agregar a la más cercana con nota o consultar al maintainer.
|
|
628
|
+
|
|
629
|
+
**Comando a ejecutar al final**: `node scripts/verificar-docs-vs-codigo.js --check 6`. Falla si la variable está en código pero no en el catálogo.
|
|
630
|
+
|
|
631
|
+
### Tipo 7 — ADR nuevo (`.planning/adrs/NNNN-titulo.md`)
|
|
632
|
+
|
|
633
|
+
**Crear nuevo ADR:**
|
|
634
|
+
|
|
635
|
+
| Archivo | Acción | Por qué |
|
|
636
|
+
|---|---|---|
|
|
637
|
+
| `.planning/adrs/NNNN-titulo.md` | Crear con frontmatter (fecha, estado, decisores, relacionado) y secciones obligatorias (Contexto, Decisión, Por qué, Alternativas, Consecuencias, Origen) | Componente principal |
|
|
638
|
+
| `.planning/adrs/README.md` | Agregar fila a la tabla "Estado de cada ADR" con número, título corto, estado, fecha | **Índice obligatorio (regla `arquitectura.md`)** |
|
|
639
|
+
| `MANUAL_USO.md` | Referenciar el ADR en la sección del feature que materializa, **si cambia comportamiento observable** | Discovery del usuario |
|
|
640
|
+
| `CHANGELOG.md` | Mencionar en la versión que lo introduce | Trazabilidad |
|
|
641
|
+
|
|
642
|
+
**Estado del ADR**:
|
|
643
|
+
- `Propuesto`: en discusión, NO implementado. Debe tener fecha de reevaluación 6-12 meses y criterios de disparo.
|
|
644
|
+
- `Aceptado`: decisión final, implementación en curso o completada.
|
|
645
|
+
- `Deprecado`: sigue vigente pero se anticipa reemplazo.
|
|
646
|
+
- `Reemplazado por ADR NNN`: superado por otro ADR.
|
|
647
|
+
- `Descartado`: se evaluó y se decidió NO adoptar.
|
|
648
|
+
|
|
649
|
+
**Numeración estricta**: el ADR nuevo recibe el siguiente número secuencial. NUNCA reutilizar un número, ni siquiera de ADRs descartados.
|
|
650
|
+
|
|
651
|
+
**Comando a ejecutar al final**: ninguno automatizado. La validez del ADR es revisión humana.
|
|
652
|
+
|
|
653
|
+
### Tipo 8 — Dependencia externa opt-in nueva
|
|
654
|
+
|
|
655
|
+
**Documentar nueva dependencia opt-in (markitdown, agent-browser, code-review-graph, etc.):**
|
|
656
|
+
|
|
657
|
+
`MANUAL_USO.md § Dependencias externas — referencia detallada` con **estructura mínima de 8 secciones** obligatorias (regla `auditorias-documentales-estructurales.md`):
|
|
658
|
+
|
|
659
|
+
1. **Marcador obligatorio**: "NO es dependencia técnica de swl-ses" (regla CLAUDE.md sobre dependencias educativas opt-in).
|
|
660
|
+
2. **Qué es** y **por qué existe la integración** (no solo instalación).
|
|
661
|
+
3. **Beneficio cuantificado** vs alternativas (tokens, espacio, tiempo — números, no adjetivos).
|
|
662
|
+
4. **Cuándo vale la pena** vs **cuándo NO instalarlo**.
|
|
663
|
+
5. **Cómo lo usa el sistema** internamente (qué agente/skill/comando lo invoca — tabla).
|
|
664
|
+
6. **Comportamiento si NO está instalado** (debe degradar funcionalmente sin fallar — regla `arreglar-al-detectar`).
|
|
665
|
+
7. **Limitaciones conocidas**.
|
|
666
|
+
8. **Origen** (ADR, sesión, paper, repo).
|
|
667
|
+
|
|
668
|
+
Si la dependencia se distribuye via `npx`, **validar costo de tarball** con `npm view <paquete> dist.unpackedSize` antes de aceptar (regla global `analisis-previo-tareas-grandes.md § Validar costo real de deps`).
|
|
669
|
+
|
|
670
|
+
**Comando a ejecutar al final**: `npm run test:all` (Check #2 valida mención mínima).
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
### Checklist único antes de cualquier commit estructural
|
|
675
|
+
|
|
676
|
+
Ejecuta en orden:
|
|
677
|
+
|
|
678
|
+
```bash
|
|
679
|
+
# 1. Regenerar inventario (single source of truth de contadores)
|
|
680
|
+
node scripts/generar-inventario.js
|
|
681
|
+
|
|
682
|
+
# 2. Verificar manifiestos coherentes
|
|
683
|
+
npm run test:manifest
|
|
684
|
+
|
|
685
|
+
# 3. Si modificaste skill o agente: verificar evolución
|
|
686
|
+
npx swl-ses verify-evolution --changed --since=HEAD
|
|
687
|
+
|
|
688
|
+
# 4. Verificar docs-vs-código (10 checks)
|
|
689
|
+
node scripts/verificar-docs-vs-codigo.js
|
|
690
|
+
|
|
691
|
+
# 5. Suite completa
|
|
692
|
+
npm run test:all
|
|
693
|
+
|
|
694
|
+
# 6. (solo antes de release) Gate pre-publish
|
|
695
|
+
node scripts/verificar-release.js
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
Si CUALQUIER paso falla, **no commitees**. Corregir primero. La regla
|
|
699
|
+
`arreglar-al-detectar.md` exige resolver en mismo turno, no diferir.
|
|
700
|
+
|
|
701
|
+
---
|
|
702
|
+
|
|
263
703
|
## Regla de cierre
|
|
264
704
|
|
|
265
705
|
Ninguna fase se marca como "completada" si la documentación contradice
|