@saulwade/swl-ses 1.3.7 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CLAUDE.md +12 -4
  2. package/README.md +1 -1
  3. package/bin/swl-mcp-server.js +187 -187
  4. package/bin/swl-webhook-server.js +198 -0
  5. package/comandos/swl/.evolved.json +22 -22
  6. package/comandos/swl/adoptar-proyecto.md +21 -1
  7. package/comandos/swl/claudemd.md +14 -1
  8. package/comandos/swl/contribuir.md +233 -233
  9. package/comandos/swl/exportar-vault.md +207 -7
  10. package/comandos/swl/nuevo-proyecto.md +24 -2
  11. package/gateway/adapters/base.js +109 -0
  12. package/gateway/adapters/discord.js +167 -0
  13. package/gateway/adapters/email.js +221 -0
  14. package/gateway/adapters/slack.js +192 -0
  15. package/gateway/adapters/telegram.js +183 -0
  16. package/gateway/adapters/webhook.js +113 -0
  17. package/gateway/adapters/whatsapp.js +214 -0
  18. package/gateway/agent-executor.js +322 -0
  19. package/gateway/command-relay.js +271 -0
  20. package/gateway/cron/jobs.js +263 -0
  21. package/gateway/cron/scheduler.js +322 -0
  22. package/gateway/cron/store.js +335 -0
  23. package/gateway/index.js +320 -0
  24. package/gateway/lib/event-channel.js +191 -0
  25. package/gateway/session.js +131 -0
  26. package/gateway/webhook-server.js +324 -0
  27. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  28. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  29. package/habilidades/build-errors-nextjs/SKILL.md +55 -1
  30. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  31. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  32. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  33. package/habilidades/eval-framework/SKILL.md +212 -212
  34. package/habilidades/extractor-de-aprendizajes/SKILL.md +24 -10
  35. package/habilidades/harness-claude-code/SKILL.md +299 -299
  36. package/habilidades/infra-github-actions/SKILL.md +166 -166
  37. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  38. package/habilidades/manejo-errores/.evolved.json +8 -8
  39. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  40. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  41. package/habilidades/nextjs-testing/SKILL.md +89 -5
  42. package/habilidades/node-experto/SKILL.md +37 -1
  43. package/habilidades/patrones-python/SKILL.md +229 -229
  44. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  45. package/habilidades/planear-fase/SKILL.md +319 -319
  46. package/habilidades/react-experto/SKILL.md +45 -4
  47. package/habilidades/release-semver/.evolved.json +8 -8
  48. package/habilidades/swl-claudemd/SKILL.md +15 -1
  49. package/habilidades/tdd-workflow/SKILL.md +36 -4
  50. package/habilidades/testing-python/SKILL.md +340 -340
  51. package/hooks/claudemd-bloat-detector.js +161 -161
  52. package/hooks/inyeccion-contexto.js +8 -3
  53. package/hooks/lib/agent-routing.js +107 -107
  54. package/hooks/lib/auto-consolidator.js +335 -335
  55. package/hooks/lib/error-classifier.js +308 -308
  56. package/hooks/lib/merkle-audit.js +96 -96
  57. package/hooks/lib/provenance-tracker.js +191 -191
  58. package/hooks/lib/rate-limit-ip.js +177 -0
  59. package/hooks/lib/rate-limit-tracker.js +253 -253
  60. package/hooks/lib/resource-quota.js +122 -122
  61. package/hooks/lib/retry-jitter.js +165 -165
  62. package/hooks/lib/skill-auditor.js +588 -588
  63. package/hooks/lib/sync-status.js +228 -228
  64. package/hooks/lib/taint-tracker.js +107 -107
  65. package/hooks/lib/text-similarity.js +241 -241
  66. package/hooks/lib/toon-compressor.js +245 -245
  67. package/hooks/lib/webhook-dedup.js +184 -0
  68. package/hooks/lib/webhook-verify.js +123 -0
  69. package/hooks/proteccion-rutas.js +120 -15
  70. package/hooks/registro-turnos.js +209 -209
  71. package/hooks/sugerir-regenerar-inventario.js +170 -170
  72. package/hooks/validar-formato-post-subagente.js +140 -140
  73. package/hooks/validar-memoria-hook.js +218 -218
  74. package/instintos/prompt-appendices.yaml +57 -57
  75. package/manifiestos/agent-output-schemas.json +57 -57
  76. package/manifiestos/modulos.json +1 -0
  77. package/manifiestos/skills-lock.json +37 -37
  78. package/package.json +5 -3
  79. package/plantillas/auditor-veto-template.md +105 -105
  80. package/plantillas/github-workflows/README.md +47 -47
  81. package/plantillas/github-workflows/release-please.yml +44 -44
  82. package/plantillas/github-workflows/swl-ci.yml +107 -107
  83. package/plantillas/github-workflows/swl-security.yml +51 -51
  84. package/plugin.json +1 -1
  85. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  86. package/reglas/arreglar-al-detectar.md +147 -147
  87. package/reglas/fragmentos-compartidos.md +152 -152
  88. package/reglas/harness-claude-code.md +213 -213
  89. package/reglas/usar-context7.md +226 -226
  90. package/reglas/usar-sistema-swl.md +251 -0
  91. package/schemas/diary-entry.schema.json +80 -80
  92. package/scripts/benchmark-memoria.js +167 -167
  93. package/scripts/comandos/skills.js +251 -2
  94. package/scripts/configurar-branch-protection.js +418 -418
  95. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  96. package/scripts/field-report.js +199 -199
  97. package/scripts/generar-checklists-consolidados.js +273 -273
  98. package/scripts/generar-inventario.js +420 -420
  99. package/scripts/generar-matriz-lenguajes.js +271 -271
  100. package/scripts/lib/artefactos-python.js +43 -43
  101. package/scripts/lib/benchmark-metrics.js +160 -160
  102. package/scripts/lib/budget-enforcer.js +252 -252
  103. package/scripts/lib/configurar-ci.js +380 -380
  104. package/scripts/lib/contadores-inventario.js +217 -217
  105. package/scripts/lib/detectar-stack-detallado.js +307 -307
  106. package/scripts/lib/diary-entry.js +234 -234
  107. package/scripts/lib/eval-metrics-store.js +218 -218
  108. package/scripts/lib/eval-quality.js +171 -171
  109. package/scripts/lib/eval-schemas.js +144 -144
  110. package/scripts/lib/eval-self-correct.js +106 -106
  111. package/scripts/lib/eval-validator.js +185 -185
  112. package/scripts/lib/jaccard-similarity.js +98 -98
  113. package/scripts/lib/longmemeval-runner.js +125 -125
  114. package/scripts/lib/npm-version.js +261 -261
  115. package/scripts/lib/paquetes-conocidos.js +50 -50
  116. package/scripts/lib/prompt-builder.js +264 -264
  117. package/scripts/lib/rrf-fusion.js +175 -175
  118. package/scripts/lib/scoring-instintos.js +277 -277
  119. package/scripts/lib/semantic-search.js +252 -252
  120. package/scripts/limpiar-artefactos-python.js +131 -131
  121. package/scripts/mcp-server/README.md +128 -128
  122. package/scripts/mcp-server/handlers.js +206 -206
  123. package/scripts/migrar-csv-a-array.js +168 -168
  124. package/scripts/migrar-fase-dominio.js +201 -201
  125. package/scripts/publicar.js +511 -511
  126. package/scripts/run-eval.js +141 -141
  127. package/scripts/validar-manifest.js +195 -195
  128. package/scripts/validar-userland-vacio.js +110 -110
  129. package/scripts/verificar-release.js +110 -0
@@ -1,213 +1,213 @@
1
- # Regla: Harness de Claude Code — disciplina operacional
2
-
3
- Esta regla aplica al uso operativo de Claude Code (CLI / Desktop / IDE).
4
- Define las prácticas que protegen la economía de tokens, el cache de prompt y
5
- la calidad de las respuestas. Origen: artículo "Claude Code's Limits Are
6
- Generous. The Problem Is Your Harness." más experiencia operativa SWL.
7
-
8
- El harness es el conjunto de configuración + sesión + tools + modelo que
9
- rodea a Claude. Anthropic provee el modelo; el harness lo provees tú. Una
10
- mala disciplina del harness convierte una suscripción Max generosa en
11
- "se acabó la cuota en 2 días".
12
-
13
- ---
14
-
15
- ## Disciplina del cache de prompt
16
-
17
- El prompt cache es la palanca económica más grande de Claude Code:
18
-
19
- - **Cache read**: 0.1× del precio de input (90% de descuento).
20
- - **Cache write 5min TTL**: 1.25×.
21
- - **Cache write 1h TTL**: 2× (solo API, no incluido en Pro/Max/Team).
22
- - **Cache refresh on hit**: gratis (se cobra al precio read).
23
-
24
- Cada hit en un prefijo cacheado resetea su TTL sin costo. Una sesión larga
25
- con uso constante de tools mantiene el prefijo caliente indefinidamente
26
- **siempre que el prefijo no cambie**.
27
-
28
- ### Reglas de cache discipline
29
-
30
- - **NUNCA agregues o quites MCP servers a mitad de sesión.** Modifica
31
- `.claude/settings.json` antes de iniciar Claude Code, no durante.
32
- - **NUNCA uses `/model` a mitad de sesión.** Cambiar de modelo invalida
33
- el prefijo cacheado y fuerza una re-lectura completa.
34
- - **NUNCA modifiques la lista de tools permitidos a mitad de sesión.**
35
- Agregar o quitar tools cambia el prefijo del system prompt.
36
- - **Lock-at-session-start**: define configuración, modelo, MCP servers y
37
- tools permitidos antes de iniciar. Si necesitas cambiar algo, abre una
38
- sesión nueva con `/clear` o cierra y reinicia.
39
- - **Hit rate sano**: ~90% en el TTL de 5 minutos por defecto. Si el hit
40
- rate cae por debajo del 80%, hay algo en el harness que invalida el
41
- prefijo entre turnos.
42
-
43
- ### Cuándo SÍ es OK abrir nueva sesión
44
-
45
- - Cambio de proyecto / repo.
46
- - Cambio entre tareas no relacionadas (frontend vs. backend).
47
- - Tras un turno que salió mal y quiere descartarse (`/rewind` o `/clear`).
48
- - Cada 30+ turnos en sesiones de exploración para evitar context-rot.
49
-
50
- ---
51
-
52
- ## Manejo de contexto
53
-
54
- ### Variables de entorno opt-in (recomendadas para sesiones largas)
55
-
56
- ```jsonc
57
- // .claude/settings.json (sección env)
58
- {
59
- "env": {
60
- "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1", // forzar 200K en lugar de 1M
61
- "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80" // disparar auto-compact al 80%
62
- }
63
- }
64
- ```
65
-
66
- - **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`** desactiva la variante 1M de Opus
67
- 4.7 y vuelve al techo histórico de 200K. Útil cuando el codebase del
68
- usuario no requiere 1M y se quiere reducir costo de tokens. **NO se
69
- recomienda como default universal** — solo si el usuario detecta
70
- context bloat real.
71
- - **`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=80`** ajusta el umbral del
72
- auto-compact. Disparar al 80% en lugar del default permite que la
73
- compactación ocurra antes de que el contexto sature.
74
-
75
- ### Cinco movimientos de sesión
76
-
77
- - **`/compact` al 50% de uso o tras cada tarea grande.** No esperes al
78
- auto. La compactación tardía empuja el contexto encima del threshold y
79
- obliga a recargar prefijo.
80
- - **`/clear` entre tareas no relacionadas.** Sesión nueva = prefijo
81
- fresco, sin lastre acumulado.
82
- - **`/rewind` cuando un turno salió mal.** Más barato que pelear con
83
- contexto contaminado.
84
- - **Sub-agentes** para trabajo bulk-mecánico, búsqueda en codebase, o
85
- procesamiento de archivos grandes (PDF→TLDR). El padre conserva
86
- contexto limpio.
87
- - **Tag files con `@`**: en lugar de pedirle a Claude que busque, pásale
88
- la ruta directamente. `@docs/diseno.md` evita un round-trip de grep.
89
-
90
- ---
91
-
92
- ## Routing de modelos y effort
93
-
94
- ### Escoger el modelo al inicio (no a media sesión)
95
-
96
- - **Sonnet session**: más barato, sin acceso a Opus en el padre. Bueno
97
- cuando se sabe que el trabajo cabe en Sonnet.
98
- - **Opus session + delegate**: pagar Opus solo en el padre (planning,
99
- tradeoffs); delegar trabajo táctico a sub-agentes Sonnet/Haiku. Default
100
- para trabajo mixto.
101
- - Cambiar de modelo a media sesión invalida el cache (regla de cache
102
- discipline arriba). Si necesitas otro modelo, abre nueva sesión.
103
-
104
- ### `/effort` per-prompt (no per-session)
105
-
106
- ```
107
- /effort low # fixes rápidos, tareas mecánicas
108
- /effort medium # la mayoría de prompts (gran ahorro vs default)
109
- /effort high # razonamiento exigente
110
- /effort xhigh # default para coding agéntico (4.7)
111
- /effort max # diminishing returns, raramente vale el ~2× costo extra
112
- ```
113
-
114
- El effort se aplica al **prompt** que lo necesita, no al resto de la
115
- sesión. Subir a `max` por reflejo en cada turno duplica el costo sin
116
- mejora observable.
117
-
118
- ---
119
-
120
- ## Disciplina de input format
121
-
122
- Algunos formatos consumen muchos más tokens de los necesarios:
123
-
124
- - **PDFs**: usar `pdftotext` o `markitdown` ANTES, no el Read tool con
125
- PDF directo (Read carga PDF como imágenes). Ver `reglas/markitdown.md`.
126
- - **Páginas web dinámicas**: `agent-browser` (vía accessibility tree)
127
- reduce ~82% tokens vs Playwright MCP / screenshots.
128
- - **Repos grandes (>500 archivos)**: considerar `code-review-graph` pip
129
- (opt-in) que reduce 6.8-49× tokens por review al leer solo blast
130
- radius. Documentado en `MANUAL_USO.md` sección "Dependencias externas".
131
- - **Spec prompts > vague prompts**: incluir rutas de archivo, componentes
132
- esperados, I/O y restricciones. Vago = más turnos = más tokens.
133
-
134
- ---
135
-
136
- ## Carga lean de componentes
137
-
138
- - Desactivar MCP servers no usados en `.claude/settings.json`.
139
- - Mover reglas largas de CLAUDE.md a skills cargados bajo demanda
140
- (progressive disclosure SWL ya hace esto).
141
- - Comandos slash `/swl:*` que no usas no cuestan tokens si no se invocan.
142
- - Skills oficiales de Anthropic: solo agregar los que aplican al
143
- proyecto (Office docs solo si trabajas con Office, etc.).
144
-
145
- ---
146
-
147
- ## Anti-patrones
148
-
149
- - **Invocar Claude Code y luego decidir el modelo**: invalida cache cada
150
- vez que cambias de opinión.
151
- - **Agregar un MCP server "temporal" durante la sesión**: el costo de
152
- invalidar el prefijo cacheado supera lo que el server agrega.
153
- - **Re-leer manualmente archivos que ya están en contexto**: si Claude
154
- ya leyó X, pedirle que lo lea de nuevo es token waste.
155
- - **No usar `/compact` y esperar al auto-compact**: el auto dispara
156
- TARDE. Compactar proactivamente al 50% es siempre más eficiente.
157
- - **`/effort max` por reflejo**: 2× costo de xhigh con mejora marginal
158
- fuera de tareas que requieran razonamiento profundo.
159
- - **PDFs vía Read tool sin extraer texto antes**: 10× más tokens que
160
- pasar por `markitdown` o `pdftotext`.
161
-
162
- ---
163
-
164
- ## Observabilidad — watch the number
165
-
166
- SWL incluye:
167
-
168
- - **`/swl:dashboard`** — dashboard histórico de uso (basado en
169
- `phuryn/claude-usage`).
170
- - **`/swl:metricas`** — métricas de la sesión actual (tokens, costo
171
- estimado, modelos usados).
172
- - **`hooks/linea-estado.js`** — barra de estado con porcentaje de
173
- contexto consumido (con detección dinámica del techo según modelo —
174
- ver fix v5.12.4).
175
- - **`hooks/monitor-contexto.js`** — alertas WARNING (≥65%) y CRITICAL
176
- (≥75%) cuando el contexto se llena.
177
-
178
- Si no ves el hit rate de cache, no puedes optimizarlo. Para uso intenso
179
- considera dashboard externo en `platform.claude.com/usage/cache` (solo
180
- API users).
181
-
182
- ---
183
-
184
- ## Checklist de harness antes de empezar una sesión larga
185
-
186
- - [ ] `.claude/settings.json` con MCP servers necesarios YA configurado
187
- - [ ] Modelo elegido y bloqueado (no se cambiará durante la sesión)
188
- - [ ] Tools permitidos definidos en `.claude/settings.json`, no se
189
- modificarán mid-session
190
- - [ ] Variables de entorno (`CLAUDE_CODE_DISABLE_1M_CONTEXT`,
191
- `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`) configuradas si es sesión larga
192
- - [ ] CLAUDE.md del proyecto referencia archivos clave para que Claude
193
- no haga grep innecesario
194
- - [ ] Para repos grandes: `code-review-graph` instalado (opt-in)
195
- - [ ] Estrategia de delegación clara: qué se manda a sub-agente y qué
196
- se mantiene en el padre
197
- - [ ] PDFs / Office docs serán pre-procesados con `markitdown` antes de
198
- Read
199
-
200
- ---
201
-
202
- ## Cómo cargar esta regla
203
-
204
- Esta regla no es de carga obligatoria global. Cargar cuando:
205
-
206
- - El usuario reporta "se acabó la cuota antes de tiempo".
207
- - Se diagnostica context-rot u alertas críticas falsas/persistentes.
208
- - Se prepara una sesión de trabajo larga (>2h) con Opus.
209
- - Se planifica adopción de MCP servers nuevos en un proyecto.
210
-
211
- Para detalles operacionales adicionales (workflow de las 5 session moves,
212
- cuándo usar cada effort level, integración con SWL), cargar también
213
- `Skill("harness-claude-code")`.
1
+ # Regla: Harness de Claude Code — disciplina operacional
2
+
3
+ Esta regla aplica al uso operativo de Claude Code (CLI / Desktop / IDE).
4
+ Define las prácticas que protegen la economía de tokens, el cache de prompt y
5
+ la calidad de las respuestas. Origen: artículo "Claude Code's Limits Are
6
+ Generous. The Problem Is Your Harness." más experiencia operativa SWL.
7
+
8
+ El harness es el conjunto de configuración + sesión + tools + modelo que
9
+ rodea a Claude. Anthropic provee el modelo; el harness lo provees tú. Una
10
+ mala disciplina del harness convierte una suscripción Max generosa en
11
+ "se acabó la cuota en 2 días".
12
+
13
+ ---
14
+
15
+ ## Disciplina del cache de prompt
16
+
17
+ El prompt cache es la palanca económica más grande de Claude Code:
18
+
19
+ - **Cache read**: 0.1× del precio de input (90% de descuento).
20
+ - **Cache write 5min TTL**: 1.25×.
21
+ - **Cache write 1h TTL**: 2× (solo API, no incluido en Pro/Max/Team).
22
+ - **Cache refresh on hit**: gratis (se cobra al precio read).
23
+
24
+ Cada hit en un prefijo cacheado resetea su TTL sin costo. Una sesión larga
25
+ con uso constante de tools mantiene el prefijo caliente indefinidamente
26
+ **siempre que el prefijo no cambie**.
27
+
28
+ ### Reglas de cache discipline
29
+
30
+ - **NUNCA agregues o quites MCP servers a mitad de sesión.** Modifica
31
+ `.claude/settings.json` antes de iniciar Claude Code, no durante.
32
+ - **NUNCA uses `/model` a mitad de sesión.** Cambiar de modelo invalida
33
+ el prefijo cacheado y fuerza una re-lectura completa.
34
+ - **NUNCA modifiques la lista de tools permitidos a mitad de sesión.**
35
+ Agregar o quitar tools cambia el prefijo del system prompt.
36
+ - **Lock-at-session-start**: define configuración, modelo, MCP servers y
37
+ tools permitidos antes de iniciar. Si necesitas cambiar algo, abre una
38
+ sesión nueva con `/clear` o cierra y reinicia.
39
+ - **Hit rate sano**: ~90% en el TTL de 5 minutos por defecto. Si el hit
40
+ rate cae por debajo del 80%, hay algo en el harness que invalida el
41
+ prefijo entre turnos.
42
+
43
+ ### Cuándo SÍ es OK abrir nueva sesión
44
+
45
+ - Cambio de proyecto / repo.
46
+ - Cambio entre tareas no relacionadas (frontend vs. backend).
47
+ - Tras un turno que salió mal y quiere descartarse (`/rewind` o `/clear`).
48
+ - Cada 30+ turnos en sesiones de exploración para evitar context-rot.
49
+
50
+ ---
51
+
52
+ ## Manejo de contexto
53
+
54
+ ### Variables de entorno opt-in (recomendadas para sesiones largas)
55
+
56
+ ```jsonc
57
+ // .claude/settings.json (sección env)
58
+ {
59
+ "env": {
60
+ "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1", // forzar 200K en lugar de 1M
61
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80" // disparar auto-compact al 80%
62
+ }
63
+ }
64
+ ```
65
+
66
+ - **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`** desactiva la variante 1M de Opus
67
+ 4.7 y vuelve al techo histórico de 200K. Útil cuando el codebase del
68
+ usuario no requiere 1M y se quiere reducir costo de tokens. **NO se
69
+ recomienda como default universal** — solo si el usuario detecta
70
+ context bloat real.
71
+ - **`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=80`** ajusta el umbral del
72
+ auto-compact. Disparar al 80% en lugar del default permite que la
73
+ compactación ocurra antes de que el contexto sature.
74
+
75
+ ### Cinco movimientos de sesión
76
+
77
+ - **`/compact` al 50% de uso o tras cada tarea grande.** No esperes al
78
+ auto. La compactación tardía empuja el contexto encima del threshold y
79
+ obliga a recargar prefijo.
80
+ - **`/clear` entre tareas no relacionadas.** Sesión nueva = prefijo
81
+ fresco, sin lastre acumulado.
82
+ - **`/rewind` cuando un turno salió mal.** Más barato que pelear con
83
+ contexto contaminado.
84
+ - **Sub-agentes** para trabajo bulk-mecánico, búsqueda en codebase, o
85
+ procesamiento de archivos grandes (PDF→TLDR). El padre conserva
86
+ contexto limpio.
87
+ - **Tag files con `@`**: en lugar de pedirle a Claude que busque, pásale
88
+ la ruta directamente. `@docs/diseno.md` evita un round-trip de grep.
89
+
90
+ ---
91
+
92
+ ## Routing de modelos y effort
93
+
94
+ ### Escoger el modelo al inicio (no a media sesión)
95
+
96
+ - **Sonnet session**: más barato, sin acceso a Opus en el padre. Bueno
97
+ cuando se sabe que el trabajo cabe en Sonnet.
98
+ - **Opus session + delegate**: pagar Opus solo en el padre (planning,
99
+ tradeoffs); delegar trabajo táctico a sub-agentes Sonnet/Haiku. Default
100
+ para trabajo mixto.
101
+ - Cambiar de modelo a media sesión invalida el cache (regla de cache
102
+ discipline arriba). Si necesitas otro modelo, abre nueva sesión.
103
+
104
+ ### `/effort` per-prompt (no per-session)
105
+
106
+ ```
107
+ /effort low # fixes rápidos, tareas mecánicas
108
+ /effort medium # la mayoría de prompts (gran ahorro vs default)
109
+ /effort high # razonamiento exigente
110
+ /effort xhigh # default para coding agéntico (4.7)
111
+ /effort max # diminishing returns, raramente vale el ~2× costo extra
112
+ ```
113
+
114
+ El effort se aplica al **prompt** que lo necesita, no al resto de la
115
+ sesión. Subir a `max` por reflejo en cada turno duplica el costo sin
116
+ mejora observable.
117
+
118
+ ---
119
+
120
+ ## Disciplina de input format
121
+
122
+ Algunos formatos consumen muchos más tokens de los necesarios:
123
+
124
+ - **PDFs**: usar `pdftotext` o `markitdown` ANTES, no el Read tool con
125
+ PDF directo (Read carga PDF como imágenes). Ver `reglas/markitdown.md`.
126
+ - **Páginas web dinámicas**: `agent-browser` (vía accessibility tree)
127
+ reduce ~82% tokens vs Playwright MCP / screenshots.
128
+ - **Repos grandes (>500 archivos)**: considerar `code-review-graph` pip
129
+ (opt-in) que reduce 6.8-49× tokens por review al leer solo blast
130
+ radius. Documentado en `MANUAL_USO.md` sección "Dependencias externas".
131
+ - **Spec prompts > vague prompts**: incluir rutas de archivo, componentes
132
+ esperados, I/O y restricciones. Vago = más turnos = más tokens.
133
+
134
+ ---
135
+
136
+ ## Carga lean de componentes
137
+
138
+ - Desactivar MCP servers no usados en `.claude/settings.json`.
139
+ - Mover reglas largas de CLAUDE.md a skills cargados bajo demanda
140
+ (progressive disclosure SWL ya hace esto).
141
+ - Comandos slash `/swl:*` que no usas no cuestan tokens si no se invocan.
142
+ - Skills oficiales de Anthropic: solo agregar los que aplican al
143
+ proyecto (Office docs solo si trabajas con Office, etc.).
144
+
145
+ ---
146
+
147
+ ## Anti-patrones
148
+
149
+ - **Invocar Claude Code y luego decidir el modelo**: invalida cache cada
150
+ vez que cambias de opinión.
151
+ - **Agregar un MCP server "temporal" durante la sesión**: el costo de
152
+ invalidar el prefijo cacheado supera lo que el server agrega.
153
+ - **Re-leer manualmente archivos que ya están en contexto**: si Claude
154
+ ya leyó X, pedirle que lo lea de nuevo es token waste.
155
+ - **No usar `/compact` y esperar al auto-compact**: el auto dispara
156
+ TARDE. Compactar proactivamente al 50% es siempre más eficiente.
157
+ - **`/effort max` por reflejo**: 2× costo de xhigh con mejora marginal
158
+ fuera de tareas que requieran razonamiento profundo.
159
+ - **PDFs vía Read tool sin extraer texto antes**: 10× más tokens que
160
+ pasar por `markitdown` o `pdftotext`.
161
+
162
+ ---
163
+
164
+ ## Observabilidad — watch the number
165
+
166
+ SWL incluye:
167
+
168
+ - **`/swl:dashboard`** — dashboard histórico de uso (basado en
169
+ `phuryn/claude-usage`).
170
+ - **`/swl:metricas`** — métricas de la sesión actual (tokens, costo
171
+ estimado, modelos usados).
172
+ - **`hooks/linea-estado.js`** — barra de estado con porcentaje de
173
+ contexto consumido (con detección dinámica del techo según modelo —
174
+ ver fix v5.12.4).
175
+ - **`hooks/monitor-contexto.js`** — alertas WARNING (≥65%) y CRITICAL
176
+ (≥75%) cuando el contexto se llena.
177
+
178
+ Si no ves el hit rate de cache, no puedes optimizarlo. Para uso intenso
179
+ considera dashboard externo en `platform.claude.com/usage/cache` (solo
180
+ API users).
181
+
182
+ ---
183
+
184
+ ## Checklist de harness antes de empezar una sesión larga
185
+
186
+ - [ ] `.claude/settings.json` con MCP servers necesarios YA configurado
187
+ - [ ] Modelo elegido y bloqueado (no se cambiará durante la sesión)
188
+ - [ ] Tools permitidos definidos en `.claude/settings.json`, no se
189
+ modificarán mid-session
190
+ - [ ] Variables de entorno (`CLAUDE_CODE_DISABLE_1M_CONTEXT`,
191
+ `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`) configuradas si es sesión larga
192
+ - [ ] CLAUDE.md del proyecto referencia archivos clave para que Claude
193
+ no haga grep innecesario
194
+ - [ ] Para repos grandes: `code-review-graph` instalado (opt-in)
195
+ - [ ] Estrategia de delegación clara: qué se manda a sub-agente y qué
196
+ se mantiene en el padre
197
+ - [ ] PDFs / Office docs serán pre-procesados con `markitdown` antes de
198
+ Read
199
+
200
+ ---
201
+
202
+ ## Cómo cargar esta regla
203
+
204
+ Esta regla no es de carga obligatoria global. Cargar cuando:
205
+
206
+ - El usuario reporta "se acabó la cuota antes de tiempo".
207
+ - Se diagnostica context-rot u alertas críticas falsas/persistentes.
208
+ - Se prepara una sesión de trabajo larga (>2h) con Opus.
209
+ - Se planifica adopción de MCP servers nuevos en un proyecto.
210
+
211
+ Para detalles operacionales adicionales (workflow de las 5 session moves,
212
+ cuándo usar cada effort level, integración con SWL), cargar también
213
+ `Skill("harness-claude-code")`.