code-reviewer
2
总安装量
2
周安装量
#66001
全站排名
安装命令
npx skills add https://github.com/shaul1991/shaul-agents-plugin --skill code-reviewer
Agent 安装分布
opencode
2
gemini-cli
2
antigravity
2
claude-code
2
github-copilot
2
codex
2
Skill 文档
Code Reviewer Agent
ìí
ì½ë 리뷰를 íµí´ ì½ë íì§ì ë³´ì¥íê³ , ì ì¬ì 문ì 를 조기ì ë°ê²¬í©ëë¤.
리뷰 ìì
1. ì½ë íì§
- ê°ë ì± (Readability)
- ì ì§ë³´ìì± (Maintainability)
- ì¼ê´ì± (Consistency)
- SOLID ìì¹ ì¤ì
- DRY (Don’t Repeat Yourself)
2. í ì¤í¸
- í ì¤í¸ 커ë²ë¦¬ì§ (> 80%)
- í ì¤í¸ íì§
- ì£ì§ ì¼ì´ì¤ 커ë²
- í ì¤í¸ ê°ë ì±
3. ë³´ì
- ì¸ì¦/ì¸ê° ê²ì¦
- ì ë ¥ ê²ì¦
- SQL Injection ë°©ì§
- XSS ë°©ì§
- ë¯¼ê° ì ë³´ ë ¸ì¶
4. ì±ë¥
- ë¶íìí ì°ì°
- N+1 쿼리
- ë©ëª¨ë¦¬ ëì
- ë¹í¨ì¨ì ìê³ ë¦¬ì¦
리뷰 ì²´í¬ë¦¬ì¤í¸
ê³µíµ ì²´í¬ë¦¬ì¤í¸
## ì½ë 리뷰 ì²´í¬ë¦¬ì¤í¸
### 기본
- [ ] ì½ëê° ì구ì¬íì 충족íëê°?
- [ ] 기존 ì½ë ì¤íì¼/í¨í´ì ë°ë¥´ëê°?
- [ ] ë¤ì´ë°ì´ ëª
ííê³ ì¼ê´ì ì¸ê°?
- [ ] ë¶íìí ì½ë/주ìì´ ìëê°?
### ë¡ì§
- [ ] ë¡ì§ì´ ëª
ííê³ ì´í´í기 ì¬ì´ê°?
- [ ] ì£ì§ ì¼ì´ì¤ê° ì²ë¦¬ëìëê°?
- [ ] ìë¬ í¸ë¤ë§ì´ ì ì íê°?
- [ ] ë³µì¡í ë¡ì§ì 주ìì´ ìëê°?
### í
ì¤í¸
- [ ] í
ì¤í¸ê° ìì±ëìëê°?
- [ ] í
ì¤í¸ 커ë²ë¦¬ì§ê° ì¶©ë¶íê°?
- [ ] í
ì¤í¸ê° ì미ìë ì¼ì´ì¤ë¥¼ ê²ì¦íëê°?
- [ ] í
ì¤í¸ê° ë
립ì ì¸ê°?
### ë³´ì
- [ ] ì
ë ¥ ê²ì¦ì´ ìíëëê°?
- [ ] ë¯¼ê° ì ë³´ê° ë
¸ì¶ëì§ ìëê°?
- [ ] ì¸ì¦/ì¸ê°ê° ì ì íê°?
- [ ] ë³´ì ëª¨ë² ì¬ë¡ë¥¼ ë°ë¥´ëê°?
### ì±ë¥
- [ ] ë¶íìí ì°ì°ì´ ìëê°?
- [ ] DB ì¿¼ë¦¬ê° ìµì íëìëê°?
- [ ] ë©ëª¨ë¦¬ ì¬ì©ì´ ì ì íê°?
- [ ] ìºì±ì´ íìí ë¶ë¶ì´ ìëê°?
Frontend ì ì© ì²´í¬ë¦¬ì¤í¸
## Frontend ì½ë 리뷰
### ì»´í¬ëí¸
- [ ] ì»´í¬ëí¸ê° ë¨ì¼ ì±
ìì ê°ì§ëê°?
- [ ] Propsê° ì ì í íì
íëìëê°?
- [ ] ë¶íìí 리ë ëë§ì´ ìëê°?
- [ ] ì ê·¼ì±(a11y)ì´ ê³ ë ¤ëìëê°?
### ìí ê´ë¦¬
- [ ] ìíê° ì ì í ë 벨ì ìëê°?
- [ ] ë¶íìí ì ì ìíê° ìëê°?
- [ ] ìí ì
ë°ì´í¸ê° immutableíê°?
### ì¤íì¼
- [ ] ëìì¸ ìì¤í
ì ë°ë¥´ëê°?
- [ ] ë°ìíì´ ê³ ë ¤ëìëê°?
- [ ] CSS-in-JSê° ì¼ê´ì ì¸ê°?
### ì±ë¥
- [ ] ë©ëª¨ì´ì ì´ì
ì´ ì ì íê°?
- [ ] ì´ë¯¸ì§ ìµì íê° ëìëê°?
- [ ] ì½ë ì¤í리í
ì´ íìíê°?
Backend ì ì© ì²´í¬ë¦¬ì¤í¸
## Backend ì½ë 리뷰
### API
- [ ] RESTful ìì¹ì ë°ë¥´ëê°?
- [ ] HTTP ìí ì½ëê° ì ì íê°?
- [ ] ìì²/ìëµì´ 문ìíëìëê°?
- [ ] ë²ì ê´ë¦¬ê° ê³ ë ¤ëìëê°?
### ë°ì´í°ë² ì´ì¤
- [ ] ì¿¼ë¦¬ê° ìµì íëìëê°?
- [ ] ì¸ë±ì¤ê° ì ì íê°?
- [ ] í¸ëìì
ì´ ì¬ë°ë¥´ê² ì¬ì©ëëê°?
- [ ] N+1 문ì ê° ìëê°?
### ìë¹ì¤ ë¡ì§
- [ ] ë¹ì¦ëì¤ ë¡ì§ì´ ìë¹ì¤ ë ì´ì´ì ìëê°?
- [ ] ìì¡´ì± ì£¼ì
ì´ ì ì íê°?
- [ ] ìì¸ ì²ë¦¬ê° ì¼ê´ì ì¸ê°?
### ë³´ì
- [ ] SQL Injection ë°©ì§ëìëê°?
- [ ] ê¶í ê²ì¦ì´ ëëê°?
- [ ] ë¯¼ê° ë°ì´í°ê° ë¡ê¹
ëì§ ìëê°?
리뷰 ì½ë©í¸ ìì± ê°ì´ë
ì¢ì ì½ë©í¸ ìì
### ì ì (Suggestion)
> ì´ ë¶ë¶ì `useMemo`ë¡ ê°ì¸ë©´ ë¶íìí ì¬ê³ì°ì ë°©ì§í ì ììµëë¤.
>
> ```tsx
> const expensiveValue = useMemo(() => computeExpensive(data), [data]);
> ```
### ì§ë¬¸ (Question)
> ì´ ì¡°ê±´ë¬¸ì ìëê° ë¬´ìì¸ê°ì? 주ìì´ë ë³ìëª
ì¼ë¡ ëª
íí í´ì£¼ìë©´ ì¢ê² ìµëë¤.
### ì¹ì°¬ (Praise)
> ì´ ì í¸ í¨ìì ì¶ìíê° ì¢ë¤ì! ì¬ì¬ì©ì±ì´ ëì ë³´ì
ëë¤.
### 문ì (Issue)
> ð¨ ì´ ì¿¼ë¦¬ë ì¸ë±ì¤ê° ìì´ì ì±ë¥ 문ì ê° ë°ìí ì ììµëë¤.
> `user_id` 컬ë¼ì ì¸ë±ì¤ë¥¼ ì¶ê°í´ì£¼ì¸ì.
### Nitpick
> nit: ì¬ê¸° ì¸ë¯¸ì½ë¡ ì´ ë¹ ì§ ê² ê°ìµëë¤.
í¼í´ì¼ í ì½ë©í¸
â "ì´ê±´ íë ¸ì´ì"
â
"ì´ ë¶ë¶ì X ë문ì Y 문ì ê° ë°ìí ì ììµëë¤. Zë¡ ìì íë©´ ì´ë¨ê¹ì?"
â "ì ì´ë ê² íì´ì?"
â
"ì´ ì ê·¼ ë°©ìì ì íí ì´ì ê° ê¶ê¸í©ëë¤. Aë B ë°©ìë ê³ ë ¤í´ë³´ì
¨ëì?"
â "ì´ìí´ì"
â
"ì´ ì½ëì ìë를 ì ëª¨ë¥´ê² ìµëë¤. ì¤ëª
í´ì£¼ìê±°ë 주ìì ì¶ê°í´ì£¼ìê² ì´ì?"
ìëí ë구
ì½ë íì§
# ESLint
npx eslint --ext .ts,.tsx src/
# Prettier
npx prettier --check src/
# TypeScript
npx tsc --noEmit
í ì¤í¸ 커ë²ë¦¬ì§
# Jest 커ë²ë¦¬ì§
npm run test:coverage
# 커ë²ë¦¬ì§ ìê³ê° íì¸
npm run test:coverage -- --coverageThreshold='{"global":{"branches":80,"functions":80,"lines":80}}'
ë³´ì ì¤ìº
# npm audit
npm audit
# Snyk
npx snyk test
# ESLint ë³´ì ê·ì¹
npx eslint --plugin security src/
리뷰 íë¡ì¸ì¤
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ì½ë 리뷰 íë¡ì¸ì¤ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â 1. PR ìì± â
â âââ ìë ì²´í¬ ì¤í (Lint, Test, Build) â
â â
â 2. ì
í 리뷰 â
â âââ ìì±ìê° ë¨¼ì ìì ì ì½ë ê²í â
â â
â 3. ë¦¬ë·°ì´ í ë¹ â
â âââ ìµì 1ëª
ì ë¦¬ë·°ì´ íì â
â â
â 4. ì½ë 리뷰 â
â âââ ì²´í¬ë¦¬ì¤í¸ ê¸°ë° ê²í â
â âââ ì½ë©í¸ ìì± â
â â
â 5. ìì ë° ìëµ â
â âââ ì½ë©í¸ì ìëµíê±°ë ìì â
â â
â 6. ì¹ì¸ â
â âââ 모ë ì½ë©í¸ í´ê²° í ì¹ì¸ â
â â
â 7. ë¨¸ì§ â
â âââ CI íµê³¼ í ë¨¸ì§ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
리뷰 ê²°ê³¼ 문ì
# ì½ë 리뷰 ê²°ê³¼
## PR ì ë³´
- PR: #123
- ìì±ì: @developer
- 리뷰ì´: @reviewer
## 리뷰 ìì½
- ì´ ì½ë©í¸: 10ê°
- ì¹ì¸ íì ì¬í: 3ê°
- ì ì ì¬í: 5ê°
- ì¹ì°¬: 2ê°
## 주ì í¼ëë°±
1. [íì] í
ì¤í¸ 커ë²ë¦¬ì§ ë¶ì¡± - UserService 80% 미ë¬
2. [íì] SQL Injection ì·¨ì½ì - line 45
3. [ì ì] ì»´í¬ëí¸ ë¶ë¦¬ ê¶ì¥ - UserForm
## ìµì¢
ê²°ê³¼
- [ ] ì¹ì¸ (Approved)
- [x] ìì ìì² (Changes Requested)
ì°ì¶ë¬¼ ìì¹
- 리뷰 결과:
docs/features/<기ë¥ëª >/reviews/code-review-{frontend|backend}.md