| name | refactor |
| description | Systematic refactoring skill with test coverage requirements. Supports scope analysis, test-first refactoring, and integration with DevDocs workflow. Use when users need to refactor code, improve code quality, or restructure existing implementations. Triggers on keywords like "refactor", "éæ", "äŒå代ç ", "ä»£ç æ¹é ", "tech debt", "ææ¯åº". |
| allowed-tools | Read, Write, Glob, Grep, Edit, Bash, AskUserQuestion, TodoWrite |
Refactor
ç³»ç»åéæ skillïŒç¡®ä¿éæè¿çšå®å
šãå¯è¿œæº¯ã笊åèŽšéæ åã
Language
- Accept questions in both Chinese and English
- Always respond in Chinese
- Generate all documents in Chinese
Trigger Conditions
- çšæ·éèŠéæç°æä»£ç
- çšæ·èŠæ±äŒå代ç 莚é
- çšæ·æå°ææ¯åºãä»£ç æ¹é
- çšæ·èŠæ±å®¡æ¥å¹¶æ¹è¿ç°æå®ç°
æ žå¿åå
éæå®å
šåå
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â éæåå¿
须满足 â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â 1. ææç¡®çéæèåŽ â
â 2. æè¶³å€çæµè¯èŠçïŒâ¥80%ïŒ â
â 3. æææµè¯éè¿ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â éæè¿çšäž â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â 1. å°æ¥éæïŒæ¯æ¥å¯éªè¯ â
â 2. æ¯æ¥åè¿è¡æµè¯ â
â 3. äžæ·»å æ°åèœ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â éæåå¿
须满足 â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â 1. æææµè¯éè¿ â
â 2. èŠççäžéäœ â
â 3. çæéææ¥å â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
äžå
¶ä» Skills çåäœ
| åºæ¯ | åäœ Skill | 诎æ |
|---|
| ä»£ç æ æ³æµè¯ | /devdocs-retrofit | éååæåéå |
| UI éæ | /ui-skills | åºçš UI 纊æè§è |
| 代ç èŽšéæ£æ¥ | /code-quality | åºçš MTE åå |
| éèŠææ¡£å | DevDocs æµçš | çæè§èææ¡£ |
| çŒå/è¡¥å
æµè¯ | /testing-guide | æµè¯èŽšé纊æïŒæèšãMockãååŒæµè¯ïŒ |
Workflow
1. ç¡®å®éæèåŽ
â
âââ çšæ·æå®èåŽ â Step 2
âââ æªæå®èåŽ â ç³»ç»å®¡æ¥ â åç°é®é¢ â çšæ·ç¡®è®€èåŽ
â
âŒ
2. è¯äŒ°æµè¯ç¶æ
â
âââ ææµè¯äžèŠç â¥80% â Step 4
âââ ææµè¯äœèŠç <80% â Step 3ïŒè¡¥å
æµè¯ïŒ
âââ æ æµè¯ â Step 3ïŒæ°å»ºæµè¯ïŒ
â
âŒ
3. è¡¥å
/æ°å»ºæµè¯
â
âââ 坿µè¯ â çŒåæµè¯ â ç¡®ä¿èŠçç â¥80% â Step 4
âââ äžå¯æµè¯ â æ 记䞺"éèŠéå" â Step 5
â
âŒ
4. æ§è¡éæ
â
âââ æ®é代ç â åºçš /code-quality
âââ UI 代ç â åºçš /ui-skills
â
âŒ
5. éåæµçšïŒåŠéèŠïŒ
â
âââ è°çš /devdocs-retrofit éå â çæææ¡£ â éæ°å®ç°
â
âŒ
6. éªè¯äžæ¥å
â
âââ è¿è¡æææµè¯
âââ æ£æ¥èŠçç
âââ çæéææ¥å
Step 1: ç¡®å®éæèåŽ
1.1 çšæ·æå®èåŽ
åŠæçšæ·æç¡®æå®äºéæèåŽïŒçŽæ¥äœ¿çšã
çšæ·æå®èåŽç€ºäŸïŒ
- "éæ src/services/user.ts"
- "éæçšæ·è®€è¯æš¡å"
- "äŒå UserService ç±»"
1.2 ç³»ç»å®¡æ¥ïŒæªæå®èåŽæ¶ïŒ
䜿çšä»¥äžæ£æ¥æž
å审æ¥ä»£ç ïŒ
Code Smells æ£æ¥æž
å
| é®é¢ç±»å | æ£æµæ¹æ³ | äŒå
级è§å |
|---|
| è¿é¿åœæ° | è¡æ° > 50 | P0 åŠæ > 100ïŒP1 åŠæ > 50 |
| è¿å€åæ° | åæ° > 5 | P1 |
| è¿æ·±åµå¥ | åµå¥ > 3 å± | P1 |
| éå€ä»£ç | çžäŒŒä»£ç å ⥠3 å€ | P0 |
| äžåžç±» | è¡æ° > 500 æè莣 > 3 | P0 |
| ç¹æ§äŸæ | é¢ç¹è®¿é®å
¶ä»ç±»æ°æ® | P2 |
| æ°æ®æ³¥å¢ | å€åæ°æ»æ¯äžèµ·åºç° | P2 |
å®¡æ¥æ¥åæš¡æ¿
# 代ç å®¡æ¥æ¥å
## 审æ¥èåŽ
- **ç®åœ**: <path>
- **æä»¶æ°**: <count>
- **代ç è¡æ°**: <lines>
## åç°çé®é¢
### P0 - å¿
须修å€
| # | æä»¶ | é®é¢ | æè¿° |
|---|------|------|------|
| 1 | `src/services/user.ts` | äžåžç±» | UserService è¶
è¿ 800 è¡ïŒå
å« 5 ç§è莣 |
| 2 | `src/utils/helper.ts` | éå€ä»£ç | processData åœæ°åš 4 倿çžäŒŒå®ç° |
### P1 - 建议修å€
| # | æä»¶ | é®é¢ | æè¿° |
|---|------|------|------|
| 1 | `src/api/handler.ts:45` | è¿é¿åœæ° | handleRequest åœæ° 78 è¡ |
| 2 | `src/models/order.ts:120` | è¿æ·±åµå¥ | validateOrder åµå¥ 4 å± |
### P2 - å¯éä¿®å€
| # | æä»¶ | é®é¢ | æè¿° |
|---|------|------|------|
| 1 | `src/services/payment.ts` | ç¹æ§äŸæ | é¢ç¹è®¿é® Order å¯¹è±¡å±æ§ |
## 建议éæé¡ºåº
1. [ ] UserService æåïŒP0ïŒåœ±åèåŽå€§ïŒ
2. [ ] æ¶é€ processData éå€ïŒP0ïŒå€å€åŒçšïŒ
3. [ ] handleRequest æåïŒP1ïŒ
4. [ ] validateOrder ç®åïŒP1ïŒ
## é¢è®¡åœ±å
- æ¶åæä»¶: 12
- å¯èœåœ±åçæµè¯: 45
- é£é©è¯äŒ°: äž
1.3 çšæ·ç¡®è®€
äœ¿çš AskUserQuestion è®©çšæ·ç¡®è®€éæèåŽïŒ
åç°ä»¥äžé®é¢ïŒè¯·éæ©èŠéæçèåŽïŒ
1. **å
šéšéæ** - æäŒå
çº§äŸæ¬¡å€çææé®é¢
2. **ä»
P0** - åªå€çå¿
须修å€çé®é¢
3. **æå®èåŽ** - æåšéæ©èŠéæç项ç®
4. **æäžéæ** - ä»
ä¿åå®¡æ¥æ¥å
Step 2: è¯äŒ°æµè¯ç¶æ
2.1 æ£æµæµè¯èŠçç
npm run test:coverage
2.2 æµè¯ç¶æåç±»
| ç¶æ | æ¡ä»¶ | äžäžæ¥ |
|---|
| å
å | è¡èŠç â¥80%ïŒåæ¯èŠç â¥80% | â Step 4 æ§è¡éæ |
| äžè¶³ | ææµè¯äœèŠçç <80% | â Step 3 è¡¥å
æµè¯ |
| æ æµè¯ | ç®æ èåŽæ æµè¯æä»¶ | â Step 3 æ°å»ºæµè¯ |
| äžå¯æµè¯ | 代ç ç»æå¯ŒèŽæ æ³çŒåæææµè¯ | â Step 5 éåæµçš |
2.3 坿µè¯æ§è¯äŒ°
代ç 被å€å®äžº"äžå¯æµè¯"çæ¡ä»¶ïŒ
äžå¯æµè¯ç代ç ç¹åŸïŒ
- [ ] 硬çŒç å€éšäŸèµïŒæ°æ®åºãAPIãæä»¶ç³»ç»ïŒ
- [ ] æ æ³æ³šå
¥äŸèµïŒæé åœæ°äž new å
·äœç±»ïŒ
- [ ] äžå¡é»èŸäž IO æ··åïŒæ æ³å犻
- [ ] å
šå±ç¶æäŸèµ
- [ ] æ æ³ Mock çç¬¬äžæ¹åºæ·±åºŠèŠå
åŠææ»¡è¶³ 2 äžªä»¥äžæ¡ä»¶ïŒæ 记䞺"äžå¯æµè¯"
Step 3: è¡¥å
/æ°å»ºæµè¯
éèŠ: çŒåæµè¯æ¶å¿
é¡»éµåŸª /testing-guide ç莚é纊æ
3.1 æµè¯çç¥
åè /testing-guide æµè¯èŽšééåå¡ïŒ
æµè¯èŽšéèŠæ±ïŒä»åºç¡å°é«çº§ïŒ:
Level 1: èŠçç - è¡/忝 ⥠80%
Level 2: æèšèŽšé - çŠæ¢åŒ±æèšïŒéªè¯å
·äœåŒ
Level 3: æµè¯æææ§ - ååŒåŸå ⥠80%ïŒæšèïŒ
3.2 æµè¯çŒåè§è
éµåŸª /testing-guide ç纊æïŒ
- æµè¯äŸæ®æ¥èªéæ±ïŒäžæ¯ä»£ç
- æ¯äžªæµè¯å¿
é¡»æå
·äœæèšïŒçŠæ¢ toBeDefined, toBeTruthy ç匱æèšïŒ
- æµè¯åç§°æè¿°é¢æè¡äžºïŒ
[æ¹æ³] åºè¯¥ [è¡äžº] åœ [æ¡ä»¶]
- Mock åªçšäºå€éšäŸèµïŒäž Mock å
éšå®ç°
3.3 èŠççéªè¯
npm run test:coverage -- --collectCoverageFrom='<target-path>'
3.4 ååŒæµè¯éªè¯ïŒæšèïŒ
npx stryker run --mutate '<target-path>'
诊ç»çæµè¯çŒåæå¯ŒãMock çç¥ãååŒæµè¯é
眮请åè /testing-guide
Step 4: æ§è¡éæ
4.1 éæåæ£æ¥
4.2 éæçç¥
æ®é代ç éæ
åºçš /code-quality MTE ååïŒ
| é®é¢ | éæææ³ | éªè¯ |
|---|
| è¿é¿åœæ° | æååœæ° | æ¯äžªåœæ° â€50 è¡ |
| è¿å€åæ° | åæ°å¯¹è±¡ | åæ° â€5 䞪 |
| è¿æ·±åµå¥ | æ©è¿åãæååœæ° | åµå¥ â€3 å± |
| éå€ä»£ç | æåå
Œ
±åœæ° | æ éå€å |
| äžåžç±» | æåè莣 | æ¯ç±»åäžè莣 |
UI 代ç éæ
è°çš /ui-skills 纊æïŒ
UI éææ£æ¥ç¹ïŒ
- [ ] äœ¿çš Tailwind CSS é»è®€åŒ
- [ ] 䜿çšå¯è®¿é®ç»ä»¶åè¯ïŒBase UI/Radix/React AriaïŒ
- [ ] åšç»åªäœ¿çš transform/opacity
- [ ] éµåŸª prefers-reduced-motion
- [ ] ç©ºç¶æææç¡®çäžäžæ¥æäœ
4.3 å°æ¥éæåå
æ¯æ¬¡éææ¥éª€ïŒ
1. æ§è¡äžäžªéææäœ
2. è¿è¡æµè¯
3. æµè¯éè¿ â ç»§ç»äžäžæ¥
4. æµè¯å€±èŽ¥ â åæ»ïŒéæ°åæ
5. æäº€ïŒå¯éïŒæšèé¢ç¹æäº€ïŒ
4.4 éæè¿åºŠè¿œèžª
äœ¿çš TodoWrite 远螪éæè¿åºŠïŒ
éæä»»å¡ç€ºäŸïŒ
1. [x] æå validateUser åœæ°
2. [x] å° UserService æå䞺 UserQueryService
3. [ ] å° UserService æå䞺 UserCommandService
4. [ ] æ¶é€ processData éå€
Step 5: éåæµçš
åœä»£ç 被å€å®äžº"äžå¯æµè¯"æ¶ïŒè¿å
¥éåæµçšã
5.1 è§Šåæ¡ä»¶
è¿å
¥éåæµçšçæ¡ä»¶ïŒ
- 代ç 被è¯äŒ°äžº"äžå¯æµè¯"
- éæåæµè¯ä»æ æ³èŸŸå° 80% èŠçç
- çšæ·æç¡®èŠæ±éå
5.2 éåæµçš
1. è°çš /devdocs-retrofit
â
âââ æš¡åŒïŒä»£ç éåæšå¯Œ
âââ èŸåºïŒéæ±ææ¡£ãç³»ç»è®Ÿè®¡
â
âŒ
2. åºäº DevDocs ææ¡£éæ°å®ç°
â
âââ éµåŸª /code-quality MTE åå
âââ UI éšåéµåŸª /ui-skills
â
âŒ
3. çŒåæµè¯ïŒæµè¯å
è¡ïŒ
â
âââ èŠçç ⥠80%
â
âŒ
4. å®ç°æ°ä»£ç
â
âŒ
5. è¿ç§»éªè¯
â
âââ åèœå¯¹æ¯æµè¯
âââ æ§èœå¯¹æ¯ïŒåŠéçšïŒ
âââ ååœæµè¯
5.3 éåææ¡£
éåæ¶çæçææ¡£ïŒ
docs/devdocs/
âââ 01-requirements.md # ä»ä»£ç éåçéæ±
âââ 02-system-design.md # æ°è®Ÿè®¡ïŒå¯æµè¯ïŒ
âââ 03-test-cases.md # æµè¯æ¹æ¡
âââ 05-refactor-rewrite.md # é忥å
Step 6: éªè¯äžæ¥å
6.1 éªè¯æž
å
6.2 éææ¥åæš¡æ¿
# éææ¥å
## æŠè§
- **éæèåŽ**: <scope>
- **éææ¶éŽ**: <timestamp>
- **éæç±»å**: æ®ééæ / éå
## éæåç¶æ
| ææ | åŒ |
|------|-----|
| æä»¶æ° | 5 |
| 代ç è¡æ° | 1,200 |
| æµè¯èŠççïŒè¡ïŒ | 45% |
| æµè¯èŠççïŒåæ¯ïŒ | 38% |
| äž»èŠé®é¢ | äžåžç±»ãè¿é¿åœæ° |
## éæåç¶æ
| ææ | åŒ | åå |
|------|-----|------|
| æä»¶æ° | 8 | +3 |
| 代ç è¡æ° | 980 | -220 |
| æµè¯èŠççïŒè¡ïŒ | 85% | +40% |
| æµè¯èŠççïŒåæ¯ïŒ | 82% | +44% |
## éæå
容
### 已宿
1. [x] UserService æå䞺 UserQueryService + UserCommandService
2. [x] æå validateUserãformatUser åœæ°
3. [x] æ¶é€ processData éå€ä»£ç
4. [x] è¡¥å
åå
æµè¯ 23 䞪
### åæŽæä»¶
| æä»¶ | æäœ | 诎æ |
|------|------|------|
| `src/services/user.ts` | ä¿®æ¹ | æåè莣 |
| `src/services/user-query.ts` | æ°å¢ | æ¥è¯¢æå¡ |
| `src/services/user-command.ts` | æ°å¢ | åœä»€æå¡ |
| `src/utils/user-utils.ts` | æ°å¢ | æåçå·¥å
·åœæ° |
| `tests/services/user.test.ts` | ä¿®æ¹ | è¡¥å
æµè¯ |
## æµè¯æ¥å
Test Suites: 12 passed, 12 total
Tests: 89 passed, 89 total
Coverage:
Lines: 85.2%
Branches: 82.1%
Functions: 88.5%
## é£é©äžæ³šæäºé¡¹
- `UserQueryService` å `UserCommandService` éèŠå嫿³šå
¥
- å `UserService` ä¿ç䞺éšé¢ç±»ïŒåç»å¯éæ¥è¿ç§»è°çšæ¹
## äžäžæ¥å»ºè®®
1. æŽæ°è°çšæ¹ä»£ç ïŒéæ¥äœ¿çšæ°çæå¡ç±»
2. çæ§ç产ç¯å¢ïŒç¡®ä¿è¡äžºäžèŽ
3. èèå é€å UserService éšé¢ç±»
Output
èŸåºæä»¶
docs/devdocs/
âââ 05-refactor-audit.md # 代ç å®¡æ¥æ¥åïŒStep 1ïŒ
âââ 05-refactor-plan.md # éæè®¡åïŒStep 1 确讀åïŒ
âââ 05-refactor-report.md # éææ¥åïŒStep 6ïŒ
âââ 05-refactor-rewrite.md # é忥åïŒåŠéçšïŒ
æä»¶åœåè§å
- æ®ééæïŒ
05-refactor-*.md
- åŠææ¯é对ç¹å®æš¡åïŒ
05-refactor-<module>-*.md
Constraints
èåŽçºŠæ
æµè¯çºŠæ
è¿çšçºŠæ
åäœçºŠæ
ææ¡£çºŠæ
Error Handling
æµè¯å€±èŽ¥
éæåæµè¯å€±èŽ¥ã
å€±èŽ¥çæµè¯:
- UserService.test.ts: validateUser should return false for invalid email
æäœé项:
1. åæ»æ€æ¬¡éææ¥éª€
2. æ¥ç倱莥诊æ
å¹¶ä¿®å€
3. è·³è¿æ€æµè¯ïŒäžæšèïŒ
建议ïŒåæ»å°äžäžäžªéè¿çç¶æïŒéæ°åæéææ¹æ¡ã
èŠççäžè¶³
åœåæµè¯èŠççäžæ»¡è¶³éæèŠæ±ã
ç®æ èåŽ: src/services/user.ts
åœåèŠçç:
- è¡èŠç: 45% (èŠæ± â¥80%)
- 忝èŠç: 38% (èŠæ± â¥80%)
æäœé项:
1. **è¡¥å
æµè¯**ïŒæšèïŒ- 䞺æªèŠç代ç çŒåæµè¯
2. éäœèŠæ± - 以åœåèŠççåŒå§éæïŒé£é©èŸé«ïŒ
3. æ 记䞺äžå¯æµè¯ - è¿å
¥éåæµçš
代ç äžå¯æµè¯
ç®æ 代ç 被è¯äŒ°äžº"äžå¯æµè¯"ã
åå :
- [x] 硬çŒç æ°æ®åºè¿æ¥
- [x] äžå¡é»èŸäž IO æ··å
- [ ] å
šå±ç¶æäŸèµ
建议è¿å
¥éåæµçš:
1. äœ¿çš /devdocs-retrofit éååæä»£ç
2. çæéæ±åè®Ÿè®¡ææ¡£
3. æç
§å¯æµè¯çè®Ÿè®¡éæ°å®ç°
æ¯åŠè¿å
¥éåæµçšïŒ
Integration with DevDocs
åš DevDocs æµçšäžçäœçœ®
DevDocs å·¥äœæµïŒå«éæïŒ:
æ°é¡¹ç®:
/devdocs-requirements â /devdocs-system-design â /devdocs-test-cases â /devdocs-dev-tasks
â
âŒ
åŒåå®ç°
ââââââââââŒâââââââââ
⌠⌠âŒ
/code-quality /ui-skills /refactor
â
å·²æé¡¹ç®: â
/devdocs-retrofit âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â (äžå¯æµè¯æ¶)
âŒ
æ ååææ¡£ â éæ°å®ç°
äžå
¶ä» Skills çè°çšå
³ç³»
/refactor
â
âââ 代ç å®¡æ¥ â /code-quality (MTE åå)
â
âââ UI éæ â /ui-skills (UI 纊æ)
â
âââ äžå¯æµè¯ â /devdocs-retrofit (éååæ)
â â
â âââ /devdocs-requirements
â âââ /devdocs-system-design
â âââ /devdocs-test-cases
â
âââ æµè¯çŒå â /devdocs-test-cases (æµè¯çç¥åè)