| allowed-tools | ["Read","Grep","Glob","Bash"] |
| description | Use when validating code for circular imports, layer violations, or design doc logic errors before merging architecture-level changes. |
| name | arch-review |
| trigger | ์ํคํ
์ฒ ๊ฒํ , ๋ ์ด์ด ์๋ฐ ํ์ธ, ์ํ ์์กด์ฑ, ์ค๊ณ ๋ฌธ์ ๊ฒํ , ์ค๊ณ ๋ชจ์ ๊ฒ์ฌ, review architecture, check layer violations, before merging structural changes, design review, design contradiction check, ๊ตฌ์กฐ ๊ฒ์ฆ, ์ฝ๋ ๊ตฌ์กฐ ์ ๊ฒ, ์ํคํ
์ฒ ์ผ๊ด์ฑ ํ์ธ, ๊ณผ๊ฑฐ ์ํคํ
์ฒ ๊ฒฐ์ ๊ฒํ , memory recall architecture, boundary compliance check, ๊ฒฝ๊ณ ์ค์ ํ์ธ, ๋ณต์ก๋ ๊ฒ์ฌ, shellcheck ๊ตฌ์กฐ ๋ถ์, ์ค๊ณ ์คํ ๊ฐ๋ฅ์ฑ ๊ฒ์ฆ, ์ฃ์ง ์ผ์ด์ค ์ํคํ
์ฒ, severity ํ๊ฐ, arch review before merge, validate code structure, circular import check, layer isolation check, design doc consistency |
| version | 4.0.0 |
Quick Reference
- Memory Recall:
md-recall-memory.sh ๋ก ๊ณผ๊ฑฐ ์ํคํ
์ฒ ๊ฒฐ์ ๊ณผ ์ผ๊ด์ฑ ํ์ ๊ฒ์ฆ
- ๊ตฌ์กฐ ๋ฌด๊ฒฐ์ฑ: ์ํ import, ๋ ์ด์ด ์๋ฐ (UIโServiceโRepo), ๋ณต์ก๋ ์ฆ์ ์ฐจ๋จ
- ์ค๊ณ ๊ฒ์ฆ: ๋
ผ๋ฆฌ ๋ชจ์, ์คํ ๋ถ๊ฐ๋ฅ์ฑ, ์ฃ์ง ์ผ์ด์ค ๋๋ฝ ์ HIGH/CRITICAL ํ์
- Severity ํ๋: LOW(๋ก๊ทธ), MEDIUM(๋ฌธ์ํ), HIGH(์ฐจ๋จ), CRITICAL(์ ์ฒด ์ค์ง)
- ๋ณด๊ณ ์ ์์ฑ: ์๋ฐ ์ฌํญ ๊ตฌ์กฐํ (JSON) ํ ๊ฒฐ์ ์ฌํญ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ
Pre-Review: Memory Recall
์ํคํ
์ฒ ๋ฆฌ๋ทฐ ์ ๊ณผ๊ฑฐ ๊ฒฐ์ ์ฌํญ์ recallํ์ฌ ์ผ๊ด์ฑ์ ๊ฒ์ฆํ๋ค:
bash .hxsk/hooks/md-recall-memory.sh "architecture" "." 5 compact
๋๋ ๋ค์ดํฐ๋ธ ๋๊ตฌ:
Grep(pattern: "architecture|arch.*decision", path: ".hxsk/memories/architecture-decision/", output_mode: "files_with_matches")
Procedure
Step 1: Run Architecture Check
Grep/Glob์ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐ ๊ฒ์ฆ:
# ์ํ import ํ๋ณด ๊ฒ์ถ (๊ฐ์ ๋๋ ํ ๋ฆฌ ๋ด ์ํธ ์ฐธ์กฐ)
Grep(pattern: "from \\.\\. import|from \\. import", path: "src/", output_mode: "files_with_matches")
# ๋ ์ด์ด ์๋ฐ ๊ฒ์ถ (์: UI๊ฐ Repository๋ฅผ ์ง์ ํธ์ถ)
Grep(pattern: "from.*repository.*import|import.*repository", path: "src/ui/", output_mode: "files_with_matches")
Grep(pattern: "from.*ui.*import|import.*ui", path: "src/repository/", output_mode: "files_with_matches")
๋ณต์ก๋ ๊ฒ์ฌ (shellcheck ๊ธฐ๋ฐ):
shellcheck .hxsk/hooks/*.sh 2>&1 || true
Step 2: Verify Boundary Compliance
Cross-check against defined boundaries:
| Boundary | Check |
|---|
| Layer isolation | UI โ Service โ Repository only |
| Circular deps | No cycles in call graph |
| External calls | Only via approved adapters |
Step 3: Design Document Review (์ค๊ณ ๋ฌธ์ ๊ฒํ )
์ค๊ณ ๋ฌธ์(design doc, PLAN.md, SPEC.md ๋ฑ)๊ฐ ๋์์ธ ๊ฒฝ์ฐ ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ํ:
๋
ผ๋ฆฌ์ ์ผ๊ด์ฑ ๊ฒ์ฆ:
- Phase/Step ๊ฐ ์์ ๋ชจ์ ์ฌ๋ถ (์์ฐจ ํ๊ธฐ์ด๋ ์ค์ ์ธํฐ๋ฆฌ๋ธ ํ์ ๋ฑ)
- ๋ฌธ์ ๋ด ๋์ผ ๊ฐ๋
์ ๋ํ ์์ถฉ ์ค๋ช
(์: tracked vs untracked ํผ์ฉ)
- ์์กด์ฑ ๊ท์น์ ์์ ์ฑ (์ํ, ๋ค์ด์๋ชฌ๋, ๋ค์ค ์์กด์ฑ ์ฒ๋ฆฌ)
์คํ ๊ฐ๋ฅ์ฑ ๊ฒ์ฆ:
- ๋ช
์๋ ๋๊ตฌ/์คํฌ๋ฆฝํธ๋ก ํด๋น ์์
์ด ์ค์ ๊ฐ๋ฅํ์ง (์: bash๋ก XML ํ์ฑ)
- ๊ธฐ์กด ์์คํ
๊ณผ์ ํธํ์ฑ (๋ณ๊ฒฝ ๋์ ํ์ผ ๋ชฉ๋ก ๋๋ฝ ์ฌ๋ถ)
- ์ ์ ์กฐ๊ฑด์ ์ ํจ์ฑ (gitignore ์ํ, ๋๋ ํ ๋ฆฌ ์กด์ฌ ์ฌ๋ถ ๋ฑ)
์ฃ์ง ์ผ์ด์ค ๊ฒ์ฆ:
- ์ฅ์ /์ค๋จ ์ ๋ณต๊ตฌ ๊ฒฝ๋ก ์กด์ฌ ์ฌ๋ถ
- ๋์์ฑ ๋ฌธ์ (๋ณ๋ ฌ ์ฝ๊ธฐ/์ฐ๊ธฐ, ํ์ผ ์ ๊ธ)
- ์ฌ์ด๋์ดํํธ ๊ฒฝ๋ก (lock ํ์ผ, ์๋ ์์ฑ ํ์ผ)
Severity ๊ธฐ์ค:
- ๋
ผ๋ฆฌ ๋ชจ์ โ HIGH (์ค๊ณ ์์ ํ์)
- ์คํ ๋ถ๊ฐ โ HIGH (๋์ ์ ์ ํ์)
- ์ฃ์ง ์ผ์ด์ค ๋ฏธ์ฒ๋ฆฌ โ MEDIUM (๋ฌธ์ํ ๊ถ์ฅ)
- ๋ค์ด๋ฐ/ํฌ๋งท ๋ถ์ผ์น โ LOW (๋ก๊ทธ)
Step 4: Generate Report & Store Memory
Compile findings into a structured report.
์ค์ํ ์ํคํ
์ฒ ๊ฒฐ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ:
bash .hxsk/hooks/md-store-memory.sh \
"Architecture Decision: {title}" \
"{context and decision}" \
"architecture,decision" \
"architecture-decision"
Output Format
{
"status": "PASS | WARN | FAIL",
"violations": [
{
"type": "layer_violation",
"source": "src/ui/Dashboard.tsx",
"target": "src/repository/UserRepo.ts",
"severity": "HIGH",
"recommendation": "Add service layer"
}
],
"patterns_matched": ["repository-pattern", "facade-pattern"]
}
Escalation Matrix
| Severity | Action |
|---|
| LOW | Log warning, proceed |
| MEDIUM | Require acknowledgment in DECISIONS.md |
| HIGH | Block and require human approval |
| CRITICAL | Stop all work, escalate to tech lead |
Scripts
(์์ โ shellcheck, Grep, Glob ๋ฑ ์์ด์ ํธ ๋ค์ดํฐ๋ธ ๋๊ตฌ๋ก ์ง์ ์ํ)
Iron Laws
NO ARCHITECTURE REVIEW WITHOUT MEMORY RECALL FIRST
NO LAYER VIOLATION WITHOUT UNIDIRECTIONAL FLOW (UI -> SERVICE -> REPOSITORY)
NO CIRCULAR DEPENDENCY WITHOUT GRAPH CYCLE DETECTION
NO DESIGN IMPLEMENTATION WITHOUT LOGIC AND FEASIBILITY VERIFICATION
NO CRITICAL VIOLATION RESOLUTION WITHOUT STOPPING ALL WORK
NO HIGH SEVERITY BLOCK RESOLUTION WITHOUT HUMAN APPROVAL
NO REPORT GENERATION WITHOUT STRUCTURED VIOLATION LOGGING