a11y-pass
Catch the accessibility failures that ship in almost every AI-built UI. Use after building any interactive component.
Use before claiming work is complete, fixed, or passing — before committing, opening a PR, or handing off. Requires running the verification command in THIS turn and reading its output before any success claim.
$ npx -y skills add Archive228/loopkit --skill verification-before-completion --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/verification-before-completionContext preview
The summary Claude sees to decide when to auto-load this skill.
Use before claiming work is complete, fixed, or passing — before committing, opening a PR, or handing off. Requires running the verification command in THIS turn and reading its output before any success claim.
name: verification-before-completion description: Use before claiming work is complete, fixed, or passing — before committing, opening a PR, or handing off. Requires running the verification command in THIS turn and reading its output before any success claim.
Claiming work done without fresh verification is dishonesty, not efficiency. `adversarial-verify` is the *what*; this skill is the *when* — the gate you pass through right before any completion claim.
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
If you have not run the verification command in this message, you cannot claim it passes. Not "should", not "probably", not "based on the diff".
Before writing "done" / "fixed" / "green" / "ready to merge" — even in your own head:
1. **Identify** — what exact command proves this claim? 2. **Run** — execute it fresh, complete, in this turn. 3. **Read** — full output, check exit code, count failures. 4. **Verify** — does the output actually confirm the claim? 5. **Only then** — make the claim, with the evidence attached.
Skip any step = you are lying to the user, not verifying.
| Claim | Requires | Not sufficient | |---|---|---| | Tests pass | Fresh test run, exit 0, 0 failures | "should pass", previous run, "logic looks right" | | Linter clean | Linter output, 0 errors | Partial check, extrapolating from unrelated files | | Build succeeds | Build command, exit 0 | Linter passing, editor squiggles gone | | Bug fixed | Reproduce original symptom, watch it not happen | Code changed, "assumed" fixed | | Regression test works | Red → green cycle verified (revert fix, watch test fail, restore, watch pass) | Test passes once | | Agent/subagent completed | Read the VCS diff, verify claimed changes exist | Agent's own "success" report | | Spec satisfied | Line-by-line checklist against the plan | "Tests pass, phase complete" |
| Excuse | Reality | |---|---| | "Should work now" | RUN it. | | "I'm confident" | Confidence ≠ evidence. | | "Linter passed" | Linter ≠ compiler ≠ tests. | | "The agent said success" | Read the diff yourself. | | "Partial check is enough" | Partial proves nothing about the whole. | | "Different words, so rule doesn't apply" | Spirit over letter. |
**Tests**
**Regression tests (real red-green)**
**Build**
**Agent delegation**
Always, before:
Run the command. Read the output. THEN claim the result. Non-negotiable.
33 battle-tested skills + minimal .claude harness for any coding agent (Claude Code, Cursor, Codex, Gemini CLI).
Catch the accessibility failures that ship in almost every AI-built UI. Use after building any interactive component.
Before compaction Loopkit extracts decisions into claude-decisions.json (machine-readable). Read it alongside claude-progress.txt…
Review a diff against the goal spec assuming the code is BROKEN. The reviewer
Verify that an endpoint checks ownership, not just authentication. Use on any handler that reads or mutates user data.
Find the exact commit that introduced a bug. Use when something worked before and broke, and you don't know which change did it.
Before picking new work, smoke-test the last "completed" feature. If it's broken, revert and re-open it before touching anything…