Most standup updates are written in the five minutes before the meeting, from memory. That is why they drift. You remember the last thing you did, not the most important one. The bug you fixed on Monday disappears. The blocker you worked around quietly never gets mentioned.
The fix is not a better memory. It is to write the update from the record of what you actually did.
A format that works
The classic three questions are fine. What matters is how you answer them.
- Done: outcomes, not activity. “Export now handles 50,000 rows” beats “worked on export”.
- Next: the one or two things you will actually finish before the next standup.
- Blocked: name what you are waiting for and who can unblock it. “Waiting on the staging key from Priya” gets solved. “Some infra issues” does not.
If it takes more than a minute to say out loud, it is too long.
Where the truth lives
Almost everything you did yesterday already left a trace somewhere. You just have to look.
Your commits
Git can show only your own work since yesterday:
git log --since=yesterday --author="$(git config user.email)" --oneline
If you commit under more than one email, for example work and personal, --author takes a pattern:
git log --since=yesterday --author="you@work.com\|you@home.com" --oneline
Working across several repos? Run it in each one:
for d in ~/code/*/; do
echo "== $(basename "$d")"
git -C "$d" log --since=yesterday --author="$(git config user.email)" --oneline
done
Your agent sessions
If you used Claude Code or Codex, the session history shows the work that never made it into a commit: the approach you tried and abandoned, the investigation that found the real cause. That is often the most useful part of an update.
Your notes and your calls
Decisions made on a call, and promises made to other people, belong in “Done” or “Next” too. They are the easiest things to forget, and the ones your team most needs to hear.
A template to copy
Done
- Export handles 50,000 rows; bigger exports run in the background
- Found why webhook retries failed on replay (signature check)
Next
- Fix the replay signature check and add a test
Blocked
- Staging key for the billing sandbox (Priya)
Where Stuart fits
Stuart drafts this for you. It reads your own commits, across every GitHub identity you use, plus your agent sessions and notes on your Mac, and drafts what you did, what is next and what is blocking you. You read it, fix anything it got wrong, and copy it into your standup in one click. The point is the same as the commands above: your update should come from what you did, not from what you happen to remember at 9:58.

