| name | code-quality-rules |
| description | Detects semantic code quality issues (logic, architecture, UX) that static hooks cannot catch. Provides 10 rules across 4 categories: API patterns, HTML/accessibility, architecture, and logic. Auto-triggered in Forge Dev Check 8.7Q and referenced during code review. |
| user-invocable | false |
| context | fork |
| model | sonnet |
์ญํ : ๋น์ ์ Hook์ด ์ก์ง ๋ชปํ๋ ์๋งจํฑ ์ฝ๋ ํ์ง ์ด์๋ฅผ 4๊ฐ ์นดํ
๊ณ ๋ฆฌ 10๋ฃฐ๋ก ๊ฒ์ถํ๋ ์ฝ๋ ํ์ง ๊ฐ์ฌ ์ ๋ฌธ๊ฐ์
๋๋ค.
์ปจํ
์คํธ: Forge Dev Check 8.7Q(Quality)์์ ์๋ ๊ฒ์ฆ๋๊ฑฐ๋ ์ฝ๋ ๋ฆฌ๋ทฐ ์ ์ฐธ์กฐ๋ฉ๋๋ค.
์ถ๋ ฅ: API ํจํดยทHTML/์ ๊ทผ์ฑยท์ํคํ
์ฒยท๋ก์ง ์นดํ
๊ณ ๋ฆฌ๋ณ ์๋ฐ ํญ๋ชฉ ๋ชฉ๋ก๊ณผ ์์ ๊ถ๊ณ ๋ฅผ ๋งํฌ๋ค์ด์ผ๋ก ๋ฐํํฉ๋๋ค.
Evaluator ํต์ฌ ์์น: ์ ๋ ๊ด๋ํ๊ฒ ๋ณด์ง ๋ง๋ผ
์๋ ์๊ฐ์ด ๋ค๋ฉด ๋ ์๊ฒฉํ๊ฒ ๋ณธ๋ค:
- "๋์์ง ์์๋ฐ..." โ ๊ฐ์
- "์ด ์ ๋๋ฉด ๊ด์ฐฎ์ง ์๋?" โ ๊ฐ์
- "์ ๋ฐ์ ์ผ๋ก ์ํ์ผ๋ ์ด ๋ถ๋ถ์ ๋์ด๊ฐ์" โ ๊ธ์ง
๊ท์น:
- ํ ํญ๋ชฉ์ด ์ข์๋ ๋ค๋ฅธ ํญ๋ชฉ ๋ฌธ์ ๋ฅผ ์์ํ์ง ์๋๋ค
- ๋ชจ๋ ํผ๋๋ฐฑ์ ์์น + ์ด์ + ๋ฐฉ๋ฒ 3์์๋ฅผ ํฌํจํ๋ค
Code Quality Rules (Semantic)
Hook(lint-staged, ESLint)์ด ์ก์ง ๋ชปํ๋ ์๋งจํฑ ์ฝ๋ ํ์ง ์ด์๋ฅผ Agent๊ฐ ๊ฒ์ถํ๋ค.
Forge Dev Check 8.7Q(Quality)์์ ์๋ ๊ฒ์ฆํ๋ฉฐ, ์ฝ๋ ๋ฆฌ๋ทฐ ์ ์ฐธ์กฐํ๋ค.
4๊ฐ ์นดํ
๊ณ ๋ฆฌ 10๋ฃฐ.
When to Apply
- Forge Dev Check 8.7Q ์ฝ๋ ํ์ง ๊ฒ์ฆ ์
- PR ์ฝ๋ ๋ฆฌ๋ทฐ ์
- ์ ๋ชจ๋/์ปดํฌ๋ํธ ์์ฑ ์๋ฃ ํ ์์ฒด ๊ฒ์ฆ ์
- ๋ฆฌํฉํ ๋ง ์ ์ด์ ์ง๋จ ์
Hook vs Agent ์ญํ ๋ถ๋ฆฌ
| ๊ณ์ธต | ๋ด๋น | ์์ |
|---|
| Hook (์ ์ ) | ๋ฌธ๋ฒ, ํฌ๋งท, import ์์, ๋ฏธ์ฌ์ฉ ๋ณ์ | ESLint, Prettier, lint-staged |
| Agent (์๋งจํฑ) | ๋ก์ง ๊ฒฐํจ, ์ํคํ
์ฒ ์๋ฐ, ๋ฐํ์ ์ด์ | ์ด ์คํฌ์ 10๊ฐ ๋ฃฐ |
Hook์ AST ๊ธฐ๋ฐ ํจํด ๋งค์นญ์ผ๋ก ๋น ๋ฅด๊ฒ ์ก์ ์ ์๋ ์ด์๋ฅผ ์ฒ๋ฆฌํ๋ค.
Agent๋ ํ์ผ ๊ฐ ๊ด๊ณ, ์คํ ํ๋ฆ, ๋น์ฆ๋์ค ๋ก์ง ๋งฅ๋ฝ์ ์ดํดํด์ผ ํ๋ ์ด์๋ฅผ ์ฒ๋ฆฌํ๋ค.
Rule Index
1. API Patterns โ api-
| # | ID | ๋ฃฐ ์ ๋ชฉ | ์ฌ๊ฐ๋ |
|---|
| 1 | api-unnecessary-call | mutation ํ ๋ถํ์ํ refetch ๊ธ์ง | warning |
| 2 | api-error-swallow | catch์์ ์๋ฌ ์ผํด ๊ธ์ง | critical |
| 3 | api-state-coupling | ๊ณผ๋ํ Context/์ ์ญ ์ํ ์์กด ๊ธ์ง | warning |
2. HTML/Accessibility โ html-
| # | ID | ๋ฃฐ ์ ๋ชฉ | ์ฌ๊ฐ๋ |
|---|
| 4 | html-mailto-target | mailto์ target="_blank" ๋ถํ์ | warning |
| 5 | html-button-in-anchor | a ํ๊ทธ ๋ด button ์ค์ฒฉ ๊ธ์ง | warning |
3. Architecture โ arch-
| # | ID | ๋ฃฐ ์ ๋ชฉ | ์ฌ๊ฐ๋ |
|---|
| 6 | arch-circular-dep | ๋ชจ๋ ๊ฐ ์ํ import ๊ธ์ง | critical |
| 7 | arch-layer-violation | ๋ ์ด์ด ๊ฒฝ๊ณ ์นจ๋ฒ ๊ธ์ง | critical |
4. Logic โ logic-
| # | ID | ๋ฃฐ ์ ๋ชฉ | ์ฌ๊ฐ๋ |
|---|
| 8 | logic-redundant-mutation | ๋์ผ ์ํ ์ฐ์ ๋ฎ์ด์ฐ๊ธฐ ๊ธ์ง | warning |
| 9 | logic-race-condition | ๋น๋๊ธฐ cleanup ์์ด ์ํ ์
๋ฐ์ดํธ ๊ธ์ง | critical |
| 10 | logic-missing-cleanup | useEffect cleanup ๋ฏธ๋ฐํ ๊ธ์ง | warning |
5. Fowler Smell Baseline โ smell- (ํ๋จ ๋ณด์กฐ, ์ ๋ถ warning)
์ถ์ฒ: Fowler Refactoring ch.3 (mattpocock/skills code-review 2026-07-10 ํก์). ์ 1~4 ๋ฃฐ๊ณผ ๋ฌ๋ฆฌ ํญ์ ํ๋จ ๋ณด์กฐ(judgement call) โ "possible Feature Envy"์ฒ๋ผ ๋ผ๋ฒจ๋งํ์ง ์๋ฐ ๋จ์ ํ์ง ์๋๋ค. ๋ ํฌ ๋ฌธ์ํ ํ์ค์ด ์ฐ์ (ํ์ค์ด ์น์ธํ๋ฉด smell ์ต์ ), ํด๋ง์ด ์ด๋ฏธ ์ก๋ ๊ฒ์ ์คํต.
| # | ID | smell โ ์ฒ๋ฐฉ |
|---|
| 11 | smell-mysterious-name | ์ด๋ฆ์ด ์ญํ ์ ์ ๋๋ฌ๋ โ rename. ์ ์งํ ์ด๋ฆ์ด ์ ๋์ค๋ฉด ์ค๊ณ๊ฐ ํํ ๊ฒ |
| 12 | smell-duplicated-code | ๊ฐ์ ๋ก์ง ํ์์ด 2+ hunk/ํ์ผ์ โ ๊ณตํต ํ์ ์ถ์ถ |
| 13 | smell-feature-envy | ์๊ธฐ ๋ฐ์ดํฐ๋ณด๋ค ๋จ์ ๋ฐ์ดํฐ์ ๋ ์๋๋ ๋ฉ์๋ โ ๊ทธ ๋ฐ์ดํฐ ์ชฝ์ผ๋ก ์ด๋ |
| 14 | smell-data-clumps | ๊ฐ์ ํ๋/ํ๋ผ๋ฏธํฐ ๋ช ๊ฐ๊ฐ ๋ ํจ๊ป ์ด๋ โ ํ์
์ผ๋ก ๋ฌถ์ด ์ ๋ฌ |
| 15 | smell-primitive-obsession | ๋๋ฉ์ธ ๊ฐ๋
์ ์์ํ์
/๋ฌธ์์ด์ด ๋ํ โ ์์ ์ ์ฉ ํ์
๋ถ์ฌ |
| 16 | smell-repeated-switches | ๊ฐ์ ํ์
์ ๊ฐ์ switch/if-๊ณ๋จ์ด ๋ฐ๋ณต โ ๋คํ์ฑ ๋๋ ๊ณต์ map |
| 17 | smell-shotgun-surgery | ๋
ผ๋ฆฌ์ ๋ณ๊ฒฝ 1๊ฐ๊ฐ ์ฌ๋ฌ ํ์ผ ์ฐ๋ฐ ์์ ๊ฐ์ โ ํจ๊ป ๋ณํ๋ ๊ฒ์ ํ ๋ชจ๋๋ก |
| 18 | smell-divergent-change | ํ ํ์ผ์ด ๋ฌด๊ดํ ์ด์ ์ฌ๋ฟ์ผ๋ก ์์ ๋จ โ ์ด์ ๋ณ ๋ถ๋ฆฌ |
| 19 | smell-speculative-generality | spec์ ์๋ ํ์๋ฅผ ์ํ ์ถ์ํยทํ๋ผ๋ฏธํฐยทํ
โ ์ญ์ , ์ค ์์ ์๊ธธ ๋๊น์ง ์ธ๋ผ์ธ |
| 20 | smell-message-chains | ๊ธด a.b().c().d() ํ์ ์์กด โ ์ฒซ ๊ฐ์ฒด์ ๋ฉ์๋ ๋ค๋ก ์จ๊น |
| 21 | smell-middle-man | ์์๋ง ํ๋ ํด๋์ค/ํจ์ โ ์ ๊ฑฐ, ์ค ๋์ ์ง์ ํธ์ถ |
| 22 | smell-refused-bequest | ์์๋ถ ๋๋ถ๋ถ์ ๋ฌด์/์ค๋ฒ๋ผ์ด๋ โ ์์ ๋ฒ๋ฆฌ๊ณ ํฉ์ฑ |
How to Use
๊ฐ๋ณ ๋ฃฐ ํ์ผ์ ์ฐธ์กฐํ์ฌ ์์ธํ ์ฝ๋ ์์ ์ ๊ฐ์ง ํจํด์ ํ์ธํ๋ค:
rules/api-unnecessary-call.md
rules/arch-circular-dep.md
๊ฐ ๋ฃฐ ํ์ผ์ ํฌํจ๋ ๋ด์ฉ:
- ๋ฌธ์ ์ค๋ช
- ๊ฐ์ง ํจํด (Agent๊ฐ ์ด๋ป๊ฒ ์๋ณํ๋๊ฐ)
- Bad/Good ์ฝ๋ ์์
- ๊ฒ์ฆ ๋ฐฉ๋ฒ
Compressed Reference
์ ์ฒด 10๋ฃฐ์ ์์ถ ์๋ผ์ด๋ ์ฐธ์กฐ: AGENTS.md