refactor
npx skills add https://github.com/ab300819/skills --skill refactor
Agent 安装分布
Skill 文档
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-orchestrator |
åºç¨ UI 约æè§è |
| 代ç è´¨éæ£æ¥ | /code-quality |
åºç¨ MTE åå |
| éè¦ææ¡£å | DevDocs æµç¨ | çæè§èææ¡£ |
| ç¼å/è¡¥å æµè¯ | /testing-guide |
æµè¯è´¨é约æï¼æè¨ãMockãå弿µè¯ï¼ |
| éæåæ´æ°æè¿° | /code-self-describe |
æ´æ°æ¨¡åèªæè¿°ï¼–updateï¼ |
Workflow
1. ç¡®å®éæèå´
â
âââ ç¨æ·æå®èå´ â Step 2
âââ æªæå®èå´ â ç³»ç»å®¡æ¥ â åç°é®é¢ â ç¨æ·ç¡®è®¤èå´
â
â¼
2. è¯ä¼°æµè¯ç¶æ
â
âââ ææµè¯ä¸è¦ç â¥80% â Step 4
âââ ææµè¯ä½è¦ç <80% â Step 3ï¼è¡¥å
æµè¯ï¼
âââ æ æµè¯ â Step 3ï¼æ°å»ºæµè¯ï¼
â
â¼
3. è¡¥å
/æ°å»ºæµè¯
â
âââ 坿µè¯ â ç¼åæµè¯ â ç¡®ä¿è¦çç â¥80% â Step 4
âââ ä¸å¯æµè¯ â æ 记为"éè¦éå" â Step 5
â
â¼
4. æ§è¡éæ
â
âââ æ®é代ç â åºç¨ /code-quality
âââ UI 代ç â åºç¨ /ui-orchestrator
â
â¼
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 æ£æµæµè¯è¦çç
# æ£æµæµè¯æ¡æ¶
# Jest / Vitest / Mocha / pytest ç
# è¿è¡è¦ççæ¥å
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>'
# ç¡®ä¿æ»¡è¶³ï¼
# - è¡è¦çç ⥠80%
# - 忝è¦çç ⥠80%
3.4 å弿µè¯éªè¯ï¼æ¨èï¼
# éªè¯æµè¯æææ§
npx stryker run --mutate '<target-path>'
# ç®æ ï¼åå¼å¾å ⥠80%
详ç»çæµè¯ç¼åæå¯¼ãMock çç¥ãå弿µè¯é 置请åè
/testing-guide
Step 4: æ§è¡éæ
4.1 éæåæ£æ¥
- æµè¯å ¨é¨éè¿
- è¦ççæ»¡è¶³è¦æ±ï¼â¥80%ï¼
- å·²å建 Git 忝æå¯åæ»
4.2 éæçç¥
æ®é代ç éæ
åºç¨ /code-quality MTE ååï¼
| é®é¢ | éæææ³ | éªè¯ |
|---|---|---|
| è¿é¿å½æ° | æå彿° | æ¯ä¸ªå½æ° â¤50 è¡ |
| è¿å¤åæ° | åæ°å¯¹è±¡ | åæ° â¤5 个 |
| è¿æ·±åµå¥ | æ©è¿åãæå彿° | åµå¥ â¤3 å± |
| éå¤ä»£ç | æåå ¬å ±å½æ° | æ éå¤å |
| ä¸å¸ç±» | æåèè´£ | æ¯ç±»åä¸èè´£ |
UI 代ç éæ
è°ç¨ /ui-orchestrator 约æï¼
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-orchestrator
â
â¼
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 éªè¯æ¸ å
- æææµè¯éè¿
- è¦çç ⥠80%ï¼è¡å忝ï¼
- è¦ççæªéä½
- æ æ°å¢ lint è¦å
- åè½è¡ä¸ºä¸å
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
èå´çº¦æ
- å¿ é¡»æç¡®éæèå´åæè½å¼å§
- æªæå®èå´æ¶å¿ é¡»å è¿è¡ä»£ç 审æ¥
- ç¨æ·å¿ 须确认éæèå´
æµè¯çº¦æ
- éæåæµè¯è¦ççå¿ é¡» â¥80%
- æ æµè¯æè¦çä¸è¶³æ¶å¿ é¡»å è¡¥å æµè¯
- 代ç ä¸å¯æµè¯æ¶å¿ é¡»è¿å ¥éåæµç¨
- éæåæææµè¯å¿ é¡»éè¿
- éæåè¦ççä¸å¾éä½
è¿ç¨çº¦æ
- æ¯æ¥éæåå¿ é¡»è¿è¡æµè¯
- ä¸å¾å¨éæä¸æ·»å æ°åè½
- ä½¿ç¨ TodoWrite 追踪éæè¿åº¦
- é¢ç¹æäº¤ï¼ä¿æå¯åæ»
åä½çº¦æ
- UI éæå¿
é¡»åºç¨
/ui-orchestrator约æ - 代ç éæå¿
é¡»åºç¨
/code-qualityMTE åå - éåæ¶å¿
须使ç¨
/devdocs-retrofitçæææ¡£
ææ¡£çº¦æ
- å¿ é¡»çæéææ¥å
- éåæ¶å¿ é¡»çæ DevDocs ææ¡£
- æ¥åå¿ é¡»å å«åå对æ¯
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-orchestrator /refactor
â
å·²æé¡¹ç®: â
/devdocs-retrofit âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â (ä¸å¯æµè¯æ¶)
â¼
æ ååææ¡£ â éæ°å®ç°
ä¸å ¶ä» Skills çè°ç¨å ³ç³»
/refactor
â
âââ 代ç å®¡æ¥ â /code-quality (MTE åå)
â
âââ UI éæ â /ui-orchestrator (UI 约æ)
â
âââ ä¸å¯æµè¯ â /devdocs-retrofit (éååæ)
â â
â âââ /devdocs-requirements
â âââ /devdocs-system-design
â âââ /devdocs-test-cases
â
âââ æµè¯ç¼å â /devdocs-test-cases (æµè¯çç¥åè)
â
âââ éæå®æ â /code-self-describe --update (æ´æ°æ¨¡åèªæè¿°)