The Ralph loop wraps your coding agent in an external while loop — fresh context each iteration, state externalized, the agent keeps going until the feature is done. It’s great for fire-and-forget tasks where you walk away and come back to a finished feature.

But sometimes I don’t need all that. I’m in an interactive session, working with the agent, and I just want it to clean up what it’s done before I commit. I don’t need a fresh context or externalized state — I just need a quick review-fix cycle within my current session.

The Review+Fix Skill

I wrote about this briefly in my post on using a second LLM to review your coding agent’s work. Here’s the skill:

---
name: review-plus-fix-relentlessly
description: Review dirty code and fix iteratively.
  When user say to "loop to fix dirty" or "review+fix"
---

All dirty repo changes are likely made in this session,
though not always

Use the review dirty skill to review changes and fix
to your best ability and matching repo preferences and
style.

After fixing, run review-plus-fix-relentlessly again,
and before each cycle report how many cycles of
review+fix we have done.

Stop if code review skill doesn't not produce any more
things to fix

It calls my review-dirty skill which shells out to Codex for a fresh pair of eyes, then fixes whatever Codex flags, and loops. It stops when Codex has nothing left to complain about — usually 2-3 cycles.

Why Not Just Use a Ralph Loop?

A Ralph loop is designed for autonomous, long-running tasks. It externalizes state to files, spawns fresh agent sessions, and manages its own progress. That’s overkill when I’m already mid-conversation with the agent and I just want it to tighten up its work.

With review+fix, I say two words and the agent loops — review, fix, review again — within my current session. No external scripts, no state files, no new processes. The context is already loaded. It knows what I asked for, what it changed, and why. It just needs a second opinion from Codex.

When I Use This

After the agent implements something, I say “review+fix” and let it run for a minute. When I come back, the diff is cleaner than what I’d get from a single pass. I don’t have to set up an external loop or hand off the whole task — I’m already in the session, so I just let it iterate.