Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
Mandatory verification before any completion claims. Run full test/build commands and capture complete output before stating success. Requires TDD certification and code review for all code changes.
/plugin marketplace add samjhecht/wrangler/plugin install wrangler@samjhecht-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
MANDATORY: When using this skill, announce it at the start with:
š§ Using Skill: verification-before-completion | [brief purpose based on context]
Example:
š§ Using Skill: verification-before-completion | [Provide context-specific example of what you're doing]
This creates an audit trail showing which skills were applied during the session.
Claiming work is complete without verification is dishonesty, not efficiency.
Core principle: Evidence before claims, always.
Violating the letter of this rule is violating the spirit of this rule.
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
If you haven't run the verification command in this message, you cannot claim it passes.
BEFORE claiming any status or expressing satisfaction:
0. TDD COMPLIANCE: Have you followed test-driven-development skill?
- See TDD Compliance Certification (below)
- If NO: Stop. You violated TDD. Start over.
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. CAPTURE: Copy complete output to include in your message
5. VERIFY: Does output confirm the claim?
- If NO: State actual status with evidence
- If YES: State claim WITH evidence
6. REQUIREMENTS: Have you verified all requirements? (see checklist)
7. TDD CERTIFIED: Have you certified TDD compliance? (see below)
8. CODE REVIEW: Have you obtained code review approval? (see gate below)
9. ONLY THEN: Make the claim
Skip any step = lying, not verifying
| Claim | Requires | Not Sufficient |
|---|---|---|
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
| Regression test works | Red-green cycle verified | Test passes once |
| Agent completed | VCS diff shows changes | Agent reports "success" |
| Requirements met | Line-by-line checklist | Tests passing |
BEFORE claiming work complete, certify TDD compliance:
For each new function/method implemented:
## TDD Compliance Certification
- [x] **Function name**: retryOperation
- **Test name**: test_retries_failed_operations_3_times
- **Watched fail**: YES
- **Failure reason**: "ReferenceError: retryOperation is not defined"
- **Implemented minimal code**: YES
- **Watched pass**: YES
- **Refactored**: YES (extracted delay logic)
- [x] **Function name**: validateEmail
- **Test name**: test_validates_email_format
- **Watched fail**: YES
- **Failure reason**: "ReferenceError: validateEmail is not defined"
- **Implemented minimal code**: YES
- **Watched pass**: YES
- **Refactored**: N/A (implementation already clean)
Making this certification explicit:
BEFORE claiming work complete:
Code review MUST always be obtained (without exception) for ALL code changes.
ALL of these MUST be true to proceed WITHOUT review:
If ANY of the above is false, code review is MANDATORY.
This means code review IS MANDATORY for:
ALL of these MUST be true to claim work complete:
Valid exceptions (code review NOT required):
Pure documentation: *.md files in docs/ directory only
Configuration-only: Dependency updates in package.json, tsconfig.json
Emergency hotfix: Production down, security breach
If attempting to use exception:
## Code Review Gate
- [x] **Code review requested**: Used requesting-code-review skill
- [x] **Review completed**: code-reviewer subagent finished analysis
- [x] **Critical issues**: 0
- [x] **Important issues**: 0 (1 converted to issue #123)
- [x] **Review status**: Approved with minor items
- [x] **Review reference**: See code review output below
Critical Issues: 0
Important Issues: 0 (1 deferred: Created issue #123 for missing error handling edge case)
Minor Issues: 3
- All addressed
Review approved for merge.
You CANNOT claim completion without:
Attempting to skip code review without valid exception violates verification-before-completion.
| Rationalization | Why It's Wrong | Correct Action |
|---|---|---|
| "This is too trivial to review" | Trivial changes cause production incidents | Request review anyway (takes 2 minutes) |
| "I'm the expert, no one else can review" | Experts have blind spots review catches | Request review from anyone on team |
| "We're too busy for review" | Busy doesn't exempt safety | If too busy to review, too busy to merge safely |
| "I'll get review after merging" | Post-merge review never happens | Review BEFORE merge, always |
| "The tests pass, that's enough" | Tests necessary but not sufficient | Tests + human review both required |
| "It's only N lines changed" | Size doesn't determine bug potential | ALL code changes require review |
| "No one else is available" | If not P0, it can wait | Wait for reviewer or escalate |
| "This is blocking me" | Being blocked doesn't exempt review | Work on different task while waiting |
IF your work involves UI (HTML, CSS, JSX, templates, components):
BEFORE claiming UI work complete, verify ALL of these:
For detailed guidance on frontend testing patterns, see the testing-anti-patterns skill:
Evidence required: Screenshot showing correct rendering
Evidence required: Console screenshot with 0 errors
Evidence required: Network tab screenshot or description of verified requests
Evidence required: axe-core output (0 violations) + Lighthouse score
For detailed examples and test code, see testing-anti-patterns skill Anti-Pattern 7.
Evidence required: Description of tested states and results
For detailed examples and test code, see testing-anti-patterns skill Anti-Pattern 8.
BEFORE claiming UI work complete:
IF you modified HTML/CSS/JSX/templates:
STOP - Have you completed Frontend Verification Checklist?
IF ANY checkbox unchecked:
STOP - Work is NOT complete
Complete all verification steps first
IF console has errors:
STOP - Fix errors before proceeding
IF accessibility violations found:
STOP - Fix violations before proceeding
IF visual regression detected and unintentional:
STOP - Fix regression before proceeding
ONLY IF all frontend verification complete:
Continue with completion claim
When claiming UI work complete, provide:
## Frontend Verification Evidence
### Visual Verification
Screenshot: [component-name].png
Responsive breakpoints tested: Mobile (375x667), Tablet (768x1024), Desktop (1920x1080)
Visual regression: [Baseline created | No changes | Intentional changes approved]
### Console Verification
Console errors: 0
Console warnings: 0 (or: 1 expected warning about X)
[Screenshot of clean console]
### Network Verification
Expected requests:
- ā GET /api/products (200 OK)
- ā POST /api/checkout (201 Created)
Failed requests: 0
### Accessibility Verification
axe-core violations: 0
Keyboard navigation: ā All elements accessible
Lighthouse score: 97/100
### Interaction Verification
Tested interactions:
- ā Submit button ā Form submits successfully
- ā Cancel button ā Form clears
- ā Invalid email ā Error message displays
- ā Loading state ā Spinner renders
You CANNOT claim UI complete without this evidence.
Frontend-specific red flags:
| Excuse | Reality |
|---|---|
| "Should work now" | RUN the verification |
| "I'm confident" | Confidence ā evidence |
| "Just this once" | No exceptions |
| "Linter passed" | Linter ā compiler |
| "Agent said success" | Verify independently |
| "I'm tired" | Exhaustion ā excuse |
| "Partial check is enough" | Partial proves nothing |
| "Different words so rule doesn't apply" | Spirit over letter |
| "I followed the spirit of TDD" | Spirit = Letter. If you didn't watch tests fail first, you didn't follow TDD. Provide certification or start over. |
| "These tests are simple, TDD would slow me down" | Simple tests take 30 seconds. Complex tests NEED TDD. No exceptions. |
| "I wrote tests and implementation together" | That's not TDD. Tests FIRST. Delete implementation and restart. |
| "This is too small for code review" | Size doesn't matter. Code review is mandatory. See exceptions list for ONLY valid reasons to skip. |
| "I'll get review after merge" | No. Review BEFORE merge. Reversing changes post-merge is expensive and risky. |
| "Code review would slow me down" | Code review catches bugs before they reach users. Slowdown now prevents crisis later. |
Tests:
ā
[Run test command] [See: 34/34 pass] "All tests pass"
ā "Should pass now" / "Looks correct"
When claiming tests pass, you MUST provide:
Required Evidence:
Exact command executed:
npm test
# or
pytest
# or
cargo test
# or
go test ./...
Complete output showing:
Coverage (if available):
I've verified all tests pass. Here's the output:
$ npm test
PASS tests/auth.test.ts (4.231s)
ā login with valid credentials (231ms)
ā login with invalid credentials (12ms)
ā logout successfully (8ms)
PASS tests/users.test.ts (2.145s)
ā creates new user (145ms)
ā updates existing user (98ms)
ā deletes user (76ms)
Test Suites: 2 passed, 2 total
Tests: 6 passed, 6 total
Snapshots: 0 total
Time: 6.376s
Process exited with code 0
All 6 tests pass successfully.
ā "I ran the tests and they pass."
ā "Tests are green."
ā "Everything looks good."
ā [Shows only 1 test when there are 50]
ā [Shows truncated output without pass/fail counts]
If you cannot provide the complete output above, you have not verified.
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"
Agent delegation:
ā
Agent reports success ā Check VCS diff ā Verify changes ā Report actual state
ā Trust agent report
Agent: "I need to implement a checkout form component."
[Uses frontend-visual-regression-testing + frontend-accessibility-verification]
Agent: "I've implemented the checkout form."
GATE FUNCTION CHECK:
0. TDD COMPLIANCE: Did you write tests first?
ā YES - Wrote component test, then implementation
1. IDENTIFY: What proves checkout form works?
Command: npm test -- checkout.test.ts
Command: Open DevTools console
Command: Run axe-core test
2. RUN: Execute commands
[Runs tests]
3. READ: Test output
PASS tests/checkout.test.ts ā renders form correctly ā submits with valid data ā shows errors for invalid data ā is accessible (0 a11y violations)
Tests: 4 passed, 4 total
[Opens DevTools]
Console: 0 errors, 0 warnings
Network: 2 requests (both 200 OK)
[Runs axe-core]
Accessibility violations: 0
Lighthouse score: 98/100
4. VERIFY: Complete Frontend Verification Checklist
ā Visual: Screenshot taken, responsive tested
ā Console: 0 errors
ā Network: Expected requests only
ā Accessibility: 0 violations, keyboard nav works
ā Interactions: All tested
5. PROVIDE EVIDENCE:
## Frontend Verification Evidence
### Visual Verification
Screenshot: checkout-form.png (baseline created)
Responsive breakpoints tested: ā Mobile, Tablet, Desktop
### Console Verification
Console errors: 0
[Screenshot showing clean console]
### Network Verification
Expected requests:
- ā POST /api/validate-address (200 OK)
- ā POST /api/checkout (201 Created)
### Accessibility Verification
axe-core violations: 0
Keyboard navigation: ā All accessible
Lighthouse score: 98/100
### Interaction Verification
- ā Submit with valid data ā Success message
- ā Submit with invalid data ā Error messages
- ā Tab navigation ā All inputs accessible
6. ONLY THEN: "Checkout form complete. All tests pass. Frontend verification complete."
From 24 failure memories:
ALWAYS before:
Rule applies to:
Frontend work:
No shortcuts for verification.
Run the command. Read the output. THEN claim the result.
This is non-negotiable.
Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.