Al terminar este módulo, vas a correr tu primer trabajo autónomo con candados: Claude trabajando solo, tú durmiendo tranquilo.
Ya le pusiste candados (módulo 10) y le agrandaste las manos (módulo 11). Hoy es el módulo que cierra el arco: sueltas la correa. No de golpe — peldaño por peldaño, y siempre con los candados puestos primero. Todo lo que sigue solo funciona porque ya llevas once módulos construyendo la red de abajo: la máquina del tiempo, la constitución, los candados. Sin eso, esto no es autonomía — es correr con tijeras.
Hasta hoy, todo lo que hizo Claude lo viste pasar frente a tus ojos, turno por turno. Hay cuatro peldaños para ir soltando esa mirada, de menos a más:
La correa. Todo este arco ha sido sobre qué tan larga la traes: los candados (módulo 10) fueron el contrato; el MCP (módulo 11) le agrandó el mundo. Hoy la sueltas — un peldaño a la vez, sin dejar el carrete.
Peldaño 1 — Tareas en segundo plano. Le encargas algo que tarda y sigues trabajando en lo tuyo mientras corre, en vez de quedarte viendo la pantalla.
Teclea (o pega) esto (en tu terminal):
claude --bg --exec "arma el inventario completo de ~/Descargas, con detalle de cada subcarpeta"
Vas a ver algo así (transcripción real, capturada para este manual):
Starting background service…
backgrounded · dfccf2dc · arma el inventario completo de ~/Descargas…
claude agents list sessions
claude attach dfccf2dc open in this terminal
claude logs dfccf2dc show recent output
claude stop dfccf2dc stop this session
Qué significa: Claude arrancó a trabajar en OTRA sesión, aparte, mientras tú regresas a la tuya — y el propio comando te deja el menú de seguimiento: claude agents para ver la lista de lo que corre, claude logs dfccf2dc para asomarte sin interrumpir, claude attach dfccf2dc para reconectarte, y claude stop dfccf2dc para frenarlo. (El código dfccf2dc cambia en cada encargo — usa el que TE salga.)
Si en vez de eso ves que la terminal se queda esperando sin regresarte el control: te faltó el --exec con el encargo entre comillas — sin eso, --bg abre una sesión interactiva, no una de fondo. Y si claude agents te contesta que "requiere terminal interactiva": estás en un script — ahí se usa claude agents --json.
Peldaño 2 — Headless: Claude como comando. ¿Te acuerdas del Loro, del módulo 8? Cada vez que termina de hablar, por dentro usa exactamente esto: claude -p — Claude SIN conversación, como un comando más de tu terminal. Entra, hace la chamba, imprime el resultado, sale.
Teclea (o pega) esto:
claude -p "lee inventario.md y dime en 3 líneas qué tan desordenada está la carpeta"
Vas a ver algo así:
Tu carpeta de Descargas tiene 342 archivos, el 40% instaladores viejos.
Hay al menos 15 duplicados por nombre. Los 10 más pesados son videos.
Prioridad de limpieza: instaladores > duplicados > videos sin revisar.
Qué significa: confirmado en vivo para este manual (con otro prompt, mismo mecanismo): claude -p no abrió una conversación — contestó y se cerró, como si fuera pwd o ls. Por eso es la pieza que arma todo lo demás: un script, un cron, otro programa, le pueden hablar a Claude sin que haya un humano tecleando.
Peldaño 3 — Metas medibles: /goal. No para hasta que se cumple una condición que TÚ escribiste. Después de cada turno, un evaluador revisa: ¿ya se cumplió? Si no, sigue solo, con la razón como pista.
Teclea (o pega) esto (dentro de Claude Code):
/goal las 10 descripciones en productos-dummy.md están completas, cada una entre 40 y 60 palabras
Vas a ver algo así:
Goal set. Working until condition is met...
[turn 1] 3 of 10 descriptions written. Continuing.
[turn 2] 7 of 10 descriptions written. Continuing.
[turn 3] 10 of 10 descriptions written, all within range. Goal met.
Qué significa: tú NO le dijiste "sigue" cada vez — el propio sistema revisó la condición después de cada turno y decidió si continuar. /goal clear la cancela si te arrepientes.
Criterio de terminado MEDIBLE, o no hay loop. "Que las descripciones queden bonitas" no sirve — nadie, ni Claude, sabe cuándo eso es cierto. "Que las 10 tengan entre 40 y 60 palabras" sí — se cuenta. Si no lo puedes comprobar con un comando o un conteo, todavía no está listo para soltarlo solo: sigue revisándolo tú, a mano.
Peldaño 4 — Agendado: rutinas que trabajan aunque tu compu duerma. El último peldaño ya no vive en tu sesión — vive en la nube. Le dices qué hacer y cada cuánto, y corre solo, aunque cierres la laptop.
Teclea (o pega) esto (dentro de Claude Code):
/schedule
Vas a ver algo así:
Let's create a scheduled routine.
What should it do? › Every Monday, review ~/Curso-Claude and write a short report.
When should it run? › Mondays at 8:00 AM
✔ Routine created: "reporte-semanal" (runs weekly, Mon 08:00)
Qué significa: esta rutina vive en la nube de Anthropic, no en tu compu — corre aunque tengas la laptop apagada. El mínimo es cada hora; para "cada lunes" sobra margen de tiempo.
Si en vez de eso ves que el comando no existe en tu versión: pregúntale directo a Claude "¿cómo agendo una rutina recurrente?" — es una función relativamente nueva y el camino exacto puede haber cambiado.
Todo lo de arriba es oficial, documentado, con soporte. Ahora la pieza que le da nombre a este módulo — y que nació completamente al margen de cualquier documentación.
El becario incansable que cada vuelta llega fresco. Imagina un becario que reinicia su memoria cada vez que termina una tarea — pero antes de irse, deja todo anotado en el pizarrón (los archivos, el proyecto en disco). A la vuelta siguiente no se acuerda de nada de la conversación, pero LEE el pizarrón, ve dónde quedó el trabajo, y sigue. Otra vez. Y otra. Terco, sin drama, sin cansarse.
El origen (patrón comunitario). El 14 de julio de 2025, el ingeniero Geoffrey Huntley publicó una técnica que cabe en un renglón de terminal:
while :; do cat PROMPT.md | claude-code ; done
Un while de bash, infinito, que relanza al agente contra el MISMO archivo de instrucciones una y otra vez. Huntley lo resume así: "Ralph is a technique. In its purest form, Ralph is a Bash loop." — "Ralph es una técnica. En su forma más pura, Ralph es un loop de Bash." El nombre viene de Ralph Wiggum, el niño de Los Simpson: terco, despistado, optimista — muy bueno construyendo cosas, pero que se cae de la resbaladilla. La forma de corregirlo no es vigilarlo en vivo: es ponerle un letrero junto a la resbaladilla (agregar una regla al PROMPT.md cada vez que se equivoca).
Por qué funciona (comunidad). Dos cosas que ya conoces con otro nombre: cada vuelta arranca con la mesa limpia (módulo 2 — contexto fresco, sin el ruido de vueltas anteriores) y el estado real vive en la máquina del tiempo (módulo 4 — archivos y git en disco, no en la conversación). El becario no recuerda, pero el pizarrón sí.
Los fracasos (comunidad), citados por el propio inventor. Esto no te lo cuenta un curso genérico:
"Ralph will test you." — "Ralph te va a poner a prueba."
"You'll wake up to a broken codebase that doesn't compile." — "Vas a amanecer con un codebase roto que ni compila."
"There's no way in heck would I use Ralph in an existing code base." — "Ni loco lo usaría en un codebase existente."
Ralph es para empezar de cero (greenfield), no para meterlo a un sistema delicado que ya funciona. Y si lo dejas correr de más, aparecen comportamientos raros — hay un reporte de que un Ralph desatendido se puso a agregarle criptografía post-cuántica a un proyecto que nadie se la pidió. Terco no siempre es sinónimo de sensato.
El dato que corre de boca en boca (según el propio Huntley, repetido después por Anthropic): un contrato de $50,000 USD entregado como MVP funcional por $297 USD de consumo de API. Es un dato de su autor, no una medición independiente — cuéntalo así.
La versión moderna (plugin oficial). Anthropic empacó la idea como plugin: ralph-wiggum / ralph-loop. Ojo con la diferencia técnica: el bash loop original relanza un PROCESO nuevo cada vuelta (contexto 100% fresco); el plugin usa un hook Stop que intercepta el intento de Claude de terminar la sesión y le reinyecta el mismo encargo DENTRO de la misma sesión — no es un reinicio completo. Misma filosofía, mecanismo distinto.
Si esto te suena a chino, bríncatelo: no lo necesitas para seguir. El plugin oficial se instala y se usa así:
/plugin marketplace add anthropics/claude-code
/plugin install ralph-wiggum@claude-plugins-official
/ralph-loop "construye la API con CRUD completo y tests" --max-iterations 50 --completion-promise "LISTO"
--max-iterations es el freno real (sin él, no para); --completion-promise es el texto exacto que Claude tiene que decir para que el loop sepa que terminó — es una comparación literal de texto, no "entiende" que acabaste, así que el tope de vueltas sigue siendo tu red principal.
Un loop sin candados es el escenario de "amaneces con un codebase roto". Un loop CON candados es un becario incansable trabajando dentro de una jaula razonable. Los candados, en orden:
--max-turns 15 corta a los 15 intentos pase lo que pase; --max-budget-usd 5.00 corta si el gasto llega a ese tope. Los dos son independientes — puedes topar con cualquiera primero.cd) en la carpeta exacta donde el loop puede trabajar, y usa --allowedTools para decirle con QUÉ manos puede actuar sin preguntarte cada vez — nada más.Y tu red de siempre sigue aplicando aquí, sin que tengas que hacer nada extra: si algo sale raro, la máquina del tiempo (módulo 4) te regresa a como estaba antes de soltar el loop — un /rewind o un vistazo a git, no una tragedia.
Lo irreversible JAMÁS entra al loop. Gastar dinero, publicar, borrar en masa, mandar correos o mensajes — los mismos gates del módulo 10 — no se automatizan nunca, ni en el loop más candadeado del mundo. Si el trabajo necesita cruzar uno de esos, el loop se detiene ANTES y te lo deja listo para tu firma.
Síntoma: un claude -p en una carpeta que NUNCA has abierto con Claude Code de forma normal se niega a leer o escribir CUALQUIER cosa, aunque tu settings.json de esa carpeta traiga un allowlist bien escrito.
Causa: confirmado en vivo para este manual — la primera vez que Claude Code entra a una carpeta, necesita que TÚ confirmes (en una sesión normal, con pantalla) que confías en ella. En modo headless nadie está ahí para confirmar, así que Claude Code no se arriesga: ignora tu allowlist de settings.json entero y trata la carpeta como no confiable.
Salida: dos caminos. (1) Abre claude normal en esa carpeta UNA vez, antes de automatizar nada — con eso queda "confiada" para siempre. (2) Si de plano el loop va a correr en una carpeta nueva sin que nadie la abra antes, no dependas del settings.json: dale los permisos directo en la línea de comando con --allowedTools (como ya viste arriba) — ese sí aplica sin pedir confianza previa.
Síntoma: "Mi /goal lleva 30 vueltas y no ha terminado."
Causa: el criterio quedó ambiguo, o de plano es más grande de lo que pensabas.
Salida: Esc lo frena en seco (o espera a que llegue tu --max-turns en headless). Revisa la bitácora para ver en qué se atoró, y reescribe el criterio más concreto — casi siempre el problema es la redacción, no el trabajo.
Síntoma: "Dejé un Ralph corriendo toda la noche y el proyecto amaneció roto."
Causa: exactamente el fracaso que su propio inventor advierte — sin tope de vueltas, sin criterio verificable, o usado sobre algo delicado que ya funcionaba (en vez de empezar de cero).
Salida: por eso las reglas de esta sección no son opcionales. Y si ya pasó: tu máquina del tiempo (módulo 4) te regresa a antes de soltar el loop — es exactamente para esto que existe.
Un checklist honesto antes de soltar cualquier correa:
| Suéltala cuando... | NO la sueltes cuando... |
|---|---|
| El final se comprueba con un comando o un conteo | El criterio es "que se vea bonito" o depende de tu gusto |
| Es trabajo nuevo o de bajo riesgo | Es algo delicado que YA funciona en producción |
| La zona de trabajo está acotada a una carpeta | Necesita una decisión de diseño o de negocio en el camino |
| Tienes máquina del tiempo corriendo por debajo | No hay forma de revisar el resultado después |
| Nada de lo que hace cruza un gate | Cualquier paso del camino necesita un gate humano |
En la casa existe un skill interno bautizado try — el que responde "¿ya quedó?" convirtiendo esa pregunta borrosa en una meta medible por comando, y corre el loop (con /goal nativo o con un Ralph) hasta que se cumple de verdad. Pero la meta nunca incluye lo que la constitución marca como sagrado: "confirmar antes de gastar" en cualquier API de paga, y la ley del roster de agentes: "un subagente JAMÁS cruza un gate (gastar, publicar, borrar, mergear, deploy): el cruce sube al humano." La regla que lo resume: el goal se define SOLO sobre lo medible; los gates humanos JAMÁS entran al loop. Autonomía grande, puertas cerradas con llave — y la llave la trae una persona.
Qué vas a lograr: dos cosas — (a) tu primer maratón con candados de verdad, sobre una tarea de bajo riesgo; (b) una rutina agendada que trabaja sola cada semana.
Qué necesitas: los seeds ejercicios/m12/productos-dummy.md (10 productos ficticios) y ejercicios/m12/checklist-maraton.md (la plantilla del contrato).
Pasos — parte (a), el maratón:
productos-dummy.md a ~/Curso-Claude/maraton-productos/ y llena a mano el checklist-maraton.md: qué se va a hacer, zona de trabajo, criterio medible, tope de vueltas, qué queda fuera (los gates).Teclea (o pega) esto:
cd ~/Curso-Claude/maraton-productos
claude -p "/goal las 10 descripciones en productos-dummy.md están completas, cada una entre 40 y 60 palabras, tono cálido de panadería mexicana; anota cada vuelta en bitacora.md" \
--max-turns 15 --allowedTools "Read" "Edit" "Write"
Vas a ver algo así (transcripción real de un maratón miniatura corrido para este manual — 3 productos; el tuyo con 10 puede tomar varias vueltas):
Quedó en una sola vuelta:
- productos-mini.md: las 3 descripciones escritas, cero "PENDIENTE".
Conteo verificado — todas dentro del rango, tono cálido de panadería.
- bitacora.md: creada con la línea de la vuelta 1.
Ojo con dos cosas de esa pantalla, que son lección: (1) con claude -p pelón NO ves el turno-por-turno en vivo — al final te suelta el resumen, y el paso-a-paso queda escrito en la bitácora (por eso el contrato la exige); (2) el maratón de este manual contestó con la voz de la constitución de la casa — headless también carga tu CLAUDE.md, tal como el módulo 5 te lo prometió.
Qué significa: --max-turns 15 es tu tope de vueltas; --allowedTools es tu zona acotada (solo puede leer, editar y crear archivos — nada de terminal libre ni internet); el /goal es tu criterio medible. Los tres candados del checklist, en una sola línea.
Si en vez de eso ves que se detiene ANTES de 15 sin terminar: revisa bitacora.md — seguramente chocó con algo que no podía hacer con las herramientas permitidas; ajusta el criterio o la lista de herramientas y reintenta.
Síntoma: "Error: Input must be provided either through stdin or as a prompt argument when using --print" — ni siquiera arrancó.
Causa: el orden de la línea de comando importa. --allowedTools (y --disallowedTools) se comen TODO lo que sigue como si fueran más herramientas — si tu encargo entre comillas queda DESPUÉS de --allowedTools, se lo traga como si fuera una herramienta más, y no le queda ningún encargo que ejecutar. Se probó en vivo para este manual: exactamente ese error salió al poner --allowedTools antes del encargo.
Salida: el encargo (tu texto entre comillas, con o sin /goal) siempre PRIMERO, pegado a -p; --max-turns, --allowedTools y los demás flags, después — como quedó arriba, ya corregido.
bitacora.md completa (no solo el resultado final) y verifica TÚ el criterio: cuenta las palabras de al menos 2 descripciones a mano. No le creas al reporte — compruébalo.Pasos — parte (b), la rutina de los lunes:
/schedule (sección 12.1) y descríbele: "cada lunes a las 8am, revisa ~/Curso-Claude y escribe un reporte corto de qué cambió esta semana."¿LO LOGRASTE?
bitacora.md con el registro de cada vuelta.claude -p) y un loop tipo Ralph?headless / claude -p — Claude sin conversación: como comando, para automatizar.
background task — encargo que corre en segundo plano mientras haces otra cosa.
/goal — meta medible: no para hasta cumplirla.
cron / rutina — reloj que dispara trabajo solo (los lunes a las 8…), sin que abras la sesión.
plugin — paquete instalable de comandos, skills o hooks hechos por otros.
Ralph loop — el becario incansable: loop que relanza al agente fresco contra el mismo encargo.
guardrail — candado de la autonomía: tope de gasto/vueltas, zona acotada, criterio medible.
La demo de 5 minutos: lanza EN VIVO un /goal chico y verificable (algo que termine en 2-3 vueltas frente al grupo) y deja que corra sin tocar nada — el silencio incómodo de "¿ya, o sigue solo?" es la demo. Cuando diga "Goal met", muestra la bitácora.
El error que el alumno VA a cometer: escribir un criterio de terminado que en realidad es una opinión ("que quede bien") y sorprenderse de que el loop no para o para mal. Capitalízalo: pídeles su primera versión del criterio EN VOZ ALTA, y que el grupo vote si se puede comprobar con un comando — casi siempre no, a la primera.
La pregunta de arranque: "si te vas a dormir y dejas a Claude trabajando solo toda la noche, ¿qué tendría que ser cierto para que despertaras tranquilo — no emocionado, tranquilo?"
Verificado contra documentación oficial el 2026-07-12.