@saulwade/swl-ses 2.5.3 → 2.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 +9 -9
- package/README.md +37 -37
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +932 -908
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/swl-ses.js +32 -7
- package/comandos/swl/actualizar.md +3 -3
- package/comandos/swl/aprender.md +13 -0
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/evaluar-skill.md +18 -3
- package/comandos/swl/evolucion-continua.md +73 -0
- package/comandos/swl/evolucionar.md +13 -0
- package/comandos/swl/instalar.md +4 -4
- package/comandos/swl/notificaciones.md +1 -1
- package/comandos/swl/status.md +2 -2
- package/gateway/cron/jobs.example.json +12 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +19 -1
- package/habilidades/autoresearch/SKILL.md +3 -2
- package/habilidades/backend-async-postgres-testing/SKILL.md +2 -1
- package/habilidades/benchmark-memoria/SKILL.md +7 -7
- package/habilidades/changelog-generator/SKILL.md +1 -1
- package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
- package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
- package/habilidades/compactacion-contexto/SKILL.md +2 -1
- package/habilidades/contenedores-docker/SKILL.md +4 -2
- package/habilidades/context-builder/SKILL.md +4 -0
- package/habilidades/doubt-driven-review/SKILL.md +17 -1
- package/habilidades/drift-detection/SKILL.md +6 -1
- package/habilidades/ejecutar-fase/SKILL.md +6 -6
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/eval-framework/SKILL.md +8 -3
- package/habilidades/extractor-de-aprendizajes/SKILL.md +8 -2
- package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
- package/habilidades/harness-claude-code/SKILL.md +7 -3
- package/habilidades/infra-github-actions/SKILL.md +4 -3
- package/habilidades/instalar-sistema/SKILL.md +5 -1
- package/habilidades/memoria-busqueda/SKILL.md +31 -39
- package/habilidades/planear-fase/SKILL.md +9 -1
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
- package/habilidades/release-semver/SKILL.md +2 -2
- package/habilidades/swl-claudemd/SKILL.md +6 -7
- package/habilidades/swl-dashboard/SKILL.md +11 -43
- package/habilidades/tdd-workflow/SKILL.md +12 -7
- 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/contexto-subagente.js +68 -68
- 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 +17 -3
- 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/notificacion-formato.js +58 -0
- 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 +127 -0
- package/hooks/lib/run-log.js +2 -1
- package/hooks/lib/singleton-guard.js +225 -27
- package/hooks/lib/telegram-cliente.js +28 -11
- package/hooks/notificacion-telegram.js +13 -3
- 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/perfil-usuario.yaml +506 -3
- package/instintos/proyecto.yaml +78 -0
- package/llms.txt +29 -29
- package/manifiestos/canonical-hashes.json +5588 -4925
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +1429 -1423
- package/manifiestos/planning-paths.json +1 -0
- package/manifiestos/skills-lock.json +1275 -1275
- package/package.json +94 -95
- package/plugin.json +369 -369
- package/scripts/actualizar.js +3 -0
- package/scripts/auditar-clases-conocidas.js +134 -106
- package/scripts/benchmark-memoria.js +1 -0
- package/scripts/bootstrap-instintos.js +85 -14
- package/scripts/canario-hooks.js +166 -166
- 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 +50 -13
- package/scripts/evidencia-valor.js +101 -101
- package/scripts/field-report.js +16 -16
- package/scripts/instalador.js +98 -7
- package/scripts/lib/activar-hooks-proyecto.js +116 -104
- 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 +228 -228
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/gitignore-manifest.js +8 -1
- package/scripts/lib/hooks-settings.js +45 -0
- package/scripts/lib/limpiar-basura-global.js +161 -0
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- 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 +69 -13
- package/scripts/validar.js +40 -1
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# CLAUDE.md — @saulwade/swl-ses v2.
|
|
1
|
+
# CLAUDE.md — @saulwade/swl-ses v2.6.1
|
|
2
2
|
|
|
3
3
|
## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
|
|
4
4
|
|
|
@@ -51,8 +51,8 @@ NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHAN
|
|
|
51
51
|
| `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
|
|
52
52
|
| `node scripts/generar-inventario.js` | Regenera contadores oficiales + catálogos de INVENTARIO/SALUD/llms.txt (NUNCA contar a mano) |
|
|
53
53
|
| `npm run gen-comandos` | Regenera los bloques `CATALOGO-COMANDOS` de COMANDOS.md y AGENTS.md desde frontmatter; `--check` (en test:all) detecta drift |
|
|
54
|
-
| `node scripts/auditar-clases-conocidas.js` | Gate anti-reincidencia de clases de bug documentadas (C1 fecha UTC, C2 comparación sin normalizar EOL, C3 bloqueo ciego en hooks). En test:all |
|
|
55
|
-
| `node scripts/canario-hooks.js [--smoke]` | Canario de hooks: grafo de requires distribuido en modulos.json (clase check-update); --smoke ejecuta los 49 en sandbox (en test:release) |
|
|
54
|
+
| `node scripts/auditar-clases-conocidas.js` | Gate anti-reincidencia de clases de bug documentadas (C1 fecha UTC, C2 comparación sin normalizar EOL, C3 bloqueo ciego en hooks). En test:all |
|
|
55
|
+
| `node scripts/canario-hooks.js [--smoke]` | Canario de hooks: grafo de requires distribuido en modulos.json (clase check-update); --smoke ejecuta los 49 en sandbox (en test:release) |
|
|
56
56
|
| `node scripts/derivar-feature-list.js` | Genera `.planning/feature-list.json` (derivado de `HOJA-RUTA.md`, gitignored, regenerable). Modo `--check` exit 2 si drift detectado. Consumido por `/swl:status metricas fases`. |
|
|
57
57
|
|
|
58
58
|
## Code style
|
|
@@ -63,8 +63,8 @@ NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHAN
|
|
|
63
63
|
- **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría — no `atomicWriteJSON` que reescribe todo
|
|
64
64
|
- **Fechas de artefactos generados SIEMPRE locales**: `toLocaleDateString('sv')`, NUNCA `toISOString().slice(0,10)` — desde México la tarde ya es "mañana" en UTC (x7 sitios corregidos 2026-07-08)
|
|
65
65
|
- **Reemplazos con backticks/regex vía `node -e` en bash mangean escapes en silencio** ("aplica" sin aplicar): usar heredoc `node <<'EOF'` + `String.raw` (x3 incidentes 2026-07-08)
|
|
66
|
-
- **`plugin.json#agents`/`#skills` son alfabéticos**: insertar en posición — ningún gate valida el orden
|
|
67
|
-
- **Todo gate de escaneo nuevo lleva test anti-regresión viva** ("el repo real pasa con exit 0") en `npm test`: pre-commit el gate no se escanea a sí mismo (`git ls-files` ignora untracked) y su doc NO escribe el patrón prohibido literal (se auto-detectó y tumbó el publish v2.5.1)
|
|
66
|
+
- **`plugin.json#agents`/`#skills` son alfabéticos**: insertar en posición — ningún gate valida el orden
|
|
67
|
+
- **Todo gate de escaneo nuevo lleva test anti-regresión viva** ("el repo real pasa con exit 0") en `npm test`: pre-commit el gate no se escanea a sí mismo (`git ls-files` ignora untracked) y su doc NO escribe el patrón prohibido literal (se auto-detectó y tumbó el publish v2.5.1)
|
|
68
68
|
- **Contrato del CLI (`bin/swl-ses.js`)**: todo subcomando exporta UNA función(opciones) sin efectos al require — test viviente `bin-contrato-comandos.test.js` (3 violaciones cazadas, una en campo)
|
|
69
69
|
- **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
|
|
70
70
|
- **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
|
|
@@ -100,7 +100,7 @@ NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHAN
|
|
|
100
100
|
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
101
101
|
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
102
102
|
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
103
|
-
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
103
|
+
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
104
104
|
- `@docs/evidencia-valor.md` — medición de valor en campo (`swl-ses valor`), frontera de datos downstream↔repo madre
|
|
105
105
|
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
106
106
|
|
|
@@ -109,7 +109,7 @@ NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHAN
|
|
|
109
109
|
## Qué es este repositorio
|
|
110
110
|
|
|
111
111
|
Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
|
|
112
|
-
11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 61 agentes, 181 skills,
|
|
112
|
+
11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 61 agentes, 181 skills, 48 comandos, 77 reglas, 49 hooks.
|
|
113
113
|
|
|
114
114
|
## Estructura del repositorio
|
|
115
115
|
|
|
@@ -129,11 +129,11 @@ scripts/ bin/ _userland/ .claude/ .planning/
|
|
|
129
129
|
|
|
130
130
|
## Comandos del sistema (/swl:*)
|
|
131
131
|
|
|
132
|
-
Catálogo completo de
|
|
132
|
+
Catálogo completo de 48 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
|
|
133
133
|
|
|
134
134
|
- **Ciclo GSD por fase**: `discutir-fase` → `planear-fase` → `ejecutar-fase` → `verificar` (con discovery routing, modo iterativo `--iterative` y `--until-converge`).
|
|
135
135
|
- **Anti-context-rot**: `checkpoint`, `compactar`.
|
|
136
|
-
- **Aprendizaje**: `aprender`, `evolucionar`, `autoresearch`, `reflect-skills`.
|
|
136
|
+
- **Aprendizaje**: `aprender`, `evolucionar`, `evolucion-continua` (motor determinista on|off|status, ADR-0041), `autoresearch`, `reflect-skills`.
|
|
137
137
|
- **Calidad**: `revisar`, `verificar`, `nemesis` (auditoría Feynman + State, opcional `--remediar`), `deuda-codigo` (cosecha de marcadores `simplificado:`), `seguridad` (postura del proyecto completo), `fix` (triage y despacho de reparaciones), `predecir` (panel pre-implementación; `--abogado-diablo` critica la decisión).
|
|
138
138
|
- **Diagnóstico**: `salud`, `metricas`, `dashboard`, `evolucion-estado`.
|
|
139
139
|
- **Release**: `release`, `configurar-ci`.
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# swl-ses v2.
|
|
1
|
+
# swl-ses v2.6.1
|
|
2
2
|
|
|
3
3
|
> El paquete anterior `@saulwadeleon/swl-software-engineering-system` está deprecado. Migrar a `@saulwade/swl-ses` (npmjs.org canónico) o `@saul-wade/swl-ses` (mirror en GitHub Packages) — el CLI `swl-ses` no cambia.
|
|
4
4
|
|
|
@@ -47,8 +47,8 @@ El setup requiere **dos comandos en orden**, con propósitos distintos:
|
|
|
47
47
|
|
|
48
48
|
| Comando | Qué crea | Dónde | Instala agentes/skills |
|
|
49
49
|
|---------|----------|-------|------------------------|
|
|
50
|
-
| `npx @saulwade/swl-ses@latest init` | `.planning/` y `_userland/` (plantillas vacías) | En el proyecto actual | ❌ No |
|
|
51
|
-
| `npx @saulwade/swl-ses@latest install` | Agentes, skills, reglas, hooks, comandos `/swl:*` | En `.claude/` del proyecto o en `~/.claude/` global | ✅ Sí |
|
|
50
|
+
| `npx -y @saulwade/swl-ses@latest init` | `.planning/` y `_userland/` (plantillas vacías) | En el proyecto actual | ❌ No |
|
|
51
|
+
| `npx -y @saulwade/swl-ses@latest install` | Agentes, skills, reglas, hooks, comandos `/swl:*` | En `.claude/` del proyecto o en `~/.claude/` global | ✅ Sí |
|
|
52
52
|
|
|
53
53
|
**`init` siempre es local al proyecto.** `install` puede ser local (`--local`, default) o global (`--global`).
|
|
54
54
|
|
|
@@ -77,9 +77,9 @@ TUI visual" para capturas ASCII de cada pantalla.
|
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
cd /ruta/a/tu/proyecto
|
|
80
|
-
npx @saulwade/swl-ses@latest init # Crea .planning/ y _userland/
|
|
81
|
-
npx @saulwade/swl-ses@latest install --target claude --profile core # Instala agentes, skills, hooks y reglas
|
|
82
|
-
npx @saulwade/swl-ses@latest doctor # Verifica que todo quedó correcto
|
|
80
|
+
npx -y @saulwade/swl-ses@latest init # Crea .planning/ y _userland/
|
|
81
|
+
npx -y @saulwade/swl-ses@latest install --target claude --profile core # Instala agentes, skills, hooks y reglas
|
|
82
|
+
npx -y @saulwade/swl-ses@latest doctor # Verifica que todo quedó correcto
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
No requiere autenticación. El paquete `swl-ses` está publicado en npmjs.
|
|
@@ -137,7 +137,7 @@ claude
|
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
> Para forzar siempre la última versión:
|
|
140
|
-
> `npx @saulwade/swl-ses@latest <comando>`
|
|
140
|
+
> `npx -y @saulwade/swl-ses@latest <comando>`
|
|
141
141
|
|
|
142
142
|
## Comandos del CLI
|
|
143
143
|
|
|
@@ -149,18 +149,18 @@ claude
|
|
|
149
149
|
|
|
150
150
|
| Comando | Descripción |
|
|
151
151
|
|---------|-------------|
|
|
152
|
-
| `npx @saulwade/swl-ses@latest init` | Crea `.planning/` (plantillas de planificación) y `_userland/` (tus personalizaciones) en el proyecto actual. **No instala agentes ni skills.** |
|
|
153
|
-
| `npx @saulwade/swl-ses@latest install` | Instala agentes, skills, reglas, hooks y comandos `/swl:*` en el runtime destino (`.claude/` local o `~/.claude/` global). |
|
|
154
|
-
| `npx @saulwade/swl-ses@latest doctor` | Diagnostica problemas de la instalación |
|
|
155
|
-
| `npx @saulwade/swl-ses@latest update` | Actualiza componentes instalados |
|
|
156
|
-
| `npx @saulwade/swl-ses@latest uninstall` | Desinstala componentes del runtime |
|
|
157
|
-
| `npx @saulwade/swl-ses@latest info` | Muestra información del sistema instalado |
|
|
158
|
-
| `npx @saulwade/swl-ses@latest skills list` | Lista skills instalados |
|
|
159
|
-
| `npx @saulwade/swl-ses@latest skills add <fuente>` | Agrega skill desde repo Git, owner/repo, o path local |
|
|
160
|
-
| `npx @saulwade/swl-ses@latest skills remove <nombre>` | Remueve un skill individual |
|
|
161
|
-
| `npx @saulwade/swl-ses@latest agents list` | Lista agentes instalados |
|
|
162
|
-
| `npx @saulwade/swl-ses@latest agents add <fuente>` | Agrega agente desde repo Git o path local |
|
|
163
|
-
| `npx @saulwade/swl-ses@latest agents remove <nombre>` | Remueve un agente individual |
|
|
152
|
+
| `npx -y @saulwade/swl-ses@latest init` | Crea `.planning/` (plantillas de planificación) y `_userland/` (tus personalizaciones) en el proyecto actual. **No instala agentes ni skills.** |
|
|
153
|
+
| `npx -y @saulwade/swl-ses@latest install` | Instala agentes, skills, reglas, hooks y comandos `/swl:*` en el runtime destino (`.claude/` local o `~/.claude/` global). |
|
|
154
|
+
| `npx -y @saulwade/swl-ses@latest doctor` | Diagnostica problemas de la instalación |
|
|
155
|
+
| `npx -y @saulwade/swl-ses@latest update` | Actualiza componentes instalados |
|
|
156
|
+
| `npx -y @saulwade/swl-ses@latest uninstall` | Desinstala componentes del runtime |
|
|
157
|
+
| `npx -y @saulwade/swl-ses@latest info` | Muestra información del sistema instalado |
|
|
158
|
+
| `npx -y @saulwade/swl-ses@latest skills list` | Lista skills instalados |
|
|
159
|
+
| `npx -y @saulwade/swl-ses@latest skills add <fuente>` | Agrega skill desde repo Git, owner/repo, o path local |
|
|
160
|
+
| `npx -y @saulwade/swl-ses@latest skills remove <nombre>` | Remueve un skill individual |
|
|
161
|
+
| `npx -y @saulwade/swl-ses@latest agents list` | Lista agentes instalados |
|
|
162
|
+
| `npx -y @saulwade/swl-ses@latest agents add <fuente>` | Agrega agente desde repo Git o path local |
|
|
163
|
+
| `npx -y @saulwade/swl-ses@latest agents remove <nombre>` | Remueve un agente individual |
|
|
164
164
|
|
|
165
165
|
### Opciones de install
|
|
166
166
|
|
|
@@ -213,7 +213,7 @@ Correr solo uno deja el otro plano en una versión anterior.
|
|
|
213
213
|
| `mobile` | Android + iOS + React Native/Flutter + UX |
|
|
214
214
|
| `devops` | CI/CD + cloud + observabilidad + releases + seguridad |
|
|
215
215
|
| `polyglot` | Todos los lenguajes: 11 lenguajes + revisores + build resolvers |
|
|
216
|
-
| `completo` | Todo: 61 agentes + 181 habilidades +
|
|
216
|
+
| `completo` | Todo: 61 agentes + 181 habilidades + 48 comandos + 77 reglas + 49 hooks |
|
|
217
217
|
|
|
218
218
|
### Targets soportados
|
|
219
219
|
|
|
@@ -233,43 +233,43 @@ Correr solo uno deja el otro plano en una versión anterior.
|
|
|
233
233
|
|
|
234
234
|
```bash
|
|
235
235
|
# Perfil básico en Claude Code
|
|
236
|
-
npx @saulwade/swl-ses@latest install --target claude --profile core
|
|
236
|
+
npx -y @saulwade/swl-ses@latest install --target claude --profile core
|
|
237
237
|
|
|
238
238
|
# Backend Python en Gemini CLI
|
|
239
|
-
npx @saulwade/swl-ses@latest install --target gemini --profile backend-python
|
|
239
|
+
npx -y @saulwade/swl-ses@latest install --target gemini --profile backend-python
|
|
240
240
|
|
|
241
241
|
# Frontend React en GitHub Copilot
|
|
242
|
-
npx @saulwade/swl-ses@latest install --target copilot --profile frontend-react
|
|
242
|
+
npx -y @saulwade/swl-ses@latest install --target copilot --profile frontend-react
|
|
243
243
|
|
|
244
244
|
# Full-stack en OpenClaude (multi-proveedor, usa .claude/ igual que Claude Code)
|
|
245
|
-
npx @saulwade/swl-ses@latest install --target openclaude --profile fullstack-python-angular
|
|
245
|
+
npx -y @saulwade/swl-ses@latest install --target openclaude --profile fullstack-python-angular
|
|
246
246
|
|
|
247
247
|
# Full-stack en OpenCode
|
|
248
|
-
npx @saulwade/swl-ses@latest install --target opencode --profile fullstack-python-angular
|
|
248
|
+
npx -y @saulwade/swl-ses@latest install --target opencode --profile fullstack-python-angular
|
|
249
249
|
|
|
250
250
|
# Perfil completo en directorio global
|
|
251
|
-
npx @saulwade/swl-ses@latest install --target claude --profile completo --global
|
|
251
|
+
npx -y @saulwade/swl-ses@latest install --target claude --profile completo --global
|
|
252
252
|
|
|
253
253
|
# Agregar skills desde GitHub con selector interactivo
|
|
254
|
-
npx @saulwade/swl-ses@latest skills add anthropics/skills
|
|
254
|
+
npx -y @saulwade/swl-ses@latest skills add anthropics/skills
|
|
255
255
|
|
|
256
256
|
# Agregar un skill específico por nombre
|
|
257
|
-
npx @saulwade/swl-ses@latest skills add anthropics/skills --skill docx
|
|
257
|
+
npx -y @saulwade/swl-ses@latest skills add anthropics/skills --skill docx
|
|
258
258
|
|
|
259
259
|
# Agregar todos los skills de un repo sin selector
|
|
260
|
-
npx @saulwade/swl-ses@latest skills add anthropics/skills --all
|
|
260
|
+
npx -y @saulwade/swl-ses@latest skills add anthropics/skills --all
|
|
261
261
|
|
|
262
262
|
# Agregar skill desde URL completa
|
|
263
|
-
npx @saulwade/swl-ses@latest skills add https://github.com/user/repo --skill mi-skill
|
|
263
|
+
npx -y @saulwade/swl-ses@latest skills add https://github.com/user/repo --skill mi-skill
|
|
264
264
|
|
|
265
265
|
# Agregar agente desde path local
|
|
266
|
-
npx @saulwade/swl-ses@latest agents add ./mis-agentes --agent mi-agente
|
|
266
|
+
npx -y @saulwade/swl-ses@latest agents add ./mis-agentes --agent mi-agente
|
|
267
267
|
|
|
268
268
|
# Ver que se instalaria sin hacer cambios
|
|
269
|
-
npx @saulwade/swl-ses@latest install --target codex --profile core --dry-run
|
|
269
|
+
npx -y @saulwade/swl-ses@latest install --target codex --profile core --dry-run
|
|
270
270
|
|
|
271
271
|
# Ver información del sistema
|
|
272
|
-
npx @saulwade/swl-ses@latest info --target claude
|
|
272
|
+
npx -y @saulwade/swl-ses@latest info --target claude
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
## Agentes (61)
|
|
@@ -493,7 +493,7 @@ Ver [INSTALACION.md](INSTALACION.md) para configuración detallada de autenticac
|
|
|
493
493
|
## Verificación (doctor)
|
|
494
494
|
|
|
495
495
|
```bash
|
|
496
|
-
npx @saulwade/swl-ses@latest doctor
|
|
496
|
+
npx -y @saulwade/swl-ses@latest doctor
|
|
497
497
|
```
|
|
498
498
|
|
|
499
499
|
Verifica: Node.js >= 22, runtimes detectados, `.planning/` completo, `_userland/` presente, estado íntegro, permisos, `.env` en `.gitignore`. Repara automáticamente hooks sin `"type": "command"` en settings.json.
|
|
@@ -519,7 +519,7 @@ swl-ses/
|
|
|
519
519
|
manifiestos/ # Perfiles y módulos de instalación
|
|
520
520
|
agentes/ # 61 agentes especializados
|
|
521
521
|
habilidades/ # 181 habilidades modulares
|
|
522
|
-
comandos/swl/ #
|
|
522
|
+
comandos/swl/ # 48 comandos slash
|
|
523
523
|
reglas/ # 37 reglas base + 40 por lenguaje
|
|
524
524
|
hooks/ # 49 hooks + 76 librerías en hooks/lib/
|
|
525
525
|
schemas/ # 15 JSON Schemas
|
|
@@ -554,8 +554,8 @@ Un proyecto típico (ej. construir una App Fullstack) usando SWL sigue estos pas
|
|
|
554
554
|
|
|
555
555
|
1. **Instalación y Setup inicial**
|
|
556
556
|
```bash
|
|
557
|
-
npx @saulwade/swl-ses@latest init
|
|
558
|
-
npx @saulwade/swl-ses@latest install --target claude --profile fullstack-node-react
|
|
557
|
+
npx -y @saulwade/swl-ses@latest init
|
|
558
|
+
npx -y @saulwade/swl-ses@latest install --target claude --profile fullstack-node-react
|
|
559
559
|
```
|
|
560
560
|
|
|
561
561
|
2. **Definición del Proyecto (Discovery)**
|
package/agentes/_intent-spec.md
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Fragmento compartido — Intent Specification (8 partes)
|
|
3
|
-
Adaptado de: Pawel Huryn — "Lead Agents Like Humans" (Product Compass, 2026-05)
|
|
4
|
-
URL fuente: temp/Lead-agents-like-humans.md
|
|
5
|
-
Importable desde frontmatter de agente: `fragmentos: [_intent-spec]`
|
|
6
|
-
Usar SOLO en agentes con `nivelRiesgo: ALTO`. Ver regla intent-engineering.md.
|
|
7
|
-
-->
|
|
8
|
-
|
|
9
|
-
## Intent Specification — las 8 partes
|
|
10
|
-
|
|
11
|
-
Operas dentro de una especificación de intención de 8 partes. Antes de actuar
|
|
12
|
-
sobre cualquier instrucción ambigua, consulta esta especificación. Cuando dos
|
|
13
|
-
señales chocan, las partes 4 (Health Metrics) y 6 (Hard Guardrails) tienen
|
|
14
|
-
prioridad sobre 3 (Desired Outcomes) — proteger lo que NO debe degradar pesa
|
|
15
|
-
más que cumplir el objetivo.
|
|
16
|
-
|
|
17
|
-
1. **Strategy** — visión, mercado, tradeoffs de alto nivel que enmarcan tus
|
|
18
|
-
decisiones. Tu `strategy:` en frontmatter declara las 1-3 líneas que aplican
|
|
19
|
-
a tu rol.
|
|
20
|
-
|
|
21
|
-
2. **Objective** — el problema que resuelves y por qué importa. Tu
|
|
22
|
-
`description:` lo captura. Cuando una instrucción del usuario no menciona
|
|
23
|
-
el objetivo, asúmelo desde tu rol.
|
|
24
|
-
|
|
25
|
-
3. **Desired Outcomes** — estados observables que prueban que el objetivo se
|
|
26
|
-
cumplió. Define el "done" para cada invocación. Outcomes son estados,
|
|
27
|
-
nunca actividades. Verificables sin auto-reporte del agente.
|
|
28
|
-
|
|
29
|
-
4. **Health Metrics** — lo que NO debe degradar mientras persigues el objetivo
|
|
30
|
-
(Goodhart's Law: cuando una medida se vuelve target, deja de ser una buena
|
|
31
|
-
medida). Tu `healthMetrics:` en frontmatter las lista. Si detectas que una
|
|
32
|
-
está bajando, sé más conservador, no más agresivo.
|
|
33
|
-
|
|
34
|
-
5. **Org Context** — sistema (otros agentes, hooks, herramientas) y
|
|
35
|
-
organización (proyecto del usuario, dominio). Vive en CLAUDE.md y
|
|
36
|
-
contextos/. Te llega por carga inicial, no por instrucción puntual.
|
|
37
|
-
|
|
38
|
-
6. **Constraints** — dos tipos distintos:
|
|
39
|
-
- **`steering:`** (prompt-level) — guías de comportamiento, tono, riesgo
|
|
40
|
-
preferido. Influyen tu razonamiento pero NO te obligan. Puedes
|
|
41
|
-
desviarte si el caso lo justifica, documentando por qué.
|
|
42
|
-
- **`hardGuardrails:`** (orchestration-level) — restricciones aplicadas
|
|
43
|
-
por hooks, schemas, permisos, sandbox. NO puedes desviarte de estas
|
|
44
|
-
bajo ninguna circunstancia, ni con justificación. Si una hard guardrail
|
|
45
|
-
bloquea una tarea legítima, escala — no la rodees.
|
|
46
|
-
|
|
47
|
-
7. **Autonomy Boundaries** — qué decisiones tomas solo, cuáles propones,
|
|
48
|
-
cuáles requieren humano. Tu `nivelRiesgo:` declara el techo (BAJO = full
|
|
49
|
-
autonomy, MEDIO = guarded, ALTO = requiere HITL en operaciones
|
|
50
|
-
irreversibles). Recovery Catalog de `seguridad-agentes.md` documenta
|
|
51
|
-
reprompt/reduce-autonomy/escalate/terminate.
|
|
52
|
-
|
|
53
|
-
8. **Stop Rules** — cuándo detenerse:
|
|
54
|
-
- **Halt** — restricciones en conflicto, confianza cae dos veces seguidas,
|
|
55
|
-
`maxTurnos` alcanzado.
|
|
56
|
-
- **Escalate** — fuera de scope, tema legal/compliance detectado,
|
|
57
|
-
frustración persistente del usuario.
|
|
58
|
-
- **Complete** — Desired Outcomes alcanzados; el usuario confirma.
|
|
59
|
-
|
|
60
|
-
No avances cuando deberías detenerte. Reportar parcial con razón es
|
|
61
|
-
correcto. Empujar sin entender por qué falla es violación.
|
|
62
|
-
|
|
63
|
-
## Cómo se aplica
|
|
64
|
-
|
|
65
|
-
Cuando recibes una instrucción ambigua:
|
|
66
|
-
|
|
67
|
-
1. Mapea contra tu Objective (¿alinea con tu rol?).
|
|
68
|
-
2. Verifica Hard Guardrails (¿alguna se viola?).
|
|
69
|
-
3. Verifica Health Metrics (¿algo está degradando ya?).
|
|
70
|
-
4. Si todo OK, procede con Steering como guía.
|
|
71
|
-
5. Si dudas, escala según Autonomy Boundaries.
|
|
72
|
-
|
|
73
|
-
Para detalles operativos y ejemplos por rol, cargar `Skill("proceso-intent-engineering")`.
|
|
1
|
+
<!--
|
|
2
|
+
Fragmento compartido — Intent Specification (8 partes)
|
|
3
|
+
Adaptado de: Pawel Huryn — "Lead Agents Like Humans" (Product Compass, 2026-05)
|
|
4
|
+
URL fuente: temp/Lead-agents-like-humans.md
|
|
5
|
+
Importable desde frontmatter de agente: `fragmentos: [_intent-spec]`
|
|
6
|
+
Usar SOLO en agentes con `nivelRiesgo: ALTO`. Ver regla intent-engineering.md.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Intent Specification — las 8 partes
|
|
10
|
+
|
|
11
|
+
Operas dentro de una especificación de intención de 8 partes. Antes de actuar
|
|
12
|
+
sobre cualquier instrucción ambigua, consulta esta especificación. Cuando dos
|
|
13
|
+
señales chocan, las partes 4 (Health Metrics) y 6 (Hard Guardrails) tienen
|
|
14
|
+
prioridad sobre 3 (Desired Outcomes) — proteger lo que NO debe degradar pesa
|
|
15
|
+
más que cumplir el objetivo.
|
|
16
|
+
|
|
17
|
+
1. **Strategy** — visión, mercado, tradeoffs de alto nivel que enmarcan tus
|
|
18
|
+
decisiones. Tu `strategy:` en frontmatter declara las 1-3 líneas que aplican
|
|
19
|
+
a tu rol.
|
|
20
|
+
|
|
21
|
+
2. **Objective** — el problema que resuelves y por qué importa. Tu
|
|
22
|
+
`description:` lo captura. Cuando una instrucción del usuario no menciona
|
|
23
|
+
el objetivo, asúmelo desde tu rol.
|
|
24
|
+
|
|
25
|
+
3. **Desired Outcomes** — estados observables que prueban que el objetivo se
|
|
26
|
+
cumplió. Define el "done" para cada invocación. Outcomes son estados,
|
|
27
|
+
nunca actividades. Verificables sin auto-reporte del agente.
|
|
28
|
+
|
|
29
|
+
4. **Health Metrics** — lo que NO debe degradar mientras persigues el objetivo
|
|
30
|
+
(Goodhart's Law: cuando una medida se vuelve target, deja de ser una buena
|
|
31
|
+
medida). Tu `healthMetrics:` en frontmatter las lista. Si detectas que una
|
|
32
|
+
está bajando, sé más conservador, no más agresivo.
|
|
33
|
+
|
|
34
|
+
5. **Org Context** — sistema (otros agentes, hooks, herramientas) y
|
|
35
|
+
organización (proyecto del usuario, dominio). Vive en CLAUDE.md y
|
|
36
|
+
contextos/. Te llega por carga inicial, no por instrucción puntual.
|
|
37
|
+
|
|
38
|
+
6. **Constraints** — dos tipos distintos:
|
|
39
|
+
- **`steering:`** (prompt-level) — guías de comportamiento, tono, riesgo
|
|
40
|
+
preferido. Influyen tu razonamiento pero NO te obligan. Puedes
|
|
41
|
+
desviarte si el caso lo justifica, documentando por qué.
|
|
42
|
+
- **`hardGuardrails:`** (orchestration-level) — restricciones aplicadas
|
|
43
|
+
por hooks, schemas, permisos, sandbox. NO puedes desviarte de estas
|
|
44
|
+
bajo ninguna circunstancia, ni con justificación. Si una hard guardrail
|
|
45
|
+
bloquea una tarea legítima, escala — no la rodees.
|
|
46
|
+
|
|
47
|
+
7. **Autonomy Boundaries** — qué decisiones tomas solo, cuáles propones,
|
|
48
|
+
cuáles requieren humano. Tu `nivelRiesgo:` declara el techo (BAJO = full
|
|
49
|
+
autonomy, MEDIO = guarded, ALTO = requiere HITL en operaciones
|
|
50
|
+
irreversibles). Recovery Catalog de `seguridad-agentes.md` documenta
|
|
51
|
+
reprompt/reduce-autonomy/escalate/terminate.
|
|
52
|
+
|
|
53
|
+
8. **Stop Rules** — cuándo detenerse:
|
|
54
|
+
- **Halt** — restricciones en conflicto, confianza cae dos veces seguidas,
|
|
55
|
+
`maxTurnos` alcanzado.
|
|
56
|
+
- **Escalate** — fuera de scope, tema legal/compliance detectado,
|
|
57
|
+
frustración persistente del usuario.
|
|
58
|
+
- **Complete** — Desired Outcomes alcanzados; el usuario confirma.
|
|
59
|
+
|
|
60
|
+
No avances cuando deberías detenerte. Reportar parcial con razón es
|
|
61
|
+
correcto. Empujar sin entender por qué falla es violación.
|
|
62
|
+
|
|
63
|
+
## Cómo se aplica
|
|
64
|
+
|
|
65
|
+
Cuando recibes una instrucción ambigua:
|
|
66
|
+
|
|
67
|
+
1. Mapea contra tu Objective (¿alinea con tu rol?).
|
|
68
|
+
2. Verifica Hard Guardrails (¿alguna se viola?).
|
|
69
|
+
3. Verifica Health Metrics (¿algo está degradando ya?).
|
|
70
|
+
4. Si todo OK, procede con Steering como guía.
|
|
71
|
+
5. Si dudas, escala según Autonomy Boundaries.
|
|
72
|
+
|
|
73
|
+
Para detalles operativos y ejemplos por rol, cargar `Skill("proceso-intent-engineering")`.
|
package/agentes/_propose-step.md
CHANGED
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Fragmento compartido — Propose-step de adyacencias (Fase 13, ADR-0037)
|
|
3
|
-
Importable desde frontmatter de agente: `fragmentos: [_propose-step]`
|
|
4
|
-
Usar en orquestador-swl e implementador-swl. NO routable, NO invocable con Skill.
|
|
5
|
-
Ver reglas/seguridad-agentes.md y .planning/adrs/0037-propose-step-presupuesto-autonomia.md
|
|
6
|
-
-->
|
|
7
|
-
|
|
8
|
-
## Propose-step — proponer adyacencias, nunca actuar
|
|
9
|
-
|
|
10
|
-
Separa PROPONER de ACTUAR. Al **cerrar una tarea o fase** (no en cada turno),
|
|
11
|
-
evalúas las adyacencias de riesgo del cambio y las emites como **anexo
|
|
12
|
-
propositivo**. El anexo NUNCA bloquea ni ejecuta nada: es texto que el usuario
|
|
13
|
-
lee y decide si actúa.
|
|
14
|
-
|
|
15
|
-
### Cuándo correr
|
|
16
|
-
|
|
17
|
-
- Solo al cerrar una tarea o una fase, sobre el diff de ese cierre.
|
|
18
|
-
- Nunca en mitad de la implementación (evita ruido por turno).
|
|
19
|
-
- Si `SWL_PROPOSE=0`, el propose-step queda desactivado: silencio total.
|
|
20
|
-
|
|
21
|
-
### Cómo evaluar (mecanizado)
|
|
22
|
-
|
|
23
|
-
Ejecuta la lib sobre el diff de la tarea/fase:
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
node hooks/lib/propose-step.js --rango=HEAD~1..HEAD
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Imprime el anexo solo si detecta ≥1 señal; silencio si no hay nada. Si la lib
|
|
30
|
-
no está disponible en el destino, evalúa a mano las 2 señales v1:
|
|
31
|
-
|
|
32
|
-
- **auth/PII/pagos**: el diff toca autenticación, datos personales o pagos
|
|
33
|
-
(paths `auth/`, `login`, `session`; patrones `password`, `token`, `secret`,
|
|
34
|
-
`jwt`, `stripe`, `pago`, `curp`, `rfc`). → Sugerir revisión de seguridad y
|
|
35
|
-
tests de autorización.
|
|
36
|
-
- **migración de schema**: el diff toca `models/`, `migrations/`, `*.sql`, o
|
|
37
|
-
contiene `ALTER/CREATE/DROP TABLE`. → Sugerir plan de rollback /
|
|
38
|
-
expand-contract y verificar reversibilidad.
|
|
39
|
-
|
|
40
|
-
### Formato del anexo
|
|
41
|
-
|
|
42
|
-
Solo cuando hay señal. Una sección al final del entregable:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
## Anexo propositivo — adyacencias de riesgo
|
|
46
|
-
|
|
47
|
-
Sugerencias, no acciones: nada se ejecuta ni se bloquea automáticamente.
|
|
48
|
-
|
|
49
|
-
- [auth-pii-pagos] <título> (<evidencia>) → <acción sugerida>
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Las categorías que la telemetría de aceptación silenció (el usuario las ignora
|
|
53
|
-
de forma sostenida) no copan el anexo. La lib lo maneja con
|
|
54
|
-
`categoriasSilenciadasPropose`.
|
|
55
|
-
|
|
56
|
-
## Presupuesto de autonomía — proponer libre, actuar con presupuesto
|
|
57
|
-
|
|
58
|
-
Antes de **actuar** de forma autónoma, consulta el dial de autonomía en
|
|
59
|
-
`instintos/autonomia.yaml` (defaults = `reglas/seguridad-agentes.md`; este
|
|
60
|
-
fragmento NO relaja ningún control). Niveles por clase de riesgo:
|
|
61
|
-
|
|
62
|
-
| Clase | Nivel default | Qué significa |
|
|
63
|
-
|-------|---------------|---------------|
|
|
64
|
-
| lectura/análisis | `total` | Autónomo sin checkpoint. |
|
|
65
|
-
| cambio reversible | `con_auto_checkpoint` | Autónomo, pero registra un auto-checkpoint ANTES de actuar. |
|
|
66
|
-
| migración / auth / push / publish | `hitl` | Confirmación humana siempre. |
|
|
67
|
-
|
|
68
|
-
El dial sube **solo por decisión explícita del usuario**, nunca por tu
|
|
69
|
-
conveniencia. Un valor desconocido en el dial degrada a `hitl`.
|
|
70
|
-
|
|
71
|
-
### Auto-checkpoint (precondición de cambio reversible)
|
|
72
|
-
|
|
73
|
-
Antes de la primera acción autónoma de clase **cambio reversible** de una tarea,
|
|
74
|
-
registra el checkpoint mecánico:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
node hooks/lib/autonomia.js --accion "<descripción corta de la acción>"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Registra HEAD + archivos modificados en
|
|
81
|
-
`.planning/user-profile/auto-checkpoints.jsonl` como evidencia de rollback (los
|
|
82
|
-
commits atómicos son el mecanismo real de reversibilidad). Es best-effort: no
|
|
83
|
-
bloquea la acción que protege.
|
|
84
|
-
|
|
85
|
-
### Reglas duras
|
|
86
|
-
|
|
87
|
-
- Proponer es siempre permitido; actuar se gobierna por el dial.
|
|
88
|
-
- Para clases `hitl` (migración, auth, push, publish): pausa y pide confirmación.
|
|
89
|
-
- Nunca degradar silenciosamente: si una adyacencia es de alto impacto, repórtala
|
|
90
|
-
en el anexo aunque el dial permita actuar.
|
|
1
|
+
<!--
|
|
2
|
+
Fragmento compartido — Propose-step de adyacencias (Fase 13, ADR-0037)
|
|
3
|
+
Importable desde frontmatter de agente: `fragmentos: [_propose-step]`
|
|
4
|
+
Usar en orquestador-swl e implementador-swl. NO routable, NO invocable con Skill.
|
|
5
|
+
Ver reglas/seguridad-agentes.md y .planning/adrs/0037-propose-step-presupuesto-autonomia.md
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
## Propose-step — proponer adyacencias, nunca actuar
|
|
9
|
+
|
|
10
|
+
Separa PROPONER de ACTUAR. Al **cerrar una tarea o fase** (no en cada turno),
|
|
11
|
+
evalúas las adyacencias de riesgo del cambio y las emites como **anexo
|
|
12
|
+
propositivo**. El anexo NUNCA bloquea ni ejecuta nada: es texto que el usuario
|
|
13
|
+
lee y decide si actúa.
|
|
14
|
+
|
|
15
|
+
### Cuándo correr
|
|
16
|
+
|
|
17
|
+
- Solo al cerrar una tarea o una fase, sobre el diff de ese cierre.
|
|
18
|
+
- Nunca en mitad de la implementación (evita ruido por turno).
|
|
19
|
+
- Si `SWL_PROPOSE=0`, el propose-step queda desactivado: silencio total.
|
|
20
|
+
|
|
21
|
+
### Cómo evaluar (mecanizado)
|
|
22
|
+
|
|
23
|
+
Ejecuta la lib sobre el diff de la tarea/fase:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
node hooks/lib/propose-step.js --rango=HEAD~1..HEAD
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Imprime el anexo solo si detecta ≥1 señal; silencio si no hay nada. Si la lib
|
|
30
|
+
no está disponible en el destino, evalúa a mano las 2 señales v1:
|
|
31
|
+
|
|
32
|
+
- **auth/PII/pagos**: el diff toca autenticación, datos personales o pagos
|
|
33
|
+
(paths `auth/`, `login`, `session`; patrones `password`, `token`, `secret`,
|
|
34
|
+
`jwt`, `stripe`, `pago`, `curp`, `rfc`). → Sugerir revisión de seguridad y
|
|
35
|
+
tests de autorización.
|
|
36
|
+
- **migración de schema**: el diff toca `models/`, `migrations/`, `*.sql`, o
|
|
37
|
+
contiene `ALTER/CREATE/DROP TABLE`. → Sugerir plan de rollback /
|
|
38
|
+
expand-contract y verificar reversibilidad.
|
|
39
|
+
|
|
40
|
+
### Formato del anexo
|
|
41
|
+
|
|
42
|
+
Solo cuando hay señal. Una sección al final del entregable:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
## Anexo propositivo — adyacencias de riesgo
|
|
46
|
+
|
|
47
|
+
Sugerencias, no acciones: nada se ejecuta ni se bloquea automáticamente.
|
|
48
|
+
|
|
49
|
+
- [auth-pii-pagos] <título> (<evidencia>) → <acción sugerida>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Las categorías que la telemetría de aceptación silenció (el usuario las ignora
|
|
53
|
+
de forma sostenida) no copan el anexo. La lib lo maneja con
|
|
54
|
+
`categoriasSilenciadasPropose`.
|
|
55
|
+
|
|
56
|
+
## Presupuesto de autonomía — proponer libre, actuar con presupuesto
|
|
57
|
+
|
|
58
|
+
Antes de **actuar** de forma autónoma, consulta el dial de autonomía en
|
|
59
|
+
`instintos/autonomia.yaml` (defaults = `reglas/seguridad-agentes.md`; este
|
|
60
|
+
fragmento NO relaja ningún control). Niveles por clase de riesgo:
|
|
61
|
+
|
|
62
|
+
| Clase | Nivel default | Qué significa |
|
|
63
|
+
|-------|---------------|---------------|
|
|
64
|
+
| lectura/análisis | `total` | Autónomo sin checkpoint. |
|
|
65
|
+
| cambio reversible | `con_auto_checkpoint` | Autónomo, pero registra un auto-checkpoint ANTES de actuar. |
|
|
66
|
+
| migración / auth / push / publish | `hitl` | Confirmación humana siempre. |
|
|
67
|
+
|
|
68
|
+
El dial sube **solo por decisión explícita del usuario**, nunca por tu
|
|
69
|
+
conveniencia. Un valor desconocido en el dial degrada a `hitl`.
|
|
70
|
+
|
|
71
|
+
### Auto-checkpoint (precondición de cambio reversible)
|
|
72
|
+
|
|
73
|
+
Antes de la primera acción autónoma de clase **cambio reversible** de una tarea,
|
|
74
|
+
registra el checkpoint mecánico:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
node hooks/lib/autonomia.js --accion "<descripción corta de la acción>"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Registra HEAD + archivos modificados en
|
|
81
|
+
`.planning/user-profile/auto-checkpoints.jsonl` como evidencia de rollback (los
|
|
82
|
+
commits atómicos son el mecanismo real de reversibilidad). Es best-effort: no
|
|
83
|
+
bloquea la acción que protege.
|
|
84
|
+
|
|
85
|
+
### Reglas duras
|
|
86
|
+
|
|
87
|
+
- Proponer es siempre permitido; actuar se gobierna por el dial.
|
|
88
|
+
- Para clases `hitl` (migración, auth, push, publish): pausa y pide confirmación.
|
|
89
|
+
- Nunca degradar silenciosamente: si una adyacencia es de alto impacto, repórtala
|
|
90
|
+
en el anexo aunque el dial permita actuar.
|