@saulwade/swl-ses 1.3.8 → 1.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.
Files changed (148) hide show
  1. package/CLAUDE.md +15 -6
  2. package/README.md +15 -14
  3. package/agentes/nemesis-auditor-swl.md +161 -0
  4. package/bin/swl-mcp-server.js +187 -187
  5. package/bin/swl-webhook-server.js +198 -0
  6. package/comandos/swl/.evolved.json +22 -22
  7. package/comandos/swl/adoptar-proyecto.md +21 -1
  8. package/comandos/swl/claudemd.md +14 -1
  9. package/comandos/swl/contribuir.md +233 -233
  10. package/comandos/swl/exportar-vault.md +108 -0
  11. package/comandos/swl/nemesis.md +122 -0
  12. package/comandos/swl/nuevo-proyecto.md +24 -2
  13. package/comandos/swl/salud.md +34 -0
  14. package/comandos/swl/verificar.md +45 -0
  15. package/gateway/adapters/base.js +109 -0
  16. package/gateway/adapters/discord.js +167 -0
  17. package/gateway/adapters/email.js +221 -0
  18. package/gateway/adapters/slack.js +192 -0
  19. package/gateway/adapters/telegram.js +183 -0
  20. package/gateway/adapters/webhook.js +113 -0
  21. package/gateway/adapters/whatsapp.js +214 -0
  22. package/gateway/agent-executor.js +322 -0
  23. package/gateway/command-relay.js +271 -0
  24. package/gateway/cron/jobs.js +263 -0
  25. package/gateway/cron/scheduler.js +322 -0
  26. package/gateway/cron/store.js +335 -0
  27. package/gateway/index.js +320 -0
  28. package/gateway/lib/event-channel.js +191 -0
  29. package/gateway/session.js +131 -0
  30. package/gateway/webhook-server.js +324 -0
  31. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  32. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  33. package/habilidades/build-errors-nextjs/SKILL.md +55 -1
  34. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  35. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  36. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  37. package/habilidades/eval-framework/SKILL.md +212 -212
  38. package/habilidades/extractor-de-aprendizajes/SKILL.md +20 -10
  39. package/habilidades/feynman-auditor-swl/SKILL.md +123 -0
  40. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -0
  41. package/habilidades/harness-claude-code/SKILL.md +299 -299
  42. package/habilidades/infra-github-actions/SKILL.md +166 -166
  43. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  44. package/habilidades/manejo-errores/.evolved.json +8 -8
  45. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  46. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  47. package/habilidades/nextjs-testing/SKILL.md +89 -5
  48. package/habilidades/node-experto/SKILL.md +37 -1
  49. package/habilidades/patrones-python/SKILL.md +229 -229
  50. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  51. package/habilidades/planear-fase/SKILL.md +319 -319
  52. package/habilidades/react-experto/SKILL.md +45 -4
  53. package/habilidades/release-semver/.evolved.json +8 -8
  54. package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -0
  55. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -0
  56. package/habilidades/tdd-workflow/SKILL.md +36 -4
  57. package/habilidades/testing-python/SKILL.md +340 -340
  58. package/habilidades/web-fetcher-routing/SKILL.md +75 -0
  59. package/hooks/claudemd-bloat-detector.js +161 -161
  60. package/hooks/inyeccion-contexto.js +8 -3
  61. package/hooks/lib/agent-routing.js +107 -107
  62. package/hooks/lib/auto-consolidator.js +335 -335
  63. package/hooks/lib/error-classifier.js +308 -308
  64. package/hooks/lib/merkle-audit.js +96 -96
  65. package/hooks/lib/provenance-tracker.js +191 -191
  66. package/hooks/lib/rate-limit-ip.js +177 -0
  67. package/hooks/lib/rate-limit-tracker.js +253 -253
  68. package/hooks/lib/resource-quota.js +122 -122
  69. package/hooks/lib/retry-jitter.js +165 -165
  70. package/hooks/lib/security-net.js +201 -0
  71. package/hooks/lib/skill-auditor.js +588 -588
  72. package/hooks/lib/sync-status.js +228 -228
  73. package/hooks/lib/taint-tracker.js +107 -107
  74. package/hooks/lib/text-similarity.js +241 -241
  75. package/hooks/lib/toon-compressor.js +245 -245
  76. package/hooks/lib/webhook-dedup.js +184 -0
  77. package/hooks/lib/webhook-verify.js +123 -0
  78. package/hooks/proteccion-rutas.js +120 -15
  79. package/hooks/registro-turnos.js +209 -209
  80. package/hooks/sugerir-regenerar-inventario.js +170 -170
  81. package/hooks/validar-formato-post-subagente.js +140 -140
  82. package/hooks/validar-memoria-hook.js +218 -218
  83. package/instintos/prompt-appendices.yaml +57 -57
  84. package/manifiestos/agent-output-schemas.json +57 -57
  85. package/manifiestos/modulos.json +31 -0
  86. package/manifiestos/skills-lock.json +1114 -1093
  87. package/package.json +6 -4
  88. package/plantillas/auditor-veto-template.md +105 -105
  89. package/plantillas/github-workflows/README.md +47 -47
  90. package/plantillas/github-workflows/release-please.yml +44 -44
  91. package/plantillas/github-workflows/swl-ci.yml +107 -107
  92. package/plantillas/github-workflows/swl-security.yml +51 -51
  93. package/plugin.json +2 -2
  94. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  95. package/reglas/arreglar-al-detectar.md +147 -147
  96. package/reglas/fragmentos-compartidos.md +152 -152
  97. package/reglas/harness-claude-code.md +213 -213
  98. package/reglas/usar-context7.md +226 -226
  99. package/reglas/usar-sistema-swl.md +251 -0
  100. package/schemas/diary-entry.schema.json +80 -80
  101. package/scripts/audit-tools/audit-history.js +330 -0
  102. package/scripts/audit-tools/bundle-tracker.js +290 -0
  103. package/scripts/audit-tools/canary-monitor.js +352 -0
  104. package/scripts/audit-tools/code-profiler.js +605 -0
  105. package/scripts/audit-tools/dep-doctor.js +320 -0
  106. package/scripts/audit-tools/env-validator.js +206 -0
  107. package/scripts/audit-tools/lib/fs-walk.js +48 -0
  108. package/scripts/audit-tools/lib/output.js +23 -0
  109. package/scripts/audit-tools/migration-checker.js +392 -0
  110. package/scripts/audit-tools/pentest-scanner.js +1436 -0
  111. package/scripts/benchmark-memoria.js +167 -167
  112. package/scripts/comandos/skills.js +251 -2
  113. package/scripts/configurar-branch-protection.js +418 -418
  114. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  115. package/scripts/field-report.js +199 -199
  116. package/scripts/generar-checklists-consolidados.js +273 -273
  117. package/scripts/generar-inventario.js +420 -420
  118. package/scripts/generar-matriz-lenguajes.js +271 -271
  119. package/scripts/lib/artefactos-python.js +43 -43
  120. package/scripts/lib/benchmark-metrics.js +160 -160
  121. package/scripts/lib/budget-enforcer.js +252 -252
  122. package/scripts/lib/configurar-ci.js +380 -380
  123. package/scripts/lib/contadores-inventario.js +217 -217
  124. package/scripts/lib/detectar-stack-detallado.js +307 -307
  125. package/scripts/lib/diary-entry.js +234 -234
  126. package/scripts/lib/eval-metrics-store.js +218 -218
  127. package/scripts/lib/eval-quality.js +171 -171
  128. package/scripts/lib/eval-schemas.js +144 -144
  129. package/scripts/lib/eval-self-correct.js +106 -106
  130. package/scripts/lib/eval-validator.js +185 -185
  131. package/scripts/lib/jaccard-similarity.js +98 -98
  132. package/scripts/lib/longmemeval-runner.js +125 -125
  133. package/scripts/lib/npm-version.js +261 -261
  134. package/scripts/lib/paquetes-conocidos.js +50 -50
  135. package/scripts/lib/prompt-builder.js +264 -264
  136. package/scripts/lib/rrf-fusion.js +175 -175
  137. package/scripts/lib/scoring-instintos.js +277 -277
  138. package/scripts/lib/semantic-search.js +252 -252
  139. package/scripts/limpiar-artefactos-python.js +131 -131
  140. package/scripts/mcp-server/README.md +128 -128
  141. package/scripts/mcp-server/handlers.js +206 -206
  142. package/scripts/migrar-csv-a-array.js +168 -168
  143. package/scripts/migrar-fase-dominio.js +201 -201
  144. package/scripts/publicar.js +511 -511
  145. package/scripts/run-eval.js +141 -141
  146. package/scripts/validar-manifest.js +195 -195
  147. package/scripts/validar-userland-vacio.js +110 -110
  148. 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")`.