tl;dr: I don’t manage tasks. I define scope. The agent figures out execution. I just keep asking “What next?”
I used to manage task backlogs and review code.
That’s not how I build anymore with AI agents since Opus 4.5 and Codex 5.3.
My job is to define what should be built. The agent figures out how.
Everything starts with a product definition.
I write down what I want in product.md. Not features, not tickets—just the product: what it is, why it exists, and what outcome it should create.
From there, I move to design.md. This takes a few iterations. It’s where I shape how the product should feel—layout, typography, colors, interaction patterns. I don’t rush this part. Once design is clear, everything downstream gets easier.
Then comes the first iteration.
I define a tight, deliberate scope in spec.md. Objective, constraints, success criteria, and—equally important—non-goals. This becomes the boundary the agent operates within. If the scope is loose, everything degrades. If it’s sharp, everything accelerates.
At this point, I ask the agent to create a plan—not a task list.
The plan is structured into slices—vertical chunks of functionality with clear exit criteria. This is critical. Progress is measured by completing slices, not checking off tasks.
Once the plan feels right, execution begins.
From here on, the workflow becomes almost trivial.
I just ask:
“What next?”
The agent proposes exactly one task. That task is designed to move the current slice closer to its exit criteria.
I read the task proposal:
- What is the goal?
- What approach is being taken?
- What decisions are being made?
If something feels off, I push back. If it’s aligned, I approve.
This is the highest leverage point. It’s much easier to steer intent than to review implementation.
The agent executes, then gives me a UAT checklist.
I verify outcomes, not implementation. If something is wrong, we adjust. If it’s good, we move forward.
I usually don’t read the code.
Every completed task updates the changelog. Not with technical details, but with outcomes. This keeps the current state obvious and gives the agent context for what comes next.
Over time, the changelog becomes memory. Not just for me, but for the system.
There are a few rules I’ve learned the hard way.
If a task is well-scoped, the code is usually excellent.
If a task is vague, the agent starts inventing decisions. That’s when quality drops.
So I don’t try to control execution. I control scope and decisions.
Also, I never plan too far ahead. The system works because it’s always focused on:
- the current iteration
- the current slice
- the single next task
Anything beyond that is noise.
This workflow is lightweight by design.
There’s no backlog. No long task lists. No pretending we know everything upfront.
Just:
- define the iteration
- agree on the plan
- execute one step at a time
It turns out this is also the easiest way to multitask.
I can jump between projects without losing context. Each one just needs a quick “What next?” and the agent picks up from the current state.
So, what next?