@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.
- package/CLAUDE.md +15 -6
- package/README.md +15 -14
- package/agentes/nemesis-auditor-swl.md +161 -0
- package/bin/swl-mcp-server.js +187 -187
- package/bin/swl-webhook-server.js +198 -0
- package/comandos/swl/.evolved.json +22 -22
- package/comandos/swl/adoptar-proyecto.md +21 -1
- package/comandos/swl/claudemd.md +14 -1
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/exportar-vault.md +108 -0
- package/comandos/swl/nemesis.md +122 -0
- package/comandos/swl/nuevo-proyecto.md +24 -2
- package/comandos/swl/salud.md +34 -0
- package/comandos/swl/verificar.md +45 -0
- package/gateway/adapters/base.js +109 -0
- package/gateway/adapters/discord.js +167 -0
- package/gateway/adapters/email.js +221 -0
- package/gateway/adapters/slack.js +192 -0
- package/gateway/adapters/telegram.js +183 -0
- package/gateway/adapters/webhook.js +113 -0
- package/gateway/adapters/whatsapp.js +214 -0
- package/gateway/agent-executor.js +322 -0
- package/gateway/command-relay.js +271 -0
- package/gateway/cron/jobs.js +263 -0
- package/gateway/cron/scheduler.js +322 -0
- package/gateway/cron/store.js +335 -0
- package/gateway/index.js +320 -0
- package/gateway/lib/event-channel.js +191 -0
- package/gateway/session.js +131 -0
- package/gateway/webhook-server.js +324 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/build-errors-nextjs/SKILL.md +55 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +171 -171
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/extractor-de-aprendizajes/SKILL.md +20 -10
- package/habilidades/feynman-auditor-swl/SKILL.md +123 -0
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -0
- package/habilidades/harness-claude-code/SKILL.md +299 -299
- package/habilidades/infra-github-actions/SKILL.md +166 -166
- package/habilidades/legacy-code-rescue/SKILL.md +267 -267
- package/habilidades/manejo-errores/.evolved.json +8 -8
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nextjs-testing/SKILL.md +89 -5
- package/habilidades/node-experto/SKILL.md +37 -1
- package/habilidades/patrones-python/SKILL.md +229 -229
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/planear-fase/SKILL.md +319 -319
- package/habilidades/react-experto/SKILL.md +45 -4
- package/habilidades/release-semver/.evolved.json +8 -8
- package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -0
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -0
- package/habilidades/tdd-workflow/SKILL.md +36 -4
- package/habilidades/testing-python/SKILL.md +340 -340
- package/habilidades/web-fetcher-routing/SKILL.md +75 -0
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/inyeccion-contexto.js +8 -3
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-ip.js +177 -0
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -0
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/webhook-dedup.js +184 -0
- package/hooks/lib/webhook-verify.js +123 -0
- package/hooks/proteccion-rutas.js +120 -15
- package/hooks/registro-turnos.js +209 -209
- package/hooks/sugerir-regenerar-inventario.js +170 -170
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-memoria-hook.js +218 -218
- package/instintos/prompt-appendices.yaml +57 -57
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/modulos.json +31 -0
- package/manifiestos/skills-lock.json +1114 -1093
- package/package.json +6 -4
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +2 -2
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/arreglar-al-detectar.md +147 -147
- package/reglas/fragmentos-compartidos.md +152 -152
- package/reglas/harness-claude-code.md +213 -213
- package/reglas/usar-context7.md +226 -226
- package/reglas/usar-sistema-swl.md +251 -0
- package/schemas/diary-entry.schema.json +80 -80
- package/scripts/audit-tools/audit-history.js +330 -0
- package/scripts/audit-tools/bundle-tracker.js +290 -0
- package/scripts/audit-tools/canary-monitor.js +352 -0
- package/scripts/audit-tools/code-profiler.js +605 -0
- package/scripts/audit-tools/dep-doctor.js +320 -0
- package/scripts/audit-tools/env-validator.js +206 -0
- package/scripts/audit-tools/lib/fs-walk.js +48 -0
- package/scripts/audit-tools/lib/output.js +23 -0
- package/scripts/audit-tools/migration-checker.js +392 -0
- package/scripts/audit-tools/pentest-scanner.js +1436 -0
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/comandos/skills.js +251 -2
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-inventario.js +420 -420
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/README.md +128 -128
- package/scripts/mcp-server/handlers.js +206 -206
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +201 -201
- package/scripts/publicar.js +511 -511
- package/scripts/run-eval.js +141 -141
- package/scripts/validar-manifest.js +195 -195
- package/scripts/validar-userland-vacio.js +110 -110
- 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")`.
|