with one click
bug-close
// 修復 Bug 後,從 Git diff 自動擷取修復細節並更新 Notion 頁面。當使用者提到「結案」、「關閉 bug」、「bug 完成」、「bug-close」、「修完了」時觸發此 Skill。
// 修復 Bug 後,從 Git diff 自動擷取修復細節並更新 Notion 頁面。當使用者提到「結案」、「關閉 bug」、「bug 完成」、「bug-close」、「修完了」時觸發此 Skill。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | bug-close |
| description | 修復 Bug 後,從 Git diff 自動擷取修復細節並更新 Notion 頁面。當使用者提到「結案」、「關閉 bug」、「bug 完成」、「bug-close」、「修完了」時觸發此 Skill。 |
修復 Bug 並 commit 後,從 Git 自動擷取修改資訊,更新 Notion「任務追蹤工具」的 Bug 頁面,並在「Bug 知識庫」同步建立精簡條目。
執行前依序檢查以下路徑,讀取第一個找到的設定檔:
~/.claude-company/bug-workflow-config.md(公司環境)~/.claude/bug-workflow-config.md(個人環境)若都不存在,提示使用者先執行 /bug-setup。
/bug-start 建立 Bug 條目(Notion「任務追蹤工具」中有狀態為「進行中」的 🐞 錯誤條目)前置檢查:參照
references/prerequisites.md執行完整前置檢查(CLAUDE.md + 設定檔 + 專案註冊)。
依序執行以下指令:
# 當前分支
git branch --show-current
# 最近 10 筆 commit(供使用者選擇範圍)
git log --oneline -10
# 預設取最近 1 個 commit 的變更
git diff HEAD~1..HEAD --stat
# 完整 diff(用於摘要化)
git diff HEAD~1..HEAD
若使用者指定 commit 範圍(如 HEAD~3..HEAD),使用指定的範圍。
結案前,若偵測到修復在 feature branch 上進行,引導使用者 merge 回開發分支。
同時滿足以下三項才觸發:
git branch --show-current = Bug Notion 頁面的「修復分支」欄位dev_branch、uat_branch、prod_branchprojects/{repo-id}.md 讀取 dev_branch 欄位
dev_branch取得路徑:先嘗試~/.claude-company/feature-workflow/projects/{repo-id}.md,再嘗試~/.claude/feature-workflow/projects/{repo-id}.md。
📋 結案前分支合併
當前在 feature/qa-log-user-id-statistics
目標 DEV 分支:MOM01P2401_DEV
要合併回 DEV 嗎?
1. 是,merge --no-ff 並繼續結案
2. 否,我稍後自己合併
3. 已經合併過了,直接結案
git status --porcelain
git checkout {dev_branch}git pull(若有 remote tracking)git merge {feature_branch} --no-ff
/bug-closegit push origin {dev_branch}直接進入原有的結案流程。
dev_branch 未設定 → 顯示簡化提示:
💡 目前在 feature branch,結案後記得 merge 回開發分支。
若要啟用自動 merge 引導,請在專案設定中新增 dev_branch。
搜尋 Notion「任務追蹤工具」(Data Source ID 見設定檔)中符合條件的條目:
使用 notion-search 搜尋:
同時取得 Git Repo 識別碼(從 git remote get-url origin 解析),用於輔助篩選同一專案下的 Bug。
優先匹配邏輯:
/bug-start 建立結案前執行 4 項檢查,確保修復品質達標:
| # | 檢查項 | 驗證方式 | 失敗處理 |
|---|---|---|---|
| C1 | 根因分析已填寫 | Notion 頁面「根因分析」區塊非空 | WARN:提醒補填,允許繼續但狀態強制為「測試中」 |
| C2 | 修復 commit 存在 | git log --oneline -10 中有相關 commit | BLOCK:必須先 commit |
| C3 | 迴歸測試存在 | grep test 目錄中含 "Regression: {bug 相關關鍵字}" | WARN:建議用 /bug-fix 產出 |
| C4 | 驗證項目至少一項勾選 | Notion 頁面 checkbox 狀態 | WARN:提醒驗證 |
驗證結果顯示:
退出驗證:
✅ C1 根因分析已填寫
✅ C2 修復 commit 存在(abc1234)
⚠️ C3 無迴歸測試
⚠️ C4 驗證項目未勾選
結論:可結案,建議處理 C3 和 C4
若 C1 為 WARN → 目標狀態選項中移除「已完成」,只能選「測試中」。
詢問使用者(若未在初始輸入中提供):
邏輯錯誤 / 資料異常 / 設定問題 / 第三方API / 效能 / 權限 / 前端UI測試中(預設)或 已完成根據 git diff 自動產出以下內容:
修改檔案清單:從 --stat 擷取,格式化為列表
修改說明:根據 diff 內容,以分層架構摘要(如 Java 專案的 Controller / Service / DAO 層)
修改後程式碼:擷取關鍵的程式碼變更片段(不超過 50 行)
使用 notion-update-page 更新條目:
Properties 更新:
| 欄位 | 值 |
|---|---|
| 狀態 | 使用者選擇(預設「測試中」) |
| 根因分類 | 使用者選擇的分類 |
| 修復分支 | 當前 Git branch(若原本為空) |
Content 更新:
使用 update_content 指令,搜尋模板中的空白區塊並填入:
「根因分析」區塊:
「修復方案」區塊:
在「Bug 知識庫」資料庫建立一筆精簡條目(Data Source ID 見設定檔):
| 欄位 | 值 |
|---|---|
| Name | Bug 標題 |
| Tags | 根據 bug 內容自動推測相關標籤 |
| 難易度 | 根據修改檔案數和 diff 行數判斷:≤3 檔案且 ≤50 行 → 普通(2~4h),否則 → 困難(4~6h) |
| 專案資料庫 | 同一專案 |
| 參考連結 | 任務追蹤工具的頁面 URL |
頁面內容為精簡版:
**根因**:{根因說明}
**解法**:{修復摘要,2-3 句話}
**關鍵程式碼**:
(修改前後的關鍵差異)
若設定檔中「Bug 知識庫」ID 為空,則跳過此步驟。
AI 分析本次 bug 的根因、修復和調查過程,判斷是否有可複用的洞察。
| 類型 | 說明 | 範例 |
|---|---|---|
| pattern | 可複用的 bug 模式 | 「此專案的 token 過期 bug 常發生在推播模組」 |
| pitfall | 應避免的陷阱 | 「LINE API 的 503 需要特別處理,不能只處理 401」 |
| architecture | 架構層面的洞察 | 「PushService 和 TokenService 的耦合度太高」 |
| environment | 環境相關的知識 | 「正式環境的 LINE API rate limit 是 100 req/min」 |
寫入 ~/.claude-company/bug-workflow/learnings/{project-slug}.jsonl:
{
"date": "2026-04-24",
"skill": "bug-close",
"bug_title": "推播排程發送失敗",
"root_cause": "LINE API refresh 回傳 503 未處理",
"pattern": "third-party-api",
"type": "pitfall",
"insight": "LINE API 的 refresh token 端點偶爾回傳 503,retry 邏輯必須涵蓋 503 且加入 exponential backoff",
"confidence": 9,
"files": ["PushService.java"],
"notion_url": "https://www.notion.so/xxx"
}
project-slug 來自 Git Repo 識別碼(/ 替換為 -)。每行一筆 JSON(JSONL 格式)。
AI 自動判斷是否有學習價值:
mkdir -p ~/.claude-company/bug-workflow/learnings
若目錄不存在,首次使用時自動建立。
向使用者回傳:
Bug 已結案!後續事項:
{若有 merge} • git push origin {dev_branch} — 推送合併結果
• 驗證完成後請在 Notion 頁面勾選驗證項目
• 若上線後問題復發,可使用 /bug-update reopen 重新開啟
{若 feature branch 不再需要} • git branch -d feature/xxx — 清理分支
update_content 的搜尋模式會匹配失敗。遇到這種情況,改用 replace_content 重寫整個頁面內容(先讀取現有內容合併)。git diff 遇到圖片、Excel 等二進位檔案會顯示 Binary files differ,不要把這些納入「修改後程式碼」區塊。只擷取文字類檔案的 diff。git log --oneline -10 中混有非修復用途的 commit,應先確認正確範圍再擷取 diff,不要盲目用 HEAD~1..HEAD。dev_branch,但 bug-close 是 bug-workflow 的 skill。讀取失敗時顯示簡化提示,不阻擋流程。/bug-close。git push,因為 push 會影響遠端共享狀態,需使用者明確操作。參考 examples/good-closure-report.md 了解理想的結案報告結構和品質。
/bug-setup 完成初始設定replace_content 而非 update_content,先保留原有內容再附加修復資訊/bug-closegit checkout {dev_branch}(git 會自動從 remote tracking 建立本地分支),若失敗則 git fetch && git checkout {dev_branch}