Skip to content
Testing
Skill

/verification

Use when about to claim work is complete, fixed, passing, or done — before committing, creating PRs, or moving to the next task. Also use when you're about to say 'Done!', 'All tests pass', 'Ready for review', 'Fixed', or ANY positive statement about work state. If you haven't

From plugin
e2e-testing
169 skills2 hooks

Claude Code

$ npx -y skills add burhankhatri/e2e-testing --skill verification --agent claude-code

SKILL.md

verification.SKILL.md
name: verify-done
description: "Use when about to claim work is complete, fixed, passing, or done — before committing, creating PRs, or moving to the next task. Also use when you're about to say 'Done!', 'All tests pass', 'Ready for review', 'Fixed', or ANY positive statement about work state. If you haven't run the verification command in this message, you cannot claim it passes."

Verification Before Completion

The Iron Law

NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE

If you haven't run the verification command in this message, you cannot claim it passes.

The Gate Function

BEFORE claiming any status or expressing satisfaction:

1. IDENTIFY: What command proves this claim?
2. RUN: Execute the FULL command (fresh, complete)
3. READ: Full output, check exit code, count failures
4. VERIFY: Does output confirm the claim?
   - If NO: State actual status with evidence
   - If YES: State claim WITH evidence
5. ONLY THEN: Make the claim

Skip any step = lying, not verifying

What Each Claim Requires

| Claim | Requires | Not Sufficient | |-------|----------|----------------| | "Tests pass" | Test command output: 0 failures AND 0 unexplained skips | Previous run, "should pass", "0 failures" with skips unmentioned | | "Linter clean" | Linter output: 0 errors | Partial check, extrapolation | | "Build succeeds" | Build command: exit 0 | Linter passing, "looks good" | | "Bug fixed" | Test original symptom: passes | Code changed, assumed fixed | | "Regression test works" | Red-green cycle verified | Test passes once | | "Requirements met" | Line-by-line checklist | Tests passing | | "E2E coverage" | `npx playwright test` output: 0 failures, 0 skipped | "Playwright not installed", unit tests only |

Skipped Tests Are Failures

`7 passed, 18 skipped` is a failing suite wearing green. (Real audit result: 18 of 25 E2E tests in one project were skip-guarded on auth and had NEVER executed — the suite reported green for months.)

Before claiming tests pass:

  • Report the FULL counts: passed / failed / **skipped**.
  • Hunt for permanent and conditional skips:
  grep -rnE "test\.skip\(|describe\.skip|\.skip\(true|xit\(|it\.skip" tests/ src/
  • Every skip needs a written justification. A conditional skip (e.g. `test.skip(true, "Not authenticated")`) means the test may have never run — prove it has actually executed (its name appears as *passed* in output) or treat it as red.
  • An assertion that accepts a failure state (e.g. `.or(signInHeading)`) is a skip in disguise — a test that cannot fail verifies nothing.
  • Skips that guard on missing infrastructure (auth, test DB, API keys) mean the infrastructure work was dodged: go set it up with the user, or verification FAILS.

E2E Gate (when invoked from /start)

If this verification was triggered by the `/start` pipeline, you MUST verify that Playwright E2E tests exist and pass:

npx playwright test

If this command fails because Playwright is not installed or no E2E tests exist, **verification FAILS**. Go back to Step 5 of `/start` and do the work. Do not rationalize skipping E2E.

Test Proportionality Check

Before claiming completion, assess whether tests are proportional to the code you shipped.

**For each piece of production code, identify its test:**

| Production code you wrote | Required test (AT MINIMUM) | |---|---| | API route handler (GET/POST/PUT/DELETE) | Integration test or E2E that calls the route, checks status + body | | UI component with interactions (>50 lines) | E2E that clicks/types/drags and verifies outcomes | | Bug fix (any) | Regression test that reproduces the original symptom | | Navigation change (sidebar, mobile nav, routes) | E2E that clicks nav item and verifies destination | | Extracted helper/utility | Unit test — BUT the feature using it also needs its own test | | State management / data flow change | Test through the UI or API that triggers the flow |

**Proportionality failures (verification MUST fail if any apply):**

  • 200+ lines of UI code shipped with 0 component/E2E tests covering interactions
  • API routes shipped with only input-validation helper tests (route handler itself untested)
  • Bug fix shipped without a regression test reproducing the original symptom
  • Navigation added/changed without an E2E test clicking the nav and verifying the destination
  • "All N tests pass" where N hasn't increased despite new production code

**The check:** Look at `git diff --stat` for the work being verified. For every production file changed, point to the test that covers it. If you can't → verification FAILS.

**When proportionality fails, route back explicitly:**

| What's missing | Go to | Then | |---|---|---| | Integration test for API route | `/start` Step 4 — write it with `/tdd` (red→green) | Re-run `/verification` from the top | | E2E test for UI/nav/workflow | `/start` Step 5 — write it with `/e2e-playwright` | Re-run `/verification` from the top | | Regression test for bug fix | `/start` Step 4 — write it with `/tdd` (red→green) | Re-run `/verification` from the top |

**After ANY loop-back:** Re-run the FULL gate function (identify → run → read → verify). Do not skip re-verification. Do not assume the new test fixed everything — run ALL tests and re-check ALL proportionality. Partial re-checks prove nothing.

Patterns

**Tests:**

✅ [Run test command] [See: 34/34 pass] "All tests pass"
❌ "Should pass now" / "Looks correct"

**Regression tests (TDD Red-Green):**

✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
❌ "I've written a regression test" (without red-green verification)

**Build:**

✅ [Run build] [See: exit 0] "Build passes"
❌ "Linter passed" (linter doesn't check compilation)

**Requirements:**

✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
❌ "Tests pass, phase complete"

Red Flags — STOP

  • Reporting "N passed" without mentioning skip counts

-

Read more
@burhankhatri
Ships withe2e-testing

A set of 8 global skills for Claude Code that enforce disciplined, test-driven agentic development. Install once, use in any project.

Stars on GitHub

Momentum

stars in total
16
Star history of burhankhatri/e2e-testing on GitHub, a chart by star-history.com

Other skills on e2e-testing.

code-review

code-review

Use when a major project step has been completed and needs review against the plan and coding standards. Also use when someone…

e2e-playwright

e2e-playwright

Battle-tested Playwright E2E testing patterns for Next.js/React apps. Use when writing, running, debugging, or fixing Playwright…

start

start

Master orchestrator skill that kicks off the full development pipeline. Routes tasks through the correct skill chain (brainstorm,…

tdd

tdd

Enforces strict test-driven development. Use when implementing ANY feature, bugfix, or refactor — before writing implementation…

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafanatoday78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about verification.

Which coding agents can use verification?
verification installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.