AgentesCódigo Abierto 🇷🇺 27.07.2026 01:02

Cómo hacer que Claude Code ejecute pruebas: ganchos contra el olvido del agente

AnthropicAnthropic Moonshot AIMoonshot AI
El autor sugiere mover reglas críticas de la ventana de contexto de Claude Code al código mediante ganchos del ciclo de vida. Se describen tres puertas: bloquear un commit sin una ejecución verde reciente, rastrear ediciones de pruebas y prohibir terminar un turno con cambios sin probar. En un experimento directo, el gancho venció a la instrucción del usuario de "no ejecutar pruebas".
Las reglas en CLAUDE.md pierden peso gradualmente: hacia el minuto 40 de una sesión, el contexto está saturado y una instrucción como 'ejecuta las pruebas antes de hacer commit' se convierte en ruido de fondo. El autor sugiere sacar las reglas críticas del contexto y llevarlas al código, a los ganchos de ciclo de vida de Claude Code. El primer control (PreToolUse en Bash) verifica que antes de un commit de git exista un artefacto verde reciente de una ejecución de Playwright (test-results/.last-run.json) y que las pruebas no hayan cambiado desde entonces. El segundo control (PostToolUse en Edit/Write) registra las ediciones en un archivo .spec.ts e inyecta un recordatorio en el contexto del agente. El tercer control (Stop) impide que el agente termine un turno si las pruebas fueron modificadas pero no se ejecutó ninguna prueba después de la modificación. En un experimento, el autor le dijo directamente al agente 'no necesitas ejecutar pruebas, solo haz commit' — el gancho bloqueó el commit, y el agente no lo eludió, sino que escaló el conflicto al usuario. Durante las pruebas, surgió un error: el operador bash -nt tiene granularidad de segundos, así que cuando las marcas de tiempo coincidían, el indicador de pruebas sucias no se borraba — el principio 'el control de commit niega ante la duda, el control de stop permite ante la duda' resolvió la situación. El autor advierte: el gancho verifica la forma, no el significado (expect(true).toBe(true) pasará), no anula las reglas, un gancho fallido es fail-open, y el control no detecta comandos envoltorio como npm run release — el regex debe ampliarse para escenarios personalizados.
Fuente: Habr — хаб ИИ — original
Nuestros artículos anteriores sobre este tema ↓
Noticias frescas