CommunityRedacción y edicióngithub.com

turn-eta — di cuándo terminará este turno y aprende de lo que t…

Agentes de codificación que predicen cuándo finalizará un turno y mejoran sus estimaciones con cada iteración.

¿Qué es turn-eta — di cuándo terminará este turno y aprende de lo que t…?

Este skill permite que un agente de IA (como Claude Code, Cursor o Codex) estime el tiempo de finalización de un turno de trabajo antes de comenzar, mida el progreso paso a paso y mejore sus predicciones con base en el historial real. Se ejecuta en cada turno que implique trabajo real (editar archivos, ejecutar comandos, buscar en el código). El agente debe listar los pasos numerados, llamar al comando `plan` para obtener una ETA, luego marcar cada paso con `step` y finalmente `done` al terminar. El sistema almacena el historial en `.eta/<provider>/<model>/log.tsv` dentro del proyecto, y calcula la mediana de minutos por paso usando datos históricos filtrados por proveedor, modelo y tamaño de tarea. Si no hay suficientes datos locales, puede recurrir a un directorio compartido definido por `TURN_ETA_DIR`. Al medir cada paso real, la estimación se ajusta dinámicamente, combinando el historial con el ritmo actual del turno. Esto permite que el agente aprenda de sus errores de estimación y se vuelva progresivamente más preciso.

Compatible con✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add 2JIHAN/show-me-your-eta

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

turn-eta — di cuándo terminará este turno y aprende de lo que tomó

Antes de que comience el trabajo, escribe los pasos como una lista numerada y di cuándo terminará. Cronometra cada paso a medida que se completa. Cuando finalice el turno, cierra la respuesta con la hora real de finalización. La siguiente estimación leerá ese registro.

Cuándo se ejecuta

Cada turno que contenga trabajo real — editar un archivo, ejecutar un comando, buscar en el código.

  • Hay trabajo en el turno → llama a plan antes de empezar y abre tu respuesta con lo que imprime, en el orden en que lo imprime: la línea **ETA …** primero, sola, luego los pasos numerados. La hora de finalización es lo que el lector busca; los pasos debajo son el razonamiento detrás. Llama a step <id> a medida que cada paso se completa, y done <id> cuando el trabajo del turno esté terminado.
  • El último párrafo también es una hora, y depende de si algo sigue ejecutándose.
    • Todo terminó antes de que escribas la respuesta → el bloque completo que done imprime: la línea de finalización de done. Para entonces la ETA ha expirado; reimprimirla le entrega al lector una estimación que el reloj ya desmintió, mientras que los tiempos por paso muestran dónde falló.
    • Algo sigue ejecutándose (un trabajo en segundo plano, una tarea delegada) → el pronóstico: **ETA 17:45**. Vuelve a calcularlo mientras escribes, nunca pegues el número que plan imprimió antes.
  • Turno solo de conversación (responder una pregunta, decidir qué construir) → no hagas nada. Es ruido.
  • Una corrección de una línea no vale la ceremonia. Úsalo cuando haya más de un paso.

Comandos

Node puro, sin instalación. Ejecútalo desde donde esté instalado el skill.

# antes del trabajo — nombra los pasos y obtén una ETA
node <skill>/scripts/eta.js plan \
  "reproducir el fallo" "corregir el analizador de fechas" "actualizar los fixtures" "volver a ejecutar la suite" \
  --provider anthropic --model claude-opus-5 --size M

# **ETA 17:45** (14 min)
#
# 1. reproducir el fallo
# 2. corregir el analizador de fechas
# 3. actualizar los fixtures
# 4. volver a ejecutar la suite
#
# 4 pasos, ~14 min (3.5 min/paso de anthropic/claude-opus-5 M, 6 turnos)
#
# (las últimas 6 estimaciones fueron 3 min más largas)
# turn id: 48i35qek

# cada vez que se completa un paso — medido y el resto se vuelve a pronosticar según el ritmo medido
node <skill>/scripts/eta.js step 48i35qek
# 2/4 corregir el analizador de fechas — 8m 06s
#
# **ETA 17:49** (4 min después)

# cuando el trabajo del turno está terminado
node <skill>/scripts/eta.js done 48i35qek
# **FINALIZADO 17:48** (estimado 14 min / real 17 min)

# lo que dice el registro ahora mismo
node <skill>/scripts/eta.js stats

Nombra los pasos, no solo los cuentes. plan rechaza un número desnudo. Un conteo que nadie puede verificar no es un plan — los pasos nombrados permiten que la persona que lee diga "salta el 3" antes de empezar. Pon esa lista numerada al inicio de tu respuesta, luego haz el trabajo.

Debes pasar tu propio --provider y --model. Un shell no puede ver qué modelo lo está impulsando. Usa los identificadores que te conoces a ti mismo — --provider anthropic --model claude-opus-5, --provider openai --model gpt-5-codex, --provider google --model gemini-3-pro. Si falta algo, cae bajo unknown/unknown, que sigue funcionando pero agrupa todos los modelos juntos.

--size es S (corrección pequeña), M (normal, por defecto), o L (gran bloque). Aproximado está bien; solo evita que los turnos pequeños arrastren el promedio de los grandes.

El id del turno es obligatorio. plan imprime uno; llévalo a través de cada step y el done final — step 48i35qek, done 48i35qek. Otro agente trabajando en el mismo proyecto escribe en el mismo registro, por lo que una llamada sin id solía cerrar cualquier turno que estuviera abierto — el de otro. step y done ahora lo rechazan sin él. Un turno que nadie ha tocado durante cuatro horas se considera abandonado.

Dónde vive el registro

<raíz del proyecto>/.eta/<provider>/<model>/log.tsv

Dentro del proyecto, para que un agente cuyos permisos se limitan a su directorio de trabajo pueda leer su propio historial. La raíz del proyecto es el .git más cercano hacia arriba, de lo contrario el directorio actual. El proveedor y el modelo son carpetas, para que el ritmo de un modelo nunca se convierta silenciosamente en el de otro.

Añade .eta/ a .gitignore. Es una medición de tu máquina en tus turnos; no significa nada para nadie más y cambia en cada turno.

Establece TURN_ETA_DIR en otro directorio .eta para compartir el historial entre proyectos. Solo se consulta cuando el registro local es demasiado escaso para decir algo.

Cómo mejora la estimación

done registra la estimación, el real y los tiempos por paso. plan los lee y toma la mediana de minutos por paso, caminando desde la coincidencia más específica hacia afuera y deteniéndose en el primer escalón con al menos 3 turnos terminados:

  1. este proveedor + modelo + mismo tamaño
  2. este proveedor + modelo
  3. este proveedor, cualquier modelo
  4. todo en el .eta de este proyecto
  5. el registro compartido en TURN_ETA_DIR, mismo orden
  6. de lo contrario 4 minutos por paso

Mediana en lugar de media, para que un turno que se alargó no arrastre todas las estimaciones futuras. Solo cuentan los últimos 20 turnos por escalón. plan imprime qué escalón usó, para que el número nunca sea un misterio.

A mitad del turno, step combina ese historial con el ritmo que este turno está llevando realmente, ponderado por cuánto del turno está hecho: en el paso 1 de 4 el historial aún pesa tres cuartos, para el paso 3 este turno pesa tres cuartos. Un primer paso lento mueve la hora de finalización sin secuestrarla.

Skills relacionados