@saulwade/swl-ses 1.4.1 → 1.5.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 (136) hide show
  1. package/CLAUDE.md +3 -3
  2. package/README.md +561 -560
  3. package/agentes/nemesis-auditor-swl.md +161 -161
  4. package/bin/swl-mcp-server.js +49 -22
  5. package/bin/swl-ses.js +74 -0
  6. package/comandos/swl/.evolved.json +22 -22
  7. package/comandos/swl/contribuir.md +233 -233
  8. package/comandos/swl/ejecutar-fase.md +33 -4
  9. package/comandos/swl/metricas.md +72 -0
  10. package/comandos/swl/nemesis.md +122 -122
  11. package/gateway/lib/event-channel.js +191 -191
  12. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  13. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  14. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  15. package/habilidades/discutir-fase/SKILL.md +50 -2
  16. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  17. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  18. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -0
  19. package/habilidades/eval-framework/SKILL.md +212 -212
  20. package/habilidades/feynman-auditor-swl/SKILL.md +123 -123
  21. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  22. package/habilidades/harness-claude-code/SKILL.md +299 -299
  23. package/habilidades/infra-github-actions/SKILL.md +166 -166
  24. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  25. package/habilidades/manejo-errores/.evolved.json +8 -8
  26. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  27. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  28. package/habilidades/patrones-python/SKILL.md +229 -229
  29. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  30. package/habilidades/planear-fase/SKILL.md +319 -319
  31. package/habilidades/protocolo-revision-swl/SKILL.md +276 -0
  32. package/habilidades/release-semver/.evolved.json +8 -8
  33. package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -166
  34. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  35. package/habilidades/testing-python/SKILL.md +340 -340
  36. package/habilidades/verificar-trabajo/SKILL.md +49 -5
  37. package/habilidades/web-fetcher-routing/SKILL.md +75 -75
  38. package/hooks/claudemd-bloat-detector.js +161 -161
  39. package/hooks/lib/agent-routing.js +107 -107
  40. package/hooks/lib/auto-consolidator.js +335 -335
  41. package/hooks/lib/error-classifier.js +308 -308
  42. package/hooks/lib/merkle-audit.js +96 -96
  43. package/hooks/lib/provenance-tracker.js +191 -191
  44. package/hooks/lib/rate-limit-tracker.js +253 -253
  45. package/hooks/lib/resource-quota.js +122 -122
  46. package/hooks/lib/retry-jitter.js +165 -165
  47. package/hooks/lib/security-net.js +201 -201
  48. package/hooks/lib/skill-auditor.js +588 -588
  49. package/hooks/lib/sync-status.js +228 -228
  50. package/hooks/lib/taint-tracker.js +107 -107
  51. package/hooks/lib/text-similarity.js +241 -241
  52. package/hooks/lib/toon-compressor.js +245 -245
  53. package/hooks/registro-turnos.js +209 -209
  54. package/hooks/sugerir-regenerar-inventario.js +170 -170
  55. package/hooks/validar-formato-post-subagente.js +140 -140
  56. package/hooks/validar-memoria-hook.js +218 -218
  57. package/instintos/prompt-appendices.yaml +57 -57
  58. package/manifiestos/agent-output-schemas.json +57 -57
  59. package/manifiestos/modulos.json +1321 -1262
  60. package/manifiestos/perfiles.json +2 -1
  61. package/manifiestos/skills-lock.json +1114 -1114
  62. package/package.json +3 -3
  63. package/plantillas/auditor-veto-template.md +105 -105
  64. package/plantillas/github-workflows/README.md +47 -47
  65. package/plantillas/github-workflows/release-please.yml +44 -44
  66. package/plantillas/github-workflows/swl-ci.yml +107 -107
  67. package/plantillas/github-workflows/swl-security.yml +51 -51
  68. package/plugin.json +351 -343
  69. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  70. package/reglas/arreglar-al-detectar.md +147 -147
  71. package/reglas/fragmentos-compartidos.md +152 -152
  72. package/reglas/harness-claude-code.md +213 -213
  73. package/reglas/usar-context7.md +226 -226
  74. package/schemas/diary-entry.schema.json +80 -80
  75. package/scripts/audit-tools/audit-history.js +330 -330
  76. package/scripts/audit-tools/bundle-tracker.js +290 -290
  77. package/scripts/audit-tools/canary-monitor.js +352 -352
  78. package/scripts/audit-tools/code-profiler.js +605 -605
  79. package/scripts/audit-tools/dep-doctor.js +320 -320
  80. package/scripts/audit-tools/env-validator.js +206 -206
  81. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  82. package/scripts/audit-tools/lib/output.js +23 -23
  83. package/scripts/audit-tools/migration-checker.js +392 -392
  84. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  85. package/scripts/benchmark-memoria.js +167 -167
  86. package/scripts/configurar-branch-protection.js +418 -418
  87. package/scripts/derivar-feature-list.js +489 -0
  88. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  89. package/scripts/doctor.js +31 -4
  90. package/scripts/field-report.js +199 -199
  91. package/scripts/generar-checklists-consolidados.js +273 -273
  92. package/scripts/generar-inventario.js +420 -420
  93. package/scripts/generar-matriz-lenguajes.js +271 -271
  94. package/scripts/instalador.js +56 -5
  95. package/scripts/lib/artefactos-python.js +43 -43
  96. package/scripts/lib/benchmark-metrics.js +160 -160
  97. package/scripts/lib/budget-enforcer.js +252 -252
  98. package/scripts/lib/configurar-ci.js +380 -380
  99. package/scripts/lib/contadores-inventario.js +217 -217
  100. package/scripts/lib/detectar-runtime.js +75 -9
  101. package/scripts/lib/detectar-stack-detallado.js +307 -307
  102. package/scripts/lib/diary-entry.js +234 -234
  103. package/scripts/lib/estado.js +13 -1
  104. package/scripts/lib/eval-metrics-store.js +218 -218
  105. package/scripts/lib/eval-quality.js +171 -171
  106. package/scripts/lib/eval-schemas.js +144 -144
  107. package/scripts/lib/eval-self-correct.js +106 -106
  108. package/scripts/lib/eval-validator.js +185 -185
  109. package/scripts/lib/expandir-targets.js +71 -0
  110. package/scripts/lib/jaccard-similarity.js +98 -98
  111. package/scripts/lib/longmemeval-runner.js +125 -125
  112. package/scripts/lib/manifiestos.js +42 -1
  113. package/scripts/lib/npm-version.js +261 -261
  114. package/scripts/lib/paquetes-conocidos.js +50 -50
  115. package/scripts/lib/parsear-opciones.js +3 -0
  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/lib/toml-merge.js +204 -0
  121. package/scripts/lib/transformadores/base.js +43 -9
  122. package/scripts/lib/transformadores/codex.js +375 -115
  123. package/scripts/lib/transformadores/cursor.js +359 -0
  124. package/scripts/lib/transformadores/index.js +2 -0
  125. package/scripts/limpiar-artefactos-python.js +131 -131
  126. package/scripts/mcp-server/README.md +122 -80
  127. package/scripts/mcp-server/auth.js +105 -0
  128. package/scripts/mcp-server/cache.js +106 -0
  129. package/scripts/mcp-server/handlers.js +386 -206
  130. package/scripts/mcp-server/telemetry.js +78 -0
  131. package/scripts/migrar-csv-a-array.js +168 -168
  132. package/scripts/migrar-fase-dominio.js +201 -201
  133. package/scripts/publicar.js +511 -511
  134. package/scripts/run-eval.js +141 -141
  135. package/scripts/validar-manifest.js +231 -195
  136. package/scripts/validar-userland-vacio.js +110 -110
@@ -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")`.