| name | verification-engine |
| description | Use when verifying build/test/lint before commit, PR, or completion claims. Runs verification pipeline in fresh subagent context with auto-repair. Triggers on /handoff-verify, pre-commit check, build verification, test validation. |
| version | 2.0.0 |
๊ฒ์ฆ ์์น
Iron Law, Gate Function, Common Failures ์ฒดํฌ๋ฆฌ์คํธ๋ rules/verification.md์ ์ ์๋์ด ์๋ค.
์ด ์คํฌ์ ํด๋น ์์น์ ์คํ ์์ง์ด๋ค.
Overview
ํตํฉ ๊ฒ์ฆ ์์ง ์คํฌ์ /handoff-verify ์ปค๋งจ๋์ ํต์ฌ ๋์์ ์ ์ํ๋ค.
v5์ /verify ๋จ๋
์ปค๋งจ๋์์ v6์ /handoff-verify ํตํฉ ์ปค๋งจ๋๋ก ์งํํ์๋ค.
ํต์ฌ ๋ณ๊ฒฝ: Task ๋๊ตฌ๋ก verify-agent ์๋ธ์์ด์ ํธ๋ฅผ ์์ฑํ์ฌ fresh context์์ ๊ฒ์ฆ.
/clear ์์ด๋ ํธํฅ ์๋ ๊ฒ์ฆ์ด ๊ฐ๋ฅํ๋ค.
Trigger Conditions
์ง์ ํธ์ถ
| ํธ๋ฆฌ๊ฑฐ | ์ค๋ช
|
|---|
/handoff-verify | ํธ๋์คํ + ๊ธฐ๋ณธ ๋ฃจํ ๊ฒ์ฆ (์ต๋ 5ํ) |
/handoff-verify --once | ํธ๋์คํ + ๋จ๋ฐ ๊ฒ์ฆ |
/handoff-verify --loop 3 | ํธ๋์คํ + 3ํ ๋ฃจํ |
/handoff-verify --security | ํธ๋์คํ + ๋ณด์ ๊ฒ์ฆ ํฌํจ |
/handoff-verify --coverage | ํธ๋์คํ + ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์ |
/handoff-verify --extract | ํธ๋์คํ + ์๋ฌ ์ถ์ถ/๋ถ๋ฅ ๋ชจ๋ |
/handoff-verify --skip-handoff | ํธ๋์คํ ์๋ต + ๊ฒ์ฆ๋ง |
์๋ ํธ์ถ
| ์ํฉ | ๋์ |
|---|
/commit-push-pr ์คํ ์ | --once ๋ชจ๋๋ก ์ฌ์ ๊ฒ์ฆ |
/orchestrate ๊ฒ์ฆ ๋จ๊ณ | ๋ฃจํ ๋ชจ๋๋ก ์๋ ์คํ |
Architecture (v6)
/handoff-verify ์ปค๋งจ๋ (๋ถ๋ชจ ์ปจํ
์คํธ)
โ
โโโ [1] handoff.md ์๋ ์์ฑ
โ โโโ git diff ๋ถ์, ๋ณ๊ฒฝ ์๋ ๋ฌธ์ํ
โ
โโโ [2] verify-agent ์๋ธ์์ด์ ํธ ์์ฑ (Task ๋๊ตฌ)
โ โโโ Fresh context! (/clear ๋์ฒด)
โ โ
โ โโโ handoff.md ์ฝ๊ธฐ
โ โโโ ๊ฒ์ฆ ํ์ดํ๋ผ์ธ ์คํ
โ โโโ ์คํจ ์ ์๋ ์์ + ์ฌ์๋
โ โโโ ๊ฒฐ๊ณผ ๋ฐํ
โ
โโโ [3] ๊ฒฐ๊ณผ ์์ ๋ฐ ์ฒ๋ฆฌ
โโโ PASS โ handoff.md ์ ๋ฆฌ, ๋ค์ ๋จ๊ณ ์๋ด
โโโ FAIL โ ์๋ฌ ๋ณด๊ณ , ๊ถ์ฅ ์กฐ์น ์๋ด
v5 ๋๋น ์ํคํ
์ฒ ๋ณ๊ฒฝ
| v5 | v6 |
|---|
| /handoff โ /clear โ /verify | /handoff-verify (๋จ์ผ ์ปค๋งจ๋) |
| ๋ถ๋ชจ ์ปจํ
์คํธ์์ ์ง์ ๊ฒ์ฆ | ์๋ธ์์ด์ ํธ๊ฐ fresh context์์ ๊ฒ์ฆ |
| /clear๋ก ์ปจํ
์คํธ ์์ค | ๋ถ๋ชจ ์ปจํ
์คํธ ๋ณด์กด |
| ์๋ 3๋จ๊ณ ์ํฌํ๋ก์ฐ | ์๋ 1๋จ๊ณ ์ํฌํ๋ก์ฐ |
Verification Pipeline
๋จ๊ณ๋ณ ์คํ ์์ (verify-agent ๋ด๋ถ)
[1๋จ๊ณ] ํ๊ฒฝ ํ์
โโโ handoff.md ์ฝ๊ธฐ (๋ณ๊ฒฝ ์๋)
โโโ git status / diff
โโโ ํ๋ก์ ํธ ํ์
๊ฐ์ง
โโโ ํจํค์ง ๋งค๋์ ๊ฐ์ง
โ
[2๋จ๊ณ] ๋น๋ ๊ฒ์ฆ
โโโ npm run build / go build / cargo build
โโโ ๋น๋ ์คํจ ์ โ Fixable ์๋ ์์
โ
[3๋จ๊ณ] ํ์
๊ฒ์ฌ
โโโ tsc --noEmit / mypy / go vet
โโโ ํ์
์ค๋ฅ โ Fixable ์๋ ์์
โ
[4๋จ๊ณ] ๋ฆฐํธ ๊ฒ์ฌ
โโโ eslint / golangci-lint / clippy
โโโ ๋ฆฐํธ ์ค๋ฅ โ Fixable ์๋ ์์
โ
[5๋จ๊ณ] ํ
์คํธ ์คํ
โโโ npm test / go test / cargo test
โโโ ์คํจ ์ โ ์๋ฌ ๋ถ์ + ์์ ์๋
โ
[6๋จ๊ณ] ์ฝ๋ ๋ฆฌ๋ทฐ (effort์ ๋ฐ๋ผ)
โโโ low: ๊ฑด๋๋
โโโ medium: ๋ณ๊ฒฝ ํ์ผ๋ง
โโโ high: ๋ณ๊ฒฝ ํ์ผ + ์์กด์ฑ
โโโ max: ์ ์ฒด ์ํฅ ๋ถ์
โ
[7๋จ๊ณ] ๋ณด์ ๊ฒํ (--security ๋๋ effort:max)
โโโ security-reviewer ์๋ธ์์ด์ ํธ ์ฐ๋
๋ฃจํ ๋์ ์๋ฆฌ
[์คํ #1]
โ FAIL โ Fixable ์๋ ์์ โ ์ฌ์คํ
โ
[์คํ #2]
โ FAIL โ Fixable ์๋ ์์ โ ์ฌ์คํ
โ
[์คํ #3~5]
โ FAIL โ ์์ ์๋ โ ์ฌ์คํ
โ
[5ํ ์คํจ]
โโโ /learn --from-error ์ ์
์ต์ข
์๋ฌ ๋ฆฌํฌํธ โ ๋ถ๋ชจ์๊ฒ ๋ฐํ
Fixable Auto-Repair
์๋ ์์ ๊ฐ๋ฅํ ์ค๋ฅ 9๊ฐ์ง. ์๋ธ์์ด์ ํธ๊ฐ ์ฌ์ฉ์ ์น์ธ ์์ด ์ฆ์ ์์ ํ๋ค.
Fixable ๋ชฉ๋ก
| # | ์ ํ | ๊ฐ์ง ํจํด | ์์ ๋ฐฉ๋ฒ |
|---|
| 1 | Missing Import | Cannot find module, is not defined | ์์ค ๊ฒ์ โ import ๋ฌธ ์ถ๊ฐ |
| 2 | Unused Import | is defined but never used | import ํ ์ ๊ฑฐ |
| 3 | Lint (auto-fixable) | eslint --fix ๊ฐ๋ฅ ํญ๋ชฉ | eslint --fix ์คํ |
| 4 | Type Mismatch | Type '...' is not assignable | ํ์
์บ์คํ
๋๋ ์ธํฐํ์ด์ค ์์ |
| 5 | Missing Return Type | Missing return type | ๋ฐํ๊ฐ์์ ํ์
์ถ๋ก โ ์ถ๊ฐ |
| 6 | Formatting | prettier / gofmt | ํฌ๋งคํฐ ์คํ |
| 7 | Missing Dependency | Could not resolve | package.json ํ์ธ โ ์ค์น ์ ์ |
| 8 | Enum/Const Mismatch | Exhaustive check ์คํจ | ๋๋ฝ ์ผ์ด์ค ์ถ๊ฐ |
| 9 | Test Snapshot | Snapshot mismatch | ์ค๋
์ท ์
๋ฐ์ดํธ ์ ์ (์น์ธ ํ์) |
์์ ๋ถ๊ฐ ํญ๋ชฉ (์ฌ์ฉ์ ํ๋จ ํ์)
- ๋ก์ง ์ค๋ฅ (๋น์ฆ๋์ค ๋ก์ง ๋ณ๊ฒฝ)
- ์ํคํ
์ฒ ๋ณ๊ฒฝ์ด ํ์ํ ํ์
์ค๋ฅ
- ํ
์คํธ ๋ก์ง ์์ฒด์ ์ค๋ฅ
- ๋ณด์ ์ทจ์ฝ์ (security-pipeline์ด ์ฒ๋ฆฌ)
Effort๋ณ ๋์ ์ฐจ์ด
| effort | ๋น๋/ํ์
/๋ฆฐํธ | ํ
์คํธ | ์ฝ๋ ๋ฆฌ๋ทฐ | ๋ณด์ | ์๋ ์์ |
|---|
| low | ์คํ | ์คํ | ๊ฑด๋๋ | ๊ฑด๋๋ | import/lint๋ง |
| medium | ์คํ | ์คํ | ๋ณ๊ฒฝ ํ์ผ๋ง | ํจํด ๋งค์นญ๋ง | Fixable ์ ์ฒด |
| high | ์คํ | ์คํ | + ์์กด์ฑ | ์ฃผ์ ํจํด | Fixable + ์ ์ |
| max | ์คํ | ์คํ | + ์ ์ฒด ์ํฅ | security-reviewer | Fixable + ์ํคํ
์ฒ |
Coverage Mode (--coverage)
/handoff-verify --coverage ์คํ ์ ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ถ์ํ๋ค.
์ถ๋ ฅ ํ์
์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํธ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ ์ฒด: 72.3% (๋ชฉํ: 80%)
์ ๊ท ์ฝ๋: 45.2%
๋ฏธ์ปค๋ฒ ํ์ผ: 3๊ฐ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๋ฏธ์ปค๋ฒ ํจ์:
src/utils/parser.ts:parseConfig (0%)
src/api/handler.ts:processRequest (12%)
src/lib/cache.ts:invalidate (0%)
๊ถ์ฅ ํ
์คํธ:
1. parseConfig - ์ ์/๋น์ ์ ์
๋ ฅ ํ
์คํธ
2. processRequest - ์์ฒญ/์๋ต ํตํฉ ํ
์คํธ
3. invalidate - ์บ์ ๋ฌดํจํ ๋จ์ ํ
์คํธ
Extract Mode (--extract)
/handoff-verify --extract ์คํ ์ ์๋ฌ๋ฅผ ์ถ์ถํ๊ณ ๋ถ๋ฅํ๋ค.
๋ถ๋ฅ ์ฒด๊ณ
| ์นดํ
๊ณ ๋ฆฌ | ์ค๋ช
| ์์ |
|---|
| BUILD | ๋น๋/์ปดํ์ผ ์ค๋ฅ | Module not found |
| TYPE | ํ์
์์คํ
์ค๋ฅ | Type mismatch |
| LINT | ๋ฆฐํธ/์คํ์ผ ์ค๋ฅ | Unexpected any |
| TEST | ํ
์คํธ ์คํจ | Expected X, received Y |
| RUNTIME | ๋ฐํ์ ์ค๋ฅ | Cannot read property |
| SECURITY | ๋ณด์ ํจํด | Hardcoded credential |
์ถ๋ ฅ ํ์
์๋ฌ ์ถ์ถ ๊ฒฐ๊ณผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ด ์๋ฌ: 12๊ฐ
BUILD: 3๊ฐ (Fixable: 2)
TYPE: 4๊ฐ (Fixable: 3)
LINT: 2๊ฐ (Fixable: 2)
TEST: 2๊ฐ (Fixable: 0)
SECURITY: 1๊ฐ (Fixable: 0)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์๋ ์์ ๊ฐ๋ฅ: 7/12 (58%)
Integration Points
/handoff-verify ์ปค๋งจ๋
์ด ์คํฌ์ /handoff-verify ์ปค๋งจ๋์ ํต์ฌ ๋ก์ง์ ์ ์ํ๋ค.
์ปค๋งจ๋ ํ์ผ(commands/handoff-verify.md)์ด ์ด ์คํฌ์ ํ์ดํ๋ผ์ธ์ ์คํํ๋ค.
verify-agent ์์ด์ ํธ
์๋ธ์์ด์ ํธ(agents/verify-agent.md)๊ฐ ์ด ์คํฌ์ ํ์ดํ๋ผ์ธ์ ์ค์ ๋ก ์คํํ๋ค.
๋ถ๋ชจ ์ปจํ
์คํธ์ ๋ถ๋ฆฌ๋ fresh context์์ ๋์ํ๋ค.
security-pipeline ์คํฌ
--security ํ๋๊ทธ ๋๋ effort:max ์ security-pipeline ์คํฌ๊ณผ ์ฐ๋ํ๋ค.
๋ณด์ ๊ฒ์ฆ ๋ถ๋ถ์ security-pipeline์ ์์ํ๋ค.
/learn ์ปค๋งจ๋
5ํ ๋ฃจํ ์คํจ ์ /learn --from-error๋ฅผ ์๋ ์ ์ํ์ฌ
์๋ฌ ํจํด์ CLAUDE.md์ ๊ธฐ๋กํ๋ค.
/commit-push-pr ์ปค๋งจ๋
์ปค๋ฐ ์ ์ฌ์ ๊ฒ์ฆ ๊ฒ์ดํธ๋ก ๋์ํ๋ค:
- PASS: ๋ชจ๋ ๊ฒ์ฆ ํต๊ณผ โ ์ปค๋ฐ ์งํ
- WARN: ๋น์น๋ช
์ ์ด์ ์กด์ฌ โ ๊ฒฝ๊ณ ํ ๊ณ์
- FAIL: ๋น๋/ํ์
/ํ
์คํธ ์คํจ โ ์ปค๋ฐ ์ฐจ๋จ