Skip to content
How I AIHow I AI

Loop engineering for beginners

I break down every loop type from scratch—what a heartbeat, cron, hook, and goal loop actually are, when each one fits, and the five things any effective loop needs before it touches production. Then I build two live loops: a daily aging-PR reviewer in Claude Code that schedules itself at 10:15 a.m. and spins off its own subagents, and a weekly skills-identification loop in Codex that spawns goal-based subagents to validate its own output in real time. *What you’ll learn:* 1. The plain-English definition of a loop—and why it’s just an automated prompt, not a scary new paradigm 2. The four loop types (heartbeat, cron, hook, and goal) and when each one actually fits your workflow 3. How to think about loop design using the “onboarding an employee” mental model 4. The five things every effective loop needs: work trees, skills, plugins/connectors, subagents, and state tracking 5. How to build a scheduled PR-review routine in Claude Code that babysits aging PRs and alerts your team 6. How to set up a weekly skills-identification automation in Codex that spawns its own validating subagents 7. Why goal-based loops are the hardest to write well—and where most people burn tokens for nothing 8. The two warning signs that your loop is going to get expensive before it gets useful *Brought to you by:* WorkOS—Make your app enterprise-ready today: https://workos.com?utm_source=lennys_howiai&utm_medium=podcast&utm_campaign=q22025 Runway—The creative AI platform for images, video, and more: https://runwayml.com/howIAI *In this episode, we cover:* (00:00) Prompts are out and loops are in (02:30) Defining a loop (03:03) The four ways to automate a prompt: heartbeat, cron, hooks, and goals (06:03) Five things every effective loop needs (09:26) The “onboarding an employee” framework for designing loops (11:58) Live build #1: Daily aging PR loop in Claude Code (17:08) Subagents inside loops (19:00) Live build #2: Weekly skills identification loop in Codex (22:57) Watching subagents spin up in real time (25:28) Warning signals around loops (27:31) What listeners are doing with loops *Tools referenced:* • Claude Code: https://claude.ai/code • Codex: https://chatgpt.com/codex • OpenClaw: https://openclaw.ai/ *Other references:* • Claire’s article “Why OpenClaw Feels Alive Even Though It’s Not”: https://x.com/clairevo/article/2017741569521271175 • Addy Osmani’s article on loop engineering: https://addyosmani.com/blog/loop-engineering/ • Using Goals in Codex: https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex *Where to find Claire Vo:* ChatPRD: https://www.chatprd.ai/ Website: https://clairevo.com/ LinkedIn: https://www.linkedin.com/in/clairevo/ X: https://x.com/clairevo _Production and marketing by https://penname.co/._ _For inquiries about sponsoring the podcast, email jordan@penname.co.)_

Claire Vohost
Jun 17, 202629mWatch on YouTube ↗

EVERY SPOKEN WORD

  1. 0:002:30

    Prompts are out and loops are in

    1. CV

      Prompts are out and loops are in. If your agent isn't able to prompt itself through an automation, what are you even doing? In today's episode, I'm gonna teach you what a prompt is in normal person speak, how to write one, when it's useful, and some pitfalls to watch out for. We will be doing this in Codex and in Claude Code, and at the end of this episode, you'll be one of the cool kids whose agents prompt itself. Let's get to it. This episode is brought to you by WorkOS. AI has already changed how we work. Tools are helping teams write better code, analyze customer data, and even handle support tickets automatically. But there's a catch. These tools only work well when they have deep access to company systems. Your co-pilot needs to see your entire code base. Your chatbot needs to search across internal docs. And for enterprise buyers, that raises serious security concerns. That's why these apps face intense IT scrutiny from day one. To pass, they need secure authentication, access controls, audit logs, the whole suite of enterprise features. Building all that from scratch, it's a massive lift. That's where WorkOS comes in. WorkOS gives you drop-in APIs for enterprise features so your app can become enterprise-ready and scale up market faster. Think of it like Stripe for enterprise features. OpenAI, Perplexity, and Cursor are already using WorkOS to move faster and meet enterprise demands. Join them and hundreds of other industry leaders at workos.com. Start building today. Okay, so why are we all prompt maxing? Of course, it's Pete at OpenClaw who told us we are old news if we are prompting, and we really need to be designing loops where our agents can prompt themselves. Now, this one tweet spun off tons of content about what is a loop, how to use a loop, and to be honest, I don't think any of them explained it very well. So I am here to answer your safe space questions about what is a loop, how do I get one set up, is it really that useful, and should I really be letting my agents prompt itself? I think the answer is yes, and... Yes, there are tons of great use cases for loops, and we're gonna talk about how you can use those and how they can be beneficial, especially with software engineering. But there are some reasons why you wouldn't want to use loops, and honestly, I still do a little prompting. So don't worry if you are not loop maxing, you're in good company, and you can still get a lot done with AI.

  2. 2:303:03

    Defining a loop

    1. CV

      So to answer what a loop is, I'm just gonna make this super simple for you all, and this goes back to one of the earliest articles I wrote on OpenClaw, which was this article about why OpenClaw feels alive even though it's not. And the core of this article was explaining that there are many ways you can prompt an AI agent, and often we only think about one way to prompt an agent, but actually there are many ways an agent like Claude Code, like Codex, like ChatGPT, like name your favorite agent here, can

  3. 3:036:03

    The four ways to automate a prompt: heartbeat, cron, hooks, and goals

    1. CV

      be prompted, and I wanna go over what those ways are. First, there are messages. This is a human triggered input. This is probably how most of us are prompting our agents. We are going to a chatbot, and we are typing in some sort of prompt, waiting for a response, and then typing another response. That is a message turn-based prompting strategy. I still think there's use for this kind of prompting. I use it all the time, but that is not what we're talking about when we're talking about loops. Instead, when we're talking about loops, we're talking about automated prompting of an agent. And there are a couple form factors that can take, and I just wanna remind you what, what those are. And I'm using OpenClaw because I think it demonstrates these types of prompt loops, but is not the only system that does them. So the first one is a heartbeat. You can set a schedule, like every 30 minutes, every hour, every five minutes, and on that schedule, it's going to kick off a task. And so you're gonna say, "Every five minutes, check if I have a new Jira ticket, and if so, start a coding agent to triage and fix that Jira agent." That's sort of like on a heartbeat. Every five minutes I want it to do that. Then there is a cron. A cron is at this time or on this schedule do this. Um, so it can be at 9:00 AM, it can be at, um, a specific time, it can be every Sunday night. These crons are a little bit more scheduled. A heartbeat is s- kind of on a regular basis. Crons are more on a set defined schedule. And then the last thing that I've talked about are hooks. So you can prompt an agent based on an internal life cycle, like a tool was called, a session was started, a session was reset, or an external hook, like a web hook from an in- external session. Every time I receive an email, I wanna get a web hook and kick off some sort of agent. And I only remind you of these things because these are common ways to do automations outside of AI. So we were doing automations on heartbeats, on crons, on hooks way before AI even happened, but now you can do that in order to prompt your AI. And so I think this whole concept of a loop is really just reminding people you do not have to use your human fingers to type in a prompt in order for your agent to do work on your behalf. Now, what's different between when I wrote this article and now is a new type of loop has been shipped as a first class citizen of both Claude Code and Codex, which is a goal. A goal is a type of loop that sets an outcome and runs an agent against that outcome until the outcome can be measured and validated, or the agent is blocked. And so I'd say there's one more loop type that's becoming pretty common in AI coding in particular, although I think there's lots of use cases for it. But again, pretty simply, a loop is a scheduled or kind of semi-autonomous automation that allows an agent to instruct itself what to do, prompt itself, and

  4. 6:039:26

    Five things every effective loop needs

    1. CV

      get that work done. Now- What do you need to write an effective loop? I like this article by Addy Osmani about Loop engineering. I think it's really good. It does break this down pretty well. You can see it's fairly recent, it's from this month. But my favorite part about this article is what you need to write a good loop. To write an effective loop, you need these five things. I like how this is written out in this block, in that it tells you what the thing is, it's an automation, kind of what its job is, so it's like triage of a task to be done or a prompt to be set on a schedule. And then it shows you how Codex and Claude Code do this. And so for Codex, your automations come, can come out of the automations tab, and you can actually define your automation and the schedule there. And then in Claude Code you have scheduled tasks. Both of them have /goal, and then they all have different hooks and integrations. Claude Code has the benefit of GitHub actions, which I think is nice for engineers. Uh, but both of them are basically at parity in terms of the types of automations that you can run. And then a couple other foundational things that I think are helpful when you're running loops. And why are these things helpful before we get into what they are? They just keep the work clean. If you are gonna be YOLOing loops all over the place, you're going to want some consistency in execution, you're gonna want clean workspaces, you're gonna want conflicts resolved and avoided. And so all these things are really to make those loops effective. And so what, what are those things? They are work trees. I feel like this entire podcast could be Git 101, but work trees are just basically a way to isolate the work, especially the coding work of an agent, away from other agents' work in a sandbox. There are skills, repeated ways to do common tasks. We have a full episode on what skills are from earlier, um, last year when they came out. Plugins and connectors, these are just the tools that your agent has access to. And so those can be like GitHub connectors, connectors to Google Docs and Google Calendar, and plus plugins, which are some instructions on how to use those tools. Subagents, both Codex and Claude Code allow you to kick off subagents. This is just a way to federate out work from the main thread so that subagents can do specific tasks, especially validation. And then there's some way to track state. And, um, essentially just think of this as like a to-do list. So you can save it in a markdown to-do list. You could use Linear as a task tracker. Both Claude Code and Codex use this. And so if you put all this together, basically what you have is a way to kick off an automatic prompt, a way to keep that prompt going until the job is done. And the way you keep it going is you can keep it scheduled, or you can give it a goal and it can't exit the loop until it's hit that goal. And then you empower this agent that has been kicked off autonomously with the isolation it needs not to get in each other's way and the tools it needs to get the job done, including its little army of subagents. That's it. So again, I promised you I'd explain it to you very basically what a loop is. A loop is a way to autonomously kick off an agent with a prompt or set of prompts on a schedule or on kind of a recurring basis until it's done. It could be done because the time's up, or it could be done because

  5. 9:2611:58

    The “onboarding an employee” framework for designing loops

    1. CV

      the job's done. Now people are gonna ask, "What should I use a loop for?" And when you're designing loops or designing agents, I say this is the time for the manager. You are designing a job. And so just imagine that you're onboarding an employee. That employee could be an executive assistant, that employee could be a customer service agent, that employee could be a software engineer. You're onboarding this person and you're gonna say, "You know what? Every Friday, EA, I would like you to review my calendar, see who canceled on me, where I could've used my time more effectively, if there are any follow-ups, and send me a Slack to get this done. Um, and I want you to do that every Friday." Guess what? You've just designed a loop for your executive assistant. If you have a software engineer and you say, "You know what? Every hour I want you to check if there's a GitHub issue that needs to be addressed, and if there is, triage it, write some code, put it up for code review," congratulations, you just wrote a loop. And if you have another software engineer and you say, "Every time you get a PR to review, I wanna make sure that you iterate over it until it meets our defined code standards, all the lints and checks are clean, and it's ready to deploy, and you just work on it until all the checks in the GitHub PR are clean," guess what? That is a goal loop. So I really like to think about loops as designing workflows and designing jobs to be done for people. It just happens to be that you can put this intelligent agent against the loop, and then it's ready to go. So that, that's it. That, that's a loop. And you know, I think people get intimidated by these complex, like dynamic workflow diagrams and these hype boy posts about how they're running thousands of loops all over the place, and they never prompt anything themselves. And again, I just wanna make this really accessible for folks. If there is something where you feel like every day or every hour a set job can be done, that's a good time for a loop. And don't set your alarm and wake up and type into Codex or Claude Code the prompt that would kick it off. Instead, set it up to do that itself. And the one magical thing I would let people know is you can create loops to have your agent prompt other loops. So a- again, you can think about a human with a team of agents who all have their own team of agents, and you can start to get really creative about what

  6. 11:5817:08

    Live build #1: Daily aging PR loop in Claude Code

    1. CV

      these loops are. But let's go ahead and build one. So I'm gonna build one in Claude Code and one in Codex, and I'm gonna do one sort of non-technical one and one technical one, and then we will end with some warnings about using loops. Okay, I wanted to start with a non-technical example, and I pulled up Claude Cowork instead of Claude Code just to really break this down for the people who are not technical. And what makes me laugh is there is a loop front and center here in Claude Cowork, which is my morning briefing. And so if you have used a scheduled task in Claude Cowork, guess what, babe, you have written a loop. It's a loop that kicks off on a regular basis, it prompts itself on what it needs to do, it gets the job done, and when I have my morning briefing, I am finished. And so scheduled tasks are a loop. Now, it's not a goal style loop, but it is a loop itself. So if you are wanting to tiptoe your way into loops, I would say Cowork scheduled tasks, or in Claude Code what we call routines, are perfect ways to get started. So the morning briefing is a perfect loop 101 for you all to start. But let's actually make this a little bit more intelligent. I'm gonna go into Claude Code, and I am going to create a loop that's a little bit more technical, but for the product folks that are watching. Okay, to start in Claude Code, I'm gonna write a loop or a routine that's a little helpful for the product managers, engineering teams out there. It's not a super technical one, but it's one I think is really useful. And so what I'm gonna do is I'm gonna create a routine. Um, it can run locally, which means it's gonna run on my computer, which means I gotta keep the, uh, laptop screen open, but don't worry, I do that anyways. Or it can work on the cloud. I'm just gonna have it run locally, and I'm gonna call it Daily Aging PR Review. And so if you can guess from the description, this is gonna be a loop or a routine that looks for open PRs that have been open more than 12 hours, and, um, babysits them till they are ready for merge or alerts the team about aging. This episode is brought to you by Runway, a new kind of creative platform that has everything you need to generate any image, video, or piece of content you want, all in one place. With Runway, it's now possible to go from initial idea to a finished deliverable in a matter of minutes. From turning low-fidelity product shots into campaign-ready imagery, all the way through putting together big brand films, Runway can help your team scale your creative ambitions while keeping your budgets and timelines from doing the same. Runway brings together the world's most advanced AI models, which is why enterprises like Microsoft, Robinhood, Amazon, and Adobe, along with studios like Lionsgate and Legendary, all use Runway to ship real work every day. Try it yourself at runwayml.com/howiai. Promo code, howiai. Okay. So the problem I'm having is that we ship a lot of PRs because we do agents everywhere and loops everywhere, and then I kind of get bored of babysitting them, and we forget to merge them in a timely basis. And so we probably have, like, I don't know, 40 PRs that we need to go through, and the ones that I'm most worried about are the ones that, like, we kind of moved on from and are letting age. And so I'm gonna give it some instructions, and I am going to say, "Look at the PRs open on the ChatPRD app app. If there are any PRs open more than 12 hours, please review their merge readiness. If there is anything that you can babysit, spin up a thread to babysit that PR until all merge checks are green. Otherwise, send a Slack in the product channel to the team about the open PRs that are ready for approval and merge. Be mean when you send the Slack." Okay. So I am putting in that, those instructions, and I'm gonna say I want this to run, let's see, daily at 9:00 AM. That's fine. Actually, let's have it daily at 10:15 AM, because it's about to be 10:15. Okay. And then I am going to have it work in my ChatPRD branch on base is fine, and I'm gonna create that automation. Now, there's a loop, and a couple things I wanna call out about this loop. It happens every day at 10:15, so it happens on a schedule. I don't have to come in and say, "What PRs do I need to review?" And it's gonna tell me the next time it's gonna run. And then one thing that I wanna call out is, you remember I said your agent can have

  7. 17:0819:00

    Subagents inside loops

    1. CV

      agents? I called out here that if there are any PRs that need to be babysat, you can spin up a threa- thread to babysit that PR until all merge checks are green. So not all the work has to happen in the one master thread. It can actually kick off subagents or other threads to watch the work. And so I'm gonna go ahead and not wait the four minutes and run this now. Okay, so once this is kicked off, yes, it's gonna prompt with that original prompt that I put in the routine or automation, but then it's gonna be pretty autonomous and work itself. And, you know, I've given it basically two outcomes it needs to go after. It needs to identify anything over 12 hours that it can watch and actually monitor and make sure all the merge checks are green itself. That's success criteria one, and then success criteria two is it would use our Slack connector to send us a message. Again, I'm not gonna make you watch this, but you can see here it's gonna work all by itself. I am not gonna have to monitor it, and all I'm gonna get at the end of the day is a good set of PRs that are ready to merge and some mean messages about how we're ignoring good PRs and not putting awesome product in the hands of our customers. So again, I wanted to demystify what a loop is. It is just something that happens on a schedule. Now, this is a very simple loop, and it has access to a bunch of connectors. It has access to GitHub, it's gonna have access to Slack. That's already set up, so I feel like this agent or this, like, pseudo-employee with a job is well set up to be successful, but this is a perfect use case for a loop and a very, very simple time-based one. Okay, and it says, "No Slack MCP surfaced." Um, I am going to make sure that Slack is turned on. There we go. Now it should be

  8. 19:0022:57

    Live build #2: Weekly skills identification loop in Codex

    1. CV

      fine. Okay. Now, let's talk about a more advanced loop. So I wrote that one in Claude Code. It is a scheduled routine. It is pretty sam- simple, but I'm gonna also pull up Codex and show you another loop that I think is really interesting that's a little bit more complicated and a little bit more technical. Before I go into writing a more complicated loop, I wanted to call out some of the things that I like in Codex when you're thinking about or learning how to write loops. So in Claude Code, they're called routines. In Codex, they're called automations. And what I like about what Codex has done is they have these templates, and so they actually have given you a couple good ideas of, quote-unquote, "loops," automations, routines that you can run. So if you're looking for inspiration, I would really look at these automation templates, and I'm actually going to use one. I think it's this, from recent PRs and reviews, suggest next skills to deepen. And so this is sort of a meta tool, um, that I'm gonna use, which is look at all the code we shipped, look at all the code commits and comments, and then come up with skills that our coding team, including agents, could use to deepen the work. And so I'm gonna select that one. It's gonna happen Fridays at 10:00 AM. Um, it's gonna happen weekly. I think weekly is right. Again, you want enough data in these loops for it to do a good, long job, but I'm gonna give it a little bit more information. So the prompt is out of the box. From recent PRs and reviews, suggest next skills to deepen. Grounding rules, anchor each suggestion to concrete evidence, avoid generic advice, make each recommendation actionable and specific. I'm actually gonna be more specific. If we have developed any tools for agents or developers to automatically validate their work, ensure that we have a skill for those tools. Specifically command line tools or MCPs where an agent or a software engineer can run a test suite or smoke test against a specific use case are very important to build skills around. I'm gonna add one more thing to the skill just to show the power of subagents and automations. If you identify a skill, spin up its own thread, and use that skill, validate, validate it against the base branch of the repo. We want to confirm that the skill actually works and outputs high quality. Okay, so this is like a ski- uh, a loop with subagents that is probably gonna generate its own loop. I'm actually gonna force it to generate its own loop by saying, "You should use a goal when validating the skill." So when you prompt the subagent, make sure you prompt it with a very specific goal it can use to validate against. You know, basically, when you write a loop or a goal or an agent, you just say, "Validate loop goal, validate loop goal," and you're good to go. But this basic prompt is saying, "Okay, every Friday, I want you to look at all the code I merged. I want you to identify skills that are missing. There are specific types of skills that I think are very important, which is skills to use some of the internal tools we've developed. If you see a new skill, I want you to spin up a subthread, another chat. I want you to validate that skill with a goal loop." So not only are we setting a loop at the schedule basis, we are setting up subagents to work on specific things, and then we're using a goal in those subagents, which is a different type of loop, to validate the work. So this is like a very meta task, but I think one that illustrates the power of loop-based prompting. It doesn't just have to be on a schedule. It can be on a schedule, set up a team that does work on a schedule, or on a schedule, set up a team that does work on a loop until

  9. 22:5725:28

    Watching subagents spin up in real time

    1. CV

      it's done. And so I'm gonna go ahead and create that, and then again, I'm gonna just run this now, um, and we're gonna see here that this agent is going to spin up. The automation is going to start. O- one of the things that Codex does that's kind of interesting is it sets up its own memory. So you can see here a little bit of the scaffolding of what an automation looks like, and then it just gives its own prompt. Now, again, it's gonna go ahead and search the code, run its own commands. It's gonna look at GitHub, and it's hopefully going to create those new skills. Um, and then what I- ideally we're gonna see in the left-hand side in these all chats is new threads being kicked off to test the skills that it's identified it needs to run. And so it found one strong automation candidate. Let's see if it actually kicks off a thread to validate it. Okay, so it did it. Identified a chat smoke CLI skill. Basically, this is a command line tool I built to, um, sort of test chats without having to use the UI in ChatPRD. And it basically spawned a dedicated subagent to test the skill with a goal, um, to test it against the base branch and tell us whether its instructions actually hold up in practice. So look, it's spun up this agent. You can see agent, it's got a little key name, and it's given it a goal. So you can see here it's pursuing this goal, which is validate the local repo chat smoke CLI skill on the base branch, and it's basically gonna loop until that validation is done. So what we're gonna see is more and more subagents being kicked off. You can click them here, um, by clicking this little, um, dropdown. So I see Gauss, which is working on my smoke CLI skill, and then let's see Galileo. Is working on, um, a different skill. It's working on the GitHub address comment skill, so it's basically like a babysit a PR skill. And so this automation that I've set up happens on a Friday. It's gonna look at our repo, it's gonna create skills, and then it's gonna create subagents that are on, again, a goal, which is a type of loop to validate that those skill works. And it's just gonna do it over and over again until it has done as many skills as, as it thinks is appropriate for the last week. And so that is, like, my mega loop that actually I, I did not think to do until live on this episode, and it's gonna be really useful for me on a regular

  10. 25:2827:31

    Warning signals around loops

    1. CV

      basis. So I'm gonna let that run, but before I get you out of here, I just wanna talk about a couple warning signals around loops. This is amazing. We all want our agents to work for us on a schedule whenever we want, doing work that we don't wanna do. It's great. What are some of the problems? One, loops can get expensive. So I just kicked off an automation that happens on a regular basis. It does wide-ranging work. It decides when to spin off subagents, and it does loop-based validation, which means it's burning tokens until it hits a threshold that it decides is successful. If you do not write that loop well or your validation criteria is too thin, guess what? Your agent is going to burn tokens. I think we've seen this with OpenClaw in particular, or some of these, like, agent harnesses, is they're really good at loops. They're very diligent. They get interesting work done, but man, do they love to burn tokens. And so I think these loops are a great way to spend money, so just be thoughtful about where you apply it, and then make sure you're monitoring it for both cost and efficiency of the setup. So I think that's thing number one. Thing number two is I wrote actually pretty f- pretty poor loop prompts. I would not recommend people follow my prompting. It did fine, but I think loops, especially goal-based loops, are ones where writing the prompt really precisely is super, super important. OpenAI has a great guide to writing goals for Codex. I use that all the time, and in fact, what I often have Codex do is write its own goals. Loop-based prompting is just its own thing. Goal-based prompting in specific is just its own thing because you have to be very precise about evaluation and success criteria. If you are not, you will be very disappointed and use a lot of tokens for not a lot of output. So again, I would be much more careful with loop-based prompting than I would be prompts or conversations where I am actually monitoring it myself.

  11. 27:3129:05

    What listeners are doing with loops

    1. CV

      Other than that, I think there are lots of places where you can use loops. I gave some examples that are really more about product and engineering, but you can use goals and loops for all sorts of things. We talked about the morning brief. That's a scheduled loop. I used a goal loop in another episode to clean out my Gmail inbox. That's another great example. You can have agents that prompt themselves to do effective research and spawn off subagents if a specific topic seems interesting to you personally or your business. And so I just think there are tons of ways for you to think about, how could I put my little agent worker on a schedule, or how could I give my little diligent agent a job that can be done and validated against a goal, and then how can I leave it alone until that work's done? That is a loop. That is my summary. I cannot wait to hear in the comments what you're using looping for, or if you think this is just totally overbuilt stuff that's wasting tokens. I found it useful, but I'd love to hear what you think. Thanks for joining How I AI. [upbeat music] Thanks so much for watching. If you enjoyed the show, please like and subscribe here on YouTube, or even better, leave us a comment with your thoughts. You can also find this podcast on Apple Podcasts, Spotify, or your favorite podcast app. Please consider leaving us a rating and review, which will help others find the show. You can see all our episodes and learn more about the show at howiaipod.com. See you next time.

Episode duration: 29:06

Install uListen for AI-powered chat & search across the full episode — Get Full Transcript

Transcript of episode JoXbk2fm7jM

Get more out of YouTube videos.

High quality summaries for YouTube videos. Accurate transcripts to search & find moments. Powered by ChatGPT & Claude AI.