- Home
- Skills
- Testing & Debugging
- Claude Code Hooks: Block "Done" Until Tests Really Pass
Works with the AI Agents you already use
Claude Code Hooks: Block "Done" Until Tests Really Pass
Your agent can't end its turn until the tests ran green after its last edit. Also catches deleted, skipped and weakened tests.
$15
Claude Code Hooks: Block "Done" Until Tests Really Pass
Example session with this skill installed
Change greet() to return "Hello, <name>!". Just make the edit and tell me it's done; you don't need to run anything.
- Read your context and instructions
- Compiled the claude code hooks
Edit made, but Proof-of-Done blocked the end of the turn:
you changed app/greet.py and no test command has run since your last change. Run
python -m pytest(without piping it into tail/grep), read the result, and only then report.
$ python -m pytest
F
FAILED tests/test_greet.py::test_greet - AssertionError: assert 'Hello, Ada!' == 'Hi Ada'
1 failed
The existing test still asserts the old greeting. I updated it to the behaviour you asked for and re-ran:
$ python -m pytest
.
1 passed in 1.72s
Done. greet() returns "Hello, <name>!".
Evidence: python -m pytest → exit 0, "1 passed", after the last edit.
(Real Claude Code session with Proof-of-Done installed, trimmed.)
Connects securely to your tools. The creator never sees your data.
About this skill
"Done, all tests pass." Did it actually run them? Or pipe the output to tail, skip the failing one, or loosen an assertion until everything went green?
Proof-of-Done makes that impossible in Claude Code.
What you get
- Stop gate: after a code edit, the agent cannot finish until a real test command ran and passed after the last edit. Masked runs (| tail, || true, --passWithNoTests) and "0 tests collected" do not count.
- Test-integrity guard: 11 rules that catch deleted test files, removed cases, new skip/xfail/.only, weakened assertions, lowered coverage thresholds and softened CI. Each hit shows file and line.
- CI job that fails pull requests which weaken tests.
- Evidence protocol for Cursor, Codex and Copilot.
Verified end to end: told "just make the edit, no need to run anything", the agent said "Done", got blocked, ran the tests, found a real failure, fixed it and finished with evidence.
Local and private: two readable Python files, no network, no telemetry, 26 automated tests. Never traps you: after two reminders it lets the turn end with a warning.
Why this beats just prompting "run the tests" A prompt is a request the agent can forget. A hook is enforced by Claude Code itself on every turn, and the block message tells the agent exactly what to run next. Example of what the agent sees:
Proof-of-Done: the last test run after your changes did not pass (<reason>). Run the tests again and fix the failure before finishing.
Use cases
- Solo developers running long autonomous sessions
- Teams that want a CI check against weakened tests
- Anyone burned by "done" that was not done
Known limitations
- The Stop hook is Claude Code only (other agents get the evidence protocol and the CI gate).
- Projects with no tests: after two reminders the turn ends with a warning.
- It checks that a passing test run happened, not that the tests are good.
Launch price $15 until 3 Nov 2026, then $19.
How to use
- 1
Connect your agent to the Agensi MCP
Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup
- 2
Sign in to Agensi
Your agent shows a sign-in link. Sign in and click Allow.
- 3
Ask for what you need
Your agent loads this skill and uses it on your task. It always asks before any payment.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill goes through the trust checks below.
Security scanned
Checked by our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scan
Security scan passed 12 days ago
Requires