code-reviewer
npx skills add https://github.com/softleader/slctl --skill code-reviewer
Agent 安装分布
Skill 文档
Code Reviewer
æ¬ skill æä¾ä¸å系統åçæ¹æ³ä¾é²è¡ Code Reviewã éé»å¨æ¼ å¯©æ¥æµç¨ è å質ç¶åº¦ï¼èéç¹å®æè¡ç模å¼ã
ç¯ç
ä½¿ç¨æ¤ skill ä¾ï¼
- 使ç¨çµæ§åæµç¨é²è¡ç³»çµ±æ§ç Code Review
- å¾å¤åç¶åº¦è©ä¼°ç¨å¼ç¢¼ (æ£ç¢ºæ§ãå®å ¨æ§ãå¯ç¶è·æ§)
- æä¾æ¸ æ°ãå¯è¡ç建è°ï¼çµ¦åºå»ºè¨æ§åé¥
- æ ¹æåè³ªæ¨æºæ±ºå®æ¯å¦æºå好æ¹å (Approve)
ä¸é©ç¨æ¼
- ç¹å®æè¡çæ¨¡å¼ (è«åèå°æç Jutsu plugins)
- 詳細çå¯¦ä½æå° (è«åèç¹å®é åç agents)
å¯©æ¥æµç¨æ¦è§
Phase 1: 審æ¥åæºå
éå§ review åï¼å æ¶éä¸ä¸æ
-
çè§£è®æ´å §å®¹:
# å¯©æ¥ diff git diff <base-branch>...HEAD # 檢æ¥è®æ´ç¯å git diff --stat <base-branch>...HEAD -
èå¥ç¸éä¸ä¸æ:
# å¨ç¨å¼ç¢¼åº«ä¸å°æ¾é¡ä¼¼çæ¨¡å¼ grep -r "similar_pattern" . -
é©èæ¥åèæ¯:
- æ¯å¦æç¸éç issue/ticketï¼å¯©æ¥éæ±ã
- å½±é¿å°åªåé å (domain)ï¼
- å°ä½¿ç¨è æä»éº¼å½±é¿ï¼
Phase 2: 系統æ§å¯©æ¥
å¾ä»¥ä¸ç¶åº¦é²è¡å¯©æ¥
1. æ£ç¢ºæ§ (Correctness)
- 宿¯å¦è§£æ±ºäºæè¿°çåé¡ï¼
- 忥é輯æ¯å¦ç¬¦åé åè¦åï¼
- éçæ æ³ (edge cases) æ¯å¦è¢«å¦¥åèçï¼
- 測試æ¯å¦é©èäºé æè¡çºï¼
å¦ä½æª¢æ¥æ£ç¢ºæ§
- å é±è®æ¸¬è©¦ï¼ä»¥çè§£é æè¡çºã
- è¿½è¹¤è®æ´ä¸çç¨å¼ç¢¼è·¯å¾ã
- é©èé¯èª¤æ 墿¯å¦è¢«æ¶µèã
- èéæ±äº¤åæ¯å°ã
2. å®å ¨æ§ (Safety)
- æ¯å¦éµå¾ªäºææ¬/èªè模å¼ï¼
- API æå¥ç´ (contracts) æ¯å¦æç ´å£æ§è®æ´ (breaking changes)ï¼
- æ¯å¦å¯è½æ´©æ¼ææè³æï¼
- è³ææä½æ¯å¦å®å ¨ï¼
- æ¯å¦å卿½å¨çç«¶çæ¢ä»¶ (race conditions) æè³æå®æ´æ§åé¡ï¼
å¦ä½æª¢æ¥å®å ¨æ§
- é©èæä½çååæ§å¶ã
- å° API è®æ´å·è¡ç¸å®¹æ§æª¢æ¥ã
- æª¢æ¥æ¯å¦æé©ç¶çè¼¸å ¥é©èã
- 審æ¥äº¤æ (transaction) çéçã
- é©èè¼¸å ¥çæ·¨å (sanitization)ã
3. å¯ç¶è·æ§ (Maintainability)
- æ¯å¦éµå¾ªäºç¾æçç¨å¼ç¢¼åº«æ¨¡å¼ï¼
- ç¨å¼ç¢¼æ¯å¦å¯è®ä¸ææ¼çè§£ï¼
- è¤éçé¨åæ¯å¦ææä»¶è¨éï¼
- æ¯å¦éµå¾ªäºç«¥åè»åå (Boy Scout Rule)ï¼ (è®ç¨å¼ç¢¼æ¯ä½ ç¼ç¾ææ´å¥½)
- å½åæ¯å¦æ¸ æ°ä¸ä¸è´ï¼
å¦ä½æª¢æ¥å¯ç¶è·æ§
- èç¨å¼ç¢¼åº«ä¸çé¡ä¼¼ç¨å¼ç¢¼é²è¡æ¯è¼ã
- é©èè¤éé輯çæä»¶ã
- æª¢æ¥æ¯å¦æéæ³æ¸å (magic numbers) å寫æ»çæ¸å¼ã
- 確ä¿å½åæ £ä¾ä¸è´ã
- å°æ¾è¢«è¨»è§£æçç¨å¼ç¢¼ (anti-pattern)ã
4. 坿¸¬è©¦æ§ (Testability)
- æ°åè½æ¯å¦ææ¸¬è©¦ï¼
- 測試æ¯å¦æ¶µèäºéçæ æ³åé¯èª¤æ å¢ï¼
- 測試æ¯å¦æ¸ æ°ä¸å¯ç¶è·ï¼
- æ¸¬è©¦è³æçè¨å®æ¯å¦é©ç¶ï¼
å¦ä½æª¢æ¥å¯æ¸¬è©¦æ§
- 審æ¥è®æ´ç¨å¼ç¢¼ç測試è¦èçã
- é©è happy path å sad path é½è¢«æ¸¬è©¦å°ã
- ç¢ºä¿æ¸¬è©¦æ¯ç¢ºå®æ§ç (deterministic) 䏿¸ æ°çã
- æª¢æ¥æ¸¬è©¦é颿¯å¦åå¾å¦¥ç¶ã
5. æè½ (Performance)
- æ¯å¦ææé¡¯çæè½åé¡ï¼
- è³æåº«æ¥è©¢æ¯å¦ææçï¼
- 髿æ¬çæä½æ¯å¦å·²é©ç¶åªåï¼
- è³æºæ¯å¦è¢«å¦¥å管çï¼
å¦ä½æª¢æ¥æè½
- èå¥ N+1 query 模å¼ã
- æª¢æ¥æ¥è©¢æ¯å¦ç¼ºå°ç´¢å¼ã
- 審æ¥è³æºçåé èæ¸ çã
- é©èæ¯å¦ä½¿ç¨äºé©ç¶çè³æçµæ§ã
6. æ¨æºéµå¾ª (Standards Compliance)
- æ¯å¦éµå¾ªäºç¹å®èªè¨çæä½³å¯¦è¸ï¼
- æ¯å¦ééäºææçé©è檢æ¥ï¼
- æ¯å¦æ linting æåå¥é¯èª¤ï¼
- æ¯å¦éµå¾ªäºç´å®çç·¨ç¢¼æ¨æºï¼
å¦ä½æª¢æ¥æ¨æºéµå¾ª
- å·è¡é©èå¥ä»¶ã
- æª¢æ¥æ¯å¦éåæ¨æºæ¨¡å¼ã
- é©èæ²æç¹éå質éé (quality gates)ã
7. ç¨å¼ç¢¼é¢¨æ ¼ (Coding Style)
è¥æç¼ç¾ makefile skillï¼åæª¢æ¥æ¯å¦æç¨å¼ç¢¼é¢¨æ ¼é©èç targetï¼è¥æåå·è¡ï¼ä¸¦é©è git status æ¯å¦çº cleanã
Phase 3: ä¿¡å¿åº¦è©å
å°ææç¼ç¾çåé¡é²è¡ä¿¡å¿åº¦è©å
æ¯åç¼ç¾çåé¡é½å¿ é å å«ä¸å ä¿¡å¿åº¦åæ¸ (0-100)ï¼ç¨ä»¥è¡¨ç¤ºä½ å°æ¤åé¡çºç實åé¡ç確å®ç¨åº¦ï¼
| 忏 | ä¿¡å¿åº¦çç´ | ä½¿ç¨ææ© |
|---|---|---|
| 100 | çµå°ç¢ºå® | 客è§äºå¯¦ï¼linter é¯èª¤ãåå¥é¯èª¤ã測試失æãå®å ¨æ¼æ´ |
| 90 | éå¸¸é« | æç¢ºéåå·²è¨è¼çæ¨æºãæé¡¯çæ£ç¢ºæ§ bug |
| 80 | é« | 模å¼éè¦ã缺å°é¯èª¤èçãå¯ç¶è·æ§åé¡ |
| 70 | ä¸åº¦ | éè¦æ´å¤ä¸ä¸æçæ½å¨åé¡ãå¯è½çéçæ æ³ |
| 60 | æäº | æåé¡ç模å¼ãèç¨å¼ç¢¼åº«å 便éçé¢¨æ ¼åé¡ |
| 50 | ä¸ç¢ºå® | æ²ææç¢ºå ä¾çæ½å¨æ¹é² |
| <50 | ä½ | æ¨æ¸¬æ§çææãå人å好 |
ééµé濾è¦åï¼åªåå ± ä¿¡å¿åº¦ â¥80% çåé¡ãè¼ä½ä¿¡å¿åº¦çç¼ç¾æè£½é åªé³ï¼æäºä»¥çç¥ã
ä¿¡å¿åº¦è©åæå
é«ä¿¡å¿åº¦ (90-100) – åå ±éäºï¼
- é©è失æ (linting, tests, types)
- å®å ¨æ¼æ´ (SQL injection, XSS, auth bypass)
- ææç¢ºéç¾æ¥é©çæ£ç¢ºæ§ bug
- ç ´å£æ§ç API è®æ´
- éåå·²æä»¶åçå鿍æº
ä¸é«ä¿¡å¿åº¦ (80-89) – åå ±éäºï¼
- æ°åè½ç¼ºå°æ¸¬è©¦
- é¯èª¤èçç缺å£
- æè½åé¡ (N+1 queries, missing indexes)
- ææ¸ æ°æ¨¡å¼å¯å¾ªçå¯ç¶è·æ§åé¡
- éåç«¥åè»åå
ä¸åº¦ä¿¡å¿åº¦ (60-79) – ä¸è¦åå ±ï¼
- æ²ææç¢ºç¨å¼ç¢¼åº«å ä¾çé¢¨æ ¼å好
- æ¨æ¸¬æ§çæè½ææ
- æ²ææé¡¯å¥½èçæ¿ä»£æ¹æ¡
ä½ä¿¡å¿åº¦ (<60) – ä¸è¦åå ±ï¼
- å人æè¦
- æ²æå ·é«å½±é¿çãå¯ä»¥æ´å¥½ã建è°
- æ²æèæççè«æ§éçæ æ³
å½é½æ§é濾 (False Positive Filtering)
ééµï¼æç¨ä»¥ä¸é濾å¨ä»¥é¿å åå ±éåé¡çé ç®ï¼
ä¸è¦åå ±ï¼
- â æ¤è®æ´æªå¼å ¥çæ¢æåé¡ (æª¢æ¥ git blame)
- â å·²ç± linters/formatters èççåé¡
- â ç¨å¼ç¢¼ä¸ææç¢ºç lint-ignore 註解 (å°ééç¼è çæ±ºå®)
- â æ²ææä»¶åæ¨æºçé¢¨æ ¼å好
- â æ²æèææéç¾æ¹å¼ççè«æ§ bug
- â æ²ææç¢ºå¥½èçãå¯ä»¥ä½¿ç¨…ã建è°
- â ä¸å½±é¿å質ç广¯æ±çµ (nitpicks)
åå ±åéé©èï¼
- â
å·è¡
git diff確èªåé¡å¨è®æ´çè¡å § - â æª¢æ¥èªååå·¥å ·æ¯å¦å·²æææ¤åé¡
- â å°ç §å·²æä»¶åçå°æ¡æ¨æº (CLAUDE.md, CONTRIBUTING.md ç)
- â 確èªåé¡ç¢ºå¯¦å½±é¿å°æ£ç¢ºæ§ãå®å ¨æ§æå¯ç¶è·æ§
å½é½æ§ vs. ç實åé¡ç¯ä¾ï¼
â å½é½æ§ï¼ãéåå½å¼å¯ä»¥ä½¿ç¨ TypeScript generics 以ç²å¾æ´å¥½çåå¥å®å ¨ã(ä¿¡å¿åº¦ï¼60%ï¼é¢¨æ ¼å好ï¼ç¡æä»¶åæ¨æº)
â
ç實åé¡ï¼ãservices/payment.ts:42 ç processPayment å½å¼å¨æ²æäº¤æä¿è·çæ
æ³ä¸å·è¡è³æåº«æä½ï¼è¥æä½ä¸éåºé¯ï¼å¯è½å°è´è³æä¸ä¸è´ãã(ä¿¡å¿åº¦ï¼90%ï¼éåæä»¶å模å¼ï¼ææç¢ºå½±é¿)
Phase 4: åé¥è決ç
æä¾çµæ§ååé¥
- 總çµ: é«å±¤æ¬¡çè©ä¼°
- åªé»: åå¾å¥½çå°æ¹ (æ£é¢å¼·å)
- åé¡: æå´éæ§çµç¹ï¼ä¸¦éä¸ ä¿¡å¿åº¦åæ¸ï¼
- å´é (Critical) (ä¿¡å¿åº¦ â¥90): 黿æ¹å (å®å ¨æ§ãæ£ç¢ºæ§ãç ´å£æ§è®æ´)
- éè¦ (Important) (ä¿¡å¿åº¦ â¥80): æè©²è§£æ±º (å¯ç¶è·æ§ãæä½³å¯¦è¸)
- å¯è¡çä¸ä¸æ¥: éä¸
file:lineåèçå ·é«è®æ´å»ºè° - 決ç: æ¹å (Approve)ãè«æ±è®æ´ (Request Changes) æéè¦è¨è« (Needs Discussion)
注æï¼å»ºè°/é¦ä¸æ·»è±çé ç®è¢«å»æçç¥ãåªå°æ³¨æ¼é«ä¿¡å¿åº¦ãå¯è¡çåé¥ã
æ¹åæ¨æº
â 使æ¹å (Approve)
- ææé©è檢æ¥é½éé (linting, tests, types, etc.)
- 忥é輯æ£ç¢ºä¸å®æ´
- éµå¾ªäºå®å ¨æ§èææ¬æ¨¡å¼
- æ²æç ´å£æ§è®æ´ (æå·²å¦¥åå調)
- ç¨å¼ç¢¼éµå¾ªç¾ææ¨¡å¼
- è¤ééè¼¯ææ¸ æ°çæä»¶
- 測試涵èäº happy pathãéçæ æ³åé¯èª¤æ å¢
- è®æ´ç¬¦åéæ±
- ç¨å¼ç¢¼å¯ç¶è·ä¸æ¸ æ°
- æç¨äºç«¥åè»åå (ç¨å¼ç¢¼è¢«æ¹åï¼èéå£å)
ð ä½æè«æ±è®æ´ (Request Changes)
- å´éåé¡ï¼å®å ¨æ¼æ´ãæ£ç¢ºæ§ bugãç ´å£æ§è®æ´
- éè¦åé¡ï¼é忍¡å¼ãç¼ºå°æ¸¬è©¦ãç¨å¼ç¢¼ä¸æ¸ æ°
- é©èå¤±ææªè¢«è§£æ±º
- 忥é輯èéæ±ä¸ç¬¦
- é¯èª¤èçä¸è¶³
ð¬ 使éè¦è¨è« (Needs Discussion)
- æ¶æ§ä¸çèé
- 鿱䏿¸ æ°
- éè¦æ¬è¡¡åæ¨ç決ç
- å颿¨¡å¼éè¦åçè§£é
- æè½å½±é¿ä¸ç¢ºå®
常è¦ç Review é·é±
Reviewer ç¶å¸¸å¿½ç¥
- ææ¬ç¹é: æä½æ²æé©ç¶çååæ§å¶
- ç ´å£æ§è®æ´: æªæª¢æ¥ç¸å®¹æ§
- é¯èª¤èç缺å£: åª review happy path
- 測試å質: 測試åå¨ï¼ä½æªå¯¦é測試éçæ æ³
- é åé輯é¯èª¤: æªçè§£åæ¥è¦å
- 被註解æçç¨å¼ç¢¼: çä¸ç¡ç¨ç¨å¼ç¢¼èéç§»é¤
- éæ³æ¸å: æªå½åç䏿叏æ¸
- éæ¼è°æçç¨å¼ç¢¼: ææç°¡å®å¯è¡å»å¯«å¾è¤é
- éåç«¥åè»åå: è®ç¨å¼ç¢¼è®å¾æ´ç³ï¼è鿴好
ç´ ç (çµä¸æ¹å)
以䏿 æ³æ°¸é éè¦ä¿®æ¹
- â 被註解æçç¨å¼ç¢¼ â ç§»é¤å® (git æä¿çæ·å²)
- â ç¨å¼ç¢¼ä¸çç§å¯ææè â 使ç¨å®å ¨çè¨å®æ¹å¼
- â æ²æç¸å®¹æ§é©èçç ´å£æ§è®æ´
- â 被註解ææè·³éçæ¸¬è©¦ â 修復ç¨å¼ç¢¼ï¼è鿏¬è©¦
- â 被忽ç¥çé©è失æ â å¿ é å ¨é¨éé
- â æ°åè½æ²ææ¸¬è©¦ â æ¸¬è©¦æ¯å¿ è¦ç
- â 寫æ»ç忥é輯 â æçºå¯è¨å®ç
- â 缺å°é¯èª¤èç â å¿ é èçéçæ æ³
- â æé¡¯çå®å ¨æ¼æ´ â å¿ é ç«å³ä¿®å¾©
èéç¼å·¥ä½æµç¨çæ´å
Code Review é©ç¨æ¼ Phase 2: 實ä½
å¯¦ä½ â é©èå¥ä»¶ â Code Review â æ¹å â åä½µ (Merge)
(èªååæª¢æ¥) (æ¤ skill) (人工)
Review å¨é©èä¹å¾é²è¡
- éç¼è å·è¡é©èå¥ä»¶
- ææèªååæª¢æ¥å¿ é éé
- æç¨ Code Review skill é²è¡å質è©ä¼°
- èå¥ä¸¦ä¿®å¾©åé¡
- 修復å¾éæ°é©è
- 人工 review 並æ¹ååä½µ
Review ä¸è½æ¿ä»£é©èã å ©è 齿¯å¿ è¦çã
è¼¸åºæ ¼å¼
å° review åé¥çµæ§åå¦ä¸
Review 總çµ
å°è®æ´åå ¶å質çç°¡è¦æ´é«è©ä¼°ã
åªé»
- â åå¾å¥½çå°æ¹ (æ£é¢å¼·å)
- â éµå¾ªäºå¥½ç模å¼
- â ç¹å¥å¥½ç實ä½
åé¡
注æï¼åªåå ±ä¿¡å¿åº¦ â¥80% çåé¡ãææç¼ç¾é½å å«ä¿¡å¿åº¦åæ¸ã
ð´ å´é (黿æ¹å)
[å顿¨é¡] – file/path.ts:42 – ä¿¡å¿åº¦: 95%
- åé¡: æ¸ æ°æè¿°å顿å¨
- å½±é¿: çºä½æ¤åé¡å´é (å®å ¨æ§ãæ£ç¢ºæ§ãç ´å£æ§è®æ´)
- 修復: å ·é«å¯è¡çæ¥é©
ð¡ éè¦ (æè§£æ±º)
[å顿¨é¡] – file/path.ts:89 – ä¿¡å¿åº¦: 85%
- åé¡: æè¿°å¯ç¶è·æ§/å質åé¡
- å½±é¿: éå¦ä½å½±é¿ç¨å¼ç¢¼å質
- 建è°: æ¨è¦çæ¹åæ¹æ³
é©èçæ
- ææèªååæª¢æ¥å·²éé
- API ç¸å®¹æ§å·²é©è (å¦é©ç¨)
- 測試已涵èéçæ æ³
- æä»¶å·²æ´æ°
決ç
[æ¹å / è«æ±è®æ´ / éè¦è¨è«]
ä¸ä¸æ¥è¡å
- éä¸
file:lineåèçå ·é«å¯è¡æ¥é© - ééæ°å·è¡çé©èæä»¤
- å¯åèçæ¨¡å¼
å»ºè¨æ§åé¥åå
æä¾å饿
- å ·é«: æåºç¢ºåçè¡æ¸ï¼è鿍¡ç³çåå
- è§£éåå : ä¸åªèªªã鿍£æ¯é¯çãï¼è¦è§£éå ¶å½±é¿
- æä¾æ¹å: å»ºè°æ¹æ³ææ¨¡å¼
- 平衡æ¹è©èè®ç¾: æåºåå¾å¥½çå°æ¹
- åååé¡åªå ç´: å´é vs. éè¦ vs. 建è°
- å°é: ç¨å¼ç¢¼ä¸æ¯äºº
- åè¨å°æ¹æè½å: æåºåé¡ï¼èéæè²¬
- æå°ï¼èéå æ¯ç³¾æ£: 幫å©éç¼è æé·
å»ºè¨æ§åé¥ç¯ä¾
â
好: ãå¨ services/payment_service:45ï¼æ²æäº¤æä¿è·ç仿¬¾èçå¯è½å¨æä½ä¸éåºé¯æå°è´è³æä¸ä¸è´ãè«å°æä½å
å¨ä¸å transaction ä¸ä»¥ç¢ºä¿ååæ§ãå¯ä»¥åèè³æåº«è¨è¨ä¸ç ACID ååãã
â ä¸å¥½: ãé裡è¦ç¨ transactionãã
å質å²å¸
Code Review 確ä¿
- æ£ç¢ºæ§: 解決äºå¯¦éåé¡
- å®å ¨æ§: ä¿è·è³æä¸¦éµå¾ªå®å ¨æ¨¡å¼
- å¯ç¶è·æ§: æªä¾çéç¼è å¯ä»¥çè§£åä¿®æ¹
- ä¸è´æ§: éµå¾ªæ¢å®æ¨¡å¼
- å質: éå°æ¨æº
è¨ä½
- Review æ¯éæ¼ç¨å¼ç¢¼å質ï¼èéå人æ¹è©
- ç®æ¨æ¯æ¹åç¨å¼ç¢¼åéç¼è æè½
- å¨å¾¹åºèå實ä¹éåå¾å¹³è¡¡
- å®ç¾ä¸æ¯æ¨æºï¼éå°åè³ªéæª»çãè¶³å¤ å¥½ãå³å¯
- ç«¥åè»ååï¼è®ç¨å¼ç¢¼æ¯ä½ ç¼ç¾ææ´å¥½
èç¾æ Skills çæ´å
坿é 使ç¨
makefile: äºè§£ Makefile çä½¿ç¨æ¹æ³