@saulwade/swl-ses 2.3.0 → 2.4.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 +241 -199
- package/README.md +597 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +2 -2
- package/agentes/arquitecto-swl.md +2 -2
- package/agentes/auto-evolucion-swl.md +2 -2
- package/agentes/backend-api-swl.md +2 -2
- package/agentes/backend-csharp-swl.md +2 -2
- package/agentes/backend-go-swl.md +2 -2
- package/agentes/backend-java-swl.md +2 -2
- package/agentes/backend-node-swl.md +2 -2
- package/agentes/backend-python-swl.md +2 -2
- package/agentes/backend-rust-swl.md +2 -2
- package/agentes/backend-workers-swl.md +2 -2
- package/agentes/cloud-infra-swl.md +2 -2
- package/agentes/consolidador-swl.md +2 -2
- package/agentes/datos-swl.md +2 -2
- package/agentes/depurador-swl.md +2 -2
- package/agentes/devops-ci-swl.md +2 -2
- package/agentes/disenador-ui-swl.md +2 -2
- package/agentes/documentador-swl.md +2 -2
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +2 -2
- package/agentes/frontend-swl.md +2 -2
- package/agentes/frontend-tailwind-swl.md +2 -2
- package/agentes/gh-fix-ci-swl.md +275 -275
- package/agentes/implementador-swl.md +2 -2
- package/agentes/investigador-swl.md +2 -2
- package/agentes/investigador-ux-swl.md +2 -2
- package/agentes/llm-apps-swl.md +2 -2
- package/agentes/migrador-swl.md +2 -2
- package/agentes/mobile-android-swl.md +2 -2
- package/agentes/mobile-cross-swl.md +2 -2
- package/agentes/mobile-ios-swl.md +2 -2
- package/agentes/mobile-testing-swl.md +2 -2
- package/agentes/nemesis-auditor-swl.md +1 -1
- package/agentes/notificador-swl.md +2 -2
- package/agentes/observabilidad-swl.md +2 -2
- package/agentes/orquestador-swl.md +41 -14
- package/agentes/pagos-swl.md +2 -2
- package/agentes/perfilador-usuario-swl.md +2 -2
- package/agentes/planificador-swl.md +2 -2
- package/agentes/producto-prd-swl.md +2 -2
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +2 -2
- package/agentes/rendimiento-swl.md +2 -2
- package/agentes/resolutor-build-swl.md +2 -2
- package/agentes/revisor-angular-swl.md +2 -2
- package/agentes/revisor-codigo-swl.md +36 -3
- package/agentes/revisor-csharp-swl.md +2 -2
- package/agentes/revisor-go-swl.md +2 -2
- package/agentes/revisor-java-swl.md +2 -2
- package/agentes/revisor-kotlin-swl.md +2 -2
- package/agentes/revisor-nextjs-swl.md +2 -2
- package/agentes/revisor-php-swl.md +2 -2
- package/agentes/revisor-react-swl.md +2 -2
- package/agentes/revisor-rust-swl.md +2 -2
- package/agentes/revisor-seguridad-swl.md +2 -2
- package/agentes/revisor-swift-swl.md +2 -2
- package/agentes/revisor-typescript-swl.md +2 -2
- package/agentes/sre-swl.md +2 -2
- package/agentes/tdd-qa-swl.md +2 -2
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/contexto.md +0 -2
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/deuda-codigo.md +97 -0
- package/comandos/swl/predecir.md +139 -139
- package/comandos/swl/sesiones.md +1 -1
- package/gateway/agent-executor.js +1 -1
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/agentes-como-servicio/SKILL.md +2 -2
- package/habilidades/angular-moderno/SKILL.md +24 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
- package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/contenedores-docker/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/SKILL.md +4 -4
- package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +253 -252
- package/habilidades/legacy-code-rescue/SKILL.md +268 -267
- package/habilidades/meta-skills-estandar/SKILL.md +1 -1
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +2 -2
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/postgresql-experto/SKILL.md +3 -1
- package/habilidades/prevencion-sobreingenieria/SKILL.md +70 -92
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -0
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -0
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/structured-outputs/SKILL.md +2 -2
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
- package/habilidades/swl-dashboard/SKILL.md +2 -2
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
- package/hooks/audit-trail.js +4 -4
- package/hooks/calidad-pre-commit.js +15 -11
- package/hooks/captura-acciones-post.js +3 -2
- package/hooks/captura-acciones-session.js +3 -2
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/claudemd-duplicacion-detector.js +170 -170
- package/hooks/contexto-iteracion.js +145 -144
- package/hooks/contexto-subagente.js +68 -0
- package/hooks/guardrail-modelo.js +14 -4
- package/hooks/inyeccion-contexto.js +12 -12
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/autonomia.js +208 -208
- package/hooks/lib/ciclo-evolucion.js +47 -47
- package/hooks/lib/deep-links.js +185 -185
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/etapa-auto-evolucion.js +701 -701
- package/hooks/lib/etapa-metricas.js +388 -388
- package/hooks/lib/etapa-perfil-usuario.js +376 -376
- package/hooks/lib/loop-telemetry.js +321 -321
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/model-router.js +2 -2
- package/hooks/lib/propose-step.js +358 -358
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/token-estimator.js +1 -0
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/usage-model.js +1 -1
- package/hooks/registro-turnos.js +210 -209
- package/hooks/session-briefing.js +98 -98
- package/hooks/spec-gate.js +212 -211
- package/hooks/sugerir-contribuir.js +2 -1
- package/hooks/sugerir-regenerar-inventario.js +171 -170
- package/hooks/tdd-gate.js +242 -241
- package/hooks/telemetria-skill-routing.js +100 -100
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-intent-spec.js +242 -242
- package/hooks/validar-memoria-hook.js +218 -218
- package/hooks/validar-planning-paths.js +134 -134
- package/instintos/autonomia.yaml +27 -27
- package/instintos/prompt-appendices.yaml +57 -57
- package/llms.txt +29 -29
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/canonical-hashes.json +2948 -1964
- package/manifiestos/hook-profiles.json +0 -2
- package/manifiestos/hooks-config.json +469 -477
- package/manifiestos/invariantes-criticos.json +30 -0
- package/manifiestos/modulos.json +1390 -1390
- package/manifiestos/planning-paths.json +44 -44
- package/manifiestos/skills-lock.json +1282 -1282
- package/package.json +93 -93
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +369 -371
- package/reglas/accesibilidad.md +10 -10
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/api-diseno.md +9 -9
- package/reglas/arreglar-al-detectar.md +240 -240
- package/reglas/auditorias-documentales-estructurales.md +7 -7
- package/reglas/cloud-infra.md +8 -8
- package/reglas/consultar-vault-primero.md +195 -195
- package/reglas/debatir-antes-de-aceptar.md +158 -158
- package/reglas/fragmentos-compartidos.md +183 -183
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +309 -309
- package/reglas/patrones.md +6 -6
- package/reglas/sesiones-paralelas.md +180 -180
- package/reglas/sin-duplicacion-reglas-globales.md +182 -182
- package/reglas/skills-estandar.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/reglas/usar-code-review-graph.md +155 -155
- package/reglas/usar-context7.md +226 -226
- package/reglas/verificar-citas-normativas.md +548 -548
- package/schemas/agent-frontmatter.schema.json +5 -3
- package/schemas/agent-message.schema.json +73 -73
- package/schemas/agent-output-implementacion.schema.json +114 -114
- package/schemas/agent-output-planificacion.schema.json +150 -150
- package/schemas/agent-output-review.schema.json +98 -98
- package/schemas/diary-entry.schema.json +112 -112
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/scripts/audit-tools/audit-history.js +330 -330
- package/scripts/audit-tools/bundle-tracker.js +290 -290
- package/scripts/audit-tools/canary-monitor.js +352 -352
- package/scripts/audit-tools/code-profiler.js +605 -605
- package/scripts/audit-tools/dep-doctor.js +320 -320
- package/scripts/audit-tools/env-validator.js +206 -206
- package/scripts/audit-tools/lib/fs-walk.js +48 -48
- package/scripts/audit-tools/lib/output.js +23 -23
- package/scripts/audit-tools/migration-checker.js +392 -392
- package/scripts/audit-tools/pentest-scanner.js +1436 -1436
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/configurar-ci.js +40 -40
- package/scripts/cli/derivar-feature-list.js +25 -25
- package/scripts/cli/detectar-host.js +27 -27
- package/scripts/cli/diary-entry.js +69 -69
- package/scripts/cli/execution-state.js +18 -18
- package/scripts/cli/gateway-notify.js +41 -41
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/loop-telemetry.js +125 -125
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/metricas-dora.js +26 -26
- package/scripts/cli/near-duplicate.js +55 -55
- package/scripts/cli/notificaciones.js +123 -123
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/schedule-parse.js +19 -19
- package/scripts/cli/sugerir-modelo.js +20 -20
- package/scripts/cli/verificar-plan.js +36 -36
- package/scripts/cli/verificar-trazabilidad.js +35 -35
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/instalador.js +4 -1
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/claude-sessions.js +1 -0
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
- package/scripts/lib/detector-reglas-duplicadas.js +220 -220
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +275 -275
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/preservar-usuario.js +39 -5
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/reglas-globales-conocidas.json +180 -180
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/tool-cost-analyzer.js +1 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/publicar.js +497 -497
- package/scripts/run-eval.js +141 -141
- package/scripts/tui/componentes/selector-multi.js +189 -189
- package/scripts/tui/componentes/selector-unico.js +158 -158
- package/scripts/tui/ejecutores.js +375 -375
- package/scripts/tui/index.js +162 -162
- package/scripts/tui/lib/colores.js +129 -129
- package/scripts/tui/lib/render.js +264 -264
- package/scripts/tui/lib/teclas.js +113 -113
- package/scripts/tui/pantallas/inspect.js +173 -173
- package/scripts/tui/pantallas/install-wizard.js +334 -334
- package/scripts/tui/pantallas/menu-principal.js +52 -52
- package/scripts/tui/pantallas/progreso.js +274 -274
- package/scripts/tui/pantallas/resumen.js +132 -132
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
- package/scripts/tui/pantallas/update-wizard.js +232 -232
- package/scripts/tui/pantallas/welcome.js +187 -187
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/validar.js +1 -1
- package/scripts/verificar-release.js +51 -0
- package/hooks/lib/context-compressor.js +0 -657
- package/hooks/linea-estado.js +0 -326
- package/hooks/monitor-contexto.js +0 -373
|
@@ -1,477 +1,469 @@
|
|
|
1
|
-
{
|
|
2
|
-
"descripcion": "Configuración centralizada de hooks SWL. Define el evento, matcher y metadata de cada hook para registro automático en settings.json del runtime destino.",
|
|
3
|
-
"prioridad_hooks": {
|
|
4
|
-
"descripcion": "Orden de precedencia cuando múltiples hooks coinciden. Mayor prioridad gana.",
|
|
5
|
-
"orden": [
|
|
6
|
-
"settings.local.json (proyecto, no versionado — máxima prioridad)",
|
|
7
|
-
"settings.json (proyecto, versionado — hooks SWL se registran aquí)",
|
|
8
|
-
"~/.claude/settings.json (global del usuario — menor prioridad)"
|
|
9
|
-
],
|
|
10
|
-
"regla": "Los hooks SWL SOLO se registran a nivel proyecto. Si existen a nivel global, el doctor los elimina para evitar ejecución duplicada."
|
|
11
|
-
},
|
|
12
|
-
"opciones_avanzadas_hooks": {
|
|
13
|
-
"descripcion": "Campos opcionales soportados por Claude Code en cada hook entry.",
|
|
14
|
-
"timeout": "Tiempo máximo en segundos antes de abortar el hook (default: 60)",
|
|
15
|
-
"async": "Si true, el hook no bloquea la ejecución — corre en background (default: false)",
|
|
16
|
-
"once": "Si true, el hook se ejecuta solo una vez por sesión (default: false)"
|
|
17
|
-
},
|
|
18
|
-
"riskThresholds": {
|
|
19
|
-
"allow": 0.35,
|
|
20
|
-
"review": 0.6,
|
|
21
|
-
"confirm": 0.85
|
|
22
|
-
},
|
|
23
|
-
"costBudget": {
|
|
24
|
-
"maxUsd": 10.0,
|
|
25
|
-
"maxTokens": 500000,
|
|
26
|
-
"alertAt": 0.8
|
|
27
|
-
},
|
|
28
|
-
"circuitBreaker": {
|
|
29
|
-
"maxConsecutiveFailures": 3,
|
|
30
|
-
"halfOpenCooldownMs": 300000,
|
|
31
|
-
"auditThreshold": 10
|
|
32
|
-
},
|
|
33
|
-
"hooks": {
|
|
34
|
-
"escaneo-secretos.js": {
|
|
35
|
-
"event": "PreToolUse",
|
|
36
|
-
"matcher": "Write|Edit",
|
|
37
|
-
"description": "Bloquea escritura de archivos con secretos hardcodeados",
|
|
38
|
-
"blocking": true,
|
|
39
|
-
"maxConsecutiveFailures": 3,
|
|
40
|
-
"degradeOnFailure": "block"
|
|
41
|
-
},
|
|
42
|
-
"proteccion-rutas.js": {
|
|
43
|
-
"event": "PreToolUse",
|
|
44
|
-
"matcher": "Write|Edit",
|
|
45
|
-
"description": "Previene path traversal y escritura fuera del proyecto",
|
|
46
|
-
"blocking": true,
|
|
47
|
-
"maxConsecutiveFailures": 3,
|
|
48
|
-
"degradeOnFailure": "block"
|
|
49
|
-
},
|
|
50
|
-
"calidad-pre-commit.js": {
|
|
51
|
-
"event": "PreToolUse",
|
|
52
|
-
"matcher": "Bash",
|
|
53
|
-
"description": "Gate de calidad pre-commit (debug stmts, type hints, TODOs)",
|
|
54
|
-
"blocking": true,
|
|
55
|
-
"maxConsecutiveFailures": 3,
|
|
56
|
-
"degradeOnFailure": "warn"
|
|
57
|
-
},
|
|
58
|
-
"
|
|
59
|
-
"event": "PostToolUse",
|
|
60
|
-
"matcher": "",
|
|
61
|
-
"description": "
|
|
62
|
-
"blocking": false,
|
|
63
|
-
"async": true,
|
|
64
|
-
"maxConsecutiveFailures":
|
|
65
|
-
"degradeOnFailure": "skip"
|
|
66
|
-
},
|
|
67
|
-
"
|
|
68
|
-
"event": "PostToolUse",
|
|
69
|
-
"matcher": "",
|
|
70
|
-
"description": "
|
|
71
|
-
"blocking": false,
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"maxConsecutiveFailures": 5,
|
|
109
|
-
"degradeOnFailure": "
|
|
110
|
-
},
|
|
111
|
-
"
|
|
112
|
-
"event": "PostToolUse",
|
|
113
|
-
"matcher": "
|
|
114
|
-
"description": "
|
|
115
|
-
"blocking": false,
|
|
116
|
-
"async": true,
|
|
117
|
-
"maxConsecutiveFailures":
|
|
118
|
-
"degradeOnFailure": "skip"
|
|
119
|
-
},
|
|
120
|
-
"
|
|
121
|
-
"event": "
|
|
122
|
-
"matcher": "",
|
|
123
|
-
"description": "
|
|
124
|
-
"blocking":
|
|
125
|
-
"maxConsecutiveFailures":
|
|
126
|
-
"degradeOnFailure": "
|
|
127
|
-
},
|
|
128
|
-
"
|
|
129
|
-
"event": "PostToolUse",
|
|
130
|
-
"matcher": "",
|
|
131
|
-
"description": "
|
|
132
|
-
"blocking": false,
|
|
133
|
-
"async": true,
|
|
134
|
-
"maxConsecutiveFailures":
|
|
135
|
-
"degradeOnFailure": "skip"
|
|
136
|
-
},
|
|
137
|
-
"
|
|
138
|
-
"event": "
|
|
139
|
-
"matcher": "",
|
|
140
|
-
"description": "
|
|
141
|
-
"blocking": false,
|
|
142
|
-
"maxConsecutiveFailures":
|
|
143
|
-
"degradeOnFailure": "skip"
|
|
144
|
-
},
|
|
145
|
-
"
|
|
146
|
-
"event": "
|
|
147
|
-
"matcher": "",
|
|
148
|
-
"description": "
|
|
149
|
-
"blocking": false,
|
|
150
|
-
"async": true,
|
|
151
|
-
"maxConsecutiveFailures":
|
|
152
|
-
"degradeOnFailure": "skip"
|
|
153
|
-
},
|
|
154
|
-
"
|
|
155
|
-
"event": "
|
|
156
|
-
"matcher": "
|
|
157
|
-
"description": "
|
|
158
|
-
"blocking": false,
|
|
159
|
-
"
|
|
160
|
-
"
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
"
|
|
174
|
-
"
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
"
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"
|
|
194
|
-
"
|
|
195
|
-
"
|
|
196
|
-
"
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
"
|
|
201
|
-
"
|
|
202
|
-
"
|
|
203
|
-
"
|
|
204
|
-
"
|
|
205
|
-
"
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"maxConsecutiveFailures":
|
|
250
|
-
"degradeOnFailure": "
|
|
251
|
-
},
|
|
252
|
-
"
|
|
253
|
-
"event": "
|
|
254
|
-
"matcher": "
|
|
255
|
-
"description": "
|
|
256
|
-
"blocking": false,
|
|
257
|
-
"async":
|
|
258
|
-
"maxConsecutiveFailures": 5,
|
|
259
|
-
"degradeOnFailure": "skip"
|
|
260
|
-
},
|
|
261
|
-
"
|
|
262
|
-
"event": "
|
|
263
|
-
"matcher": "
|
|
264
|
-
"description": "
|
|
265
|
-
"blocking":
|
|
266
|
-
"
|
|
267
|
-
"
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
"
|
|
272
|
-
"
|
|
273
|
-
"
|
|
274
|
-
"
|
|
275
|
-
"maxConsecutiveFailures":
|
|
276
|
-
"degradeOnFailure": "skip"
|
|
277
|
-
},
|
|
278
|
-
"
|
|
279
|
-
"event": "
|
|
280
|
-
"matcher": "
|
|
281
|
-
"description": "
|
|
282
|
-
"blocking": false,
|
|
283
|
-
"async": true,
|
|
284
|
-
"maxConsecutiveFailures": 5,
|
|
285
|
-
"degradeOnFailure": "skip"
|
|
286
|
-
},
|
|
287
|
-
"
|
|
288
|
-
"event": "
|
|
289
|
-
"matcher": "",
|
|
290
|
-
"description": "
|
|
291
|
-
"blocking": false,
|
|
292
|
-
"
|
|
293
|
-
"
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
"
|
|
298
|
-
"
|
|
299
|
-
"
|
|
300
|
-
"
|
|
301
|
-
"
|
|
302
|
-
"
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
"
|
|
307
|
-
"
|
|
308
|
-
"
|
|
309
|
-
"
|
|
310
|
-
"
|
|
311
|
-
"
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
"
|
|
317
|
-
"
|
|
318
|
-
"
|
|
319
|
-
"
|
|
320
|
-
"
|
|
321
|
-
"
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
"
|
|
326
|
-
"
|
|
327
|
-
"
|
|
328
|
-
"
|
|
329
|
-
"
|
|
330
|
-
"
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
"
|
|
335
|
-
"
|
|
336
|
-
"
|
|
337
|
-
"
|
|
338
|
-
"
|
|
339
|
-
"
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
"
|
|
344
|
-
"
|
|
345
|
-
"
|
|
346
|
-
"
|
|
347
|
-
"
|
|
348
|
-
"
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
"
|
|
353
|
-
"
|
|
354
|
-
"
|
|
355
|
-
"
|
|
356
|
-
"
|
|
357
|
-
"
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
"
|
|
362
|
-
"
|
|
363
|
-
"
|
|
364
|
-
"
|
|
365
|
-
"
|
|
366
|
-
"
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
"
|
|
371
|
-
"
|
|
372
|
-
"
|
|
373
|
-
"
|
|
374
|
-
"
|
|
375
|
-
"
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
"
|
|
380
|
-
"
|
|
381
|
-
"
|
|
382
|
-
"
|
|
383
|
-
"
|
|
384
|
-
"
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
"
|
|
389
|
-
"
|
|
390
|
-
"
|
|
391
|
-
"
|
|
392
|
-
"
|
|
393
|
-
"
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
"
|
|
398
|
-
"
|
|
399
|
-
"
|
|
400
|
-
"
|
|
401
|
-
"
|
|
402
|
-
"
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
"
|
|
407
|
-
"
|
|
408
|
-
"
|
|
409
|
-
"
|
|
410
|
-
"
|
|
411
|
-
"
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
"
|
|
416
|
-
"
|
|
417
|
-
"
|
|
418
|
-
"
|
|
419
|
-
"
|
|
420
|
-
"
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
"
|
|
425
|
-
"
|
|
426
|
-
"
|
|
427
|
-
"
|
|
428
|
-
"
|
|
429
|
-
"
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
"
|
|
434
|
-
"
|
|
435
|
-
"
|
|
436
|
-
"
|
|
437
|
-
"
|
|
438
|
-
"
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
"
|
|
443
|
-
"
|
|
444
|
-
"
|
|
445
|
-
"
|
|
446
|
-
"
|
|
447
|
-
"
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
"
|
|
452
|
-
"
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
"
|
|
461
|
-
"
|
|
462
|
-
"
|
|
463
|
-
"
|
|
464
|
-
"
|
|
465
|
-
"
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
"description": "Advierte cuando una sesion crea un directorio top-level NUEVO en .planning/ fuera de la allowlist canonica (manifiestos/planning-paths.json). Atrapa divergencias es/en (auditoria/ vs audit/, ux/ vs design/) antes de que proliferen. Aplica reglas/analizar-directorios-antes-de-escribir.md, cierra DT-PLANNING-OUTPUT-PATHS (ADR-0031). Emite nudge kind: planning-path-divergente a .planning/evolution/nudges.jsonl. No bloquea (warn-only). Opt-out: SWL_PLANNING_PATHS=0.",
|
|
471
|
-
"blocking": false,
|
|
472
|
-
"async": true,
|
|
473
|
-
"maxConsecutiveFailures": 5,
|
|
474
|
-
"degradeOnFailure": "skip"
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"descripcion": "Configuración centralizada de hooks SWL. Define el evento, matcher y metadata de cada hook para registro automático en settings.json del runtime destino.",
|
|
3
|
+
"prioridad_hooks": {
|
|
4
|
+
"descripcion": "Orden de precedencia cuando múltiples hooks coinciden. Mayor prioridad gana.",
|
|
5
|
+
"orden": [
|
|
6
|
+
"settings.local.json (proyecto, no versionado — máxima prioridad)",
|
|
7
|
+
"settings.json (proyecto, versionado — hooks SWL se registran aquí)",
|
|
8
|
+
"~/.claude/settings.json (global del usuario — menor prioridad)"
|
|
9
|
+
],
|
|
10
|
+
"regla": "Los hooks SWL SOLO se registran a nivel proyecto. Si existen a nivel global, el doctor los elimina para evitar ejecución duplicada."
|
|
11
|
+
},
|
|
12
|
+
"opciones_avanzadas_hooks": {
|
|
13
|
+
"descripcion": "Campos opcionales soportados por Claude Code en cada hook entry.",
|
|
14
|
+
"timeout": "Tiempo máximo en segundos antes de abortar el hook (default: 60)",
|
|
15
|
+
"async": "Si true, el hook no bloquea la ejecución — corre en background (default: false)",
|
|
16
|
+
"once": "Si true, el hook se ejecuta solo una vez por sesión (default: false)"
|
|
17
|
+
},
|
|
18
|
+
"riskThresholds": {
|
|
19
|
+
"allow": 0.35,
|
|
20
|
+
"review": 0.6,
|
|
21
|
+
"confirm": 0.85
|
|
22
|
+
},
|
|
23
|
+
"costBudget": {
|
|
24
|
+
"maxUsd": 10.0,
|
|
25
|
+
"maxTokens": 500000,
|
|
26
|
+
"alertAt": 0.8
|
|
27
|
+
},
|
|
28
|
+
"circuitBreaker": {
|
|
29
|
+
"maxConsecutiveFailures": 3,
|
|
30
|
+
"halfOpenCooldownMs": 300000,
|
|
31
|
+
"auditThreshold": 10
|
|
32
|
+
},
|
|
33
|
+
"hooks": {
|
|
34
|
+
"escaneo-secretos.js": {
|
|
35
|
+
"event": "PreToolUse",
|
|
36
|
+
"matcher": "Write|Edit",
|
|
37
|
+
"description": "Bloquea escritura de archivos con secretos hardcodeados",
|
|
38
|
+
"blocking": true,
|
|
39
|
+
"maxConsecutiveFailures": 3,
|
|
40
|
+
"degradeOnFailure": "block"
|
|
41
|
+
},
|
|
42
|
+
"proteccion-rutas.js": {
|
|
43
|
+
"event": "PreToolUse",
|
|
44
|
+
"matcher": "Write|Edit",
|
|
45
|
+
"description": "Previene path traversal y escritura fuera del proyecto",
|
|
46
|
+
"blocking": true,
|
|
47
|
+
"maxConsecutiveFailures": 3,
|
|
48
|
+
"degradeOnFailure": "block"
|
|
49
|
+
},
|
|
50
|
+
"calidad-pre-commit.js": {
|
|
51
|
+
"event": "PreToolUse",
|
|
52
|
+
"matcher": "Bash",
|
|
53
|
+
"description": "Gate de calidad pre-commit (debug stmts, type hints, TODOs)",
|
|
54
|
+
"blocking": true,
|
|
55
|
+
"maxConsecutiveFailures": 3,
|
|
56
|
+
"degradeOnFailure": "warn"
|
|
57
|
+
},
|
|
58
|
+
"extraccion-aprendizajes.js": {
|
|
59
|
+
"event": "PostToolUse",
|
|
60
|
+
"matcher": "Bash|Write|Edit",
|
|
61
|
+
"description": "Captura aprendizajes automaticamente de la actividad de la sesion",
|
|
62
|
+
"blocking": false,
|
|
63
|
+
"async": true,
|
|
64
|
+
"maxConsecutiveFailures": 3,
|
|
65
|
+
"degradeOnFailure": "skip"
|
|
66
|
+
},
|
|
67
|
+
"validar-memoria-hook.js": {
|
|
68
|
+
"event": "PostToolUse",
|
|
69
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
70
|
+
"description": "Ejecuta scripts/validar-memoria.js cuando se modifica APRENDIZAJES.md, perfil-usuario.yaml o instintos/{proyecto,global}.yaml. Emite nudge si detecta canal incorrecto, duplicación cross-canal, secretos o PII. Opt-out con SWL_VALIDAR_MEMORIA=0.",
|
|
71
|
+
"blocking": false,
|
|
72
|
+
"async": true,
|
|
73
|
+
"maxConsecutiveFailures": 3,
|
|
74
|
+
"degradeOnFailure": "skip"
|
|
75
|
+
},
|
|
76
|
+
"sugerir-regenerar-inventario.js": {
|
|
77
|
+
"event": "PostToolUse",
|
|
78
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
79
|
+
"description": "Sugiere regenerar INVENTARIO.md cuando el agente toca agentes/, habilidades/, comandos/swl/, hooks/ o reglas/. Cooldown 30 min para evitar spam.",
|
|
80
|
+
"blocking": false,
|
|
81
|
+
"async": true,
|
|
82
|
+
"maxConsecutiveFailures": 5,
|
|
83
|
+
"degradeOnFailure": "skip"
|
|
84
|
+
},
|
|
85
|
+
"sugerir-contribuir.js": {
|
|
86
|
+
"event": "PostToolUse",
|
|
87
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
88
|
+
"description": "Cuando el usuario edita un componente con frontmatter `evolved: true` en su instalación (no en el repo fuente), sugiere abrir /swl:contribuir para subir la mejora al core. Cooldown 24h por archivo. Activo por defecto; silenciar con SWL_SUGERIR_CONTRIBUIR=0.",
|
|
89
|
+
"blocking": false,
|
|
90
|
+
"async": true,
|
|
91
|
+
"maxConsecutiveFailures": 5,
|
|
92
|
+
"degradeOnFailure": "skip"
|
|
93
|
+
},
|
|
94
|
+
"degradacion-instintos.js": {
|
|
95
|
+
"event": "PostToolUse",
|
|
96
|
+
"matcher": "Bash|Write|Edit",
|
|
97
|
+
"description": "Degrada instintos contradichos por evidencia negativa en la sesion",
|
|
98
|
+
"blocking": false,
|
|
99
|
+
"async": true,
|
|
100
|
+
"maxConsecutiveFailures": 3,
|
|
101
|
+
"degradeOnFailure": "skip"
|
|
102
|
+
},
|
|
103
|
+
"risk-scoring.js": {
|
|
104
|
+
"event": "PreToolUse",
|
|
105
|
+
"matcher": "",
|
|
106
|
+
"description": "Scoring de riesgo compuesto para operaciones — bloquea operaciones peligrosas",
|
|
107
|
+
"blocking": true,
|
|
108
|
+
"maxConsecutiveFailures": 5,
|
|
109
|
+
"degradeOnFailure": "warn"
|
|
110
|
+
},
|
|
111
|
+
"tracking-costos.js": {
|
|
112
|
+
"event": "PostToolUse",
|
|
113
|
+
"matcher": "",
|
|
114
|
+
"description": "Registra tokens estimados y costo por sesion en .planning/METRICAS.md",
|
|
115
|
+
"blocking": false,
|
|
116
|
+
"async": true,
|
|
117
|
+
"maxConsecutiveFailures": 5,
|
|
118
|
+
"degradeOnFailure": "skip"
|
|
119
|
+
},
|
|
120
|
+
"inyeccion-contexto.js": {
|
|
121
|
+
"event": "PostToolUse",
|
|
122
|
+
"matcher": "",
|
|
123
|
+
"description": "Inyecta contexto de sesion anterior automaticamente al inicio de nueva sesion",
|
|
124
|
+
"blocking": false,
|
|
125
|
+
"maxConsecutiveFailures": 3,
|
|
126
|
+
"degradeOnFailure": "skip"
|
|
127
|
+
},
|
|
128
|
+
"auto-consolidacion.js": {
|
|
129
|
+
"event": "PostToolUse",
|
|
130
|
+
"matcher": "",
|
|
131
|
+
"description": "Sugiere /swl:aprender cuando hay >= 24h y >= 5 sesiones nuevas sin consolidar (patrón autoDream)",
|
|
132
|
+
"blocking": false,
|
|
133
|
+
"async": true,
|
|
134
|
+
"maxConsecutiveFailures": 3,
|
|
135
|
+
"degradeOnFailure": "skip"
|
|
136
|
+
},
|
|
137
|
+
"auto-background.js": {
|
|
138
|
+
"event": "PreToolUse",
|
|
139
|
+
"matcher": "Bash",
|
|
140
|
+
"description": "Sugiere run_in_background para comandos lentos (npm install, cargo build, docker build, etc.)",
|
|
141
|
+
"blocking": false,
|
|
142
|
+
"maxConsecutiveFailures": 5,
|
|
143
|
+
"degradeOnFailure": "skip"
|
|
144
|
+
},
|
|
145
|
+
"resumen-sesion.js": {
|
|
146
|
+
"event": "Stop",
|
|
147
|
+
"matcher": "",
|
|
148
|
+
"description": "Imprime resumen de sesión SWL al terminar: agentes, skills, comandos, tokens y costo",
|
|
149
|
+
"blocking": false,
|
|
150
|
+
"async": true,
|
|
151
|
+
"maxConsecutiveFailures": 5,
|
|
152
|
+
"degradeOnFailure": "skip"
|
|
153
|
+
},
|
|
154
|
+
"ciclo-evolucion.js": {
|
|
155
|
+
"event": "Stop",
|
|
156
|
+
"matcher": "",
|
|
157
|
+
"description": "Ciclo de evolución (evento Stop): en un solo proceso ejecuta las sub-etapas de métricas (consolida .planning/evolution/metricas.json con health_score; escala alertas persistentes si >=5 nudges del mismo tipo ignorados en 14d) y perfil de usuario (acumula dirty-bit en .planning/user-profile/; nudge a perfilador-usuario-swl al cruzar umbral). Fusión de metricas-evolucion.js + actualizar-perfil-usuario.js (Fase 11, D-12). Lógica en hooks/lib/etapa-{metricas,perfil-usuario}.js.",
|
|
158
|
+
"blocking": false,
|
|
159
|
+
"async": true,
|
|
160
|
+
"maxConsecutiveFailures": 5,
|
|
161
|
+
"degradeOnFailure": "skip"
|
|
162
|
+
},
|
|
163
|
+
"rotar-audit-auto.js": {
|
|
164
|
+
"event": "Stop",
|
|
165
|
+
"matcher": "",
|
|
166
|
+
"description": "Rotación automática de logs de auditoría (.planning/audit.jsonl y audit-merkle.jsonl) cuando superan 5 MB. Invoca scripts/rotar-audit-logs.js con retención de 30 días, comprime a .gz mensual y preserva cadena Merkle. Desactivable con SWL_AUDIT_ROTATE_OFF=1. Configurable con SWL_AUDIT_ROTATE_UMBRAL_MB y SWL_AUDIT_ROTATE_DIAS. Cooldown de 6 horas para evitar ejecución repetida.",
|
|
167
|
+
"blocking": false,
|
|
168
|
+
"async": true,
|
|
169
|
+
"maxConsecutiveFailures": 5,
|
|
170
|
+
"degradeOnFailure": "skip"
|
|
171
|
+
},
|
|
172
|
+
"ciclo-evolucion-subagente.js": {
|
|
173
|
+
"event": "SubagentStop",
|
|
174
|
+
"matcher": "",
|
|
175
|
+
"description": "Ciclo de evolución (evento SubagentStop): registra cada terminación de subagente SWL en .planning/auto-evolution/agentes.jsonl y emite nudge a /swl:evolucionar cuando un agente acumula fallos, volumen de runs, loop o drift (ventana 14 días, throttle 24h). Renombrado de auto-evolucion.js (Fase 11, D-12). Lógica en hooks/lib/etapa-auto-evolucion.js.",
|
|
176
|
+
"blocking": false,
|
|
177
|
+
"async": true,
|
|
178
|
+
"maxConsecutiveFailures": 5,
|
|
179
|
+
"degradeOnFailure": "skip"
|
|
180
|
+
},
|
|
181
|
+
"validar-formato-post-subagente.js": {
|
|
182
|
+
"event": "SubagentStop",
|
|
183
|
+
"matcher": "",
|
|
184
|
+
"description": "Valida output de subagentes con schema declarado en manifiestos/agent-output-schemas.json (revisor-* y tdd-qa). Registra violaciones en .planning/evolution/formato-violaciones.jsonl. Opt-out: SWL_FORMATO_VALIDACION=0.",
|
|
185
|
+
"blocking": false,
|
|
186
|
+
"async": true,
|
|
187
|
+
"maxConsecutiveFailures": 3,
|
|
188
|
+
"degradeOnFailure": "skip"
|
|
189
|
+
},
|
|
190
|
+
"telemetria-agentes.js": {
|
|
191
|
+
"event": "PostToolUse",
|
|
192
|
+
"matcher": "Agent",
|
|
193
|
+
"description": "Registra traza OTLP-lite por cada invocación de agente SWL en .planning/traces/",
|
|
194
|
+
"blocking": false,
|
|
195
|
+
"async": true,
|
|
196
|
+
"maxConsecutiveFailures": 5,
|
|
197
|
+
"degradeOnFailure": "skip"
|
|
198
|
+
},
|
|
199
|
+
"telemetria-skill-routing.js": {
|
|
200
|
+
"event": "PostToolUse",
|
|
201
|
+
"matcher": "Skill",
|
|
202
|
+
"description": "Registra frecuencia/estado de cada invocación de skill en .planning/skill-metrics.json (alimenta auditoría de bloat, P-2). Opt-out SWL_SKILL_TELEMETRIA=0",
|
|
203
|
+
"blocking": false,
|
|
204
|
+
"async": true,
|
|
205
|
+
"maxConsecutiveFailures": 5,
|
|
206
|
+
"degradeOnFailure": "skip"
|
|
207
|
+
},
|
|
208
|
+
"audit-trail.js": {
|
|
209
|
+
"event": "PostToolUse",
|
|
210
|
+
"matcher": "",
|
|
211
|
+
"description": "Registra cada tool call en .planning/audit.jsonl para auditoría y cumplimiento",
|
|
212
|
+
"blocking": false,
|
|
213
|
+
"async": true,
|
|
214
|
+
"maxConsecutiveFailures": 5,
|
|
215
|
+
"degradeOnFailure": "skip"
|
|
216
|
+
},
|
|
217
|
+
"registro-turnos.js": {
|
|
218
|
+
"event": "PostToolUse",
|
|
219
|
+
"matcher": "",
|
|
220
|
+
"description": "Persiste cada turn en .planning/sessions/{id}/turns.jsonl con sanitización PII (OPT-IN: SWL_REGISTRO_TURNOS=1)",
|
|
221
|
+
"blocking": false,
|
|
222
|
+
"async": true,
|
|
223
|
+
"maxConsecutiveFailures": 5,
|
|
224
|
+
"degradeOnFailure": "skip"
|
|
225
|
+
},
|
|
226
|
+
"agente-lifecycle.js": {
|
|
227
|
+
"event": "SubagentStop",
|
|
228
|
+
"matcher": "",
|
|
229
|
+
"description": "Emite eventos de ciclo de vida al event-bus y actualiza execution-state al finalizar cada agente SWL",
|
|
230
|
+
"blocking": false,
|
|
231
|
+
"async": true,
|
|
232
|
+
"maxConsecutiveFailures": 5,
|
|
233
|
+
"degradeOnFailure": "skip"
|
|
234
|
+
},
|
|
235
|
+
"grafo-contexto.js": {
|
|
236
|
+
"event": "PreToolUse",
|
|
237
|
+
"matcher": "Glob|Grep|Read",
|
|
238
|
+
"description": "Inyecta resumen del grafo de dependencias SWL antes de búsquedas de archivos — reduce tool calls ~71x. Opt-in: silencioso si .planning/graph.json no existe.",
|
|
239
|
+
"blocking": false,
|
|
240
|
+
"async": false,
|
|
241
|
+
"maxConsecutiveFailures": 5,
|
|
242
|
+
"degradeOnFailure": "skip"
|
|
243
|
+
},
|
|
244
|
+
"calidad-typescript.js": {
|
|
245
|
+
"event": "PreToolUse",
|
|
246
|
+
"matcher": "Bash",
|
|
247
|
+
"description": "Verifica calidad TypeScript en archivos staged antes de git commit: any explícito, @ts-ignore sin justificación, double cast, tsc --noEmit",
|
|
248
|
+
"blocking": true,
|
|
249
|
+
"maxConsecutiveFailures": 3,
|
|
250
|
+
"degradeOnFailure": "warn"
|
|
251
|
+
},
|
|
252
|
+
"clasificador-mensajes.js": {
|
|
253
|
+
"event": "UserPromptSubmit",
|
|
254
|
+
"matcher": "",
|
|
255
|
+
"description": "Clasifica intención del mensaje del usuario e inyecta hints de routing para el orquestador (decisión, bug, requisito, arquitectura, etc.)",
|
|
256
|
+
"blocking": false,
|
|
257
|
+
"async": true,
|
|
258
|
+
"maxConsecutiveFailures": 5,
|
|
259
|
+
"degradeOnFailure": "skip"
|
|
260
|
+
},
|
|
261
|
+
"graph-update.js": {
|
|
262
|
+
"event": "PostToolUse",
|
|
263
|
+
"matcher": "Write|Edit",
|
|
264
|
+
"description": "Actualiza el grafo de code-review-graph automáticamente después de cada modificación de archivo",
|
|
265
|
+
"blocking": false,
|
|
266
|
+
"async": true,
|
|
267
|
+
"maxConsecutiveFailures": 5,
|
|
268
|
+
"degradeOnFailure": "skip"
|
|
269
|
+
},
|
|
270
|
+
"preservar-estado-pre-compact.js": {
|
|
271
|
+
"event": "PreCompact",
|
|
272
|
+
"matcher": "",
|
|
273
|
+
"description": "Preserva execution-state.json y task-queue.json antes de compactación de contexto para asegurar continuidad del plan",
|
|
274
|
+
"blocking": false,
|
|
275
|
+
"maxConsecutiveFailures": 3,
|
|
276
|
+
"degradeOnFailure": "skip"
|
|
277
|
+
},
|
|
278
|
+
"check-update.js": {
|
|
279
|
+
"event": "UserPromptSubmit",
|
|
280
|
+
"matcher": "",
|
|
281
|
+
"description": "Detecta actualizaciones disponibles de swl-ses comparando versión local vs npm registry (throttled 24h)",
|
|
282
|
+
"blocking": false,
|
|
283
|
+
"async": true,
|
|
284
|
+
"maxConsecutiveFailures": 5,
|
|
285
|
+
"degradeOnFailure": "skip"
|
|
286
|
+
},
|
|
287
|
+
"contexto-iteracion.js": {
|
|
288
|
+
"event": "UserPromptSubmit",
|
|
289
|
+
"matcher": "",
|
|
290
|
+
"description": "Anti-context-rot para loops iterativos: inyecta el estado de la corrida activa en .planning/loops/ (iteración, últimas filas del TSV, plateau/recomendación de trayectoria). Throttled a 1 inyección cada 4 min por corrida. Opt-out: SWL_CONTEXTO_ITERACION=0.",
|
|
291
|
+
"blocking": false,
|
|
292
|
+
"async": true,
|
|
293
|
+
"maxConsecutiveFailures": 5,
|
|
294
|
+
"degradeOnFailure": "skip"
|
|
295
|
+
},
|
|
296
|
+
"contexto-subagente.js": {
|
|
297
|
+
"event": "SubagentStart",
|
|
298
|
+
"matcher": "",
|
|
299
|
+
"description": "Re-inyecta a cada subagente las disciplinas transversales de la sesión (idioma es-MX, escalera de código mínimo con guardas, marcador simplificado:) — el contexto de SessionStart nunca llega a subagentes. Opt-out: SWL_CONTEXTO_SUBAGENTE=0.",
|
|
300
|
+
"blocking": false,
|
|
301
|
+
"async": false,
|
|
302
|
+
"maxConsecutiveFailures": 5,
|
|
303
|
+
"degradeOnFailure": "skip"
|
|
304
|
+
},
|
|
305
|
+
"guardrail-modelo.js": {
|
|
306
|
+
"event": "PreToolUse",
|
|
307
|
+
"matcher": "Task|Agent",
|
|
308
|
+
"description": "Guardrail semántico observacional: registra subagentes que podrían ejecutarse con un modelo menos costoso. Opt-in: SWL_GUARDRAIL_MODELO=1. Modo observacional — nunca bloquea.",
|
|
309
|
+
"blocking": false,
|
|
310
|
+
"async": false,
|
|
311
|
+
"optIn": "SWL_GUARDRAIL_MODELO",
|
|
312
|
+
"maxConsecutiveFailures": 5,
|
|
313
|
+
"degradeOnFailure": "skip"
|
|
314
|
+
},
|
|
315
|
+
"notificacion-sesion-stop.js": {
|
|
316
|
+
"event": "Stop",
|
|
317
|
+
"matcher": "",
|
|
318
|
+
"description": "Al terminar un turno con >=10 tool calls envía al gateway una notificación con contexto: modelo, llamadas, tokens, costo, archivos modificados y último tramo del transcript. Opt-in: requiere gateway habilitado en manifiestos/gateway-config.json. Opt-out: SWL_NOTIFICAR_STOP=0.",
|
|
319
|
+
"blocking": false,
|
|
320
|
+
"async": true,
|
|
321
|
+
"maxConsecutiveFailures": 5,
|
|
322
|
+
"degradeOnFailure": "skip"
|
|
323
|
+
},
|
|
324
|
+
"captura-feedback-usuario.js": {
|
|
325
|
+
"event": "UserPromptSubmit",
|
|
326
|
+
"matcher": "",
|
|
327
|
+
"description": "Detecta correcciones explícitas del usuario (no hagas X, prefiero Y, recuerda Z, nunca W) y las encola en .planning/evolution/feedback-queue.jsonl para consumo por perfilador-usuario-swl y el ciclo AGP. Patrones regex en español e inglés. Opt-out: SWL_CAPTURAR_FEEDBACK=0.",
|
|
328
|
+
"blocking": false,
|
|
329
|
+
"async": true,
|
|
330
|
+
"maxConsecutiveFailures": 5,
|
|
331
|
+
"degradeOnFailure": "skip"
|
|
332
|
+
},
|
|
333
|
+
"inbox-aviso.js": {
|
|
334
|
+
"event": "UserPromptSubmit",
|
|
335
|
+
"matcher": "",
|
|
336
|
+
"description": "Avisa cuando hay comandos pendientes en .planning/inbox/ enviados desde canales externos (Telegram vía gateway con relay). Inyecta additionalContext para que Claude sugiera ejecutar /swl:inbox. Opt-out: SWL_INBOX_AVISO=0.",
|
|
337
|
+
"blocking": false,
|
|
338
|
+
"async": true,
|
|
339
|
+
"maxConsecutiveFailures": 5,
|
|
340
|
+
"degradeOnFailure": "skip"
|
|
341
|
+
},
|
|
342
|
+
"aiisms-detector.js": {
|
|
343
|
+
"event": "PostToolUse",
|
|
344
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
345
|
+
"description": "Ejecuta detector portable Python contra archivos .md recién modificados y emite nudge a .planning/evolution/nudges.jsonl si encuentra al menos un AI-ism P0. No bloquea. Requiere Python 3.10+. Respeta auto-referencia (habilidades/estilo-sin-ai-isms/), .planning/, temp/, node_modules/. Opt-out: SWL_AIISMS_HOOK=0.",
|
|
346
|
+
"blocking": false,
|
|
347
|
+
"async": true,
|
|
348
|
+
"maxConsecutiveFailures": 5,
|
|
349
|
+
"degradeOnFailure": "skip"
|
|
350
|
+
},
|
|
351
|
+
"claudemd-bloat-detector.js": {
|
|
352
|
+
"event": "PostToolUse",
|
|
353
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
354
|
+
"description": "Ejecuta scripts/auditar-claudemd.js contra archivos CLAUDE.md recién modificados (basename exacto, no cualquier .md). Emite nudge a .planning/evolution/nudges.jsonl si veredicto != OK (líneas excesivas, bullets gigantes, secciones canónicas ausentes, sin @references, placeholders). Aplica ADR-0016 (best practices Anthropic 'The CLAUDE.md file'). No bloquea. Excluye temp/, node_modules/, respositorios-git/, .planning/. Opt-out: SWL_CLAUDEMD_BLOAT=0.",
|
|
355
|
+
"blocking": false,
|
|
356
|
+
"async": true,
|
|
357
|
+
"maxConsecutiveFailures": 5,
|
|
358
|
+
"degradeOnFailure": "skip"
|
|
359
|
+
},
|
|
360
|
+
"claudemd-duplicacion-detector.js": {
|
|
361
|
+
"event": "PostToolUse",
|
|
362
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
363
|
+
"description": "Detecta duplicación de reglas globales (~/.claude/rules/) inline en CLAUDE.md de proyecto. Consume scripts/lib/detector-reglas-duplicadas.js + catálogo scripts/lib/reglas-globales-conocidas.json. Aplica regla reglas/sin-duplicacion-reglas-globales.md. Emite nudge a .planning/evolution/nudges.jsonl si hay duplicaciones detectadas. No bloquea — kind: claudemd-duplicacion-reglas. Excluye temp/, node_modules/, respositorios-git/, .planning/, ~/.claude/ (user-level). Opt-out: SWL_CLAUDEMD_DUPLICACION=0.",
|
|
364
|
+
"blocking": false,
|
|
365
|
+
"async": true,
|
|
366
|
+
"maxConsecutiveFailures": 5,
|
|
367
|
+
"degradeOnFailure": "skip"
|
|
368
|
+
},
|
|
369
|
+
"tdd-gate.js": {
|
|
370
|
+
"event": "PreToolUse",
|
|
371
|
+
"matcher": "Bash",
|
|
372
|
+
"description": "Gate G2 (TDD): ante git commit de feature (fuente+tests staged) verifica evidencia de ciclo RED en .planning/loops/tdd-* (telemetria escrita por ejecutar-fase/tdd-workflow). Sin evidencia emite nudge kind:tdd-red-evidence (warn-only, NUNCA exit 2 en este modo). Solo aplica con fase activa (ciclo GSD); 'fuente sin tests' es dominio de G3 (sin doble nudge). Respeta opt-out declarado del CONTEXTO (**TDD**: off) y prefijos docs:/chore:/style:. Ventana de evidencia: 24h (SWL_TDD_GATE_VENTANA_H). Opt-out: SWL_TDD_GATE=0. Promocion a blocking via ADR-0035 (D-07).",
|
|
373
|
+
"blocking": false,
|
|
374
|
+
"async": false,
|
|
375
|
+
"maxConsecutiveFailures": 5,
|
|
376
|
+
"degradeOnFailure": "warn"
|
|
377
|
+
},
|
|
378
|
+
"spec-gate.js": {
|
|
379
|
+
"event": "PreToolUse",
|
|
380
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
381
|
+
"description": "Gate G0 (SDD): detecta Write/Edit a codigo fuente sin fase activa con PLAN aprobado. Lee .planning/locks/fase-activa.json (escrito por /swl:aprobar-plan) y re-computa SHA256 del plan referenciado; sin fase activa o plan mutado emite nudge kind:spec-gate (warn-only, NUNCA exit 2 en este modo). Zero-config: sin .planning/ sale silencioso. Excluye tests/generados/docs (clasificador esArchivoFuente de calidad-pre-commit) y temp/, node_modules/, _userland/, respositorios-git/. Opt-out: SWL_SPEC_GATE=0. Promocion a blocking via ADR-0034 tras ~2 semanas de calibracion (D-07).",
|
|
382
|
+
"blocking": false,
|
|
383
|
+
"async": false,
|
|
384
|
+
"maxConsecutiveFailures": 5,
|
|
385
|
+
"degradeOnFailure": "warn"
|
|
386
|
+
},
|
|
387
|
+
"validar-intent-spec.js": {
|
|
388
|
+
"event": "PostToolUse",
|
|
389
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
390
|
+
"description": "Verifica que agentes nivelRiesgo:ALTO declaren las 6 partes del framework Intent Engineering (strategy, healthMetrics, steering, hardGuardrails, maxTurnos, fragmentos:[_intent-spec]) segun reglas/intent-engineering.md. Solo aplica a agentes/*.md no fragmentos. Emite nudge a .planning/evolution/nudges.jsonl y BLOQUEA (exit 2) si faltan campos. Excluye temp/, node_modules/, respositorios-git/, _userland/, .planning/. Opt-out: SWL_INTENT_SPEC=0. ADR-0027 (warn-only) -> ADR-0033 (blocking, 2026-06-11).",
|
|
391
|
+
"blocking": true,
|
|
392
|
+
"async": false,
|
|
393
|
+
"maxConsecutiveFailures": 5,
|
|
394
|
+
"degradeOnFailure": "warn"
|
|
395
|
+
},
|
|
396
|
+
"notificacion-telegram.js": {
|
|
397
|
+
"event": "Stop",
|
|
398
|
+
"matcher": "",
|
|
399
|
+
"description": "Envía notificación Telegram al terminar un turno. Muestra último mensaje del asistente, proyecto y estado. Best-effort: siempre exit 0. Requiere ~/.claude/notifications/.env con TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID. Opt-out: SWL_NOTIFICACIONES_TELEGRAM=0.",
|
|
400
|
+
"blocking": false,
|
|
401
|
+
"async": true,
|
|
402
|
+
"maxConsecutiveFailures": 5,
|
|
403
|
+
"degradeOnFailure": "skip"
|
|
404
|
+
},
|
|
405
|
+
"notificacion-telegram-notification.js": {
|
|
406
|
+
"event": "Notification",
|
|
407
|
+
"matcher": "",
|
|
408
|
+
"description": "Envía notificación Telegram cuando Claude espera respuesta del usuario (permisos, idle, atención requerida). Best-effort: siempre exit 0. Comparte implementación con notificacion-telegram.js. Opt-out: SWL_NOTIFICACIONES_TELEGRAM=0.",
|
|
409
|
+
"blocking": false,
|
|
410
|
+
"async": true,
|
|
411
|
+
"maxConsecutiveFailures": 5,
|
|
412
|
+
"degradeOnFailure": "skip"
|
|
413
|
+
},
|
|
414
|
+
"notificacion-telegram-subagent.js": {
|
|
415
|
+
"event": "SubagentStop",
|
|
416
|
+
"matcher": "",
|
|
417
|
+
"description": "Envía notificación Telegram cuando un subagente termina su turno. INERTE por default: SubagentStop no está en los eventos default del script compartido porque duplica la notificación del Stop final (mismo cuerpo, dos mensajes). Activar con CLAUDE_NOTIFY_EVENTS=Stop,Notification,SubagentStop. Best-effort: siempre exit 0. Opt-out global: SWL_NOTIFICACIONES_TELEGRAM=0.",
|
|
418
|
+
"blocking": false,
|
|
419
|
+
"async": true,
|
|
420
|
+
"maxConsecutiveFailures": 5,
|
|
421
|
+
"degradeOnFailure": "skip"
|
|
422
|
+
},
|
|
423
|
+
"auto-restaurar-settings.js": {
|
|
424
|
+
"event": "SessionStart",
|
|
425
|
+
"matcher": "",
|
|
426
|
+
"description": "Al inicio de cada sesión verifica que ~/.claude/settings.json contiene los hooks SWL registrados en ~/.claude/notifications/baseline-hooks.json. Si falta alguno, los restaura preservando todos los hooks ajenos al baseline. Backup obligatorio antes de cada modificación. Opt-out: SWL_NOTIFICACIONES_TELEGRAM=0.",
|
|
427
|
+
"blocking": false,
|
|
428
|
+
"async": false,
|
|
429
|
+
"maxConsecutiveFailures": 5,
|
|
430
|
+
"degradeOnFailure": "skip"
|
|
431
|
+
},
|
|
432
|
+
"session-briefing.js": {
|
|
433
|
+
"event": "SessionStart",
|
|
434
|
+
"matcher": "",
|
|
435
|
+
"description": "Briefing proactivo de inicio de sesión (Fase 12, ADR-0036): digest no solicitado de señales accionables del proyecto destino — ADRs Propuestos con reevaluación vencida, deuda con trigger por fecha cumplido, nudges sin accionar, gates en calibración con ventana cumplida, y trabajo de retoma pendiente. Máximo 5 ítems con acción ejecutable; silencio total sin señales nuevas; dedupe diario. Solo filesystem, presupuesto <200ms. Opt-out: SWL_BRIEFING=0.",
|
|
436
|
+
"blocking": false,
|
|
437
|
+
"async": false,
|
|
438
|
+
"maxConsecutiveFailures": 5,
|
|
439
|
+
"degradeOnFailure": "skip"
|
|
440
|
+
},
|
|
441
|
+
"captura-acciones-post.js": {
|
|
442
|
+
"event": "PostToolUse",
|
|
443
|
+
"matcher": "",
|
|
444
|
+
"description": "Captura señales de ACCIÓN del usuario (Fase 17): registra SHAs de commits del agente y hashes de escrituras (Write/Edit/MultiEdit), y detecta edición manual en caliente al re-leer un archivo modificado fuera de sesión. Encola en feedback-queue.jsonl con tipo:\"accion\" (esquema extendido backward-compatible). Sanitización PII obligatoria de evidencia. Opt-out: SWL_CAPTURAR_FEEDBACK=0.",
|
|
445
|
+
"blocking": false,
|
|
446
|
+
"async": true,
|
|
447
|
+
"maxConsecutiveFailures": 5,
|
|
448
|
+
"degradeOnFailure": "skip"
|
|
449
|
+
},
|
|
450
|
+
"captura-acciones-session.js": {
|
|
451
|
+
"event": "SessionStart",
|
|
452
|
+
"matcher": "",
|
|
453
|
+
"description": "Detecta señales de ACCIÓN del usuario ocurridas fuera de sesión (Fase 17): revert/reset de commits del agente, edición neta de archivos escritos por el agente, rechazo de plan y override de veredicto. Encola en feedback-queue.jsonl con tipo:\"accion\"; NO muestra al modelo (solo persiste). Skip si no hay repo git; presupuesto p95<400ms. Opt-out: SWL_CAPTURAR_FEEDBACK=0.",
|
|
454
|
+
"blocking": false,
|
|
455
|
+
"async": false,
|
|
456
|
+
"maxConsecutiveFailures": 5,
|
|
457
|
+
"degradeOnFailure": "skip"
|
|
458
|
+
},
|
|
459
|
+
"validar-planning-paths.js": {
|
|
460
|
+
"event": "PostToolUse",
|
|
461
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
462
|
+
"description": "Advierte cuando una sesion crea un directorio top-level NUEVO en .planning/ fuera de la allowlist canonica (manifiestos/planning-paths.json). Atrapa divergencias es/en (auditoria/ vs audit/, ux/ vs design/) antes de que proliferen. Aplica reglas/analizar-directorios-antes-de-escribir.md, cierra DT-PLANNING-OUTPUT-PATHS (ADR-0031). Emite nudge kind: planning-path-divergente a .planning/evolution/nudges.jsonl. No bloquea (warn-only). Opt-out: SWL_PLANNING_PATHS=0.",
|
|
463
|
+
"blocking": false,
|
|
464
|
+
"async": true,
|
|
465
|
+
"maxConsecutiveFailures": 5,
|
|
466
|
+
"degradeOnFailure": "skip"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|