Verification loop
Skill uzysjung/uzys-agent-harness/.claude/skills/verification-loop
Curate vetted AI-coding skills & plugins by your tech stack — install only what you need, across Claude Code, Codex, OpenCode & Antigravity
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.
What its author says it does
Copied from the file, not written here
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).
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