| name | verification-loop |
| description | 6-phase pre-PR verification sweep with structured PASS/FAIL reporting |
| version | 1.0.0 |
| level | 2 |
| triggers | ["/verify","verify before commit","pre-commit check","ready for PR"] |
| context_files | ["context/project.md"] |
| steps | [{"name":"Language Detection","description":"Auto-detect project language and available tooling"},{"name":"Build Phase","description":"Run build and capture errors"},{"name":"Type Check Phase","description":"Run type checker (if applicable)"},{"name":"Lint Phase","description":"Run linter (full mode only)"},{"name":"Test Suite Phase","description":"Run tests with coverage (full mode only)"},{"name":"Security Scan Phase","description":"Scan for secrets and debug output (pre-pr mode only)"},{"name":"Generate Report","description":"Output structured VERIFICATION REPORT with final verdict"}] |
Verification Loop Skill
Comprehensive pre-commit and pre-PR verification. Runs the quality checks humans forget.
What Claude Gets Wrong Without This Skill
Without structured verification, Claude either:
- Skips checks entirely and creates broken PRs
- Runs checks ad-hoc without recording results
- Stops at the first failure instead of collecting all issues
- Doesn't provide a clear READY/NOT READY verdict
The verification loop ensures every check runs, every failure is recorded, and the final state is unambiguous.
Verification Modes
quick (default): Build + type check only. Fast feedback for iterative development.
full: Build + types + lint + tests + coverage (80% minimum). Standard pre-commit sweep.
pre-commit: Full suite + git status verification (no uncommitted changes in critical paths).
pre-pr: Full suite + security scan (secrets, debug output, credential files). Release gate.
The 6 Phases
Phase 1: Language Detection
Auto-detect from project files:
- Python: pytest, mypy, ruff/pylint, coverage.py
- TypeScript/JavaScript: tsc, eslint, jest/vitest, c8/nyc
- Go: go build, go vet, golangci-lint, go test -cover
- C++: cmake/make, clang-tidy, ctest/gtest
- Bash: shellcheck, bats
If multiple languages present, run checks for all detected languages.
Phase 2: Build
Run the build command appropriate to the detected language:
- Python: Import all modules to verify syntax
- TypeScript/JavaScript:
tsc --noEmit or build script
- Go:
go build ./...
- C++:
cmake --build or make
- Bash:
bash -n on all .sh files
Capture all errors. Do not stop at first failure.
Phase 3: Type Check
Language-specific type checking:
- Python:
mypy with strict mode
- TypeScript:
tsc --noEmit
- Go: Type checking included in build
- C++: Compile-time type checking included in build
Record all type errors with file:line references.
Phase 4: Lint (full+ modes only)