agentsclimarketplace

Done or not

Skill mohamedzhioua/agent-done-or-not/skills/done-or-not

Catch your AI agent lying about "done" A one-file proof-gate for Claude Code, Cursor & Codex. it must verify before it can finish

Install
npx -y skills add mohamedzhioua/agent-done-or-not --skill done-or-not

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Proof-of-done enforcement gate — records fresh evidence before any agent can claim "done". Runs your verifying command (tests, build, lint, curl) through a tamper-evident gate that records the command, exit code, and SHA-256 of the output. Blocks completion on any failing, stale, or already-consumed receipt. Works with Claude Code (hard Stop-hook enforcement), Cursor, Codex, Windsurf, Cline, Roo, Zed, Goose, and any harness that supports stop/finish hooks.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.3 KB, as published. Nobody here has run it

done-or-not

Why this exists

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.

When to 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.

How to use

Portable skill command

  1. Identify the command that verifies the work. Choose the smallest check that actually verifies the claim: tests, build, typecheck, lint, a curl against a running endpoint, or another command with meaningful pass/fail behavior.

  2. Run the verifying command through the proof gate. This works even when this 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.

  3. Only report the work complete after a fresh PASSING receipt exists.

  4. If the check fails, fix the problem and capture again. Never report success on a red check.

Windows (native PowerShell — no bash required)

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>

Hard enforcement

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\""

No repo-root scripts? Wire the hook straight through npx instead — it pipes the hook payload on stdin and needs nothing vendored into the repo:

{
  "hooks": {
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "npx agent-done-or-not stop-gate"
      }]
    }]
  }
}

agent-done-or-not init --claude-hook also copies the gate scripts into the repo automatically, so a generated hook that points at local files resolves.

Installation options

MethodCommand
Agent Skill (this)npx skills add mohamedzhioua/agent-done-or-not
npm/npxnpx agent-done-or-not capture --label check -- <cmd>
One-liner installercurl -fsSL https://raw.githubusercontent.com/mohamedzhioua/agent-done-or-not/main/install.sh | sh
Claude Code Pluginclaude plugin install agent-done-or-not
Homebrewbrew install mohamedzhioua/tap/agent-done-or-not
Scoop (Windows)scoop install agent-done-or-not
Pre-commit hookid: agent-done-assert in .pre-commit-config.yaml
GitHub Actionuses: mohamedzhioua/agent-done-or-not@v0

Configuration

Env varDefaultPurpose
AGENT_DONE_TTL3600Receipt freshness window in seconds
AGENT_DONE_MAX_RETRIES10Anti-infinite-loop safety valve
AGENT_DONE_DIR<repo>/.agent-proofWhere receipts are stored
AGENT_DONE_SESSION(from hook payload)Session isolation
AGENT_DONE_OFFSet to 1 to disable (escape hatch)
AGENT_DONE_BIND_STATESet to 1 to make a git commit/tree/dirty mismatch against the newest passing receipt a hard failure/block instead of an advisory warning

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.