{"id":"2066908445425496348","url":"https://x.com/zachlloydtweets/status/2066908445425496348","text":"","author":{"name":"Zach Lloyd","username":"zachlloydtweets","avatarUrl":"https://pbs.twimg.com/profile_images/1937620050254454785/flAAHtFa_200x200.jpg"},"createdAt":"Tue Jun 16 15:39:09 +0000 2026","engagement":{"replies":26,"retweets":193,"likes":1425,"views":210137},"article":{"title":"How to build a self-improvement loop for your Skills","previewText":"There’s been a lot of chatter about using “loops” lately to drive agents, and I think this has been accompanied by a bit of “what actually is a loop”?\nI can’t speak for everyone else using the term,","coverImageUrl":"https://pbs.twimg.com/media/HK8hWHvXUAAYhuq.jpg","content":"There’s been a lot of chatter about using “loops” lately to drive agents, and I think this has been accompanied by a bit of “what actually is a loop”?\n\nI can’t speak for everyone else using the term, but I wanted to show a practical approach using Skills and cloud agents for a particularly powerful kind of loop: a self-improvement loop.\n\nThis is the idea that an agent can improve the quality of its own Skills over time from external feedback. My example is a loop that involves a human feedback step, but if you have a clear goal that doesn’t require a human, you can use the same method with an automated grader.\n\nTo make matters concrete, say this Skill does issue triage, separating incoming issues into a few buckets: ready-to-implement, duplicate, needs-info. This would also work for a code review Skill, a bug fixing Skill, an incident response Skill, and so on.\n\nHere’s what a first draft of the Skill might look like:\n\n![](https://pbs.twimg.com/media/HK8hQ7JWYAE-Kye.jpg)\n\n[Full triage-issue Skill](https://github.com/warpdotdev-demos/issue-triage-loop/blob/main/.agents/skills/triage-issue/SKILL.md)\n\nWhat you need to do is set up the following loops:\n\n1. An inner agent loop: this is where you actually apply the Skill. For issue triage, you could be running it manually, or, more likely, you have an integration with your task tracker that runs the Skill whenever a new issue is filed. Interactions with the Skill are recorded somewhere: in a file, an agent trace, or an interaction in an external system like Slack or Github.\n\n1. An outer agent loop: this is an agent that runs on a schedule and observes the inner loop use of the Skill. For the issue triager, this will likely be a cloud agent that pulls records of every time the Triage agent ran. Its job is to look at all the runs of the inner agent and adjust its Skill based on the performance of those runs. Since Skills are just files, this means it should make a diff to improve Skill based on user feedback from past runs.\n\nI’ll show you how to do this in practice using Warp and [Oz](http://oz.dev/), our cloud agent platform, but there are lots of ways you can accomplish it. We will use Github Issues as the issue tracker.\n\n[Here is a sample repo](https://github.com/warpdotdev-demos/issue-triage-loop) with the Skills and GitHub workflows to follow along.\n\n## Step 1: set up the inner agent loop\n\nThe inner agent loop uses a Github action that runs on every new issue created.\n\n![](https://pbs.twimg.com/media/HK8hOL0WcAAD1Bl.jpg)\n\n[Full GitHub Action](https://github.com/warpdotdev-demos/issue-triage-loop/blob/main/.github/workflows/triage-new-issues.yml)\n\nThe Github action invokes a cloud agent through [Oz](https://oz.dev), Warp’s cloud agent platform. This cloud agent syncs the repo, pulls in the issue contents from github, and tries to classify it. The code on how to set this up is in the repo linked below.\n\nNow when a new issue comes in, a cloud agent runs the inner loop triaging skill, and applies a label indicating that a new feature request is ready to implement.\n\n![](https://pbs.twimg.com/media/HK8hGZUWkAAYQSe.jpg)\n\n## Step 2: set up the outer loop for self-improvement\n\nLet’s say though that a human reviewer doesn’t agree with the agent assignment. As a person looking at the agent’s assigned labels, I switch the issue from “ready to implement” to “needs info” and add a comment on the thread as to why it was mis-categorized, e.g. because there is ambiguity on whether we should add a setting for the new feature.\n\n![](https://pbs.twimg.com/media/HK8hAONXwAAZuLb.jpg)\n\nHere’s where the outer loop becomes interesting. The outer loop agent runs once a day and looks at all issues that have been triaged, and when it runs, it will find that I manually adjusted the label and gave a reason why.\n\n![](https://pbs.twimg.com/media/HK8g7ZyXcAAc6L0.jpg)\n\n[Full improve-triage-issue Skill](https://github.com/warpdotdev-demos/issue-triage-loop/blob/main/.agents/skills/improve-triage-skill/SKILL.md)\n\nSince the outer loop agent Skill is run through a coding agent, it will take the feedback I provided and make a diff to update the triage Skill.\n\n![](https://pbs.twimg.com/media/HK8g2crXYAAwYbw.jpg)\n\nOnce that diff merges, it feeds back into Skill that drives the inner loop agent, and the next time the agent runs the Skill should work better.\n\n![](https://pbs.twimg.com/media/HK8gzH-XgAECNAY.jpg)\n\nWould love to know if this is useful for folks. We use self improvement loops to manage the Warp open-source repository, and we extracted the framework behind it for others to adopt. [Early version here](https://github.com/warpdotdev/oz-for-oss)."}}