mailwal

Coding Agents: better checks instead of better prompts

Gui Ferreira

On Wednesday I found a bug in my own app. Every release of ThatPrompt said it was version 1.0.0. I opened an issue, and at the bottom I wrote three lines under "Done when".

Better checks instead of better prompts

Most of us put our effort into the prompt. Then the agent writes the code, and we do the checking. We run the app, read the diff and type "still broken" like if we were babysitting.

You can fix that with better checks. The idea is that you write them once, the agent runs them on every try, and you come back at the end. It works the same in Claude Code, Codex or other.

without checks vs with checks

1. Write the checks before the prompt.
A check is something you can show passing. "Handle login errors better" isn't a check. "A wrong password shows an error and keeps the email filled in" is. Here are the three I wrote for the version bug, under "Done when":

- Get Info on an installed release shows that release's version.
- The Windows exe's Properties > Details shows it too.
- The update check still reads APP_VERSION and behaves the same.

2. Make the agent show its evidence.
Start it with this prompt:

Implement issue #<number>. Its acceptance checks are under "Done when".
Write a test for each one a test can cover. Then build.
Run every test suite CI will run.
Ask a fresh reviewer, one that didn't write the code, to review the diff.
Open a PR with a table: each acceptance check, its evidence,
and Verified or Not verified.
Something you could not verify is listed as not verified.

3. Turn "I'll look at it" into a command.
My version bug had a check I could only do by eye: open the app’s info screen and read the number.
The fresh reviewer flagged it: "Nothing checked the binaries themselves." So Claude added a build step that reads the version back and fails if it's wrong.

4. Read what it didn’t check first.
The verified rows have their proof next to them. The not-verified ones are where your eyes go.

One more thing. Combine this with /goal so the agent keeps working towards those checks while you're away.
Your checks are already the goal:

/goal Issue #<number> has an open PR. Every acceptance check in its
table is Verified, or Not verified with a reason. Or stop after 20 turns.

Ask for things the agent has to show, like an open PR, because the model that judges the goal only reads the conversation. And turn on auto mode in Claude Code, or it stops to ask for permission.

Try it on the next issue you give your agent this week.

Talk soon,
Gui


What else I’m working on

🧪 I’m building an experimental feature in ThatPrompt that turns your prompt library into an MCP server, so Claude Code, Claude Desktop and Cursor can use your prompts. Mac only for now.

🛠️ I’m running Build Your First AI Agent in .NET at NDC Porto on 17–18 November, NDC AI on 7–8 December and NDC London on 25–26 January.

🎬 New video: how to keep your architecture diagrams accurate.

Built with ConvertKit