Lo esencial
Hay dos formas de lanzar una tarea repetitiva en Claude Code, y son como una bici y un coche. La bici funciona de maravilla para ir a la tienda de la esquina. El coche es indispensable para viajar a otra ciudad. Elige el transporte correcto.
Conceptos clave
/loop: ciclos en vivo dentro de la sesión actual de Claude Code- Scheduled Tasks: programaciones de larga duración fuera de la sesión: rutinas en la nube (Routines), tareas en la app de escritorio, un cron externo como Trigger.dev
- Regla de elección: horizonte de tiempo + si necesitas estar presente
- Ejecución de recuperación (catch-up): qué pasa con las ejecuciones que se saltaron
A octubre de 2026, las Routines están en estado research preview: su comportamiento y sus límites pueden cambiar. Capacidades y versiones vigentes: Lo vigente.
Teoría
/loop: ciclos en vivo
El comando /loop lanza una acción repetitiva directamente dentro de la sesión actual de Claude Code.
Sintaxis:
/loop [intervalo] [prompt]El intervalo puede ir antes del prompt (10m) o después, en palabras ("cada 2 horas"). Unidades: s, m, h, d. Los segundos se redondean al minuto. Si no indicas intervalo, Claude elige por su cuenta la pausa entre revisiones, de un minuto a una hora. Un /loop a secas lanza el prompt de mantenimiento integrado: terminar lo pendiente, revisar el pull request, los comentarios y las verificaciones que fallaron.
Ejemplos:
/loop 10m Revisa si hay correos nuevos del cliente client@example.com y muéstrame un resumen breve /loop 5m Ejecuta pytest y muestra el estado de las pruebas /loop 1h Revisa el estado del deploy en Trigger.dev y avísame si aparecieron errores
Cómo funciona por dentro:
- Claude Code mantiene la sesión activa
- Cada N minutos pone el prompt indicado en la cola: se ejecuta entre tus turnos, no a mitad de una respuesta
- El prompt tiene acceso a todas las herramientas de la sesión
- El resultado aparece en la terminal
- Ves las actualizaciones en tiempo real
Características de /loop
Vida útil: 7 días como máximo
Una tarea repetitiva de /loop se borra sola 7 días después de crearse: se ejecuta una última vez y desaparece. Es una protección contra ciclos olvidados. Además, el ciclo está atado a la sesión de Claude Code: si cierras la terminal, el ciclo se detiene. Si necesitas más de una semana, usa una programación fuera de la sesión (abajo).
Requiere la terminal abierta
Es una sesión en vivo. Claude Code tiene que estar corriendo. No sirve para "lanzar y olvidar".
Sin catch-up
Si la hora de ejecución pasó mientras Claude estaba ocupado con una respuesta larga o la computadora estaba suspendida, las iteraciones perdidas no se acumulan: la tarea se ejecuta una vez cuando Claude se libera y sigue con su horario.
Tienes la ayuda del agente en tiempo real
La ventaja principal: el agente ve lo que pasa y puede reaccionar. Si al revisar el correo encuentra una situación rara, puede tomar una decisión ahí mismo, no solo registrar el hecho.
Ideal para:
- Monitoreo durante la jornada: revisar la bandeja de entrada cada 10 minutos de 9 a 18 h
- Seguir el estado de un deploy que tarda 2-3 horas
- Un sprint de desarrollo de una función concreta durante varios días, con revisiones cada hora
- Monitoreo en vivo de las pruebas mientras trabajas
Scheduled Tasks: programaciones de larga duración
La programación fuera de la sesión en Claude Code es de tres tipos:
- Routines (rutinas): una tarea en la nube de Anthropic: un prompt, repositorios y servicios conectados (conectores). Se lanza por horario, por una solicitud HTTP o por un evento de GitHub. Funciona con la computadora apagada. Se crea en claude.ai/code/routines o con el comando
/schedule. Requiere el plan Pro o superior; estado research preview. Intervalo mínimo: 1 hora. - Tareas en la app de escritorio: se ejecutan en tu computadora con acceso a los archivos locales. Funcionan mientras la app esté abierta y la computadora no esté suspendida. Intervalo mínimo: 1 minuto.
- Un servicio cron externo, por ejemplo Trigger.dev o el cron de Cloudflare Workers: escribes el código tú y la plataforma lo ejecuta según el horario.
Abajo, con el ejemplo de un servicio externo, se ve cómo se arma una programación en código. Para Claude Code en sí, prueba primero las rutinas integradas.
Cómo configurarlo con Trigger.dev:
// src/trigger/weekly-report.ts
// La importación depende de la versión del SDK: revisa la documentación de trigger.dev
import { schedules } from "@trigger.dev/sdk";
export const weeklyYoutubeReport = schedules.task({
id: "weekly-youtube-report",
cron: "0 9 * * 5", // Cada viernes a las 09:00
run: async (payload) => {
// Reunir las estadísticas de YouTube de la semana
const stats = await fetchYoutubeStats({ period: "7d" });
// Generar el reporte con Claude
const report = await generateReport(stats);
// Enviarlo al chat de notificaciones (aquí, Telegram; usa el canal que prefieras)
await sendToTelegram(report);
return { completed: true };
}
});Sintaxis de cron: referencia rápida:
Formato: minutos hora día_del_mes mes día_de_la_semana
(0-59) (0-23) (1-31) (1-12) (0-7, 0 y 7 = domingo)| Expresión cron | Qué hace | Uso típico |
|---|---|---|
*/5 * * * * |
Cada 5 minutos | Monitoreo del correo |
0 * * * * |
Cada hora en punto | Revisar el estado del deploy |
0 8 * * 1-5 |
Lun-Vie a las 08:00 | Daily Brief |
0 9 * * 5 |
Cada viernes a las 09:00 | Reporte semanal |
0 10 1 * * |
El día 1 de cada mes a las 10:00 | Reporte financiero mensual |
0 3 * * * |
Todos los días a las 03:00 | Respaldo nocturno |
*/30 9-18 * * 1-5 |
Cada 30 min de 9 a 18 h, Lun-Vie | Monitoreo en horario laboral |
0 0 * * 0 |
Cada domingo a medianoche | Limpieza semanal |
Editor visual para comprobarlo: crontab.guru: escribes la expresión y ves el horario en lenguaje humano.
Características de las Scheduled Tasks
Larga duración: meses y años
Las configuras una vez y funcionan de forma permanente hasta que las detengas. Es una función del sistema, no algo de ocasión.
No requieren la terminal abierta
Las rutinas y los servicios externos se ejecutan en la nube. La computadora puede estar apagada y la tarea se lanza igual. La excepción es la tarea en la app de escritorio: necesita la app abierta y la computadora despierta.
La ejecución de recuperación (catch-up) depende de la herramienta
Si la computadora estaba suspendida a la hora de la ejecución, al despertar la app revisa los últimos 7 días y lanza una sola ejecución de recuperación para la hora perdida más reciente; las demás se descartan. Una tarea diaria que se saltó seis días se ejecutará una vez. Por eso agrega una protección en el prompt: "Revisa solo los commits de hoy". En un servicio cron externo, revisa en su documentación si recupera las ejecuciones perdidas. Para operaciones críticas (reportes, respaldos) no dependas de la recuperación: verifica el resultado.
Sin reacción en vivo
Un servicio cron externo ejecuta un algoritmo descrito de antemano. Si algo sale fuera del plan, la tarea lo registrará en los logs, pero no podrá reaccionar con flexibilidad como un agente en vivo. Una rutina de Claude Code está más cerca de un agente: lanza una sesión completa y se las arregla según el prompt. Pero durante la ejecución tú no estás cerca y nadie puede aprobar acciones, así que el prompt debe ser autosuficiente y los permisos, mínimos.
Ideal para:
- El reporte semanal del canal de YouTube cada viernes
- Monitoreo diario de la competencia y las noticias
- El reporte financiero mensual el día primero
- Respaldos regulares de datos
- Cualquier tarea que deba funcionar "por sí sola"
Tabla comparativa
| Criterio | /loop | Rutina (nube) | Tarea en la app |
|---|---|---|---|
| Dónde funciona | tu computadora | la nube de Anthropic | tu computadora |
| Vida útil | hasta 7 días | hasta que la desactives | hasta que la borres |
| Requiere la sesión abierta | SÍ | NO | NO |
| Requiere la computadora encendida | SÍ | NO | SÍ (con la app abierta) |
| Recuperación de ejecuciones perdidas | NO | no hace falta, la computadora no participa | una ejecución de los últimos 7 días |
| Acceso a archivos locales | SÍ | NO (un clon nuevo del repositorio) | SÍ |
| Intervalo mínimo | 1 minuto | 1 hora | 1 minuto |
| Configuración | segundos | unos minutos | unos minutos |
| Consumo | límites de la suscripción | límites de la suscripción | límites de la suscripción |
| Mejor para | monitoreo de ocasión | operaciones regulares sin computadora | operaciones regulares con archivos locales |
Un servicio cron externo (Trigger.dev y similares) conviene cuando necesitas tu propio código y tu propia interfaz. Se cuenta aparte: tiene su propio cobro y sus propias reglas. Las condiciones de las rutinas y de los planes cambian: Lo vigente.
La regla de elección
Responde dos preguntas:
1. ¿Cuánto tiempo va a funcionar?
- Unas horas o días (hasta 7) →
/loop - Semanas, meses, de forma permanente → Scheduled Tasks
2. ¿Vas a estar frente a la computadora?
- Sí, estás trabajando activamente →
/loop(ves lo que pasa y puedes intervenir) - No, quieres "lanzar y olvidar" → Scheduled Tasks: una rutina en la nube y, si necesitas archivos locales, una tarea en la app
Ejemplos con la regla:
"Quiero seguir el estado del deploy mientras corre (2 horas)" → /loop: periodo corto, estás frente a la computadora
"Quiero un reporte semanal del proyecto los viernes" → Scheduled Task: regular, no requiere tu presencia
"Quiero revisar el inbox cada 10 minutos en la jornada laboral" → Depende: si es solo hoy → /loop. Si es para siempre → Scheduled Task
"Quiero vigilar a la competencia tres días mientras preparo un pitch" → /loop: plazo limitado, trabajo activo
Combinarlos
En los sistemas complejos se usan los dos enfoques juntos:
Scheduled Task (rutina en la nube o Trigger.dev):
→ Cada día hábil a las 08:30 lanza el Daily Brief
→ Funciona siempre, no requiere atención
/loop (durante la jornada):
→ Cuando esperas un correo importante, lanzas /loop por 4 horas
→ El agente revisa cada 5 minutos y te avisa en cuanto llega
→ Es un complemento de la programación regular, no un reemplazoPráctica
Tarea: configurar /loop para un monitoreo en vivo
Elige algo que quieras monitorear ahora mismo:
- Un archivo que debería cambiar (por ejemplo, un archivo de log)
- Un directorio donde deberían aparecer archivos nuevos
- El resultado de un comando (por ejemplo, git status)
Lanza /loop:
Escribe esto en el chat /loop 3m Revisa el contenido de la carpeta ~/Downloads y muestra la lista de archivos agregados en los últimos 10 minutos
Observa 3-4 iteraciones. Agrega un archivo a Downloads y mira cómo lo detecta el agente.
Detén el ciclo: pídele a Claude "cancela esta revisión" (la lista de tareas te la muestra la pregunta "¿qué tareas programadas tengo?"). Si lanzaste
/loopsin intervalo, basta con presionar Esc. Si no, el ciclo se borrará solo en 7 días.Extra: describe la misma tarea como una programación fuera de la sesión. Opción A: una rutina con
/schedule(requiere el plan Pro o superior; después de crearla, mira el resultado en claude.ai/code/routines). Opción B: una configuración para Trigger.dev (puedes hacerlo sin deploy: solo escribe el código y entiende la sintaxis de cron)
Plantilla: configuración de Scheduled Tasks
Ejemplo de un conjunto de programaciones para un freelancer productivo (con un servicio cron externo como ejemplo: el mismo conjunto se puede armar como tres rutinas):
// schedules.ts — todas las tareas cron en un solo archivo
// Daily Brief matutino: Lun-Vie a las 08:00
export const dailyBrief = schedules.task({
id: "daily-brief",
cron: "0 8 * * 1-5",
run: async () => {
const [emails, meetings, tasks] = await Promise.all([
getUnreadEmails({ since: "12h" }),
getTodayMeetings(),
getOpenTasks({ priority: "high" })
]);
const brief = await generateBrief(emails, meetings, tasks);
await sendToTelegram(brief);
}
});
// Reporte semanal: viernes 17:00
export const weeklyReport = schedules.task({
id: "weekly-report",
cron: "0 17 * * 5",
run: async () => {
const stats = await getWeeklyStats();
const report = await generateWeeklyReport(stats);
await sendToTelegram(report);
}
});
// Respaldo: todos los días a las 03:00
export const nightlyBackup = schedules.task({
id: "nightly-backup",
cron: "0 3 * * *",
run: async () => {
await backupDatabase();
await sendToTelegram("✅ Respaldo terminado");
}
});En esta plantilla sendToTelegram es una función auxiliar de ejemplo: cámbiala por el canal de avisos que uses (correo, Slack, un bot de Telegram).
Herramientas y recursos
/loop: comando integrado de Claude Code (un skill incluido)- Routines: rutinas en la nube: claude.ai/code/routines o
/schedule(research preview, Pro y superior) - Tareas en la app de escritorio: pestaña Code, sección Routines, opción Local
- Documentación: Run prompts on a schedule y Routines
- Trigger.dev: plataforma para Scheduled Tasks y workflows (servicio externo)
- Referencia de sintaxis cron: editor visual de expresiones cron: crontab.guru
- Skill:
anthropic-skills:schedule: ayuda para configurar programaciones
Ideas clave
/loop es la bici: se lanza rápido, es buena para cuando estás cerca. Las Scheduled Tasks son el coche: tardan más en configurarse, pero avanzan solas mientras haces otra cosa. Qué pasa con una ejecución perdida no es un detalle, es una propiedad clave: /loop no recupera, la tarea en la app hace una ejecución de recuperación y la rutina en la nube no depende de tu computadora. Para operaciones críticas (reportes financieros, respaldos), verifica el resultado en lugar de confiar en la recuperación. Regla de elección: horizonte de tiempo + necesidad de presencia. Dos preguntas, una respuesta.
Lecciones relacionadas
- Deploy en Cloudflare: los cron triggers de Cloudflare Workers como alternativa a Trigger.dev para programaciones serverless
- AI Executive Assistant: las Scheduled Tasks alimentan los cuatro workflows del asistente (email, reuniones, brief, tareas)
Siguiente lección
La marca se guarda solo en este navegador y no se envía a ningún sitio. Mi progreso