skills/workflow/verification-gate/SKILL.md
Use when about to claim work is complete, fixed, passing, or ready — before committing, creating PRs, or moving to the next task. Requires running verification commands and confirming output before making any success claims.
npx skillsauth add faysilalshareef/dotnet-ai-kit verification-gateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
If you haven't run the verification command in this message, you cannot claim it passes.
Violating the letter of this rule is violating the spirit of this rule.
BEFORE claiming any status or expressing satisfaction:
1. IDENTIFY → What command proves this claim?
2. RUN → Execute the FULL command (fresh, not cached)
3. READ → Full output — check exit code, count failures
4. VERIFY → Does the output confirm the claim?
YES → State the claim WITH the evidence
NO → State actual status with evidence
5. ONLY THEN → Make the claim
Skip any step = false claim, not efficiency.
| Claim | Required Command | Not Sufficient |
|-------|-----------------|----------------|
| "Build succeeds" | dotnet build exit 0 | "Linter passed", "code looks right" |
| "Tests pass" | dotnet test with 0 failures | Previous run, "should pass" |
| "No warnings" | dotnet build -warnaserror exit 0 | Build passing (warnings hidden) |
| "Lint clean" | ruff check or analyzer output: 0 errors | Partial check, extrapolation |
| "Bug fixed" | Test reproducing the original symptom passes | "Code changed, assumed fixed" |
| "Migration works" | dotnet ef database update exit 0 | "Schema looks correct" |
| "Endpoint works" | HTTP request + response validation | "Controller compiles" |
| "Requirements met" | Line-by-line checklist against spec | "Tests passing" |
These phrases are never acceptable without preceding verification output:
| Excuse | Reality | |--------|---------| | "Should work now" | RUN the verification | | "I'm confident" | Confidence is not evidence | | "Just this once" | No exceptions | | "Linter passed" | Linter does not check compilation | | "Build passed" | Build does not check test logic | | "Tests passed last time" | Last time is not this time | | "I only changed one line" | One line can break everything | | "The code is simple" | Simple code still needs verification | | "I'm running out of context" | Verification is never optional | | "Partial check is enough" | Partial proves nothing about the whole | | "Different words so rule doesn't apply" | Spirit over letter, always |
If you catch yourself:
All of these mean: STOP. Run the command. Read the output. Then speak.
When implementation touches multiple areas, verify each:
1. dotnet build → Compiles?
2. dotnet test → All green?
3. Review test output → Expected count? No skipped?
4. Check spec → Each requirement has evidence?
Do NOT bundle: "build and tests pass" — run each, report each.
When a subagent reports success:
git diff)dotnet build yourselfdotnet test yourselfAgent reports are claims. Claims need verification.
No shortcuts. Run the command. Read the output. THEN claim the result.
development
Use when encountering any bug, test failure, build error, or unexpected behavior — before proposing fixes or making changes.
development
Use when checkpointing, wrapping up, or handing off an AI-assisted development session.
development
Use when following the Specification-Driven Development lifecycle from plan through ship.
development
Use when receiving code review feedback from CodeRabbit, PR reviewers, or human reviewers — before implementing any suggested changes.