ProofKit
Copy-paste proof templates. Drafts derived from the directory sources; marked untested until benchmarked.
Done report (any harness)
## Done report - Claim: <what is done, one line> - Command(s) run: <exact command> - Result: <N passed / M failed / K skipped> (fail if N == 0) - Diff hash at run time: <git diff --staged | sha1sum> - Red-to-green: <test name> failed on parent, passes now - Evidence: <log path | screenshot path | CI run URL> - Not verified: <what remains, honestly>untested
Cursor rule: proof required (.cursor/rules/proof-of-done.mdc)
--- description: Require evidence before claiming a task is complete alwaysApply: true --- Never say "done", "fixed" or "tests pass" without pasting the exact command, its exit code and the runner's pass/fail count from THIS turn. If zero tests ran, the task is not done. Do not edit test files to make them pass.untested
Claude Code Stop gate (.claude/settings.json)
{ "hooks": { "Stop": [ { "hooks": [ {
"type": "command", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/require-green.sh" } ] } ] } }
# require-green.sh: run tests; if count==0 or failures>0, echo reason >&2; exit 2untestedGrok Build commit gate (PreToolUse)
# PreToolUse is the only blocking event in Grok Build (docs.x.ai/build/features/hooks). # Match the shell tool on `git commit`; exit 2 unless .proof/verdict.json is # newer than the last edit, has passed>0 and failed==0. Hooks fail open on crash.untested
AGENTS.md generic block
## Definition of done - Run the project's test command after every change and paste the summary line. - A run with 0 tests collected is a failure. - For UI changes, attach a screenshot of the changed screen. - End with a Done report (see ProofKit).untested
Sponsor slot: your verification tool here, one sponsor per week. Details