@saulwade/swl-ses 2.5.2 → 2.6.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 +194 -192
- package/README.md +600 -600
- package/agentes/auto-evolucion-swl.md +27 -3
- package/bin/swl-ses.js +32 -6
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -823
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +51 -51
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -505
- package/comandos/swl/evolucion-continua.md +73 -0
- package/comandos/swl/evolucionar.md +267 -254
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +175 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +343 -343
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -276
- package/habilidades/autoresearch/SKILL.md +3 -2
- package/habilidades/benchmark-memoria/SKILL.md +7 -7
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
- package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
- package/habilidades/context-builder/SKILL.md +4 -0
- package/habilidades/doubt-driven-review/SKILL.md +207 -191
- package/habilidades/drift-detection/SKILL.md +6 -1
- package/habilidades/ejecutar-fase/SKILL.md +6 -6
- package/habilidades/eval-framework/SKILL.md +8 -3
- package/habilidades/harness-claude-code/SKILL.md +314 -308
- package/habilidades/infra-github-actions/SKILL.md +4 -3
- package/habilidades/instalar-sistema/SKILL.md +227 -223
- package/habilidades/memoria-busqueda/SKILL.md +31 -39
- package/habilidades/planear-fase/SKILL.md +358 -350
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
- package/habilidades/release-semver/SKILL.md +4 -2
- package/habilidades/swl-claudemd/SKILL.md +6 -7
- package/habilidades/swl-dashboard/SKILL.md +11 -43
- package/habilidades/tdd-workflow/SKILL.md +749 -744
- package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
- package/hooks/agente-lifecycle.js +2 -1
- package/hooks/aiisms-detector.js +13 -4
- package/hooks/audit-trail.js +2 -1
- package/hooks/auto-consolidacion.js +2 -1
- package/hooks/captura-acciones-post.js +2 -1
- package/hooks/captura-acciones-session.js +2 -1
- package/hooks/captura-feedback-usuario.js +3 -2
- package/hooks/claudemd-bloat-detector.js +12 -3
- package/hooks/claudemd-duplicacion-detector.js +13 -3
- package/hooks/contexto-iteracion.js +2 -1
- package/hooks/degradacion-instintos.js +2 -1
- package/hooks/extraccion-aprendizajes.js +109 -15
- package/hooks/grafo-contexto.js +2 -1
- package/hooks/guardrail-modelo.js +2 -1
- package/hooks/inbox-aviso.js +2 -1
- package/hooks/inyeccion-contexto.js +2 -1
- package/hooks/lib/agent-matcher.js +2 -1
- package/hooks/lib/agent-routing.js +2 -1
- package/hooks/lib/autonomia.js +5 -3
- package/hooks/lib/captura-acciones.js +2 -1
- package/hooks/lib/consolidation-lock.js +21 -10
- package/hooks/lib/etapa-auto-evolucion.js +10 -4
- package/hooks/lib/etapa-metricas.js +2 -1
- package/hooks/lib/etapa-perfil-usuario.js +20 -4
- package/hooks/lib/evolution-tracker.js +2 -1
- package/hooks/lib/gateway-notify.js +193 -179
- package/hooks/lib/loop-telemetry.js +5 -4
- package/hooks/lib/mcp-health.js +2 -1
- package/hooks/lib/memory-search.js +4 -0
- package/hooks/lib/merkle-audit.js +58 -6
- package/hooks/lib/nudge-tracker.js +2 -1
- package/hooks/lib/otlp-exporter.js +2 -1
- package/hooks/lib/propose-step.js +3 -2
- package/hooks/lib/raiz-proyecto.js +102 -0
- package/hooks/lib/run-log.js +2 -1
- package/hooks/lib/singleton-guard.js +218 -27
- package/hooks/lib/telegram-cliente.js +17 -8
- package/hooks/preservar-estado-pre-compact.js +2 -1
- package/hooks/proteccion-rutas.js +59 -3
- package/hooks/registro-turnos.js +2 -1
- package/hooks/resumen-sesion.js +2 -1
- package/hooks/risk-scoring.js +2 -1
- package/hooks/rotar-audit-auto.js +46 -20
- package/hooks/session-briefing.js +127 -1
- package/hooks/spec-gate.js +2 -1
- package/hooks/sugerir-contribuir.js +6 -3
- package/hooks/sugerir-regenerar-inventario.js +3 -2
- package/hooks/tdd-gate.js +2 -1
- package/hooks/telemetria-agentes.js +2 -1
- package/hooks/telemetria-skill-routing.js +2 -1
- package/hooks/tracking-costos.js +4 -3
- package/hooks/validar-formato-post-subagente.js +2 -1
- package/hooks/validar-intent-spec.js +2 -1
- package/hooks/validar-memoria-hook.js +13 -3
- package/hooks/validar-planning-paths.js +2 -1
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
- package/instintos/perfil-usuario.yaml +506 -3
- package/instintos/proyecto.yaml +78 -0
- package/llms.txt +2 -2
- package/manifiestos/canonical-hashes.json +664 -2
- package/manifiestos/modulos.json +19 -14
- package/manifiestos/planning-paths.json +1 -0
- package/manifiestos/skills-lock.json +53 -53
- package/package.json +2 -3
- package/plugin.json +2 -2
- package/scripts/actualizar.js +3 -0
- package/scripts/auditar-clases-conocidas.js +32 -4
- package/scripts/benchmark-memoria.js +1 -0
- package/scripts/cli/autonomia.js +23 -0
- package/scripts/cli/benchmark-memoria.js +37 -0
- package/scripts/cli/ciclo-autonomo.js +73 -0
- package/scripts/cli/ciclo-fase-b.js +102 -0
- package/scripts/cli/guardrail-metrics.js +39 -0
- package/scripts/cli/loop-telemetry.js +4 -2
- package/scripts/cli/memoria-search.js +69 -0
- package/scripts/cli/nudge-accionar.js +39 -0
- package/scripts/cli/run-eval.js +38 -0
- package/scripts/cli/run-skill-evals.js +13 -2
- package/scripts/derivar-feature-list.js +15 -14
- package/scripts/desinstalar.js +11 -0
- package/scripts/doctor.js +24 -10
- package/scripts/instalador.js +106 -7
- package/scripts/lib/activar-hooks-proyecto.js +116 -0
- package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
- package/scripts/lib/ciclo-autonomo/config.js +165 -0
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
- package/scripts/lib/ciclo-autonomo/index.js +301 -0
- package/scripts/lib/ciclo-autonomo/lock.js +124 -0
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
- package/scripts/lib/estado.js +9 -0
- package/scripts/lib/evidencia-valor.js +1 -1
- package/scripts/lib/gitignore-manifest.js +8 -1
- package/scripts/lib/hooks-settings.js +45 -0
- package/scripts/rotar-audit-logs.js +48 -2
- package/scripts/run-eval.js +1 -0
- package/scripts/run-skill-evals.js +287 -8
- package/scripts/smoke-test.js +16 -8
- package/scripts/tui/pantallas/install-wizard.js +403 -347
- package/scripts/validar.js +40 -1
|
@@ -175,8 +175,9 @@ SWL tiene 14 archivos `schemas/*.schema.json`. Reglas operativas:
|
|
|
175
175
|
|
|
176
176
|
### Detección de breaking changes
|
|
177
177
|
|
|
178
|
-
Helper `scripts/lib/schema-version.js` (creado en F4
|
|
179
|
-
|
|
178
|
+
Helper `scripts/lib/schema-version.js` (creado en F4, layout del repo madre;
|
|
179
|
+
en instalaciones destino vive aplanado junto a los hooks) implementa estas
|
|
180
|
+
reglas. Referencia de API — uso esperado:
|
|
180
181
|
|
|
181
182
|
```js
|
|
182
183
|
const { verificarCompatibilidad } = require('./scripts/lib/schema-version');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: release-semver
|
|
3
3
|
description: Versionado semántico (SemVer). Cuándo bumpar major/minor/patch, changelogs convencionales, estrategia de tags y proceso de release completo.
|
|
4
|
-
version: "1.0.
|
|
4
|
+
version: "1.0.4"
|
|
5
5
|
herramientasPermitidas: [Read, Bash]
|
|
6
6
|
exclusiones:
|
|
7
7
|
- "No cargar para versionar el sistema SWL — el bump de versión de swl-ses sigue el checklist de 15 ubicaciones documentado en `/swl:release`; este skill cubre SemVer general para proyectos de usuario, no el proceso interno de release del sistema."
|
|
@@ -318,7 +318,9 @@ de token inválido.
|
|
|
318
318
|
- `semantic-release` ya está configurado en CI — si el release está automatizado, el número de versión se calcula desde los commits sin intervención manual; cargar este skill duplicaría el trabajo.
|
|
319
319
|
- El proyecto es una herramienta interna sin consumidores que dependan de compatibilidad de versión — SemVer completo compensa cuando hay consumidores que confían en los números de versión para evaluar breaking changes.
|
|
320
320
|
|
|
321
|
-
## Gotchas / Errores comunes no obvios
|
|
321
|
+
## Gotchas / Errores comunes no obvios
|
|
322
|
+
|
|
323
|
+
- **El registry espejo NUNCA publica cuando el canónico falló sus gates** [caso real: v2.5.0 y v2.5.1 quedaron huérfanas en GitHub Packages, 2026-07-08/09]: un publisher dual que publica el mirror desde un directorio temporal preparado (donde `prepublishOnly`/gates NO corren) debe condicionar el paso 2 al éxito del paso 1 — si el canónico falló, el mirror se OMITE con aviso visible. Publicar tras el fallo sube un tarball sin validar y desalinea los registries: la misma versión no puede re-subirse, forzando un "republish de coordinación" (bump PATCH) que es puro costo. Verificar además que el flujo del mirror realmente corre gates en alguna parte — "los pre-publish ya pasaron en el intento 1" es una suposición, no una garantía.
|
|
322
324
|
|
|
323
325
|
- **Tag ligero creado en lugar de anotado para el release**: `git tag v2.1.0` sin la flag `-a` crea un tag ligero que no incluye metadata de autor, fecha ni mensaje. Causa: olvidar la flag `-a` o la costumbre de usar tags ligeros para marcado temporal. Solución: siempre `git tag -a v2.1.0 -m "Release v2.1.0"` para releases — los tags anotados son los que `git describe` y las herramientas de changelog usan correctamente.
|
|
324
326
|
- **MAJOR evitado por considerar el breaking change "pequeño"**: el equipo sube de `1.4.2` a `1.5.0` un endpoint que cambió su contrato de respuesta. Causa: subestimar el impacto del breaking change para evitar el salto de versión mayor. Solución: si un consumidor tiene que actualizar su código para seguir funcionando, es MAJOR sin importar el tamaño del cambio — el anti-patrón "Nunca saltarse MAJOR por miedo" es explícito en el skill.
|
|
@@ -53,13 +53,12 @@ Más dos prácticas auxiliares del video:
|
|
|
53
53
|
Ejecuta el auditor determinista:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
|
|
56
|
+
# CLI cross-scope: en el repo madre resuelve al script local, en proyectos
|
|
57
|
+
# downstream al paquete instalado/npx. Mismo auditor en ambos casos.
|
|
58
|
+
swl-ses audit-claudemd [--json|--strict]
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
`npx ... audit-claudemd` — ambas rutas ejecutan el mismo auditor.
|
|
61
|
+
Si `swl-ses` no está en PATH: `npx -y @saulwade/swl-ses@latest audit-claudemd`.
|
|
63
62
|
|
|
64
63
|
El auditor verifica nueve dimensiones (la fila `@references rotos` caza el `@reglas/...` roto downstream):
|
|
65
64
|
|
|
@@ -205,8 +204,8 @@ y mensaje WARN — project-level >50 LOC sin mención a los 4 principios).
|
|
|
205
204
|
`/swl:aprender` **muta** CLAUDE.md; `/swl:claudemd` **prescribe contrato**.
|
|
206
205
|
Todo comando SWL que escriba a CLAUDE.md del proyecto (`aprender`,
|
|
207
206
|
`adoptar-proyecto`, `nuevo-proyecto`, `claudemd init-project`, futuros) DEBE
|
|
208
|
-
ejecutar el auditor síncrono tras escribir (`
|
|
209
|
-
|
|
207
|
+
ejecutar el auditor síncrono tras escribir (`swl-ses audit-claudemd --json`,
|
|
208
|
+
CLI cross-scope), evaluar el veredicto (OK→continuar; WARN→proponer condensar/extraer;
|
|
210
209
|
`ERROR placeholders`→**DETENER y revertir**) y re-auditar hasta OK/WARN aceptable.
|
|
211
210
|
|
|
212
211
|
Doble red: capa síncrona (Paso 6.5 de aprender — proactiva, bloquea el comando)
|
|
@@ -243,51 +243,15 @@ Muestra en terminal las métricas de activación y bloqueo de los guardrails (ho
|
|
|
243
243
|
de la sesión actual. Los datos provienen de `hooks/lib/guardrail-metrics.js`.
|
|
244
244
|
|
|
245
245
|
```bash
|
|
246
|
-
#
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
if [ -f "$BRIDGE_FILE" ]; then
|
|
251
|
-
node -e "
|
|
252
|
-
const m = require('$BRIDGE_FILE');
|
|
253
|
-
const hooks = m.hooks || {};
|
|
254
|
-
const entries = Object.entries(hooks).sort(([,a],[,b]) => b.bloqueos - a.bloqueos);
|
|
255
|
-
if (entries.length === 0) {
|
|
256
|
-
console.log('Ningún guardrail se activó en esta sesión.');
|
|
257
|
-
} else {
|
|
258
|
-
console.log('\\nGuardrails — Activaciones de la sesión\\n');
|
|
259
|
-
console.log('Hook'.padEnd(30) + 'Activaciones'.padStart(13) + 'Bloqueos'.padStart(9) + 'Warnings'.padStart(9) + 'Tasa'.padStart(7));
|
|
260
|
-
console.log('-'.repeat(68));
|
|
261
|
-
for (const [nombre, datos] of entries) {
|
|
262
|
-
const tasa = datos.activaciones > 0 ? Math.round(datos.bloqueos / datos.activaciones * 100) + '%' : '0%';
|
|
263
|
-
console.log(nombre.replace('.js','').padEnd(30) + String(datos.activaciones).padStart(13) + String(datos.bloqueos).padStart(9) + String(datos.warnings).padStart(9) + tasa.padStart(7));
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
"
|
|
267
|
-
else
|
|
268
|
-
echo "Sin datos de guardrails para esta sesión. (bridge: $BRIDGE_FILE)"
|
|
269
|
-
echo "Los guardrails registran métricas cuando se activan durante la sesión."
|
|
270
|
-
fi
|
|
246
|
+
# Tabla de activaciones + diagnóstico automático de la sesión actual
|
|
247
|
+
# (--session=ID para otra sesión; --json para salida cruda)
|
|
248
|
+
swl-ses guardrail-metrics
|
|
271
249
|
```
|
|
272
250
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
try {
|
|
278
|
-
const { getMetrics, diagnosticar } = require('./hooks/lib/guardrail-metrics');
|
|
279
|
-
const SESSION_ID = process.env.CLAUDE_SESSION_ID || 'default';
|
|
280
|
-
const metricas = getMetrics(SESSION_ID);
|
|
281
|
-
const advertencias = diagnosticar(metricas);
|
|
282
|
-
if (advertencias.length > 0) {
|
|
283
|
-
console.log('\\n⚠ Diagnóstico:');
|
|
284
|
-
advertencias.forEach(a => console.log(' - ' + a));
|
|
285
|
-
} else {
|
|
286
|
-
console.log('\\n✓ Guardrails sin anomalías detectadas.');
|
|
287
|
-
}
|
|
288
|
-
} catch(e) { console.log('(sin datos disponibles)'); }
|
|
289
|
-
"
|
|
290
|
-
```
|
|
251
|
+
El subcomando lee el bridge de la sesión (tmpdir del SO, portable
|
|
252
|
+
Windows/POSIX), imprime la tabla de activaciones/bloqueos/warnings por hook
|
|
253
|
+
y ejecuta el diagnóstico de tasas anómalas — sin datos de sesión muestra el
|
|
254
|
+
resumen vacío.
|
|
291
255
|
|
|
292
256
|
> El resumen de guardrails también aparece automáticamente al final de cada sesión
|
|
293
257
|
> (hook `resumen-sesion.js`) cuando hay advertencias de tasa anómala.
|
|
@@ -314,6 +278,10 @@ Modos: `offline` = funciona leyendo archivos locales; `online` = requiere conexi
|
|
|
314
278
|
|
|
315
279
|
### Uso básico
|
|
316
280
|
|
|
281
|
+
API del módulo (layout del repo madre; en instalaciones destino vive aplanado
|
|
282
|
+
junto a los hooks instalados — es documentación de referencia, no un comando
|
|
283
|
+
a ejecutar en proyectos consumidores):
|
|
284
|
+
|
|
317
285
|
```javascript
|
|
318
286
|
const { listarPorCategoria, listarPorModo, obtenerWidget, obtenerLayoutDefault } =
|
|
319
287
|
require('./scripts/lib/dashboard-widgets');
|