01 Qué hace /goal
Normalmente Claude Code trabaja un turno, se detiene y te devuelve el control. Con /goal le fijas una condición de finalización y, al terminar cada turno, un modelo pequeño y rápido revisa la conversación y emite un veredicto: todavía no (Claude sigue y usa el motivo como pista), cumplido (el objetivo se cierra) o imposible (se cierra con el motivo del fallo).
La ventaja es que quien decide si el trabajo está terminado no es el mismo modelo que lo está haciendo, lo que reduce el típico «ya está» prematuro. Es ideal para trabajos largos con un final comprobable: migrar un módulo hasta que compile, completar los criterios de aceptación de un documento o vaciar una lista de incidencias.
| Método | Cuándo empieza el siguiente turno | Cuándo para |
|---|---|---|
| /goal | Al acabar el turno anterior | Cuando se cumple la condición, es imposible o hay un error que debes arreglar |
| /loop | Cada cierto intervalo de tiempo | Cuando lo paras o Claude da el trabajo por hecho |
| Hook Stop propio | Al acabar el turno anterior | Cuando tu script o tu prompt lo decide |
02 Uso básico
/goal todos los tests de tests/Feature/Checkout pasan y Pint no muestra errores
/goal # ver estado: condición, tiempo, turnos, tokens y último motivo
/goal clear # quitarlo antes de tiempo (también vale stop, off, cancel...)
-
1
Escribe la condición
Al fijarla, Claude empieza a trabajar de inmediato tomando la condición como instrucción. No hace falta un mensaje aparte. Solo puede haber un objetivo activo por sesión; uno nuevo sustituye al anterior.
-
2
Sigue el progreso
Verás un indicador de objetivo activo con el tiempo que lleva. En la transcripción aparece cada veredicto y con Ctrl+O ves el motivo.
-
3
Intervén cuando quieras
Puedes enviar un mensaje en cualquier momento para reorientar el trabajo. Si ejecutas /clear, el objetivo también se elimina.
-
4
Revisa el resultado
Cuando el evaluador lo da por cumplido, queda registrado en la transcripción. Revisa el diff igual que harías con cualquier otro cambio.
03 Cómo escribir una buena condición
El evaluador no ejecuta comandos ni lee archivos: solo juzga lo que aparece en la conversación. Por eso la condición tiene que poder demostrarse con la salida de Claude, por ejemplo el resultado de los tests que el propio Claude ejecuta. Admite hasta 4.000 caracteres.
Un estado final medible
Tests en verde, un build que termina con código 0, un número de archivos, una cola vacía.
Cómo se demuestra
Indica la comprobación: «composer test termina sin errores», «git status está limpio».
Lo que no debe cambiar
Restricciones como «no modifiques otros tests» o «no cambies la API pública».
Un tope
Añade «o para tras 20 turnos» para acotar la duración. Claude informa del avance y el evaluador lo tiene en cuenta.
/goal Todas las llamadas al antiguo cliente HTTP de app/Services usan el nuevo HttpClient, composer test termina sin fallos y phpstan no reporta errores nuevos. No modifiques archivos de tests salvo para actualizar imports. Al final de cada turno, indica cuántas llamadas quedan por migrar. Para tras 25 turnos si no lo has conseguido.
/goal Cada archivo de content/blog tiene meta descripción de entre 120 y 160 caracteres y un único H1. Comprueba con el script scripts/check-seo.py y muestra su salida. No cambies el texto de los artículos, solo los metadatos. Para tras 15 turnos.
04 Permisos, modo auto y ejecución desatendida
/goal no cambia tu modo de permisos. En modo Manual, Claude seguirá pidiéndote aprobación para las herramientas que no tengas permitidas, así que el bucle se detendrá esperándote. Para que trabaje sin supervisión, combínalo con el modo auto: el modo auto elimina las confirmaciones por herramienta y /goal elimina las confirmaciones por turno.
También funciona en la app de escritorio, por control remoto y en modo no interactivo, donde ejecuta el bucle completo en una sola llamada.
claude -p "/goal CHANGELOG.md tiene una entrada por cada PR fusionada esta semana" \
--output-format stream-json --verbose
05 Cuándo se detiene y cuánto cuesta
- ✓Se cierra si falla la autenticación (cuando Claude Code gestiona sus credenciales), si se agota el saldo, si el contexto se desborda sin poder compactarse o si el modelo no está disponible. Arregla la causa y vuelve a fijar el objetivo.
- ✓Ante fallos pasajeros, como un servidor saturado, reintenta solo; tras tres reintentos se pausa.
- ✓Con un límite de uso o de peticiones se pausa en lugar de cerrarse.
- ✓Si Claude responde varios turnos seguidos sin usar herramientas ni avanzar, el bucle se para y te devuelve el control con el objetivo aún activo.
- ✓Si hay subagentes o comandos en segundo plano, la evaluación espera a que terminen.
- ✓Al reanudar una sesión se restaura el objetivo que seguía activo, con los contadores a cero.
La evaluación se hace con el modelo pequeño configurado y su coste suele ser despreciable frente al trabajo principal. Lo que de verdad consume son los turnos de Claude, por eso conviene el tope. /goal funciona como un hook, así que no está disponible en carpetas que no hayas marcado como de confianza ni si tienes los hooks desactivados.
Preguntas frecuentes
/goal sigue hasta que se cumple una condición; /loop repite un prompt cada cierto tiempo. Usa /goal para terminar un trabajo y /loop para vigilar algo de forma periódica.
No en la misma sesión: solo hay uno activo y uno nuevo reemplaza al anterior. Para trabajar en paralelo, abre otras sesiones, cada una con su objetivo.
Porque solo ve la conversación. Si la prueba no aparece en la salida, no puede confirmarla. Pide en la condición que Claude ejecute y muestre la comprobación.
Sí, siempre que el resultado sea comprobable dentro del proyecto: archivos generados, un recuento, un script de validación que imprima el resultado.
Sobre el autor
Equipo editorial de appyweb
Marketing, SEO y desarrollo con IA
Especialistas de appyweb en SEO, publicidad, desarrollo web y automatización con IA.