code-review
npx skills add https://github.com/yelban/orz99-skills --skill code-review
Agent 安装分布
Skill 文档
Code Review
實ä½å¾çç¨å¼ç¢¼å¯©æ¥ãååç¶åº¦é段檢è¦ï¼æ¯åè°é¡çµ¦é¸é å建è°ï¼ç¢ºèªå¾æé²ä¸ä¸æ®µã
å®ä½ï¼å¯©æ¥å·²å¯«å¥½çç¨å¼ç¢¼ï¼æ¶æ§ãåè³ªãæ¸¬è©¦ãæè½ï¼ï¼ä¸æ¯è¨ç«å¯©æ¥ãè¨ç«å±¤é¢ç審æ¥è«ç¨ /plan-reviewã
Step 0: å®ä½å¯©æ¥ç¯å + é¸ææ·±åº¦
å®ä½å¯©æ¥ç¯å
æ ARGUMENTS 夿·ï¼
- æªæ¡è·¯å¾ â è®åæå®æªæ¡
- PR ç·¨èï¼å¦
#123ï¼âgh pr diff 123åå¾è®æ´ diffâgit diff+git diff --stagedåå¾æææªæäº¤è®æ´- ç©ºç½ â é è¨è¡çºå
diff - 忝å â
git diff main...<branch>åå¾åæ¯å·®ç°
è®åè®æ´å¾ï¼æè¦è®æ´ç¯åï¼æ¹äºåªäºæªæ¡ã大è´åäºä»éº¼ï¼ï¼ç¢ºèªå¯©æ¥å°è±¡æ£ç¢ºã
è®åä¸ä¸æ
è®æ´æªæ¡ç 宿´å §å®¹ï¼ä¸åª diff hunkï¼â å ¨é¨è®åãåæè®å被 import æä¾è³´çé鵿ªæ¡ï¼çè§£ä¸ä¸æå¾æè½çµ¦åºææç¾©ç建è°ã
é¸æå¯©æ¥æ·±åº¦
ç¨ AskUserQuestion è©¢åï¼
- 深度審æ¥ï¼æ¯æ®µæå¤ 4 åè°é¡ï¼é©åéè¦åè½æ PR
- å¿«é審æ¥ï¼æ¯æ®µæå¤ 1 åè°é¡ï¼é©åå°ä¿®æ¹æ hotfix
Step 1-4: åæ®µå¯©æ¥
ä¾åºå·è¡ãæ¯æ®µå®æå¾ç¨ AskUserQuestion ç¢ºèªæ±ºçï¼åé²ä¸ä¸æ®µã
ç¬¬ä¸æ®µï¼æ¶æ§
系統è¨è¨å±¤é¢çåé¡ã
- å ä»¶éçæ¯å¦åçï¼ææ²æè·¨å±¤ååæè·è²¬æ··äºï¼
- ä¾è³´æ¹åæ¯å¦æ£ç¢ºï¼ææ²æå¾ªç°ä¾è³´ï¼
- è³ææµæ¨¡å¼æ¯å¦æ¸ æ°ï¼ææ²æé±å¼çæ å³éï¼
- å®å ¨èéï¼èªèãææ¬ãè¼¸å ¥é©èãAPI éç
ç¬¬äºæ®µï¼ç¨å¼å質
ç¨å¼ç¢¼æ¬èº«çåé¡ã
- DRY éè¦ââç©æ¥µæ¨è¨éè¤é輯ï¼å³ä½¿åªéè¤å ©æ¬¡ï¼
- é¯èª¤èçï¼æ¯å¦ææªèççé¯èª¤è·¯å¾ï¼catch å塿¯å¦åæé¯èª¤ï¼
- éçæ¡ä¾ï¼ç©ºå¼ã空é£åã並ç¼ãè¶ æã大éè³æ
- å½åèå¯è®æ§ï¼è®æ¸åæ¯å¦è¡¨éæåï¼é輯æ¯å¦éæ¼é±æ¦ï¼
- é度工ç¨ï¼ä¸å¿ è¦çæ½è±¡ãç¨ä¸å°ç彿§ãéæ©æä½³å
ç¬¬ä¸æ®µï¼æ¸¬è©¦
測試è¦èèå質ã
- ææ²ææ°å¢æä¿®æ¹çé輯缺å°å°ææ¸¬è©¦ï¼
- 測試æ¯å¦é©èè¡çºèé實ä½ç´°ç¯ï¼
- éçæ¡ä¾è¦èï¼é¯èª¤è¼¸å ¥ã空å¼ã極端å¼ã並ç¼
- 失æè·¯å¾ï¼ç¶²è·¯é¯èª¤ãæ¬éä¸è¶³ãè³æºä¸åå¨ãè¶ æ
- 測試æ¯å¦å¯ç¶è·ï¼ææ²æé度 mock æèå¼±çæ·è¨ï¼
ç¬¬åæ®µï¼æè½
æè½èè³æºä½¿ç¨ã
- N+1 æ¥è©¢ï¼è¿´åä¸çè³æåº«/API å¼å«
- ä¸å¿ è¦çè¨ç®æéè¤å·¥ä½
- è¨æ¶é«ï¼å¤§ç©ä»¶ãæªéæ¾çè³æºãç¡çéçéå
- å¿«åæ©æï¼éè¤çæè²´æä½
- æ¼ç®æ³è¤éåº¦ï¼ææ²æ O(n²) å¯ä»¥éçº O(n)ï¼
è°é¡åç¾æ ¼å¼
æ¯åè°é¡å¿ é å å«ï¼
- åé¡æè¿° â å
·é«æåº
file:lineæfile:SymbolName - é¸é
â 2-3 åé¸é
ï¼å«ãä¸èçãï¼ï¼æ¯åæ¨æï¼
- 坦使æ¬ï¼ä½/ä¸/é«ï¼
- 風éªï¼å¼å ¥ bug çå¯è½æ§ï¼
- å½±é¿ç¯åï¼æ¹å¹¾åæªæ¡ï¼å½±é¿å ¶ä»åè½ï¼ï¼
- ç¶è·è² æï¼é·æå½±é¿ï¼
- å»ºè° â æ¨è¦çé¸é åçç±
輸åºç¯ä¾
### 1. å質ï¼é©èé輯éè¤
**åé¡**ï¼`src/handlers/create.ts:23` å `src/handlers/update.ts:31`
æå¹¾ä¹ç¸åç email é©èéè¼¯ï¼æ£å + é·åº¦æª¢æ¥ + domain ç½åå®ï¼ã
**é¸é
**ï¼
- **A) æ½åº validateEmail() å
±ç¨å½å¼**ï¼å»ºè°ï¼
ææ¬ï¼ä½ | 風éªï¼ä½ | å½±é¿ï¼2 åæªæ¡ | ç¶è·ï¼æ¸å°éè¤
- **B) ä¸èç**
ææ¬ï¼é¶ | 風éªï¼ä¸ï¼æ¹ä¸èå¿æ¹å¦ä¸èï¼| å½±é¿ï¼ç¡ | ç¶è·ï¼å
©ä»½è¦åæ¥
- **C) ç¨ zod schema çµ±ä¸é©è**
ææ¬ï¼ä¸ | 風éªï¼ä½ | å½±é¿ï¼éå zod ä¾è³´ | ç¶è·ï¼å®£å弿´æ¸
æ°
**å»ºè° A**ï¼æä½ææ¬æ¶é¤éè¤ï¼ä¸å¼å
¥æ°ä¾è³´ã
AskUserQuestion æ ¼å¼
æ¯æ®µçµææç¨ AskUserQuestionï¼
- é¸é æ¨ç±¤æ¨ç¤º è°é¡ç·¨è + é¸é 忝
- 建è°é¸é æ¾ç¬¬ä¸å
- 深度模å¼ç¯ä¾ï¼
1A + 2B + 3A + 4A - å¿«éæ¨¡å¼ç´æ¥ç¨é¸é 忝
Step 5: å¯©æ¥æè¦
åæ®µå¯©æ¥å®æå¾ï¼è¼¸åºï¼
## ç¨å¼ç¢¼å¯©æ¥æè¦
| # | ç¶åº¦ | è°é¡ | 決ç |
|---|------|------|------|
| 1 | æ¶æ§ | UserService 跨層è¦å | A: éé OrderService |
| 2 | å質 | é©èé輯éè¤ | A: æ½åºå
±ç¨å½å¼ |
| 3 | 測試 | 缺å°é¯èª¤è·¯å¾æ¸¬è©¦ | A: è£ 3 忏¬è©¦ |
| 4 | æè½ | N+1 æ¥è©¢ | A: æ¹ç¨ batch query |
### å¾
ä¿®é
ç®
- [ ] `src/services/user.ts:45` â æ¹ç¨ OrderService 鿥åå
- [ ] `src/handlers/` â æ½åº validateEmail() å° src/utils/validation.ts
- [ ] `src/handlers/create.test.ts` â è£å
3 åé¯èª¤è·¯å¾æ¸¬è©¦
- [ ] `src/repositories/order.ts:67` â N+1 æ¹çº batch query
妿ææè°é¡é½é¸æãä¸èçãï¼ç´æ¥è¼¸åº LGTM 並說æåå ã
審æ¥åå
- DRY éè¦ â ç©æ¥µæ¨è¨éè¤ï¼å³ä½¿åªéè¤å ©æ¬¡
- 測試åªå â 寧å¯å¤æ¸¬ä¸å¯å°æ¸¬
- å·¥ç¨é©åº¦ â ä¸é度æ½è±¡ï¼ä¹ä¸å¤ª hacky
- éçæ¡ä¾ â 寧å¯å¤æ³ä¸å¯éºæ¼
- æç¢ºåªæ¼è°æ â explicit > clever
- åªå¯©æ¥è®æ´ â ä¸è¦å°æ²æ¹åçç¨å¼ç¢¼ææè¦ï¼é¤éè®æ´æ´é²äºæ¢æåé¡ï¼
Now Execute
使ç¨è
ç審æ¥è«æ±è¦ä¸æ¹ ARGUMENTS:ãå¾ Step 0 éå§ã