done-or-not — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited done-or-not (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
AI agents routinely announce tasks are complete without verifying anything actually ran. This skill enforces a proof gate: the agent must run the real check (tests, build, typecheck, lint, a curl against the endpoint — whatever demonstrates the claim), record a tamper-evident receipt, and only then may it report done.
The gate records: the command, its exit code, and a SHA-256 of its full output. Freshness is judged by the epoch inside the receipt (not file mtime, which touch could forge). A receipt can only clear one stop — it is consumed on use.
Use whenever you are about to tell the user that a task, build, test, fix, or verification step is finished. A completion claim requires proof from the gate, not confidence or memory.
actually verifies the claim: tests, build, typecheck, lint, a curl against a running endpoint, or another command with meaningful pass/fail behavior.
skill was installed without the repo-root gate scripts:
npx agent-done-or-not capture --label check -- <your verifying command>If the protected repo was initialized with local scripts, these faster local forms are also valid:
bash done-gate.sh capture --label check -- <your verifying command>
pwsh -File done-gate.ps1 capture --label check -- <your verifying command>The gate records the command, its exit code, and a SHA-256 of the output. It exits with the command's own code, so a failing check fails the capture.
on a red check.
npx agent-done-or-not capture --label check -- <your verifying command>
pwsh -File done-gate.ps1 capture --label check -- <your verifying command>
# or, on Windows PowerShell 5.1:
powershell -NoProfile -File done-gate.ps1 capture --label check -- <your verifying command>The Stop gate enforces this rule where the harness supports it: it blocks the agent from ending the turn until a fresh passing receipt exists. Do not work around the gate; produce the proof.
Wire the hard stop hook in Claude Code (settings.json):
{
"hooks": {
"Stop": [{
"hooks": [{
"type": "command",
"command": "bash \"$CLAUDE_PROJECT_DIR/stop-gate.sh\""
}]
}]
}
}On Windows, replace with:
"command": "powershell -NoProfile -File \"$env:CLAUDE_PROJECT_DIR\\stop-gate.ps1\""| Method | Command | |
|---|---|---|
| Agent Skill (this) | npx skills add mohamedzhioua/agent-done-or-not | |
| npm/npx | npx agent-done-or-not capture --label check -- <cmd> | |
| One-liner installer | `curl -fsSL https://raw.githubusercontent.com/mohamedzhioua/agent-done-or-not/main/install.sh \ | sh` |
| Claude Code Plugin | claude plugin install agent-done-or-not | |
| Homebrew | brew install mohamedzhioua/tap/agent-done-or-not | |
| Scoop (Windows) | scoop install agent-done-or-not | |
| Pre-commit hook | id: agent-done-assert in .pre-commit-config.yaml | |
| GitHub Action | uses: mohamedzhioua/agent-done-or-not@v0 |
| Env var | Default | Purpose |
|---|---|---|
AGENT_DONE_TTL | 3600 | Receipt freshness window in seconds |
AGENT_DONE_MAX_RETRIES | 10 | Anti-infinite-loop safety valve |
AGENT_DONE_DIR | <repo>/.agent-proof | Where receipts are stored |
AGENT_DONE_SESSION | (from hook payload) | Session isolation |
AGENT_DONE_OFF | — | Set to 1 to disable (escape hatch) |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.