Verification loop
Skill uzysjung/uzys-agent-harness/templates/skills/verification-loop
A comprehensive verification system for Claude Code sessions. Every run ends with a fixed verdict — PASS / PASS_WITH_NITS / FAIL — plus severity-labeled findings (CRITICAL/HIGH/MEDIUM/LOW).From its SKILL.md
npx -y skills add uzysjung/uzys-agent-harness --skill verification-loopAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Verification Loop Skill
A comprehensive verification system for Claude Code sessions.
When to Use
Invoke this skill:
- After completing a feature or significant code change
- Before creating a PR
- When you want to ensure quality gates pass
- After refactoring
Verification Phases
Phase 1: Build Verification
# Check if project builds
npm run build 2>&1 | tail -20
# OR
pnpm build 2>&1 | tail -20
If build fails, STOP and fix — then re-verify from Phase 1 in a fresh instance. Continuing through the remaining phases yourself would make you the verifier of code you just wrote, which the Verdict Contract below forbids.
Phase 2: Type Check
# TypeScript projects
npx tsc --noEmit 2>&1 | head -30
# Python projects
pyright . 2>&1 | head -30
Report all type errors. Fix critical ones before continuing.
Phase 3: Lint Check
# JavaScript/TypeScript
npm run lint 2>&1 | head -30
# Python
ruff check . 2>&1 | head -30
Phase 4: Test Suite
# Run tests with coverage
npm run test -- --coverage 2>&1 | tail -50
# Check coverage threshold
# Target: 80% minimum
Report:
- Total tests: X
- Passed: X
- Failed: X
- Coverage: X%
Phase 5: Security Scan
# Check for secrets
grep -rn "sk-" --include="*.ts" --include="*.js" . 2>/dev/null | head -10
grep -rn "api_key" --include="*.ts" --include="*.js" . 2>/dev/null | head -10
# Check for console.log
grep -rn "console.log" --include="*.ts" --include="*.tsx" src/ 2>/dev/null | head -10
Phase 6: Diff Review
# Show what changed
git diff --stat
git diff HEAD~1 --name-only
Review each changed file for:
- Unintended changes
- Missing error handling
- Potential edge cases
Output Format
After running all phases, produce a verification report:
VERIFICATION REPORT
==================
Build: [PASS/FAIL]
Types: [PASS/FAIL] (X errors)
Lint: [PASS/FAIL] (X warnings)
Tests: [PASS/FAIL] (X/Y passed, Z% coverage)
Security: [PASS/FAIL] (X issues)
Diff: [X files changed]
Verdict: PASS | PASS_WITH_NITS | FAIL
Findings:
| ID | Severity | Finding | Evidence (file:line / command output) |
|----|----------|---------|---------------------------------------|
| F1 | HIGH | ... | ... |
Verdict Contract
The report ends with exactly one verdict. Free-prose closings ("looks ready", "should be fine") are banned — they leave room to bury defects. A fixed vocabulary makes the report honest and machine-checkable.
| Verdict | Meaning | Action |
|---|---|---|
| PASS | All gates green, zero findings at any severity | Ship |
| PASS_WITH_NITS | Ship-safe: only LOW/MEDIUM findings, each recorded with a follow-up | Ship + log follow-ups |
| FAIL | Any gate red, or one or more CRITICAL/HIGH findings | Block → fix → re-verify |
Every finding gets exactly one severity:
- CRITICAL — data loss, security hole, or the change misbehaves in real use if shipped
- HIGH — main-path defect or regression; users will hit it
- MEDIUM — edge-case or quality defect; unlikely to block real use
- LOW — nit: style, naming, doc wording
Rules:
- Severity is judged by impact evidence, not by how easy the fix is.
- FAIL → fix → re-verify is one cycle. A fix alone never upgrades the verdict — the re-verification must reproduce green.
- A run that aborts early (Phase 1 build failure) still emits a report: verdict FAIL with the failing gate as a CRITICAL finding. Stopping to fix is how you reach the next verdict, not a reason to skip issuing this one — an unreported run reads as "not run".
- The instance that wrote the change never issues its own verdict: verification runs in a fresh instance (see the model-orchestration skill's V&V separation).
Continuous Mode
For long sessions, run verification every 15 minutes or after major changes:
Set a mental checkpoint:
- After completing each function
- After finishing a component
- Before moving to next task
Run: /verify
Integration with Hooks
This skill complements PostToolUse hooks but provides deeper verification. Hooks catch issues immediately; this skill provides comprehensive review.
What ships with it: 2 files
2.4 KB alongside SKILL.md
agents/
- openai.yaml256 B
references/
- tracks.md2.1 KB