원클릭으로
verification-loop
Verification driven by built-in /loop. Use when verifying an implementation or running a final check before commit.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Verification driven by built-in /loop. Use when verifying an implementation or running a final check before commit.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Promotes recurring feedback into the right skill, then guides /compact at phase boundaries.
Testing guidance for pytest, Jest/Vitest, Go, and TDD. Use when writing tests or improving coverage.
Methodical debugging with evidence and hypothesis testing. Use when troubleshooting fails or root cause is unclear.
Create new skills, commands, hooks, or subagents. Use when adding capabilities to Claude Code or Cursor.
PostgreSQL patterns for queries, schema, indexing, security. Use when writing SQL, designing schema, or adding indexes.
Reviews a GitHub PR diff for correctness, security, tests, architecture. Use when asked to review a PR or pull request.
| name | verification-loop |
| description | Verification driven by built-in /loop. Use when verifying an implementation or running a final check before commit. |
The looping mechanism is not implemented inside this skill — use Claude Code's built-in /loop command. This skill only owns the verification checklist (what to verify per phase).
<when_to_activate>
debugging skill instead; verification-loop assumes the change is in place and asks "does the end-to-end system agree?")<loop_via_builtin>
Claude Code ships a built-in /loop that runs a prompt or slash command on a recurring interval (default: 10m, e.g. /loop 5m /test). Use it as the procedural backbone for any verification that needs to re-run until green.
Common patterns:
| Goal | Invocation |
|---|---|
| Re-run the test suite every 5 minutes while you work on a long-running fix | /loop 5m /test |
| Re-run the build every 10 minutes | /loop /build-fix |
| Re-run a full verification | /loop 15m "run the verification-loop skill in pre-pr mode and stop when all phases PASS" |
| One-shot verification (no loop) | Just invoke this skill directly — no /loop needed |
Rules:
while/sleep loop in Bash. /loop is interrupt-able, surfaces output cleanly, and respects the session./loop exits on the user-cancel signal; check after each iteration).If /loop is not available in the current session (very old Claude Code), fall back to invoking this skill once manually after each code change. Do not write a custom looping wrapper.
</loop_via_builtin>
<context_scan> Detect project type and available tools before running phases:
# Build system
[ -f "package.json" ] && echo "NODE" && (grep -q '"build"' package.json && echo "HAS_BUILD")
[ -f "pyproject.toml" ] && echo "PYTHON"
[ -f "Cargo.toml" ] && echo "RUST"
[ -f "go.mod" ] && echo "GO"
# Test framework
[ -f "pytest.ini" ] || ([ -f "pyproject.toml" ] && grep -q "pytest" pyproject.toml 2>/dev/null) && echo "PYTEST"
[ -f "jest.config.js" ] || [ -f "jest.config.ts" ] && echo "JEST"
[ -f "vitest.config.ts" ] && echo "VITEST"
# Linter
[ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ] || [ -f "eslint.config.js" ] && echo "ESLINT"
[ -f "ruff.toml" ] || ([ -f "pyproject.toml" ] && grep -q "ruff" pyproject.toml 2>/dev/null) && echo "RUFF"
# Type checker
[ -f "tsconfig.json" ] && echo "TYPESCRIPT"
(command -v pyright >/dev/null || command -v mypy >/dev/null) && echo "PYTHON_TYPES"
</context_scan>
<verification_phases>
# Node.js
npm run build 2>&1 | tail -20
# Python
python -m py_compile main.py
# Rust
cargo build 2>&1 | tail -20
# Go
go build ./... 2>&1 | tail -20
If build fails, STOP and fix before continuing.
# TypeScript
npx tsc --noEmit 2>&1 | head -30
# Python
pyright . 2>&1 | head -30 # or: mypy . 2>&1 | head -30
# Rust / Go — included in build
npm run lint 2>&1 | head -30 # JS/TS
ruff check . 2>&1 | head -30 # Python
cargo clippy 2>&1 | head -30 # Rust
golangci-lint run 2>&1 | head -30 # Go
npm run test -- --coverage 2>&1 | tail -50
# or: pytest --cov --tb=short 2>&1 | tail -50
# or: cargo test 2>&1 | tail -50
# or: go test ./... -cover 2>&1 | tail -50
Target: 80% minimum coverage.
# Hardcoded secrets
grep -rn "sk-\|api_key\s*=\s*['\"]" --include="*.py" --include="*.ts" --include="*.js" . 2>/dev/null | head -10
# Debug artifacts
grep -rn "console\.log\|print(\|debugger\b" --include="*.ts" --include="*.tsx" --include="*.py" src/ 2>/dev/null | head -10
# Dependency audit
npm audit 2>/dev/null | tail -5
pip-audit 2>/dev/null | tail -5
git diff --stat
git diff HEAD~1 --name-only
Review each changed file for unintended changes, missing error handling, edge cases. </verification_phases>
<verification_modes>
| Mode | Phases | Use When |
|---|---|---|
quick | Build + Tests | Mid-implementation sanity check |
full (default) | All 6 phases | Before PR or after completing a feature |
pre-commit | Build + Types + Lint + Tests | Before committing |
pre-pr | All 6 + diff review emphasis | Before opening a PR |
For any mode that may need to re-run on code changes, drive it with /loop (see <loop_via_builtin>).
</verification_modes>
<output_format>
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
Issues to Fix:
1. ...
2. ...
</output_format>
<success_criteria>
/loop — not a custom shell loop
</success_criteria>