Claude Code Skills

Claude Code Plugin

Proof of Done

Blocks the agent from finishing after code changes until tests, build or lint have passed.

Install

claude plugin marketplace add WST2002/claude-code-skills && claude plugin install proof-of-done@claude-code-skills

Stops Claude Code from ending its turn after changing code until verification has run and passed after the last edit.

proof-of-done stops Claude Code from finishing without running the tests; the tests then find a bug it missed

A real Claude Code session, shortened: asked for a quick one-line fix, Claude said it had not run the tests. proof-of-done blocked the stop, the tests ran, and one of them found a bug Claude had missed.

How it works

  1. Every code edit and every verification command (tests, build, lint, typecheck) is recorded for the session.
  2. When the agent tries to stop:
    • no code edits → allowed
    • edits but no verification after the last edit → blocked, with the exact commands to run
    • the latest run of any check failed, was interrupted, or had its exit code hidden (| tail, || true) → blocked, with the reason
    • every check's latest run passed → allowed
  3. If verification is genuinely impossible, the agent can end with Verification: skipped — <reason> and say so honestly.

The agent is blocked at most once per stop attempt, so it can never loop forever.

Install

/plugin marketplace add WST2002/claude-code-skills
/plugin install proof-of-done@claude-code-skills

Commands

  • /proof — show what was edited and verified in this session, and whether the gate would pass.

Configuration (optional)

Create .claude/proof-of-done.json in your project:

{
  "enabled": true,
  "verify": ["npm run lint", "npm test"],
  "ignore": ["generated/**", "*.snap"]
}
  • verify replaces auto-detection.
  • ignore adds file globs that never count as code edits.
  • enabled: false turns the gate off for this project.

Auto-detection covers npm/pnpm/yarn/bun scripts (typecheck, lint, test, build), pytest, Go, Cargo, Maven and Gradle.

Requirements

Node.js 18 or newer on your PATH.

View source on GitHub