@saulwade/swl-ses 1.3.4 → 1.3.5

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 (102) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +1 -1
  3. package/bin/swl-mcp-server.js +187 -187
  4. package/bin/swl-ses.js +4 -62
  5. package/comandos/swl/.evolved.json +22 -22
  6. package/comandos/swl/adoptar-proyecto.md +207 -207
  7. package/comandos/swl/contribuir.md +233 -233
  8. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  9. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  10. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  11. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  12. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  13. package/habilidades/eval-framework/SKILL.md +212 -212
  14. package/habilidades/extractor-de-aprendizajes/SKILL.md +321 -321
  15. package/habilidades/harness-claude-code/SKILL.md +299 -299
  16. package/habilidades/infra-github-actions/SKILL.md +166 -166
  17. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  18. package/habilidades/manejo-errores/.evolved.json +8 -8
  19. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  20. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  21. package/habilidades/patrones-python/SKILL.md +229 -229
  22. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  23. package/habilidades/planear-fase/SKILL.md +319 -319
  24. package/habilidades/release-semver/.evolved.json +8 -8
  25. package/habilidades/swl-claudemd/SKILL.md +220 -220
  26. package/habilidades/testing-python/SKILL.md +340 -340
  27. package/hooks/claudemd-bloat-detector.js +161 -161
  28. package/hooks/extraccion-aprendizajes.js +19 -12
  29. package/hooks/lib/agent-routing.js +107 -107
  30. package/hooks/lib/auto-consolidator.js +335 -335
  31. package/hooks/lib/error-classifier.js +308 -308
  32. package/hooks/lib/merkle-audit.js +96 -96
  33. package/hooks/lib/provenance-tracker.js +191 -191
  34. package/hooks/lib/rate-limit-tracker.js +253 -253
  35. package/hooks/lib/resource-quota.js +122 -122
  36. package/hooks/lib/retry-jitter.js +165 -165
  37. package/hooks/lib/skill-auditor.js +588 -588
  38. package/hooks/lib/sync-status.js +228 -228
  39. package/hooks/lib/taint-tracker.js +107 -107
  40. package/hooks/lib/text-similarity.js +241 -241
  41. package/hooks/lib/toon-compressor.js +245 -245
  42. package/hooks/registro-turnos.js +209 -209
  43. package/hooks/sugerir-regenerar-inventario.js +170 -170
  44. package/hooks/validar-formato-post-subagente.js +140 -140
  45. package/hooks/validar-memoria-hook.js +218 -218
  46. package/instintos/prompt-appendices.yaml +57 -57
  47. package/manifiestos/agent-output-schemas.json +57 -57
  48. package/manifiestos/skills-lock.json +1093 -1093
  49. package/package.json +1 -1
  50. package/plantillas/auditor-veto-template.md +105 -105
  51. package/plantillas/github-workflows/README.md +47 -47
  52. package/plantillas/github-workflows/release-please.yml +44 -44
  53. package/plantillas/github-workflows/swl-ci.yml +107 -107
  54. package/plantillas/github-workflows/swl-security.yml +51 -51
  55. package/plugin.json +1 -1
  56. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  57. package/reglas/arreglar-al-detectar.md +147 -147
  58. package/reglas/fragmentos-compartidos.md +152 -152
  59. package/reglas/harness-claude-code.md +213 -213
  60. package/reglas/usar-context7.md +226 -226
  61. package/schemas/diary-entry.schema.json +80 -80
  62. package/scripts/benchmark-memoria.js +167 -167
  63. package/scripts/configurar-branch-protection.js +418 -418
  64. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  65. package/scripts/doctor.js +77 -3
  66. package/scripts/field-report.js +199 -199
  67. package/scripts/generar-checklists-consolidados.js +273 -273
  68. package/scripts/generar-inventario.js +420 -420
  69. package/scripts/generar-matriz-lenguajes.js +271 -271
  70. package/scripts/instalador.js +38 -1
  71. package/scripts/lib/artefactos-python.js +43 -43
  72. package/scripts/lib/benchmark-metrics.js +160 -160
  73. package/scripts/lib/budget-enforcer.js +252 -252
  74. package/scripts/lib/configurar-ci.js +380 -380
  75. package/scripts/lib/contadores-inventario.js +217 -217
  76. package/scripts/lib/detectar-stack-detallado.js +307 -307
  77. package/scripts/lib/diary-entry.js +234 -234
  78. package/scripts/lib/eval-metrics-store.js +218 -218
  79. package/scripts/lib/eval-quality.js +171 -171
  80. package/scripts/lib/eval-schemas.js +144 -144
  81. package/scripts/lib/eval-self-correct.js +106 -106
  82. package/scripts/lib/eval-validator.js +185 -185
  83. package/scripts/lib/jaccard-similarity.js +98 -98
  84. package/scripts/lib/longmemeval-runner.js +125 -125
  85. package/scripts/lib/npm-version.js +261 -261
  86. package/scripts/lib/paquetes-conocidos.js +50 -50
  87. package/scripts/lib/parsear-opciones.js +136 -0
  88. package/scripts/lib/prompt-builder.js +264 -264
  89. package/scripts/lib/rrf-fusion.js +175 -175
  90. package/scripts/lib/scoring-instintos.js +277 -277
  91. package/scripts/lib/semantic-search.js +252 -252
  92. package/scripts/lib/transformadores/claude.js +200 -200
  93. package/scripts/limpiar-artefactos-python.js +131 -131
  94. package/scripts/mcp-server/README.md +128 -128
  95. package/scripts/mcp-server/handlers.js +206 -206
  96. package/scripts/migrar-csv-a-array.js +168 -168
  97. package/scripts/migrar-fase-dominio.js +201 -201
  98. package/scripts/publicar.js +511 -511
  99. package/scripts/run-eval.js +141 -141
  100. package/scripts/validar-manifest.js +195 -195
  101. package/scripts/validar-userland-vacio.js +110 -110
  102. package/scripts/verificar-release.js +5 -1
@@ -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")`.