El Stop worker recibe ahora el DoD de la tarea y lo usa como criterio para
distinguir hecho de pendiente_revision/en_pausa: marca 'hecho' unicamente si el
resultado descrito cumple el DoD punto por punto y esta verificado. Si el DoD no
se cumple del todo, cae en pendiente_revision (resultado para revisar) o en_pausa
(avance parcial). Si no hay DoD definido, mantiene el criterio anterior sobre el
objetivo. Hace el estado 'hecho' mucho mas preciso.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Nuevo estado de reposo 'preguntando' (❓ esperando respuesta), distinto de
pendiente_revision: lo usa el Stop worker cuando la respuesta termina con
preguntas concretas al usuario en vez de dejar un resultado para revisar.
- DoD corto opcional junto al objetivo: se fija con "dod: <texto>" ("dod: clear"
lo borra) y se muestra atenuado con 🏁 tras el objetivo. Re-fijar el objetivo
preserva el DoD existente.
- Comando "pausa" (prompt) marca la fase en en_pausa. Es la alternativa manual a
Ctrl-C: Claude Code no dispara ningun hook al interrumpir un turno (el Stop
hook solo corre en finalizacion normal; feature pedido, sin implementar), asi
que no es posible detectar la interrupcion automaticamente.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Separa el ciclo de trabajo en dos grupos con la fuente adecuada para cada uno:
- ACTIVO (mientras se trabaja): lo marca el hook PostToolUse de forma
determinista, sin LLM, segun la herramienta usada — Read/Grep/Glob ->
investigando; Edit/Write -> haciendo; Bash con tests -> testeando; Bash de
lectura (ls/cat/git status...) -> investigando; mcp fn_search/show/... ->
investigando. Refleja en tiempo real lo que hace el asistente.
- REPOSO (al parar y ceder el control): lo resuelve el Stop hook con ask_llm
(haiku) -> hecho / pendiente_revision / bloqueado / en_pausa. Al parar nunca
queda en un estado activo.
Cambios:
- goal_phase_active.sh: nuevo hook PostToolUse (mapa herramienta -> fase activa).
- goal_phase_worker.sh: ahora solo produce estados de reposo; se elimina el modo
prompt. Mantiene el gate (resuelve reposo solo si hubo trabajo o se venia de
activo) y el historial.
- goal_tracker.sh: deja de lanzar clasificacion LLM en el prompt (redundante);
vuelve a fijar objetivo desde el prompt + informar estado.
- statusline.sh: nuevo estado en_pausa (en pausa); set de fases reordenado.
- settings.json: registra el hook PostToolUse.
Resultado: 1 sola llamada haiku por turno (Stop); el estado activo es gratis y
refleja las acciones reales en vez de la intencion del prompt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- statusline.sh: muestra los ultimos 7 estados previos como emojis atenuados
(DIM) separados por │, entre el objetivo y la fase actual. El historial se
guarda en el goal JSON (campo .history), colapsando estados consecutivos
repetidos, hasta 12 entradas.
- goal_phase_worker.sh: dos modos. 'stop' (tras la respuesta del asistente, con
filtro de trabajo real) y 'prompt' (tras el prompt del usuario, clasifica la
intencion para feedback inmediato). Nuevo veredicto 'sin_cambio' para
preguntas/charla que no implican cambio de actividad; ante la duda, no toca.
Ambos modos mantienen el historial.
- goal_tracker.sh: en cada prompt con objetivo activo lanza el worker en modo
prompt (background) ademas del Stop hook.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cada terminal muestra su objetivo (color estable por session_id) y la fase de
trabajo actual, para distinguir sesiones y saber cuando algo esta hecho.
- statusline.sh: linea 0 con objetivo (izq, color por sesion) + fase (der) con
el separador estandar; 9 fases (investigando, planificando, haciendo,
testeando, puliendo, iterando, pendiente_revision, bloqueado, hecho) con icono,
color y etiqueta. Purga de goal files de sesiones muertas (>7 dias).
- hooks/goal_tracker.sh (UserPromptSubmit): fija el objetivo leyendo el prompt
del usuario ("objetivo: ...", "objetivo: clear" lo borra); si no, informa el
estado actual al modelo.
- hooks/goal_phase_eval.sh (Stop): al terminar el turno lanza el worker en
background, sin bloquear.
- hooks/goal_phase_worker.sh: clasifica la fase con ask_llm (haiku, API directa,
nunca claude -p) usando la peticion del usuario + la ultima respuesta del
asistente. Solo reevalua si el turno tuvo trabajo real (tool_use); en charla
pura no toca la fase ni gasta llamada.
- settings.json: registra los hooks UserPromptSubmit y Stop.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>