Contenido del curso
Crear la base full-stack del producto
- 6

Composer 2.5 ejecuta tu primer spec en Cursor
02:26 min - 7

Cómo actualizar dependencias sin errores del LLM
06:35 min - 8

Cómo usar MCP en Cursor para validar tu API
07:32 min - 9

Hooks en Cursor para proteger tu código
Viendo ahora - 10

Playwright y Multitask para testear tu app
06:21 min - 11

Worktrees: ejecuta dos agentes en paralelo
05:27 min
Calidad, entrega y automatización
Hooks en Cursor para proteger tu código
Resumen
Los hooks en Cursor son una capa de control que te permite observar, validar y bloquear acciones del agente antes de que toquen tu código. Si estás automatizando flujos con IA y quieres evitar que un subagente borre archivos críticos o rompa tipos, esta pieza es clave para construir software agéntico más seguro.
En el flujo de trabajo se combinan dos ideas: primero configurar hooks automáticos como guardianes, y luego ejecutar el spec del login con usuario y contraseña sabiendo que esos guardianes están vigilando cada turno del agente.
Qué son los hooks y cuándo se ejecutan
Un hook es una herramienta que se engancha al ciclo de vida del agente para observar, controlar y ampliar su comportamiento [00:12].
Piénsalo como un vigilante silencioso que corre en background mientras el agente trabaja. No interrumpe la creatividad del modelo, pero sí levanta la mano cuando algo se sale de los rieles.
¿Qué hace un hook en Cursor? Ejecuta un comando de bash en momentos específicos del ciclo agéntico, como después de una edición o antes de correr un comando en la terminal, para validar o bloquear acciones.
Los casos de uso más comunes son:
- Ejecutar formatters después de las ediciones.
- Agregar analíticas para eventos del agente.
- Escanear el código en busca de información personal o secretos.
- Restringir operaciones riesgosas en la base de datos, como deletes.
En qué puntos del ciclo agéntico corre un hook
Un hook puede dispararse en varios momentos clave: cuando una sesión empieza, cuando se llama una tool, cuando un subagente arranca o antes de la ejecución de una shell [00:38]. En todos esos puntos tienes la oportunidad de meter una validación.
Cómo configurar hooks automáticos en .cursor/hooks
Cursor soporta hooks dentro de la carpeta .cursor, la misma donde ya viven las reglas y el MCP [01:05]. Aquí se definen en un archivo hooks.json que apunta a comandos de bash.
Para este proyecto se configuraron dos guardianes con propósitos muy distintos pero complementarios.
Hook de stop para validar tipos y tests
Este hook se ejecuta al terminar cada turno del agente [01:20]. Corre el check types y los tests del evaluador en el dominio, y si algo falla devuelve un mensaje de error en la salida.
La idea es que el agente no cierre un turno con el proyecto roto. Si los tipos no compilan o los tests fallan, el propio agente lo sabe y puede reintentar. Se configuró un loop limit de 3 reintentos antes de marcar el error en la terminal [02:35].
Hook before shell para bloquear comandos destructivos
El segundo hook corre antes de ejecutar cualquier comando en la shell [01:35]. Su misión es bloquear comandos peligrosos como rm -rf sobre carpetas, incluyendo node_modules y dist.
¿Por qué bloquear rm -rf con un hook? Porque un agente o subagente puede tomar decisiones más allá de lo que le pediste. Un hook before shell intercepta esos comandos antes de que toquen tu sistema de archivos.
Ambos hooks son, en el fondo, scripts de bash corriendo en background. Esa simpleza es su fuerza: puedes auditarlos, versionarlos y adaptarlos a los caminos críticos de tu proyecto.
Cómo implementar el spec del login usando los hooks
Con los guardianes en su lugar, el siguiente paso fue pedirle al agente que implementara el spec del login referenciándolo directamente en el prompt [03:35]. La instrucción incluía usar un usuario demo, construir la pantalla de login, consumir el endpoint, validar por token y trabajar bajo la vigilancia de los hooks.
El agente configuró la autenticación con un middleware, aplicó los tests, construyó el login, el dashboard, los proxies y usó el seed para crear el usuario. Cada vez que terminaba un turno, el hook de stop disparaba el type check automáticamente [04:05].
Cookies firmadas y autenticación stateless
Una nota técnica que dejó el flujo: las cookies firmadas son stateless, por lo que al borrar la cookie se invalida el token de forma inmediata [04:30]. No hay estado guardado en el servidor que mantener sincronizado.
Para probar el resultado, el agente levantó el proyecto con la web en el puerto 3000 y la API en el puerto 3001 [04:50]. Al entrar a localhost:3000/dashboard, el middleware redirige al login, donde funcionan las credenciales de usuario admin y contraseña demo123.
Dónde deberían vivir los hooks en tu proceso
La tarea que queda abierta es leer la documentación oficial de hooks y pensar dónde encajan mejor en tu flujo. ¿Antes de una migración? ¿Después de cada edición en un archivo crítico? ¿Escaneando secrets antes de un commit?
Cuéntame en los comentarios qué hook implementarías primero en tu proyecto y qué acción riesgosa te gustaría bloquear.