verification-stack
Use when running verification pipelines, checking test/lint/type status, or ensuring code quality gates pass before completing work
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Verification Stack
Verification-driven development uses automated checks as gates instead of manual approval. This skill teaches the verification pipeline that enables autonomous development.
Core Principle
Asymmetry of Verification: Many tasks are easier to verify than to solve. Software development is highly verifiable through:
- Tests (unit, integration, e2e)
- Linters and formatters
- Type checkers
- Build systems
- Security scanners
The Verification Pipeline
Run checks in this order (fast-fail):
# 1. Format (auto-fix)
uv run ruff format .
# 2. Lint (auto-fix where possible)
uv run ruff check . --fix
# 3. Type check
uv run mypy src/
# 4. Tests (fast subset first)
uv run pytest tests/ -x --tb=short
# 5. Full test suite
uv run pytest tests/ --cov=src/
# 6. Security (optional)
uv run bandit -r src/ --severity-level high
One-Command Verification
Create a verification script for the project:
#!/bin/bash
# scripts/verify.sh
set -e
echo "=== Formatting ==="
uv run ruff format .
echo "=== Linting ==="
uv run ruff check . --fix
echo "=== Type Checking ==="
uv run mypy src/
echo "=== Tests ==="
uv run pytest tests/ -x --tb=short
echo "=== All checks passed ==="
Run with: bash scripts/verify.sh
Language-Specific Stacks
Python (uv + ruff + mypy + pytest)
uv run ruff format .
uv run ruff check . --fix
uv run mypy src/
uv run pytest tests/ -x
TypeScript (pnpm + eslint + tsc + vitest)
pnpm format
pnpm lint --fix
pnpm typecheck
pnpm test
Go
go fmt ./...
golangci-lint run --fix
go build ./...
go test ./...
Verification as Gate
The key insight: verification replaces permission prompts.
Instead of:
Claude: "Can I proceed with implementing this feature?"
Human: "Yes"
Use:
Claude: [implements feature]
Claude: [runs verification]
Verification: PASS → proceed
Verification: FAIL → fix and retry
Handling Failures
When verification fails:
- Read the error output - Don't guess, analyze the actual failure
- Fix the specific issue - Make targeted changes
- Re-run verification - Confirm the fix works
- Continue - Move to next task only when green
Common Failure Patterns
| Failure | Fix |
|---|---|
| Lint: unused import | Remove the import |
| Type: missing return | Add return type annotation |
| Test: assertion failed | Fix logic or update test |
| Format: style violation | Auto-fix handles this |
Pre-Commit Integration
Add verification as git hook:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
Continuous Verification
In autonomous workflows:
- Before starting: Check baseline is green
- After each change: Run relevant subset
- Before closing Bead: Run full suite
- Before merge: Run full suite + integration tests
# Quick check during development
uv run pytest tests/test_specific.py -x
# Full verification before closing Bead
uv run ruff format . && uv run ruff check . --fix && uv run mypy src/ && uv run pytest tests/
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-03
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!