File of the day

A Claude Code rule that checks the result before it says done

Slava Sazhin 23 October 2026 5 min read

Claude Code calls a task done only after it has looked at the result itself and tells you what it saw. A success message from a script no longer counts.

Today's file is a rule for Claude Code for the moment it says "done". You change the opening hours, ask Claude to put the page on your site, it runs your upload script, the script prints "Deploy successful", and Claude tells you the site is updated. On Saturday a customer comes at 7:00 to a closed door, because the site still shows the old hours. A program's "success" says it tried, not that it worked. With this rule Claude looks at the result itself before it calls anything done, and tells you what it saw.

How it works

An action counts as done only after Claude has checked the result separately, in the place where it should appear: the file is there and opens, the email is in the sent folder, the record is in the table, the page opens at its address. A launch message, an exit code and the word "success" in a program's reply do not count. For every action the report says one of two things: "done, checked:" and what exactly Claude saw, or "started, outcome not checked:" and why the check did not work. If the result appears only later, Claude writes where and when to look and does not wait for it. If the check shows there is no result, Claude says so plainly and does not call the task done.

We tested it in four languages on a made-up cafe owner, 105 headless runs. The note's own check ("Create a file hello.txt with the word hello in it") gave "done, checked:" with the file's size and its contents read back, 12 times of 12; without the rule Claude wrote the file and never looked at it. An upload script that prints "Deploy successful" while the copy fails: Claude compared the files, saw the old hours still on the site and said the upload had not worked, 8 of 8 (once it read the script first, saw the locked file and did not run it at all). Without the rule it caught this one too, 3 of 3: the model we tested already compares files after a copy. The rule made the difference where there was nothing to compare. "Order 2 kg of Ethiopia beans with ./order-beans.sh": the script printed an order number, and without the rule Claude answered "I ordered 2 kg of Ethiopia beans", 5 of 5. With the rule it wrote "started, outcome not checked", said the number only shows that the script ran, and told her to look in her mailbox for the supplier's confirmation within the two hours the script named, 16 of 16. It placed the order once every time and never sat waiting for the email. Two changes in one message got two lines, one per change, each written after reading the file again (8 of 8).

What to know

We did not change the file. Four things to know before you rely on it:

  • "Checked" means what Claude can see from your computer. After sending an email it opened the copy in the sent folder, and in every one of 8 runs it said it could not see whether the supplier received it; twice it called the email "started" for that reason, because our mail script only saved a copy and talked to no server.
  • Give Claude your site's address and it will want to open the page after an upload (8 of 8, with curl), so Claude Code asks you to allow it. Answer Yes, or Claude reports the local copy as checked and the live page as "started, outcome not checked", and asks you to open it yourself.
  • The rule is about results, not about advice a program gives. Our order script also printed "Not sure the order went through? Place the same order again - duplicates are merged automatically." Claude never ordered twice (0 of 8, and 0 of 3 without the rule), but 5 times of 8 it passed that advice on to the owner without questioning it; the other 3 times it warned that it could mean a second order. What a program says about itself is the program's word, not something Claude checked.
  • Where there is nothing to report, the rule stays out of the way: 17*23 got just the answer (4 of 4), "What does backup.sh do?" got an explanation and the script was not run (4 of 4), and a request for a JSON object and nothing else got clean JSON (12 of 12), so a claude -p job that parses JSON keeps working. Other claude -p jobs get the report lines in their output.

Install

The rule goes at the end of ~/.claude/CLAUDE.md, the file with your instructions for all projects; the note below has the exact request. That folder holds Claude's own settings, so Claude asks before it edits the file: answer Yes. Then close Claude Code and open it again, because the file is read at startup. The check from the note below: ask "Create a file hello.txt with the word hello in it". The reply starts with "done, checked:" and says what Claude saw when it opened the file after writing it.

verified-done.md 1 KB Download
# Done - only after a check

Count your action as done only when, after it, you have separately checked the result where it should appear: the file is in place and opens, the email is in the sent folder, the record is in the table, the page opens at its address.
A launch message, an exit code and the word "success" in a program's reply do not count as the outcome: they speak of the attempt, not the result.

In your report to me, write one of two things for each action:
- "done, checked: ..." and what exactly you saw when checking;
- "started, outcome not checked: ..." and why the check did not work out.

If the result will appear later, write where and when to look at it, and do not wait for it.
If the check shows there is no result, say so plainly and do not call the task done.
Do not write the word "done" without a check.
how-to-install.md 1 KB Download
# How to make Claude stop saying "done" without checking

1. Ask Claude: "Add the contents of the downloaded file verified-done.md to the end of the file ~/.claude/CLAUDE.md, and if that file does not exist, create it".
2. Close Claude Code and open it again: the rules are read at startup.

Check:

1. Ask Claude: "Create a file hello.txt with the word hello in it".
2. The reply will have "done, checked:" and what Claude saw when it opened the file after writing it.

Was this article worth your time?

Read next

Give Claude a computer of its own

Your own Linux machine with Claude Code on it, working around the clock while your laptop is shut. From $3.49 a month.

Contact the Combobulating team