Pm-pilot verification-loop
Pre-commit verification with lint, type-check, tests, and security scan
install
source · Clone the upstream repo
git clone https://github.com/mshadmanrahman/pm-pilot
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/mshadmanrahman/pm-pilot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/dev/verification-loop" ~/.claude/skills/mshadmanrahman-pm-pilot-verification-loop && rm -rf "$T"
manifest:
skills/dev/verification-loop/SKILL.mdsource content
Verification Loop
Run all quality gates before committing or creating a PR.
When to Use
- Before any git commit
- Before creating a pull request
- After completing implementation (before marking done)
- When asked to "verify" or "check everything"
Procedure
Step 1: Detect Project Type
Identify available tools from project files:
: npm/yarn scripts (lint, typecheck, test)package.json
/pyproject.toml
: Python tooling (ruff, mypy, pytest)setup.py
: Go tooling (golangci-lint, go vet, go test)go.mod
: Rust tooling (clippy, cargo test)Cargo.toml
Step 2: Run Quality Gates
Execute in order (stop on CRITICAL):
| Gate | Command (detect per project) | Severity |
|---|---|---|
| Lint | eslint, ruff, golangci-lint | HIGH |
| Type Check | tsc --noEmit, mypy, go vet | HIGH |
| Tests | jest, pytest, go test | CRITICAL |
| Security | npm audit, pip-audit, cargo audit | CRITICAL |
| Coverage | jest --coverage, pytest --cov | HIGH |
Step 3: Report Results
Verification: {project name} Lint: PASS | FAIL ({count} issues) Types: PASS | FAIL ({count} errors) Tests: PASS | FAIL ({pass}/{total}) Security: PASS | FAIL ({count} vulnerabilities) Coverage: {percent}% (target: 80%) Verdict: READY TO COMMIT | BLOCKED ({reason})
Step 4: Actionable Fixes
For each failure, provide:
{gate} FAIL: {file}:{line} - {error message} Fix: {specific suggestion}
Blocking Rules
- CRITICAL failures block commit (tests failing, known vulnerabilities)
- HIGH failures: warn but allow commit with acknowledgment
- MEDIUM/LOW: report only, do not block
Output Format
Verification: lead-scoring-simulator Lint: PASS Types: PASS Tests: PASS (24/24) Security: PASS Coverage: 87% (target: 80%) Verdict: READY TO COMMIT
Rules
- Always run tests with verbose output
- Kill any hung processes after 120s timeout
- If a gate tool is not installed, skip it with a warning
- Never auto-fix lint issues without showing what changed
- Clean up test artifacts after run