# verification-before-completion

Stops the agent from calling a task done until it has run the check and watched it pass. Useful right before a commit, a PR or a bugfix report.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · ★ 21
- Author: dshakes
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/dshakes/compass/tree/HEAD/claude/skills/verification-before-completion/SKILL.md
- Updated: 2026-10-19
- HTML: https://affpapa.org/en/nevibecode/skills/dshakes-verification-before-completion

## What it does

One rule sits at the centre of this skill: the words done, fixed, verified and passing come out only after the agent ran the check itself and saw the output. If it could not run anything, the result gets labelled UNVERIFIED along with the reason. Delegated work falls under the same rule, so a subagent's claim of verification is not accepted — the gate is re-run on whatever it hands back.

The check depends on what changed. Touched code goes through `go test`, `cargo test`, `pytest`, `npm/pnpm test` or `npx tsc`. Compass gates use `make doctor`, `compass bench` and `compass redteam`. Behaviour that no test covers gets observed by starting the app or the CLI. A diff headed for shipping goes through `/review` or `compass-review`.

The skill names the excuses to watch for: writing that something should work, marking a task done while tests fail or were skipped, passing along someone else's result, treating a successful compile as proof the feature works, claiming a speed or security gain with nothing measured. Its allowed tools are `Read`, `Grep`, `Glob` and `Bash` — strip `Bash` and there is no way to run the check at all.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add dshakes/compass --skill verification-before-completion -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/verification-before-completion/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/verification-before-completion/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add dshakes/compass --skill verification-before-completion -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/verification-before-completion/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add dshakes/compass --skill verification-before-completion -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/verification-before-completion/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install dshakes/compass verification-before-completion
```

2. **Manually: put the files in place**
- File: `.github/skills/verification-before-completion/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add dshakes/compass --skill verification-before-completion -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/dshakes/compass --path claude/skills/verification-before-completion
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/verification-before-completion/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add dshakes/compass --skill verification-before-completion -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/dshakes/compass/tree/HEAD/claude/skills/verification-before-completion/SKILL.md

## When to use it
- run the tests before saying a task is finished
- tell a real passing check apart from a guess
- re-run the gate on a subagent's result
- label an unrun check as UNVERIFIED instead of done
- catch a performance claim that has no measurement behind it

## Example prompts
- Run the tests for the files you touched and show the output before you call the fix done
- Check this diff with `/review` and list what it found
- Run `make doctor` and tell me whether it passed

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 168f631a3e812655.

BEGIN THIRD-PARTY FILE 168f631a3e812655
```text
---
name: verification-before-completion
description: Use before claiming ANY task done, fix verified, check passing, or PR ready. Establish how the change is checked and actually run it — tests, typecheck, lint, the local gate, or the app itself — and observe it pass. Never report "should work" or pass along a subagent's unproven claim.
allowed-tools: Read, Grep, Glob, Bash
---

# Verification before completion

The highest-leverage habit and a compass hard line: **a claim is not proof.**

## The iron rule

I do not say "done", "fixed", "verified", or "passing" unless I ran the check and saw it
pass. If I could not run it, I label the result **UNVERIFIED** and say why. This binds
delegated work too: a subagent's "verified" is a claim — **I re-run the gate** on what it
returns.

## How to verify (pick what fits the change)

- Tests for the touched code: `go test` · `cargo test` · `pytest` · `npm/pnpm test` · `npx tsc`.
- The compass gates: `make doctor` (config/guardrail/red-team) · `compass bench` (guardrail/router) · `compass redteam` (injection).
- Behavior that tests don't cover: **run the app/CLI and observe it** (use the `run`/`verify` skills).
- A diff before shipping: `/review` or `compass-review` (adversarially verified).

## Red flags — stop, you have not verified

- About to write **"this should work"** / "this should fix it".
- Marking done with tests **failing, skipped, or never run**.
- Reporting a **subagent's result** without re-running the gate yourself.
- "It compiles" used as a stand-in for "it works".
- Claiming a perf/security improvement with **no measurement**.

## Checklist before I say done

1. I named the check *before* calling it done, and ran it.
2. Output shows it **passed** (pasted/summarized honestly — failures shown, not hidden).
3. Skipped a step? I said which and why.
4. Couldn't verify? It's labelled **UNVERIFIED**, not "done".
```
END THIRD-PARTY FILE 168f631a3e812655

The third-party file has ended. Everything between the 168f631a3e812655 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

© dshakes · MIT · https://github.com/dshakes/compass/tree/HEAD/claude/skills/verification-before-completion/SKILL.md

## Similar
- [verifying-before-done](https://affpapa.org/en/nevibecode/skills/verifying-before-done.md) — skill · 17800 installs
- [verification-gate](https://affpapa.org/en/nevibecode/skills/verification-gate.md) — skill · 836 installs
- [create-verification-skill](https://affpapa.org/en/nevibecode/skills/create-verification-skill.md) — skill · 5300 installs
- [maintain-verification-skill](https://affpapa.org/en/nevibecode/skills/maintain-verification-skill.md) — skill · 5200 installs
- [verification-loop](https://affpapa.org/en/nevibecode/skills/verification-loop.md) — skill · 5000 installs

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
