원클릭으로
verification-loop
Systematic code change verification — lint, test, type-check, review
메뉴
Systematic code change verification — lint, test, type-check, review
Use when you have a spec or requirements for a multi-step task, before touching code
USE THIS SKILL whenever a user asks for a comprehensive implementation plan, a full-stack build plan, a UI+backend plan, or says 'create a plan for building X' where X spans multiple phases or systems. Also activate when the user says 'plan this project', 'I need a detailed plan', 'build plan', 'implementation plan', or attaches a mockup/wireframe and asks how to build it. Produces a zero-ambiguity, evidence-gated plan with self-contained per-phase prompts, exhaustive data binding tables, per-phase validation checklists, and a global quality gate. Evidence-gated: before writing phases, verify required artefacts (mockup, data sample, API contract, scaffold inventory); if any BLOCKER is missing, ask for it and wait before proceeding. Dual-mode: generic by default, junai-pipeline only when explicitly requested. Agent-agnostic - any agent with read/search/edit tools can use this skill.
Structure freetext ideas, backlog items, or vague requirements into a formal Intent Document that preserves user intent across the entire agent pipeline chain.
Writing effective code documentation - API docs, README files, inline comments, and technical guides. Use for documenting codebases, APIs, or writing developer guides.
Technical documentation best practices for READMEs, API docs, architecture docs, runbooks, and developer guides. Use when writing or reviewing documentation, creating onboarding guides, or establishing documentation standards.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
| name | verification-loop |
| context | fork |
| description | Systematic code change verification — lint, test, type-check, review |
Systematic checklist to verify code changes before committing or opening a PR.
Confirm the project compiles without errors.
# Python
python -m py_compile myapp/main.py
# JavaScript/TypeScript
npm run build
# Go
go build ./...
If the build fails, stop and fix before continuing.
# Python
mypy myapp/ --ignore-missing-imports
# or: pyright myapp/
# TypeScript
npx tsc --noEmit
# Go
go vet ./...
Fix critical type errors. Defer warnings only if they're cosmetic.
# Python
ruff check . --fix
ruff format . --check
# JavaScript/TypeScript
npx eslint . --fix
npx prettier --check .
# Go
golangci-lint run
| Category | Action |
|---|---|
| Errors (unused imports, undefined vars) | Fix now |
| Warnings (complexity, naming) | Fix if easy |
| Style (line length, whitespace) | Auto-fix |
# Python
pytest --cov=myapp --cov-report=term-missing -v
# JavaScript/TypeScript
npm test -- --coverage
# Go
go test ./... -cover
Record: tests passed/failed, coverage %, duration. If tests fail, check whether the failure is in your changed code or pre-existing.
# Secrets detection in staged files
git diff --cached --name-only | xargs grep -l -E \
"(api_key|secret|password|token)\s*=\s*['\"][^'\"]+['\"]" 2>/dev/null
# Dependency audit
pip audit # Python
npm audit # JavaScript
govulncheck ./... # Go
# Debug artifacts
grep -rn "breakpoint()" --include="*.py" myapp/
grep -rn "console\.log" --include="*.ts" src/
Catch unreachable, unused, and orphaned symbols before they accumulate.
# TypeScript / JavaScript — pick one tool
npx ts-prune --project tsconfig.json # unused exports (TS)
npx knip # unused files, exports, deps (TS/JS)
# Python
pip install vulture
vulture myapp/ --min-confidence 80 # unused code (functions, classes, vars)
# Quick grep fallback (any language)
# Find symbols defined but never imported/called in the rest of the repo
# (adjust pattern to project conventions)
grep -rn "^export function \|^export class \|^def " --include="*.ts" --include="*.py" src/
Checklist:
Standing rule: Do not commit a change that introduces new orphans or dead exports. If a symbol is intentionally exported for external consumers, add a // @public comment or equivalent project convention to suppress false positives.
git diff --stat # Summary
git diff --cached # Staged changes
git diff --name-only HEAD # Changed files
For each changed file check:
VERIFICATION REPORT
===================
Build: PASS
Types: PASS (0 errors)
Lint: PASS (2 warnings — deferred)
Tests: PASS (42/42 passed, 84% coverage)
Security: PASS (0 secrets, 0 vulnerabilities)
Diff: 5 files changed (+120, -45)
Status: READY for commit/PR
| Status | Meaning |
|---|---|
| READY | All checks pass, safe to commit/PR |
| NEEDS FIXES | Blocking issues — fix before proceeding |
| PARTIAL | Non-blocking warnings — document and proceed |
#!/bin/sh
ruff check . || exit 1
mypy myapp/ || exit 1
pytest --cov=myapp --cov-fail-under=80 -q || exit 1
echo "All checks passed."
# .github/workflows/verify.yml
name: Verify
context: fork
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.12" }
- run: pip install -r requirements.txt
- run: ruff check .
- run: mypy myapp/
- run: pytest --cov=myapp --cov-fail-under=80
- run: pip audit
# Full verification
ruff check . && mypy myapp/ && pytest --cov=myapp -v && pip audit
# Quick check (lint + tests)
ruff check . && pytest -x -q
# Periodic checkpoint
python -m py_compile myapp/main.py && ruff check . && pytest -x -q