| description | Use when claiming work is complete, successful, or fixed, and empirical evidence is required to validate the change before proceeding. |
| name | empirical-validation |
| trigger | ๊ฒฝํ์ ๊ฒ์ฆ, ์คํ ๊ฒฐ๊ณผ ํ์ธ, ์ฆ๊ฑฐ ๊ธฐ๋ฐ ํ์ธ, prove it works, empirical proof, validate with output, ์ค์ ์๋ ํ์ธ, ์ฆ๊ฑฐ ์ ์, ์คํ ๋ก๊ทธ ํ์ธ, ์คํฌ๋ฆฐ์ท์ผ๋ก ํ์ธ, curl ๋ก ํ
์คํธ, ๋น๋ ๊ฒฐ๊ณผ ํ์ธ, ํ
์คํธ ํต๊ณผ ์ฆ๋ช
, ์๋ฃ ์ ๊ฒ์ฆ, 5 ๋จ๊ณ ๊ฒ์ฆ ํ๋กํ ์ฝ, ๊ฒ์ดํธ ํต๊ณผ ํ์ธ, "should work" ๊ธ์ง, ํ์ ๋์ ์ฆ๊ฑฐ, UI ์ํ ์บก์ฒ, API ์๋ต ํ์ธ, ๋ฐ์ดํฐ ์ํ ์ฟผ๋ฆฌ, ํ์ผ ์์ฑ ํ์ธ, exit code ํ์ธ, verify before done, show me the output, capture evidence, empirical validation required, run and verify |
Quick Reference
- ์๋ฃ ์ 5 ๋จ๊ณ: IDENTIFY(๋ช
๋ น), RUN(์ ์ฒด ์คํ), READ(์ถ๋ ฅ ํ์ธ), VERIFY(์ผ์น), CLAIM(์ฃผ์ฅ) ์์ ์ค์
- ์ฆ๊ฑฐ ์์น: "The code looks correct" ๊ธ์ง. ์ค์ ์ถ๋ ฅ/์คํฌ๋ฆฐ์ท/exit code ํ์
- ๋
๋ฆฝ ๊ฒ์ฆ: ์์ด์ ํธ ๋ณด๊ณ ๋ ์ด์ ๊ฒฐ๊ณผ ์ฌ์ฌ์ฉ ๊ธ์ง. ๋งค ๋ณ๊ฒฝ ์ ์ง์ ์คํ
- ๋ถ๋ถ ์ฑ๊ณต ๊ธ์ง: 1 ์คํจ๋ ์ ์ฒด ์คํจ๋ก ๊ฐ์ฃผ. ๋ชจ๋ ํ
์คํธ/๋น๋ ํต๊ณผ ํ์ธ
- ๋ณ๋ช
์ฐจ๋จ: "์ ๋ ๊ฒ ๊ฐ๋ค", "ํ์ ํ๋ค" ๋ฑ ์ถ์ธก์ฑ ๋ฌธ๊ตฌ ์ฌ์ฉ ์ ์ฆ์ ์ค๋จ
Core Principle
"The code looks correct" is NOT validation.
Every change must be verified with empirical evidence before being marked complete.
Validation Methods by Change Type
| Change Type | Required Validation | Tool |
|---|
| UI Changes | Screenshot showing expected visual state | Bash (screenshot tool or browser MCP) |
| API Endpoints | Command showing correct response | Bash (curl/httpie) |
| Build/Config | Successful build or test output | Bash |
| Data Changes | Query showing expected data state | Bash |
| File Operations | File listing or content verification | Bash |
Validation Protocol
Before Marking Any Task "Done"
-
Identify Verification Criteria
- What should be true after this change?
- How can that be observed?
-
Execute Verification
- Run the appropriate command or action
- Capture the output/evidence
-
Document Evidence
- Add to
.hxsk/JOURNAL.md under the task
- Include actual output, not just "passed"
-
Confirm Against Criteria
- Does evidence match expected outcome?
- If not, task is NOT complete
Examples
API Endpoint Verification
curl -X POST http://localhost:3000/api/login -d '{"email":"test@test.com"}'
UI Verification
# Good: Take screenshot with browser tool
- Navigate to /dashboard
- Capture screenshot
- Confirm: Header visible? Data loaded? Layout correct?
# Bad: "The component should render correctly"
Build Verification
npm run build
Gate Function โ ์๋ฃ ์ ์ธ ์ ํ์
โ ๏ธ ์๋ฃ, ์ฑ๊ณต, ํต๊ณผ๋ฅผ ์ฃผ์ฅํ๊ธฐ ์ ์ ๋ฐ๋์ 5๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
- IDENTIFY โ ์ด ์ฃผ์ฅ์ ์ฆ๋ช
ํ๋ ๋ช
๋ น์ ๋ฌด์์ธ๊ฐ?
- RUN โ ํด๋น ๋ช
๋ น์ ์ ์ฒด ์คํ (๋ถ๋ถ ์คํ, ์ด์ ๊ฒฐ๊ณผ ์ฌ์ฌ์ฉ ๊ธ์ง)
- READ โ ์ถ๋ ฅ ์ ์ฒด ํ์ธ. exit code ํ์ธ. ์คํจ ์ ์นด์ดํธ
- VERIFY โ ์ถ๋ ฅ์ด ์ฃผ์ฅ์ ํ์ธํ๋๊ฐ? (๋ถ๋ถ ํต๊ณผ โ ์ ์ฒด ํต๊ณผ)
- CLAIM โ 4๋จ๊ณ ๋ชจ๋ ํต๊ณผ ์์๋ง ์ฃผ์ฅ ๊ฐ๋ฅ
๊ฒ์ฆ ์ ํ๋ณ ํ์ ์ฆ๊ฑฐ
| ์ฃผ์ฅ | ํ์ ์ฆ๊ฑฐ | ๋ถ์ถฉ๋ถ |
|---|
| "ํ
์คํธ ํต๊ณผ" | ํ
์คํธ ์ถ๋ ฅ: 0 failures | ์ด์ ์คํ, "ํต๊ณผํ ๊ฒ ๊ฐ๋ค" |
| "๋ฒ๊ทธ ์์ " | ์๋ ์ฆ์ ์ฌํ
์คํธ | ์ฝ๋ ๋ณ๊ฒฝ๋จ, ์์ ์ถ์ |
| "๋น๋ ์ฑ๊ณต" | ๋น๋ ๋ช
๋ น ์ถ๋ ฅ: exit 0 | "์๋ฌ ์์ด ๋ณด์ธ๋ค" |
| "ํ์ผ ์์ฑ" | ls/cat์ผ๋ก ์กด์ฌ+๋ด์ฉ ํ์ธ | Write ๋๊ตฌ ์ฌ์ฉํ์ผ๋ฏ๋ก |
ํฉ๋ฆฌํ ํ
์ด๋ธ
ํ์ ์๋ฃ
| ๋ณ๋ช
| ํ์ค |
|---|
| "์ ๋์๊ฐ ๊ฒ ๊ฐ๋ค" | ๊ฒ์ฆ ๋ช
๋ น์ ์คํํ๋ผ |
| "ํ์ ํ๋ค" | ํ์ โ ์ฆ๊ฑฐ |
| "๋ฆฐํฐ ํต๊ณผํ๋ค" | ๋ฆฐํฐ โ ์ปดํ์ผ๋ฌ โ ํ
์คํธ |
| "์์ด์ ํธ๊ฐ ์ฑ๊ณต ๋ณด๊ณ ํ๋ค" | ๋
๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ๋ผ |
| "์ฝ๋ ๋ณ๊ฒฝ์ด ๋ช
ํํ๋ค" | ๋ช
ํํ ๋ณ๊ฒฝ๋ ๊นจ์ง๋ค |
Read ๊ฑด๋๋ฐ๊ธฐ
| ๋ณ๋ช
| ํ์ค |
|---|
| "์ด๋ฏธ ํ์ผ ๋ด์ฉ์ ์๋ค" | ๋ค๋ฅธ ์์ด์ ํธ/์ฌ์ฉ์๊ฐ ์์ ํ์ ์ ์๋ค |
| "๋จ์ํ ๋ณ๊ฒฝ์ด๋ค" | ๋จ์ํ ๋ณ๊ฒฝ์ด ๊ฐ์ฅ ๋ง์ด ๊นจ์ง๋ค |
| "๋ฐฉ๊ธ ์ฝ์๋ค" | "๋ฐฉ๊ธ"์ด ๋ช ํด ์ ์ผ ์ ์๋ค. ๋ค์ ์ฝ์ด๋ผ |
| "์ ์ฒด ํ์ผ ๋ฎ์ด์ฐ๊ธฐ๊ฐ ๋น ๋ฅด๋ค" | ๋ฎ์ด์ฐ๊ธฐ๋ ๋ค๋ฅธ ๋ณ๊ฒฝ์ ๋ ๋ฆฐ๋ค. Edit์ ์จ๋ผ |
์์
์ค๋จ
| ๋ณ๋ช
| ํ์ค |
|---|
| "์ด๊ฑด ๋ถ๊ฐ๋ฅํ๋ค" | 3๊ฐ์ง ๋ค๋ฅธ ์ ๊ทผ์ ์๋ํ๋๊ฐ? |
| "์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค" | ์ฌ์ฉ์์๊ฒ ๋ณด๊ณ ํ๊ณ ํ๋จ์ ๋งก๊ฒจ๋ผ |
| "๋ค์ ์ธ์
์์ ํ์" | ํ์ฌ ์ปจํ
์คํธ๊ฐ ๊ฐ์ฅ ํ๋ถํ๋ค. ์ง๊ธ ์๋ํ๋ผ |
Thinking Budget
๊น์ ์ถ๋ก ์ด ํ์ํ ์ํฉ์์ ๋ช
์์ ์ผ๋ก ๊น์ thinking์ ์์ฒญํ๋ค.
ํ์ (ํญ์ ๊น์ thinking)
- ์ํคํ
์ฒ ๊ฒฐ์ โ 3+ ๋ชจ๋์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ
- ๋๋ฒ๊น
๊ทผ๋ณธ ์์ธ ๋ถ์ โ ์๋ฌ ์ฌํ ํ ์์ธ ์ถ์
- ๋ฆฌํฉํ ๋ง ์ํฉํธ ๋ถ์ โ ์ญ์ /์ด๋ ์ ์์กด์ฑ ํ์
- ๋จธ์ง ์ถฉ๋ ํด๊ฒฐ โ ์์ชฝ ๋ณ๊ฒฝ์ ์๋ ํ์
- ๋ณด์ ๊ด๋ จ ์ฝ๋ โ ์ธ์ฆ, ๊ถํ, ์
๋ ฅ ๊ฒ์ฆ
์กฐ๊ฑด๋ถ (๋ณต์ก๋์ ๋ฐ๋ผ)
- 5+ ํ์ผ ๋์ ๋ณ๊ฒฝ โ ์ํธ ์์กด์ฑ ์ถ๋ก
- ํ
์คํธ ์คํจ ์์ธ ๋ถ๋ช
โ ์๋ฌ ๋ฉ์์ง๊ฐ ๋ชจํธ
- ์ฌ์ฉ์๊ฐ "์?"๋ผ๊ณ ๋ฌผ์ ๋ โ ์ค๋ช
์ ๊น์ ์ดํด ํ์
Guard ์ด์ค ๊ฒ์ดํธ (์ ํ)
๋จ์ผ Verify ์ธ์ Guard๋ฅผ ์ถ๊ฐํ๋ฉด ๋ชฉํ ๋ฌ์ฑ + ์ฌ์ด๋ ์ดํํธ ์์์ ๋์์ ๊ฒ์ฆํ๋ค.
Verify: bash .hxsk/scripts/doc-lint.sh # ๋ชฉํ ๋ฌ์ฑ?
Guard: bash .hxsk/hooks/check-consistency.sh # ๊ธฐ์กด ๊ธฐ๋ฅ ๊นจ์ง์ง ์์?
Guard ์คํจ ์ โ Verify ์ฑ๊ณต์ด๋ผ๋ BLOCK. Guard ๋ช
๋ น์ ์ด์ง exit code(0/1)๋ง ํ์ฉ.
pre-commit hook๊ณผ์ ์ญํ ๊ตฌ๋ถ:
- Guard (์คํ ์ค): ๋งค ์์ ๋ณ๊ฒฝ ์งํ ์ฆ์ ์ฌ์ด๋ ์ดํํธ ๊ฐ์ง โ ์์ด์ ํธ ๋ฃจํ ๋ด๋ถ
- pre-commit: ์ปค๋ฐ ์ง์ ์ต์ข
๊ด๋ฌธ โ ์ธ๊ฐ ์ค์ ๋ฐ ๋๋ฝ ๋ฐฉ์ง
๋ ๋ ์ด์ด๋ ์์ ์ด ๋ค๋ฅด๋ฏ๋ก ์ค๋ณต์ด ์๋๋ค.
๊ด๋ จ ์คํฌ
- REQUIRED:
memory-protocol โ ๊ฒ์ฆ ๊ฒฐ๊ณผ(์ฑ๊ณต/์คํจ)๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- RECOMMENDED:
context-health-monitor โ 3+ ๊ฒ์ฆ ์คํจ ์ ๊ฑด๊ฐ ์ด๋ฒคํธ ๊ธฐ๋ก
- RECOMMENDED:
debugger โ ๊ฒ์ฆ ์คํจ ์ ๊ทผ๋ณธ ์์ธ ๋ถ์ ์ ํ
Integration
This skill integrates with:
/verify โ Primary workflow using this skill
/execute โ Must validate before marking tasks complete
CLAUDE.md Validation + Thinking Budget ์น์
AGENTS.md Iron Laws โ ์ด ์คํฌ์ ์์ธ ์ ์ฐจ๋ฅผ ๊ตฌํ
Failure Handling
If verification fails:
- Do NOT mark task complete
- Document the failure in
.hxsk/STATE.md
- Create fix task if cause is known
- Trigger Context Health Monitor if 3+ failures
Iron Laws
NO COMPLETION WITHOUT EMPIRICAL EVIDENCE FIRST
NO CLAIM WITHOUT FULL OUTPUT READ FIRST
NO VALIDATION WITHOUT FRESH EXECUTION FIRST
NO VALIDATION WITHOUT BASH EXECUTION FIRST
NO PARTIAL PASS WITHOUT FULL SUITE PASS FIRST
NO TRUST WITHOUT INDEPENDENT CHECK FIRST
NO SUCCESS RECORD WITHOUT JOURNAL ENTRY FIRST