Claude-skill-registry bug-fix
Structured bug fixing workflow with root cause analysis and regression prevention. Triggers: BF, 修 bug, fix bug, debug, 除錯, 錯誤, error, 問題, issue, 修復, fix, 故障, fault, 異常, exception, 失敗, failure, 不能用, broken, 壞掉.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/bug-fix" ~/.claude/skills/majiayu000-claude-skill-registry-bug-fix && rm -rf "$T"
manifest:
skills/data/bug-fix/SKILL.mdsource content
Bug 修復工作流
描述
結構化的 Bug 修復流程,包含根因分析和回歸測試。
觸發條件
- 「修 bug」「fix bug」「除錯」
- 「BF: [問題描述]」
🐛 Bug 修復流程
┌─────────────────────────────────────────────────────────────┐ │ Bug Fix Workflow │ ├─────────────────────────────────────────────────────────────┤ │ Step 1: 🔍 重現 (Reproduce) │ │ ├─ 確認重現步驟 │ │ ├─ 收集錯誤訊息/日誌 │ │ └─ 建立最小重現案例 │ ├─────────────────────────────────────────────────────────────┤ │ Step 2: 🎯 定位 (Locate) │ │ ├─ 分析錯誤堆疊 │ │ ├─ 追蹤程式碼路徑 │ │ └─ 識別問題根因 │ ├─────────────────────────────────────────────────────────────┤ │ Step 3: 🧪 測試先行 (Test First) │ │ ├─ 撰寫失敗的測試案例 │ │ ├─ 確認測試能重現問題 │ │ └─ 這將成為回歸測試 │ ├─────────────────────────────────────────────────────────────┤ │ Step 4: 🔧 修復 (Fix) │ │ ├─ 實施修復 │ │ ├─ 最小化變更範圍 │ │ └─ 確認測試通過 │ ├─────────────────────────────────────────────────────────────┤ │ Step 5: ✅ 驗證 (Verify) │ │ ├─ 執行完整測試套件 │ │ ├─ 檢查是否引入新問題 │ │ └─ [code-reviewer] 審查修復 │ ├─────────────────────────────────────────────────────────────┤ │ Step 6: 📝 記錄 (Document) │ │ ├─ 更新 Memory Bank │ │ ├─ 記錄根因分析 │ │ └─ 更新相關文檔 │ └─────────────────────────────────────────────────────────────┘
🚀 使用範例
基本用法
「修 bug:用戶登入時出現 500 錯誤」 AI 執行: 1. 🔍 要求提供錯誤日誌和重現步驟 2. 🎯 分析堆疊追蹤,定位問題 3. 🧪 建立失敗測試案例 4. 🔧 實施修復 5. ✅ 驗證修復 6. 📝 記錄修復過程
帶錯誤訊息
「BF: TypeError: 'NoneType' object is not subscriptable at line 45」 AI 執行: 1. 讀取相關檔案的第 45 行 2. 分析為什麼變數是 None 3. 建立邊界條件測試 4. 加入 None 檢查或修正邏輯
📊 輸出格式
## 🐛 Bug 修復報告 ### 問題描述 用戶登入時出現 500 Internal Server Error ### 根因分析 - **位置**: `src/application/services/auth_service.py:45` - **原因**: 當 user 不存在時,直接存取 `user.password_hash` 導致 NoneType 錯誤 - **類型**: 邊界條件未處理 ### 修復方案 #### 回歸測試(先撰寫) ```python def test_login_with_nonexistent_user(): """登入不存在的用戶應返回 401""" result = auth_service.login("nonexistent@test.com", "password") assert result.is_error assert result.error_code == "USER_NOT_FOUND"
程式碼修復
# Before def login(self, email: str, password: str): user = self.user_repo.find_by_email(email) if not bcrypt.verify(password, user.password_hash): # 💥 NoneType! ... # After def login(self, email: str, password: str): user = self.user_repo.find_by_email(email) if user is None: return Result.failure("USER_NOT_FOUND") if not bcrypt.verify(password, user.password_hash): ...
驗證結果
- ✅ 回歸測試通過
- ✅ 原有測試套件通過 (42/42)
- ✅ 無新增 lint 錯誤
預防措施
- 類似的 None 檢查已在 5 個相關方法中加入
- 建議:啟用 mypy strict mode
--- ## 🎯 根因分類 | 類型 | 描述 | 預防 | |------|------|------| | **邊界條件** | 未處理 null/empty/邊界值 | 加強邊界測試 | | **競爭條件** | 並發存取導致 | 加入鎖定機制 | | **類型錯誤** | 類型不匹配 | 啟用 strict typing | | **邏輯錯誤** | 業務邏輯不正確 | 加強 domain 測試 | | **整合問題** | 外部服務互動 | 加強整合測試 |