Help us improve
Share bugs, ideas, or general feedback.
From ccpp
Verifies code after changes with typecheck, lint, tests, build for Node/TS, Python, Go, Rust projects. Auto-fixes errors, detects secrets, circular deps, deadcode, AI slop.
npx claudepluginhub jh941213/my-cc-harness --plugin ccppHow this skill is triggered — by the user, by Claude, or both
Slash command
/ccpp:verifyThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
작업 완료 후 코드를 검증합니다. 순서대로 실행하며, 각 단계 통과 후 다음으로 진행.
Runs lint, type-check, tests, and build checks for Node.js/TS, Python, Rust, Go, Java projects to verify code health after changes.
Runs multi-phase verification including build, type check, lint, tests, security scan, and diff review. Invoke before creating a PR or after significant changes.
Runs phased verification checks for build, types, lint, tests, security scans, and git diffs in JS/TS/Python projects. Invoke after changes or before PRs.
Share bugs, ideas, or general feedback.
작업 완료 후 코드를 검증합니다. 순서대로 실행하며, 각 단계 통과 후 다음으로 진행.
| 파일 | 스택 | 타입체크 | 린트 | 테스트 | 빌드 |
|---|---|---|---|---|---|
package.json | Node/TS | npx tsc --noEmit | npx eslint . / npx biome check . | npx vitest run / npx jest | npm run build |
pyproject.toml | Python | mypy . / pyright . | ruff check . | pytest -q | — |
go.mod | Go | go vet ./... | golangci-lint run | go test ./... | go build ./... |
Cargo.toml | Rust | — | cargo clippy | cargo test | cargo build |
# 자동 감지
[ -f package.json ] && cat package.json | python3 -c "import sys,json; s=json.load(sys.stdin).get('scripts',{}); print('\n'.join(f'{k}: {v}' for k,v in s.items()))"
[ -f pyproject.toml ] && echo "Python project detected"
[ -f go.mod ] && echo "Go project detected"
[ -f Cargo.toml ] && echo "Rust project detected"
npx tsc --noEmit
실패 시: 타입 에러 수정 → 재실행. 3회 실패 시 사용자에게 에스컬레이션.
# ESLint
npx eslint . --max-warnings=0
# 또는 Biome
npx biome check .
# Python
ruff check .
실패 시: --fix 자동 수정 시도 → 수동 수정 → 재실행.
# Vitest
npx vitest run
# Jest
npx jest --passWithNoTests
# pytest
pytest -q
실패 시: 실패 테스트 분석 → 코드 수정 (테스트 수정은 최후 수단) → 재실행.
npm run build
실패 시: 빌드 에러 분석 → 수정 → 재실행.
npx madge --circular --extensions ts,tsx src/ 2>/dev/null
순환참조 발견 시: WARNING으로 보고. 새로 추가된 순환만 수정 대상.
npx knip --no-exit-code 2>/dev/null | head -50
미사용 export/파일/의존성 발견 시: INFO로 보고. 자동 수정하지 않음.
gitleaks detect --source . --no-git -v 2>&1 | head -20
시크릿 발견 시: CRITICAL. 즉시 보고 후 수정 유도.
# 불필요한 console.log
sg --pattern 'console.log($$$)' --lang ts src/ 2>/dev/null | head -10
# any 타입 사용
sg --pattern '$A as any' --lang ts src/ 2>/dev/null | head -10
발견 시: WARNING으로 보고.
| 단계 | 상태 | 상세 |
|---|---|---|
| typecheck | PASS/FAIL/SKIP | 에러 수 또는 "도구 미감지" |
| lint | PASS/FAIL/SKIP | 경고/에러 수 |
| test | PASS/FAIL/SKIP | N passed, M failed |
| build | PASS/FAIL/SKIP | 성공 또는 에러 요약 |
| circular | PASS/WARN/SKIP | 순환참조 수 (madge) |
| deadcode | INFO/SKIP | 미사용 export/파일 수 (knip) |
| secrets | PASS/CRITICAL/SKIP | 시크릿 탐지 수 (gitleaks) |
| ai-slop | PASS/WARN/SKIP | console.log/any 수 (ast-grep) |
판정: PASS = exit code 0, FAIL = 3회 재시도 소진, SKIP = 해당 도구 미감지 전체 판정: CRITICAL 있으면 FAIL. 모든 PASS/WARN/INFO/SKIP → PASS. typecheck/lint/test/build 중 FAIL → FAIL.
| 카테고리 | 우선순위 | 수정 방법 |
|---|---|---|
| TYPE | 높음 | 출력에서 file:line 추출 → 해당 파일 Read → 타입 수정 |
| LINT | 중간 | --fix 자동 수정 먼저 → 수동 수정 |
| TEST | 높음 | 실패 테스트 분석 → 코드 수정 (테스트 수정은 최후 수단) |
| BUILD | 높음 | 빌드 로그 분석 → import/export 문제 우선 확인 |
각 단계 최대 3회 시도. 3회 실패 시 멈추고 사용자에게 보고.