AI Workflow Update
In my previous post, I described how I used Labor0 and Codex to run dozens of tasks in parallel. My workflow has changed since then. I no longer use Labor0, and I now work with skills that I have made public.
The latest problem I solved was what happens after generating all those pull requests. Creating PRs was easy. Getting all of them merged took far too long.
The issue tracker is my prompt repository
I always use $add-issue to create detailed issues. In practice, I use the issue tracker as a repository of prompts.
The idea is simple: once I have concrete issues written down, processing them in parallel is easy. Each issue describes the work, so I can select a batch later and ask the agent to handle it.
But as I processed more work, another bottleneck appeared. With around 30 PRs open, merge conflicts kept coming up. Resolving conflicts and rebasing took too much time.
Labor0 handled this through dependency analysis, but I no longer use it. I initially tried running parallel sessions in Codex. That made it easy to produce PRs, but merging all of them still took too long.
Eventually, I found that stacked PRs worked better for this workflow. I turned that approach into a skill.
From dozens of issues to a stack of PRs
Now I create dozens of issues with a skill, select them using labels or other conditions, and run $slop-fix-batch. The skill processes the issues and creates stacked PRs.
In my open-source repository, delinoio/oss, I invoke it like this:
$slop-fix-batch sort:updated-desc is:issue state:open label:slop-batch author:kdy1
Creating the PRs does not finish the job. Review feedback still needs to be addressed, and CI failures still need to be fixed. For CI, my instruction was simply:
Fix all CI failures.
The stack containing PR #1726 is a concrete example. It contained 11 PRs. After a few rounds of addressing review feedback and fixing CI, I merged the entire stack at once.
There were still several iterations before the stack was ready. What changed was the merge process: I no longer had to spend ages resolving conflicts as I worked through the individual PRs.
These were the 11 PRs and their corresponding issues:
| PR | Change | Issue |
|---|---|---|
| #1716 | Apply Usage filters automatically | #1698 |
| #1717 | Remove the global Search shortcut | #1697 |
| #1718 | Run shortcuts from keyboard help | #1696 |
| #1719 | Remember Runner choices across workflows | #1695 |
| #1720 | Show subscription icons and saved quota | #1694 |
| #1721 | Organize Usage details into tabs | #1693 |
| #1722 | Add session row states and action menus | #1692 |
| #1723 | Embed Network settings in Server preferences | #1691 |
| #1724 | Correct when startup process indexes are created | #1690 |
| #1725 | Remove Account storage presentation | #1689 |
| #1726 | Show failure causes and recovery controls inline | #1699 |
Run the batch before bed
I start batches whenever it seems like a good time. So far, running one before going to bed has worked best.
$slop-fix-batch uses subagents to fix issues in parallel, which consumes a lot of CPU and memory on the machine running it. I prefer to run it while I am not using that machine.
There is a downside: because this is a batch workflow, issues do not get fixed as soon as I discover them.
But it has solved the problem I was running into—creating a pile of PRs, then spending too much time resolving merge conflicts to get them all merged.
All of my skills are available in kdy1/kdy1-scripts.