verification-loop
- Use it when:
- You've finished a feature or refactor and want proof it's ready before opening a PR.
- It does:
- Runs the build, tsc or pyright, the linter or ruff, tests with coverage, a grep for keys and console.log, and a diff review.
- You get:
- A report marking each phase PASS or FAIL and the work READY or NOT READY for a PR, with the issues to fix.
- Also reports:
- Deployment checks separately, as verified, failed or not performed, and doesn't touch production without authorization.
TL;DR
A pre-PR quality gate from ECC for JavaScript, TypeScript and Python projects. It runs six phases in order and stops to fix a failing build before going on. Type checking uses tsc or pyright, fixing critical errors before going on, and linting uses npm run lint or ruff; the test phase reports totals and coverage against an 80% target. The security phase is a quick grep of .ts and .js files for strings like sk- and api_key, plus console.log calls left in src. The diff phase lists the changed files and reviews each for unintended changes, missing error handling and edge cases. When the task needs a deployment or other target environment checked, it reports that apart from the local checks: passing checks, a merge or a release don't count as acceptance there, and when it lacks access it names the next permitted step instead. In long sessions it suggests running again every 15 minutes or after major changes. It's meant to sit alongside PostToolUse hooks, which catch issues as they happen.
Summarizes the skill at d2ef268.
npx skills add https://github.com/affaan-m/ecc --skill verification-loop skills.sh pageSource on GitHubAll skills from affaan-m/ecc
- Total Downloads
- 6,200 on skills.sh, Nov 9, 2026
- Repo stars
- 299,776 affaan-m/ecc
- First seen
- May 19, 2026 on skills.sh
Weekly values
| Week to | Installs |
|---|---|
| Sep 21 | 291 |
| Sep 28 | 188 |
| Oct 5 | 181 |
| Oct 12 | 279 |
| Oct 19 | 480 |
| Oct 26 | 478 |
| Nov 2 | 692 |
| Nov 9 | 549 |
| Category |
Test-first work, implementation from specs, git hygiene and scope control. Find root causes, review code and test what you built. Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills. |
|---|---|
| Type |
A multi-step process the agent follows: interview, debug, run a TDD loop, review. |
| Effect |
Its own steps create or change files, git state or local tools. |
| Needs |
Instructions only. Works in any agent that supports skills. |
| Publisher |
Everyone else. Unverified vendor claims default to community. |
| Topics | |
| Stack |
SKILL.md
From affaan-m/ecc at d2ef268. Checked daily, last changed Nov 6, 2026.
Frontmatter
name: verification-loop
description: Run a six-phase verification of a Claude Code session's work — build, type check, lint, tests with coverage, security grep, and diff review — then produce a PASS/FAIL verification report. Use when verifying work after completing a feature or refactor, before creating a PR, or when quality gates must pass.
license: MIT
metadata:
origin: ECCVerification 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
set -o pipefail # report the build's exit status, not tail's
# Check if project builds
npm run build 2>&1 | tail -20
# OR
pnpm build 2>&1 | tail -20
If build fails, STOP and fix before continuing.
Phase 2: Type Check
set -o pipefail
# TypeScript projects
npx --no-install tsc --noEmit 2>&1 | sed -n '1,30p'
# Python projects
pyright . 2>&1 | sed -n '1,30p'
Report all type errors. Fix critical ones before continuing.
Phase 3: Lint Check
Use sed to limit displayed output while consuming the whole stream. This keeps a
successful linter from failing on SIGPIPE when pipefail is enabled.
set -o pipefail
# JavaScript/TypeScript
npm run lint 2>&1 | sed -n '1,30p'
# Python
ruff check . 2>&1 | sed -n '1,30p'
Phase 4: Test Suite
set -o pipefail
# 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
Target Acceptance
When the requested outcome requires deployment or target-environment verification, report target acceptance separately from local checks. Record the environment and installed version when known, the evidence, and the next permitted check or precise access dependency. Passing local checks, review, merge, or release does not establish target acceptance. Report VERIFIED or FAILED for an executed target check, with its evidence. Do not access production or make external changes without authorization. For local-only tasks, mark target acceptance as not applicable.
For example: local checks PASS; staging verification NOT PERFORMED (no access); next step: an authorized maintainer runs the staging smoke test.
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]
Overall: [READY/NOT READY] for PR
Target: [VERIFIED/FAILED/NOT PERFORMED/NOT APPLICABLE] (environment/version, evidence)
Next permitted step: [check or access dependency; none if complete/not applicable]
Issues to Fix:
1. ...
2. ...
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.