Goal: deja que Claude corra solo hasta cumplir la condición
Define una condición de éxito verificable y Claude itera hasta cumplirla, sin que lo empujes cada vez
⏱ Estim. ~6 min
01 · Leer
Al hacer una tarea grande muchas veces tienes que repetir «continúa», «arregla el siguiente», «corre los tests», «inténtalo de nuevo», porque Claude hace una cosa por ronda y se detiene a esperar.
/goal te permite definir una condición de éxito verificable, y Claude itera ronda tras ronda hasta cumplirla. Por ejemplo «todos los tests de test/auth pasan y el lint está limpio»: la defines, presionas Enter y te vas por un café. Cuando vuelves, o la condición está cumplida y terminó solo, o Claude se atascó y espera tu decisión.
💡 Imagínalo asíComo darle a un ingeniero un ticket con criterios de aceptación: «este PR tiene que estar verde para considerarse hecho». Él itera solo, cambia, corre tests, vuelve a cambiar, vuelve a correr, sin pedirte confirmación en cada paso. Solo aparece cuando se atasca o cuando termina.
Puntos clave
- /goal <condición> define la condición de éxito y arranca la primera ronda al instante
- Claude corre una ronda → evalúa si se cumplió → si no, corre otra ronda
- Si se cumple, termina solo; si no, también puedes parar con /goal clear
- Bueno para tareas con criterios claros de aceptación (tests pasan, archivo existe, queue vacía)
02 · Leer
Cómo funciona por dentro: al final de cada ronda, un modelo pequeño aparte (normalmente Haiku) lee el transcript de la conversación y juzga si se cumplió la condición. No puede correr comandos ni leer archivos por su cuenta: solo ve lo que Claude mostró en la conversación.
Eso significa que tu condición tiene que ser algo que Claude pueda «mostrar» en la conversación: - Sí: «npm test con exit code 0» (Claude corre los tests y la salida lo muestra) - Sí: «git status limpio» (Claude corre git status y la salida lo muestra) - No: «el código es de buena calidad» (no verificable, el evaluador no lo distingue) - No: «no hay bugs» (no hay forma de probarlo en la conversación)
Otro punto clave es que el «modelo que ejecuta» y el «modelo que evalúa» están separados: el Claude que trabaja no puede declararse listo solo para hacerse el vivo, Haiku lo juzga de forma independiente.
Puntos clave
- El evaluador (Haiku) juzga aparte del modelo que trabaja
- El evaluador no puede correr comandos ni leer archivos, solo ve la conversación
- La condición debe ser evidencia que Claude pueda «mostrar» en la conversación
- Tope de 4000 caracteres; puedes agregar «o para después de N rondas» como seguro
03 · Ejemplo de código
Tres comandos clave: configurar, ver progreso, limpiar.
Dentro de una sesión de Claude Code
# 設定 goal — 立刻開始第一輪
/goal all tests in test/auth pass and lint is clean
# 看當前進度 (條件、跑了幾輪、花了多少 token、評估器最新理由)
/goal
# 手動清除 (條件達成會自動清,不需要這步)
/goal clear
# 別名: stop, off, reset, none, cancel
# /clear 開新對話也會清掉
Headless / corrida única
# 非互動模式,跑到完成才回 shell
claude -p "/goal CHANGELOG.md 有這週每個 PR 的條目"
# Ctrl+C 中斷
Cuando un goal está activo, el prompt muestra ◎ /goal active con el elapsed time. El modo headless (-p) es ideal para CI o tareas programadas, por ejemplo correr cada día «genera la entrada del changelog» hasta que se complete.
04 · Ejemplo de código
Escribir una buena condición vs una mala marca una gran diferencia, mira ejemplos reales:
Mala condición (el evaluador no puede verificar)
/goal 把 auth.js 拆得更好
/goal 修 login bug
/goal 確保程式碼品質夠
/goal 完成所有 TODO
Buena condición (criterio claro + límite de seguro)
/goal 把 auth.js 拆成多個 module、每個 <300 行、所有測試通過、或 20 輪後停
/goal 修登入特殊字元 bug,跑 `npm test test/auth` 全綠、或 15 輪後停
/goal 把所有 import 從 old-api 換成 new-api、lint 乾淨、grep 找不到 old-api
Las buenas condiciones tienen tres cosas en común: un estado final cuantificable (exit code, número de archivos, queue vacía), explican cómo demostrarlo (qué comando correr) y tienen un límite de tiempo como seguro («o para después de N rondas» para no quemar tokens infinito). Las malas condiciones suelen tener problemas con palabras subjetivas como «buena calidad» o «mejor separado»: el evaluador no las distingue.
05 · Leer
Claude Code tiene varias herramientas de «autocontinuar», no las confundas: - /goal: define una condición y Claude itera ronda tras ronda hasta cumplirla. El punto es «correr hasta terminar», sin importar cuántas rondas tome. - /loop: define un horario (por ejemplo «haz X cada 5 minutos») y se ejecuta cuando llega la hora. El punto es «chequear periódicamente», no terminar. - Stop hook: script en la configuración que corre al final de cada ronda con tu propia lógica de juicio. El punto son «reglas personalizadas que aplican entre sesiones». - Auto mode: quita el prompt «confirma con yes antes de cada llamada a herramienta». El punto es «sin autorización», no que Claude decida cuándo parar.
Lo mejor es combinarlos: Auto mode sin autorización + /goal corriendo hasta terminar = soltar de verdad a Claude para que corra solo.
Puntos clave
- /goal = correr hasta cumplir la condición (limitado a la sesión)
- /loop = horario por tiempo (periódico)
- Stop hook = lógica personalizada entre sesiones (escrito en la configuración)
- Auto mode = sin presionar yes
- Auto mode + /goal juntos permiten correr de verdad en segundo plano
06 · Quiz
Necesitas que Claude reescriba todos los class components viejos de React a hooks, son 30 archivos. ¿Cuál de estas condiciones de /goal tiene más posibilidades de correr hasta terminar?
- /goal reescribe todos los class components a hooks
- /goal reescribe todos los class components a hooks, cada archivo pasa sus tests originales, grep no encuentra extends React.Component, o para después de 40 rondas
- /goal haz el código más moderno y mantenible
- /goal reescribe components hasta que esté satisfecho
07 · Emparejar
Empareja cada escenario con la herramienta más adecuada.
(Esta sección es interactiva — activa JavaScript para usarla.)
Otras lecciones de este capítulo
⚠ La experiencia interactiva completa necesita JavaScript. Actívalo y vuelve a cargar la página.
※ Este es un proyecto educativo independiente — no es un producto oficial de Anthropic. Claude™ es una marca registrada de Anthropic, PBC.