File contents 程式碼審查技能
描述
對程式碼進行全面審查,檢查品質、安全性、效能和最佳實踐。
觸發條件
「review 這段程式碼」「CR」「審查」
「檢查程式碼」「看一下」「幫看」
「code review」「PR review」
🔧 操作步驟
Step 1: 確定審查範圍
詢問或推斷審查目標:
特定檔案:read_file("path/to/file.py")
整個目錄:grep_search 取得概覽
特定功能:semantic_search("功能名稱")
最近變更:get_changed_files()
Step 2: 執行靜態分析(Python 專案)
# Ruff - 快速 linter (取代 flake8 + isort + pyupgrade)
uv run ruff check src/ --output-format=concise
# Mypy - 型別檢查
uv run mypy src/ --ignore-missing-imports
# Bandit - 安全性檢查
uv run bandit -r src/ -ll
# Vulture - 死碼偵測
uv run vulture src/ --min-confidence 80
Step 3: 審查程式碼品質
檢查項目
標準
工具輔助
命名清晰度
名稱應描述用途
人工審查
函數長度
< 50 行
grep_search
類別大小
< 300 行
grep_search
複雜度
McCabe < 10
ruff --select=C901
DRY 原則
無重複程式碼
semantic_search
SOLID 原則
單一職責等
人工審查
Step 4: 審查安全性
風險類型
檢查方式
嚴重程度
SQL 注入
搜尋 raw SQL
🔴 Critical
XSS
搜尋未轉義輸出
🔴 Critical
硬編碼密碼
grep "password|secret|key"
🔴 Critical
路徑遍歷
搜尋未驗證路徑
🟠 High
日誌洩漏
搜尋敏感資料輸出
🟡 Medium
Step 5: 審查效能
問題類型
偵測方式
N+1 查詢
搜尋迴圈內的 DB 呼叫
無謂迴圈
審查巢狀迴圈
記憶體洩漏
檢查資源釋放
阻塞操作
審查 I/O 操作
Step 6: 審查 DDD 架構
參考 ddd-architect 規則:
Domain 層是否有外部依賴?
Repository Interface 是否在 Domain 層?
Application 層是否過度膨脹?
Step 7: 產生審查報告
📊 審查報告格式
# 程式碼審查報告
📁 審查範圍:`src/domain/`, `src/application/`
📅 日期:2026-01-15
👤 審查者:AI Assistant
---
## 📈 總覽
| 指標 | 分數 | 說明 |
| ---- | ---- | ---- |
| 品質 | 8/10 | 命名清晰,部分函數過長 |
| 安全 | 9/10 | 無明顯漏洞 |
| 效能 | 7/10 | 存在 N+1 查詢風險 |
| 架構 | 8/10 | 符合 DDD,但有小違規 |
---
## ✅ 優點
1. **清晰的領域模型**:User entity 封裝良好
2. **完整的錯誤處理**:使用自定義例外
3. **良好的測試覆蓋**:核心邏輯有單元測試
---
## ⚠️ 問題發現
### 🔴 Critical (必須修復)
#### 1. SQL 注入風險
- **位置**:[user_repository.py](src/infrastructure/repositories/user_repository.py#L45)
- **問題**:使用字串拼接建立 SQL
- **建議**:使用參數化查詢
```python
# ❌ 現有
query = f"SELECT * FROM users WHERE name = '{name}'"
# ✅ 建議
query = "SELECT * FROM users WHERE name = ?"
cursor.execute(query, (name,))
🟠 High (應該修復)
2. 函數過長
位置 :auth_service.py
問題 :authenticate() 函數 65 行
建議 :拆分為多個私有方法
🟡 Medium (建議改進)
3. 缺少型別標註
📋 改進清單
---
## 🔄 與其他 Skills 整合
| Skill | 整合方式 |
| ----- | -------- |
| `code-refactor` | 發現問題後調用進行重構 |
| `security-reviewer` | 深入安全審查時調用 |
| `test-generator` | 發現測試不足時調用 |
| `ddd-architect` | 架構違規時參考 |
---
## ⚠️ 注意事項
1. **避免過度批評**:指出問題同時肯定優點
2. **提供具體建議**:不只說「這裡有問題」,要說「建議這樣改」
3. **標註嚴重程度**:區分 Critical/High/Medium/Low
4. **考慮上下文**:原型專案和生產專案標準不同
5. **可操作性**:每個問題應有明確的修復方向
---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/u9401066) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-14 -->
1 --- 2 name: u9401066-anesthesia-exam-code-reviewer 3 description: 程式碼審查技能 4 --- 5 6 # 程式碼審查技能 7 8 ## 描述 9 10 對程式碼進行全面審查,檢查品質、安全性、效能和最佳實踐。 11 12 ## 觸發條件 13 14 - 「review 這段程式碼」「CR」「審查」 15 - 「檢查程式碼」「看一下」「幫看」 16 - 「code review」「PR review」 17 18 --- 19 20 ## 🔧 操作步驟 21 22 ### Step 1: 確定審查範圍 23 24 詢問或推斷審查目標: 25 - 特定檔案:`read_file("path/to/file.py")` 26 - 整個目錄:`grep_search` 取得概覽 27 - 特定功能:`semantic_search("功能名稱")` 28 - 最近變更:`get_changed_files()` 29 30 ### Step 2: 執行靜態分析(Python 專案) 31 32 ```powershell 33 # Ruff - 快速 linter (取代 flake8 + isort + pyupgrade) 34 uv run ruff check src/ --output-format=concise 35 36 # Mypy - 型別檢查 37 uv run mypy src/ --ignore-missing-imports 38 39 # Bandit - 安全性檢查 40 uv run bandit -r src/ -ll 41 42 # Vulture - 死碼偵測 43 uv run vulture src/ --min-confidence 80 44 ``` 45 46 ### Step 3: 審查程式碼品質 47 48 | 檢查項目 | 標準 | 工具輔助 | 49 | -------- | ---- | -------- | 50 | 命名清晰度 | 名稱應描述用途 | 人工審查 | 51 | 函數長度 | < 50 行 | grep_search | 52 | 類別大小 | < 300 行 | grep_search | 53 | 複雜度 | McCabe < 10 | ruff --select=C901 | 54 | DRY 原則 | 無重複程式碼 | semantic_search | 55 | SOLID 原則 | 單一職責等 | 人工審查 | 56 57 ### Step 4: 審查安全性 58 59 | 風險類型 | 檢查方式 | 嚴重程度 | 60 | -------- | -------- | -------- | 61 | SQL 注入 | 搜尋 raw SQL | 🔴 Critical | 62 | XSS | 搜尋未轉義輸出 | 🔴 Critical | 63 | 硬編碼密碼 | grep "password\|secret\|key" | 🔴 Critical | 64 | 路徑遍歷 | 搜尋未驗證路徑 | 🟠 High | 65 | 日誌洩漏 | 搜尋敏感資料輸出 | 🟡 Medium | 66 67 ### Step 5: 審查效能 68 69 | 問題類型 | 偵測方式 | 70 | -------- | -------- | 71 | N+1 查詢 | 搜尋迴圈內的 DB 呼叫 | 72 | 無謂迴圈 | 審查巢狀迴圈 | 73 | 記憶體洩漏 | 檢查資源釋放 | 74 | 阻塞操作 | 審查 I/O 操作 | 75 76 ### Step 6: 審查 DDD 架構 77 78 參考 `ddd-architect` 規則: 79 - Domain 層是否有外部依賴? 80 - Repository Interface 是否在 Domain 層? 81 - Application 層是否過度膨脹? 82 83 ### Step 7: 產生審查報告 84 85 --- 86 87 ## 📊 審查報告格式 88 89 ```markdown 90 # 程式碼審查報告 91 92 📁 審查範圍:`src/domain/`, `src/application/` 93 📅 日期:2026-01-15 94 👤 審查者:AI Assistant 95 96 --- 97 98 ## 📈 總覽 99 100 | 指標 | 分數 | 說明 | 101 | ---- | ---- | ---- | 102 | 品質 | 8/10 | 命名清晰,部分函數過長 | 103 | 安全 | 9/10 | 無明顯漏洞 | 104 | 效能 | 7/10 | 存在 N+1 查詢風險 | 105 | 架構 | 8/10 | 符合 DDD,但有小違規 | 106 107 --- 108 109 ## ✅ 優點 110 111 1. **清晰的領域模型**:User entity 封裝良好 112 2. **完整的錯誤處理**:使用自定義例外 113 3. **良好的測試覆蓋**:核心邏輯有單元測試 114 115 --- 116 117 ## ⚠️ 問題發現 118 119 ### 🔴 Critical (必須修復) 120 121 #### 1. SQL 注入風險 122 - **位置**:[user_repository.py](src/infrastructure/repositories/user_repository.py#L45) 123 - **問題**:使用字串拼接建立 SQL 124 - **建議**:使用參數化查詢 125 126 ```python 127 # ❌ 現有 128 query = f"SELECT * FROM users WHERE name = '{name}'" 129 130 # ✅ 建議 131 query = "SELECT * FROM users WHERE name = ?" 132 cursor.execute(query, (name,)) 133 ``` 134 135 ### 🟠 High (應該修復) 136 137 #### 2. 函數過長 138 - **位置**:[auth_service.py](src/application/services/auth_service.py#L20-L85) 139 - **問題**:`authenticate()` 函數 65 行 140 - **建議**:拆分為多個私有方法 141 142 ### 🟡 Medium (建議改進) 143 144 #### 3. 缺少型別標註 145 - **位置**:多處 146 - **建議**:為公開 API 新增型別標註 147 148 --- 149 150 ## 📋 改進清單 151 152 - [ ] 修復 SQL 注入問題 (Critical) 153 - [ ] 重構 authenticate() 函數 (High) 154 - [ ] 新增型別標註 (Medium) 155 - [ ] 補充單元測試 (Low) 156 ``` 157 158 --- 159 160 ## 🔄 與其他 Skills 整合 161 162 | Skill | 整合方式 | 163 | ----- | -------- | 164 | `code-refactor` | 發現問題後調用進行重構 | 165 | `security-reviewer` | 深入安全審查時調用 | 166 | `test-generator` | 發現測試不足時調用 | 167 | `ddd-architect` | 架構違規時參考 | 168 169 --- 170 171 ## ⚠️ 注意事項 172 173 1. **避免過度批評**:指出問題同時肯定優點 174 2. **提供具體建議**:不只說「這裡有問題」,要說「建議這樣改」 175 3. **標註嚴重程度**:區分 Critical/High/Medium/Low 176 4. **考慮上下文**:原型專案和生產專案標準不同 177 5. **可操作性**:每個問題應有明確的修復方向 178 179 --- 180 > Converted and distributed by [TomeVault](https://tomevault.io/claim/u9401066) — claim your Tome and manage your conversions. 181 <!-- tomevault:4.0:skill_md:2026-04-14 -->
tomevault-io/skills-registry/tree/main/u9401066--anesthesia-exam--code-reviewer commit d9c159d7d2
Frequently asked questions How do I install the U9401066 Anesthesia Exam Code Reviewer skill? Run npx skillmds@latest add tomevault-io/u9401066-anesthesia-exam-code-reviewer in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the U9401066 Anesthesia Exam Code Reviewer skill do? 程式碼審查技能 It is listed under Coding & Dev Tools on SkillMD.
Is U9401066 Anesthesia Exam Code Reviewer safe to use? This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with U9401066 Anesthesia Exam Code Reviewer? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is U9401066 Anesthesia Exam Code Reviewer free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published U9401066 Anesthesia Exam Code Reviewer? tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.