commit-review
npx skills add https://github.com/wvlvik/zan-skills --skill commit-review
Agent 安装分布
Skill 文档
微信å°ç¨åºåçå¼åä»£ç æäº¤è¯å®¡
è¿ä¸ªæè½ç¨äºå¨ä»£ç æäº¤åè¿è¡å ¨é¢çæ¶æå代ç è´¨éè¯å®¡ï¼ç¡®ä¿ç¬¦å项ç®çå ³é®çº¦æåæä½³å®è·µã
使¶ä½¿ç¨
å¨ä»¥ä¸åºæ¯ä½¿ç¨æ¤æè½ï¼
- åå¤æäº¤ä»£ç åï¼git commit ä¹åï¼
- 代ç å®¡æ¥æ¶
- ç¨æ·æç¡®è¦æ±è¯å®¡ä»£ç æ¶
- å ³é®è¯ï¼review, è¯å®¡, æ£æ¥, commit, æäº¤
è¯å®¡æ£æ¥æ¸ å
ð´ å ³é®æ¶æçº¦æï¼å¿ é¡»éµå®ï¼
1. Runtime 模åå¤é¨å
æå ³é®çæ¶æçº¦æ – runtime 模åå¿ é¡»ä¿æå¤é¨å¼ç¨ï¼ç»ä¸è½è¢«æå ã
æ£æ¥é¡¹ï¼
- ææ
import ... from 'runtime'æimport ... from 'runtime/...'çå¼ç¨æ¯å¦æ£ç¡® - vite.config.ts 䏿¯å¦æ£ç¡®é ç½®äº runtime å¤é¨å
- 没æå°è¯ä¿®æ¹ runtime çå¤é¨åé ç½®
- 没æå¨ optimizeDeps.include ä¸å å« runtime
2. ä¾èµå®è£ è§å
æææ°ä¾èµå¿ é¡»å®è£ 为 devDependencies
æ£æ¥é¡¹ï¼
- package.json 䏿¯å¦ææ°å¢ç dependenciesï¼åºè¯¥ä¸ºç©ºæåªæå¿ è¦çè¿è¡æ¶ä¾èµï¼
- æææ°å®è£
çå
æ¯å¦ä½¿ç¨äº
pnpm i -Då½ä»¤
æ£ç¡®åæ³ï¼
# â
æ£ç¡®
pnpm i -D package-name
# â é误
pnpm i package-name
3. TypeScript 强å¶ä½¿ç¨
ææé»è¾æä»¶å¿ é¡»ä½¿ç¨ TypeScript (.ts)ï¼ç¦æ¢ä½¿ç¨ .js
æ£æ¥é¡¹ï¼
- æ°å¢æä¿®æ¹ç页é¢/ç»ä»¶æ¯å¦ä½¿ç¨ .ts æä»¶
- åºæ¬ç±»åæ£æ¥ï¼ç¡®ä¿ç±»åæ£ç¡®ï¼ç¹å«æ³¨æç»ä»¶propså彿°åæ°ç±»åä¸è½ä½¿ç¨any
- 没æå建æ°ç .js æä»¶ï¼é¤éæ¯é ç½®æä»¶ï¼
- ç±»åå®ä¹æ¯å¦å®æ´
æä»¶ç»æï¼
pages/page-name/
âââ page-name.ts â
ä½¿ç¨ TypeScript
âââ page-name.json
âââ page-name.wxml
components/comp-name/
âââ comp-name.ts â
ä½¿ç¨ TypeScript
âââ comp-name.json
âââ comp-name.wxml
4. Tailwind CSS 强å¶ä½¿ç¨
æææ ·å¼å¿ é¡»ä½¿ç¨ Tailwind CSSï¼ç¦æ¢å建 .wxss æä»¶
æ£æ¥é¡¹ï¼
- 没æå建æ°ç .wxss æä»¶
- æææ ·å¼é½å¨ .wxml ä¸ä½¿ç¨ Tailwind ç±»å
- 使ç¨äºæ£ç¡®ç rpx åä½ï¼Tailwind ä¼èªå¨è½¬æ¢ rem 为 rpxï¼
æ£ç¡®åæ³ï¼
<!-- â
æ£ç¡®ï¼ä½¿ç¨ Tailwind CSS -->
<view class="flex items-center justify-between px-4 py-2 bg-white rounded-lg">
<text class="text-base font-medium text-gray-900">æ é¢</text>
</view>
<!-- â é误ï¼å建 .wxss æä»¶ -->
ð¡ ç»ä»¶å¼åè§è
5. Component é ç½®
ææç»ä»¶å¿ 须设置æ£ç¡®ç styleIsolation
æ£æ¥é¡¹ï¼
- ç»ä»¶ç .json æä»¶ä¸æ¯å¦å
å«
"styleIsolation": "apply-shared" - ç»ä»¶æ¯å¦æ£ç¡®å£°æä¸º
"component": true
æ£ç¡®é ç½®ï¼
{
"component": true,
"styleIsolation": "apply-shared",
"usingComponents": {}
}
ð¢ æ§è½æä½³å®è·µ
6. setData ä¼å
ä½¿ç¨æ°æ®è·¯å¾åæ¹éæ´æ°
æ£æ¥é¡¹ï¼
- æ¯å¦ä½¿ç¨äºæ°æ®è·¯å¾æ´æ°ï¼
this.setData({ 'list[0].text': 'new' }) - æ¯å¦åå¹¶äºå¤ä¸ª setData è°ç¨
- 没æå¨å¾ªç¯ä¸è°ç¨ setData
ä¼å示ä¾ï¼
// â é误ï¼å¤æ¬¡è°ç¨
this.setData({ name: 'John' })
this.setData({ age: 25 })
// â
æ£ç¡®ï¼åå¹¶è°ç¨
this.setData({
name: 'John',
age: 25
})
// â
æ£ç¡®ï¼ä½¿ç¨æ°æ®è·¯å¾
this.setData({ 'list[0].text': 'new' })
7. Component vs Page
ä¼å ä½¿ç¨ Component() èé Page()
æ£æ¥é¡¹ï¼
- æ°é¡µé¢æ¯å¦ä½¿ç¨ Component() æé å¨
- åªå¨å¿ è¦æ¶ä½¿ç¨ Page()
æ¨èåæ³ï¼
// â
æ¨èï¼ä½¿ç¨ Component
Component({
data: {},
methods: {}
})
// â ï¸ ä»
å¨å¿
è¦æ¶ä½¿ç¨ Page
Page({
data: {},
onLoad() {}
})
ðµ 常è§é®é¢æ£æ¥
8. iOS æ¥æè§£æ
iOS 䏿¯æ ‘YYYY-MM-DD’ æ ¼å¼
æ£æ¥é¡¹ï¼
- æ¥æå符串æ¯å¦ä½¿ç¨
.replace(/-/g, '/')å¤ç
æ£ç¡®åæ³ï¼
// â é误ï¼iOS ä¼è§£æå¤±è´¥
new Date('2024-01-01')
// â
æ£ç¡®ï¼å
¼å®¹ iOS
new Date('2024-01-01'.replace(/-/g, '/'))
10. 徿 使ç¨è§è
å¿ é¡»ä½¿ç¨ iconfontï¼ç¦æ¢ä½¿ç¨å¾çæä»¶
æ£æ¥é¡¹ï¼
- 徿 æ¯å¦ä½¿ç¨
<text class="icon icon-xxx"></text>æ ¼å¼ - 没æä¸ºå¾æ å建 .png/.jpg çå¾çæä»¶
æ£ç¡®åæ³ï¼
<!-- â
æ£ç¡®ï¼ä½¿ç¨ iconfont -->
<text class="icon icon-arrow-right text-gray-400"></text>
<!-- â é误ï¼ä½¿ç¨å¾ç -->
<image src="/images/arrow.png"></image>
ð¦ æå»ºååå¸
11. æå»ºäº§ç©æ£æ¥
ç¡®ä¿ä¸ä¸ªè¾åºç®å½çæ£ç¡®æ§
æ£æ¥é¡¹ï¼
- dist/ – 主æå»ºè¾åºï¼å å« miniprogram_npmï¼
- dist_miniprogram/ – NPM å ååï¼æé¤ pagesãapp.jsãminiprogram_npmï¼
- dist_plugin/ – æä»¶å ï¼å å« plugin.jsonï¼
12. æä»¶åå¸åå¤
åå¸åå¿ é¡»æ¸ ç dist ç®å½
æ£æ¥é¡¹ï¼
- æ¯å¦æ´æ°äº project.config.json ä¸ç appid
- æ¯å¦æ´æ°äº miniprogram/app.json ä¸ç provider
- dist/app.json æ¯å¦æ¿æ¢ä¸ºæä»¶é ç½®
- dist ç®å½æ¯å¦åªä¿çå¿ è¦æä»¶
ð å®å ¨æ£æ¥
13. å®å ¨æ¼æ´
æ£æ¥å¸¸è§å®å ¨é®é¢
æ£æ¥é¡¹ï¼
- 没æå½ä»¤æ³¨å ¥é£é©
- 没æ XSS æ¼æ´ï¼ç¨æ·è¾å ¥æ¯å¦æ£ç¡®è½¬ä¹ï¼
- æ²¡æææä¿¡æ¯æ³é²ï¼API keyãtoken çï¼
ð 代ç è´¨é
14. 代ç ç®æ´æ§
é¿å è¿åº¦å·¥ç¨
æ£æ¥é¡¹ï¼
- æ²¡ææ·»å æªè¢«è¦æ±çåè½
- 没æä¸å¿ è¦çéæ
- 没æä¸ºä¸æ¬¡æ§æä½åå»ºå·¥å ·å½æ°
- æ²¡ææ·»å ä¸å¿ è¦çé误å¤ç
- æ²¡ææ·»å æªä½¿ç¨çç±»åå®ä¹ææ³¨é
15. ååå ¼å®¹æ§
é¿å å ¼å®¹æ§é»å®¢
æ£æ¥é¡¹ï¼
- 没æéå½åæªä½¿ç¨çåé为
_var - 没æä¸ºå é¤çä»£ç æ·»å
// removed注é - 没æéæ°å¯¼åºæªä½¿ç¨çç±»å
- æªä½¿ç¨ç代ç å·²å®å ¨å é¤
è¯å®¡æµç¨
-
读ååæ´æä»¶
git diff --cached --name-only git diff --cached -
éé¡¹æ£æ¥æ¸ å
- æç §ä¸è¿°æ£æ¥æ¸ åé项éªè¯
- æ è®° ð´ å ³é®é®é¢ï¼å¿ 须修å¤ï¼
- æ è®° ð¡ è¦åé®é¢ï¼å»ºè®®ä¿®å¤ï¼
- æ è®° ð¢ ä¼å建议ï¼å¯éï¼
-
çæè¯å®¡æ¥å
- ååºææåç°çé®é¢
- æä¾å ·ä½çä¿®å¤å»ºè®®
- ç»åºä»£ç 示ä¾
-
ä¿®å¤ç¡®è®¤
- 妿æé®é¢ï¼è¦æ±ä¿®å¤å忬¡è¯å®¡
- 妿éè¿ï¼å 许æäº¤
è¯å®¡æ¥å模æ¿
## 代ç è¯å®¡æ¥å
### ð æ¦è§
- åæ´æä»¶æ°ï¼X
- æ°å¢è¡æ°ï¼+X
- å é¤è¡æ°ï¼-X
### ð´ å
³é®é®é¢ï¼å¿
须修å¤ï¼
1. [é®é¢æè¿°]
- æä»¶ï¼path/to/file.ts:è¡å·
- åå ï¼[说æ]
- ä¿®å¤å»ºè®®ï¼[å
·ä½æ¹æ¡]
### ð¡ è¦åé®é¢ï¼å»ºè®®ä¿®å¤ï¼
1. [é®é¢æè¿°]
- æä»¶ï¼path/to/file.ts:è¡å·
- 建议ï¼[ä¼åæ¹æ¡]
### ð¢ ä¼å建议ï¼å¯éï¼
1. [建议æè¿°]
### â
è¯å®¡ç»è®º
- [ ] éè¿ï¼å¯ä»¥æäº¤
- [ ] éè¦ä¿®å¤åéæ°è¯å®¡
使ç¨ç¤ºä¾
# ç¨æ·åå¤æäº¤ä»£ç
git add .
# 触åè¯å®¡
"请è¯å®¡æç代ç "
"review my changes"
"æ£æ¥ä»£ç æ¯å¦ç¬¦åè§è"
注æäºé¡¹
- ä¸¥æ ¼æ§è¡å ³é®çº¦æ – ð´ æ è®°çé®é¢å¿ 须修å¤
- æä¾å ·ä½å»ºè®® – ä¸åªæåºé®é¢ï¼è¿è¦ç»åºè§£å³æ¹æ¡
- å¼ç¨å
·ä½ä½ç½® – 使ç¨
file:lineæ ¼å¼å¼ç¨ä»£ç ä½ç½® - ä¿æå®¢è§ – åºäºè§èè¯å®¡ï¼ä¸å主è§å¤æ
- ä¼å 级æåº – å è§£å³å ³é®é®é¢ï¼åå¤çä¼å建议