Why Simple AI Loops Beat Complex Orchestration Workflows
Parsons spent months maintaining an N8N newsletter workflow with over a dozen nodes. Every Monday at 2 p.m. he got a failure notification, dug into the graph, fixed whatever broke, and repeated. The workflow produced worse newsletters than he could write himself.
He replaced it by pasting the N8N JSON into Claude Code and asking for a skill. Claude Code reads the skill, calls a tool, loops back, and produces a draft. He ends each session with “please update the skill with anything you should have done differently,” and it improves itself.
What a Ralph Loop Is and Where the Name Comes From
The name comes from Ralph Wiggum, the Simpsons character who tries the same thing over and over until it works. A Ralph loop is exactly that: give the model a task, wait for it to finish, then give it the same task again. Weaker models would re-read their output and notice what they missed, such as a ticket status that was never marked complete.
“The dumbest Ralph loop is literally that just a while loop and it just goes through and implements stuff super super easy.” – Chris Parsons
Claude Opus 4.6 and GPT 5.12 rarely miss something on the first pass, so re-prompting matters less for self-correction and more for autonomous chaining of many tasks in sequence.
Live Demo: Implementing Tickets with a Bare Loop
Parsons opened a Pomodoro timer codebase with one start command and one passing test. He ran “implement doc/tickets/001” in Claude Code and got a status command plus a new test he never asked for. The second pass caught that the ticket status was never marked done. He then showed the bare while-true Claude loop demo (18:03), typing while true; do claude -p "implement ticket 001"; done to prove the floor is a three-line shell script.
Running claude -p inside a loop requires permissions granted up front. For a sandboxed toy project Parsons gave full permissions; for production he uses targeted allowlists.
Pointing a Loop at a Backlog: Ticket Queues and Scheduling
Parsons tried pre-computing a full dependency graph, fired six parallel agents, and watched them deadlock. Two agents both blocked on the same shared ticket and both implemented it. He had rebuilt waterfall with AI. The fix: drop the dependency graph. The prompt becomes “implement the next most important ticket, commit when done.” Claude reads all tickets, infers dependencies from what already exists in the repo, and picks one.
“you are one engineer in a relay team do exactly one change then drop the context and stop” – Chris Parsons
One loop running continuously outruns most developers’ ability to review output anyway. Add parallelism only after you can keep up with a single agent.
Using Claude Code’s Built-in /loop Command and Cron Scheduling
Rather than write a shell wrapper, Parsons used the /loop cron scheduling demo (41:14) directly in Claude Code: loop every minute build the next ticket from doc/tickets. Claude Code created a cron job internally. While Parsons spoke about skills, the session reached ticket six on its own and then restarted.
Sessions persist about three days, so this works for multi-hour runs without any wrapper script. He also showed loop every one hour check linear for new bug reports, pointing the same pattern at a live issue tracker.
Running Loops Outside Code: Worker Loops, Morning Briefings, and Human Boundaries
On a VPS away from his main machine, Parsons runs three permanent loops: a 15-minute heartbeat that checks his calendar and sends Telegram messages, a 6 a.m. briefing that processes overnight email and flags priorities, and a worker loop that advances all active client projects. When he wakes up, 15 or 16 draft email replies are waiting for review.
“My basic rule is is this reversible without embarrassment to me.” – Chris Parsons
Sending email violates that rule. Drafting a slide deck does not. The worker never closes a project file; Parsons does. That boundary forced a harder question: not what AI can do, but which parts of his work he wants to keep.
Q&A
How does the loop know what ‘good’ looks like for open-ended tasks like newsletters? Parsons seeded the skill with editorial principles extracted from newsletters he admired, then added a ‘simulate audience’ skill that runs multiple reader personas in parallel and surfaces improvements the main loop missed. ▶ Watch (38:25)
Sub-agents for validation: does splitting implementation and review into separate agents improve quality? An attendee confirmed that moving the validation step to a sub-agent with fresh context, rather than asking the same agent to check its own work, started finding real issues that the self-review step had missed. ▶ Watch (55:19)
How do you deal with context rot across a long-running loop session? Parsons prefers a fresh context for each loop iteration because accumulated session history adds little value when the model can read files directly, and Opus 4.6’s long-context retrieval makes degradation much less of a problem than it was previously. ▶ Watch (1:15:54)
Where is the human in the loop if AI picks the next ticket and implements it? Parsons said the honest answer is that for routine tasks there may be no needed human role, and he is now consciously deciding which work he wants to keep, reserving strategic thinking for himself and delegating everything governed by ‘is this reversible without embarrassment?’ ▶ Watch (58:32)
Notable Quotes
The dumbest Ralph loop is literally that just a while loop and it just goes through and implements stuff super super easy. Chris Parsons · ▶ Watch (18:29)
you are one engineer in a relay team do exactly one change then drop the context and stop Chris Parsons · ▶ Watch (50:06)
My basic rule is is this reversible without embarrassment to me. Chris Parsons · ▶ Watch (1:07:26)
Key Takeaways
- Replace complex orchestration workflows with a single Claude Code skill running a read-decide-act loop.
- Tell the loop ‘pick the next most important ticket’ and let the model resolve dependencies on the fly, one at a time.
- Define the human boundary using one rule: never let the loop take an action that is not reversible without embarrassment.