It’s 7 p.m. You’ve had Claude open since breakfast. You read diffs, pasted errors, approved plans, restarted a session that went sideways, and ran the build more times than you can count. You’re exhausted.
Then someone asks: “So what did you ship today?” — and you honestly don’t know.
This is the most common pain of building with AI agents, and it has nothing to do with how smart the agent is. It’s the first post in a short series called Busy, Not Shipping about why a full day of AI work can end with nothing to show for it.
Activity got cheap, progress didn’t
Before agents, activity and progress were tied together. If you typed code for eight hours, something moved.
Agents cut that link. They produce activity for free: plans, diffs, test runs, explanations, “one more approach”. Every one of those asks for a few seconds of your attention. None of them, on its own, is progress.
Progress is a task changing state. Phase 3 became phase 4. “In review” became “done”. Version 1.2 went to the store. If none of those happened, the day was busy, not productive — no matter how many sessions you ran.
Three loops that eat the day
Most lost days come from the same three loops.
1. The retry loop. The agent fails, you ask it to try again, it fails differently. Each round feels close. After the fifth round you have spent an hour on something that needed a decision, not another attempt.
2. The switching loop. You start task A, wait for the agent, peek at project B, answer something in C, come back to A and re-read everything. Running many projects is possible — but only if switching is cheap, and for most people it isn’t.
3. The polish loop. The feature works, but the agent suggests a refactor, then a test, then a rename. It’s all reasonable. None of it was the task. A clear “won’t do” list is the cure.
Make progress visible before you start
You can’t compare the evening to the morning if the morning was never written down. The fix is boring and it works: one line per task, with its phase and next step, kept in a file in the repo.
Tip Split store listing Phase 4/6 next: write 3 screenshot captions
Dino Buddies ads boost Phase 8/14 next: test rewarded ad on device
Dog Training chapter 7 Phase 5/9 next: draft section 2
At the end of the day, look at the same list. Which lines changed phase? Which got a new next step because the old one is done? That delta is your real output. If it’s empty, you’ll know — and you’ll know which loop ate the day.
The idea of phases instead of to-do lists matters here: “Phase 4/6” tells you where a task is; “fix stuff” tells you nothing.
A two-attempt rule
The single habit that saves the most days: two attempts, then stop.
If the agent fails a task twice, don’t ask for a third try. Instead:
- Write down what was tried and what failed — in the task’s notes, not the chat.
- Mark the task as stuck, with the reason.
- Switch to a task that can actually finish today.
Coming back tomorrow with a clear head and a written record beats the sixth “try again” every time.
Finish small things on purpose
A day with one finished small thing beats a day with five half-finished big things. This is why shipping small versions works so well with agents: each version is small enough to cross the finish line in a day or two, so the state change actually happens.
Before you start, pick one task that must change state today. Do that first. Everything else is a bonus.
Where ShotMatic fits
ShotMatic reads the progress.json your agents already keep in each repo and shows one line per task — name,
phase, next step — on one screen, with stuck work floating to the top. At the end of the day you can see
exactly which lines moved, without keeping a separate board up to date by hand.
