# Verify

> 작업 완료 후 코드 검증 (타입체크, 린트, 테스트, 빌드). Triggers on: 검증, verify, 테스트 돌려, 빌드 확인, 타입체크. NOT for: E2E 테스트, 코드 작성, 구현.

- Skill: `jh941213/verify` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jh941213/verify`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jh941213/verify/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jh941213 (https://skillmd.com/u/jh941213)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jh941213/verify

---


# 코드 검증

> TaskCompleted 훅(`verify-task-quality.sh`)이 자동 실행하는 검증과 동일합니다.
> 훅 미발동 상황(수동 검증 요청, 훅 미설치 환경)에서 이 스킬을 사용하세요.

작업 완료 후 코드를 검증합니다. 순서대로 실행하며, 각 단계 통과 후 다음으로 진행.

## Step 1: 프로젝트 감지

| 파일 | 스택 | 타입체크 | 린트 | 테스트 | 빌드 |
|------|------|---------|------|--------|------|
| `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` |

```bash
# 자동 감지
[ -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"
```

## Step 2: 검증 순서 (실패 시 즉시 수정)

### 2-1. TypeScript 타입체크
```bash
npx tsc --noEmit
```
실패 시: 타입 에러 수정 → 재실행. 3회 실패 시 사용자에게 에스컬레이션.

### 2-2. 린트
```bash
# ESLint
npx eslint . --max-warnings=0
# 또는 Biome
npx biome check .
# Python
ruff check .
```
실패 시: `--fix` 자동 수정 시도 → 수동 수정 → 재실행.

### 2-3. 테스트
```bash
# Vitest
npx vitest run
# Jest
npx jest --passWithNoTests
# pytest
pytest -q
```
실패 시: 실패 테스트 분석 → 코드 수정 (테스트 수정은 최후 수단) → 재실행.

### 2-4. 빌드
```bash
npm run build
```
실패 시: 빌드 에러 분석 → 수정 → 재실행.

### 2-5. 순환참조 탐지 (JS/TS 프로젝트)
```bash
npx madge --circular --extensions ts,tsx src/ 2>/dev/null
```
순환참조 발견 시: WARNING으로 보고. 새로 추가된 순환만 수정 대상.

### 2-6. 데드코드 탐지 (JS/TS 프로젝트)
```bash
npx knip --no-exit-code 2>/dev/null | head -50
```
미사용 export/파일/의존성 발견 시: INFO로 보고. 자동 수정하지 않음.

### 2-7. 시크릿 스캔
```bash
gitleaks detect --source . --no-git -v 2>&1 | head -20
```
시크릿 발견 시: CRITICAL. 즉시 보고 후 수정 유도.

### 2-8. AI 슬롭 패턴 탐지 (ast-grep)
```bash
# 불필요한 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으로 보고.

## Step 3: 결과 보고

| 단계 | 상태 | 상세 |
|------|------|------|
| 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회 실패 시 멈추고 사용자에게 보고.


