I run Claude Code every day — it builds real tools for my business. Three habits kept burning me. Every fix below is something running on my machine right now, not theory.
1. It says "done" when it isn't
The worst one. Claude finishes a change, says "done ✅", and the code was never run. You find out later, when it breaks.
A rule in CLAUDE.md ("never say done without verifying") helps, but rules get ignored under pressure. What actually fixed it: a Stop hook — a script that runs every time Claude tries to end its turn. If no verification happened this session, the hook blocks the turn and tells Claude to go test its work.
The wiring in settings.json looks like this:






