with one click
bug-start
// 在 Notion「任務追蹤工具」建立 Bug 條目並填入標準化模板。當使用者提到「建立 bug」、「記錄 bug」、「bug 通報」、「bug-start」、「開始修 bug」時觸發此 Skill。
// 在 Notion「任務追蹤工具」建立 Bug 條目並填入標準化模板。當使用者提到「建立 bug」、「記錄 bug」、「bug 通報」、「bug-start」、「開始修 bug」時觸發此 Skill。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | bug-start |
| description | 在 Notion「任務追蹤工具」建立 Bug 條目並填入標準化模板。當使用者提到「建立 bug」、「記錄 bug」、「bug 通報」、「bug-start」、「開始修 bug」時觸發此 Skill。 |
在 Notion「任務追蹤工具」資料庫建立一筆 Bug 條目,自動填入標準化頁面模板,並關聯對應專案。
執行前依序檢查以下路徑,讀取第一個找到的設定檔:
~/.claude-company/bug-workflow-config.md(公司環境)~/.claude/bug-workflow-config.md(個人環境)若都不存在,提示使用者先執行 /bug-setup 完成初始設定。
前置檢查:參照
references/prerequisites.md執行完整前置檢查(CLAUDE.md + 設定檔 + 專案註冊)。
使用者會以以下格式觸發:
/bug-start <問題簡述>
從使用者輸入中擷取:
取得 branch 名稱、當前工作目錄與 Git Repo 識別碼:
# 分支名稱
git branch --show-current 2>/dev/null || echo ""
# 當前工作目錄
pwd
# Git 遠端 URL(用於自動對應 Notion 專案)
git remote get-url origin 2>/dev/null || echo ""
Git Repo 識別碼解析規則:
從 git remote get-url origin 取得遠端 URL 後,解析為識別碼:
intumit(公司 GitLab)→ 只取 {group}/{repo},例如 FUB03P2402/PushAPIService{host}/{group}/{repo},例如 github.com/mark22013333/crew.git 後綴,支援 HTTPS / SSH 格式自動專案對應邏輯:
git remote get-url origin 取得 Git 遠端 URLintumit → {group}/{repo},其他 → {host}/{group}/{repo},去除 .git 後綴)若設定檔中無對應,也可用 notion-search 搜尋 Notion「專案資料庫」(Data Source ID 見設定檔),找「Git Repo」欄位與識別碼匹配的專案。
若使用者未在初始輸入中提供以下資訊,依序詢問:
測試 / UAT / 正式高 / 中 / 低使用者可在初始輸入中直接指定,例如:
/bug-start SSO登入找不到使用者 正式 高
在建立 Notion 條目前,自動偵測負責人以填入「負責人」(people 類型)欄位:
git config user.email 2>/dev/null || echo ""
notion-get-users 取得 Notion 工作區使用者列表注意:
notion-get-users回傳的使用者物件包含id、name、person.email等欄位。比對時使用person.email。
使用 notion-create-pages 在「任務追蹤工具」資料庫建立新條目:
Data Source ID:從設定檔的「任務追蹤工具」取得
Properties:
| 欄位 | 值 |
|---|---|
| 任務名稱 | 使用者提供的問題簡述 |
| 任務類型 | ["🐞 錯誤"] |
| 狀態 | 進行中 |
| 優先順序 | 使用者選擇(預設「中」) |
| 環境 | 使用者選擇(預設「正式」) |
| 修復分支 | Git branch 名稱(若有) |
| 專案資料庫 | 關聯的專案頁面 URL |
| 負責人 | 步驟 4 偵測到的 Notion 使用者(若有) |
頁面的 content 使用以下標準模板:
## 🔴 問題描述
- **通報來源**:
- **發生時間**:{當前日期時間}
- **重現步驟**:
1. ...
2. ...
- **預期行為**:
- **實際行為**:
- **錯誤截圖**:
---
## 🔍 調查過程
### 關鍵 Log
### 相關 SQL 查詢
### 初步判斷
---
## 🧠 根因分析
- **問題根因**:
- **問題檔案**:
- **問題程式碼**:
---
## ✅ 修復方案
- **修改檔案清單**:
- **修改說明**:
- **修改後程式碼**:
- **修復 Commit**:
- **修復分支**:
---
## 🧪 驗證
- [ ] 本地測試通過
- [ ] UAT 驗證通過
- [ ] 正式環境確認
- [ ] 通報者確認問題已解決
---
## 📝 經驗教訓
- **學到什麼**:
- **如何預防**:
若使用者在初始輸入中已提供問題描述內容,將其預填入「問題描述」區塊的「實際行為」欄位。
建立 Notion 頁面後,自動收集環境資訊寫入「調查過程」區塊。
最近 commit:
git log --oneline -5
寫入「調查過程 > 最近變更」
當前環境狀態:
git branch --show-current
git status --short
寫入「調查過程 > 環境狀態」
知識庫快速搜尋: 用 bug 標題關鍵字搜尋 Notion Bug 知識庫(Data Source ID 見設定檔) 若有相似案例 → 寫入「調查過程 > 歷史參考」 格式:「[{日期}] {類似 bug 標題} — 根因:{摘要}」
學習快速搜尋:
LEARN_FILE="$HOME/.claude-company/bug-workflow/learnings/{project-slug}.jsonl"
[ -f "$LEARN_FILE" ] && grep -i "<keywords>" "$LEARN_FILE" | tail -3
若有匹配 → 寫入「調查過程 > 歷史學習」
使用 notion-update-page 的 update_content,在「調查過程」區塊寫入:
### [HH:mm] 初始環境快照
**最近 5 筆 commit**:
- abc1234 fix: 修正推播排程的 cron 表達式
- def5678 feat: 新增推播統計 API
- ...
**環境狀態**:
- 分支:{branch}
- 未提交變更:{N} 個檔案
**歷史參考**:
- [{日期}] {類似 bug 標題} — 根因:{摘要}
**歷史學習**:
- {insight}(confidence {N}/10,{date})
任何收集步驟失敗(如知識庫未設定、不在 Git repo 中、學習檔案不存在)都靜默跳過,不影響 bug-start 的主流程。
建立 Bug 條目後,嘗試在同一資料庫中找到相關的 Feature 條目,透過「相關任務」self-relation 建立關聯。
/bug-setup 建立)從 Bug 標題擷取搜尋關鍵字,依優先順序:
SRS[-]?\d+(如 SRS-042、SRS042)→ 最精確,直接搜尋停詞表(從標題中剔除):
使用 API-query-data-source(Data Source ID = 任務追蹤工具)查詢,filter 條件:
{
"filter": {
"and": [
{
"property": "任務類型",
"multi_select": { "contains": "💬 功能要求" }
},
{
"property": "專案資料庫",
"relation": { "contains": "<同專案 page ID>" }
}
]
}
}
「同專案 page ID」來自 Step 5 建立 Bug 時設定的「專案資料庫」relation 目標頁面 ID。
對查詢結果逐一比對:
title.includes(keyword) 比對匹配成功後,使用 notion-update-page 設定 Bug 的「相關任務」欄位:
{
"相關任務": {
"relation": [
{"id": "<feature-page-id>"}
]
}
}
因為 Relation 是 DUAL,Notion 自動在 Feature 端的「被關聯任務」欄位加上反向連結。
/bug-setup 更新 schema若 Step 6.7 成功關聯到 Feature,進一步從 Feature 條目取得原始開發分支,作為 Bug 的修復分支。
使用 notion-fetch 讀取被關聯 Feature 的 Notion 頁面
取得 Feature 的「修復分支」欄位值(如 feature/qa-log-user-id-statistics)
若「修復分支」欄位為空 → 跳過此步驟
驗證該分支是否存在:
git branch -a | grep -F "<branch-name>"
分支存在:
偵測到來源 Feature 的開發分支:feature/qa-log-user-id-statistics
依 Git-flow 規定,Bug 修復應在此分支上進行。
已將「修復分支」設定為此分支。
要切換到此分支嗎?
1. 是,git checkout feature/qa-log-user-id-statistics
2. 否,稍後手動切換
git checkout <branch>分支不存在:
⚠️ 來源 Feature 的分支 feature/qa-log-... 不存在(可能已被刪除或 merge 後清理)
請選擇:
1. 從目前分支建立新的 fix branch
2. 直接在當前分支修復
3. 手動指定分支
hotfix/{slug} 分支向使用者回傳:
Bug 條目已建立!後續可使用:
• /bug-update <內容> — 補充調查資訊(Log、SQL、判斷等)
• /bug-fix — 確認根因後修復
• /bug-close — 修復完成後結案
• /bug-search <關鍵字> — 搜尋過往類似 Bug 的解法
notion-create-pages 的 Relation 欄位需要填入「被關聯頁面的 URL」(如 https://www.notion.so/xxx),不是填專案名稱字串。填錯格式會靜默失敗,條目建立成功但 Relation 為空。["🐞 錯誤"],不是字串 "🐞 錯誤"。用字串格式不會報錯但會建立新的標籤。FUB03P2402/LineBC 和 FUB03P2402/linebc 是不同的識別碼。比對時使用原始大小寫,不做 case-insensitive matching。notion-update-page(patch)而非 notion-create-pages。notion-update-page 的 Relation 欄位使用 {"relation": [{"id": "..."}]} 格式,id 是 page ID 不是 URL。/bug-setup 完成初始設定/bug-setup 更新 schema