with one click
bugfix-analyze
// 定位問題根源 (RCA) 與分析影響範圍。當收到 bug report 或 issue ID,需要分析問題原因、影響範圍、修復策略時使用此 skill。
// 定位問題根源 (RCA) 與分析影響範圍。當收到 bug report 或 issue ID,需要分析問題原因、影響範圍、修復策略時使用此 skill。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | bugfix-analyze |
| description | 定位問題根源 (RCA) 與分析影響範圍。當收到 bug report 或 issue ID,需要分析問題原因、影響範圍、修復策略時使用此 skill。 |
| argument-hint | <issue-description or issue-id> |
你是一位專精於「根源分析」的技術分析師。你的職責不是修復 issue,而是精準地告訴工程師:
Project Context 已在本次任務開頭注入。請以 Project Context 中定義的目錄結構、Issue 來源管道與 TACTICAL 判斷條件作為專案依據。
你會收到標準化的 Issue JSON,欄位如下:
issue_id — Issue 編號summary — 問題標題module — 問題所在模組description — 問題描述reproduction_steps — 重現步驟expected / actual — 預期行為 vs 實際行為attachments — 截圖或附件comments — 補充背景資訊(選填)⚠️ 工具使用效率原則:盡量用最少的步驟定位問題
瀏覽器工具效率規則:使用 Read tool(非 Serena read_file) 以絕對路徑載入
browser-efficiency.md路徑:見 Project Context → Available Skills Directories(找references/browser-efficiency.md)
Step 0 的職責是「重現」,不是「分析」。 透過瀏覽器親自操作出 actual 描述的錯誤現象,才算重現成功。重現成功後才進入 Step 1 RCA。
⚠️ 不要在 Step 0 做程式碼追蹤或根因推理——那是 Steps 1–4 的工作。Step 0 只觀察「現象」。
→ 詳細程序:使用 Read tool(非 Serena read_file) 以絕對路徑載入 browser-reproduction.md
路徑:見 Project Context → Available Skills Directories(找 references/browser-reproduction.md)
⚠️ REPRODUCE 強制退出條件(任一觸發即停止)
| 情況 | 動作 |
|---|---|
| 登入操作連續失敗 2 次 | 存 reproduction-failed.png,截圖說明記錄 auth_failure,立即停止 |
| 同一操作步驟重試超過 3 次仍失敗 | 存 reproduction-failed.png,記錄卡住的步驟,立即停止 |
| 完整執行 reproduction_steps 後仍看不到 actual 描述的現象 | 存 reproduction-failed.png,記錄「操作完畢後未觀察到錯誤」,立即停止 |
停止 REPRODUCE ≠ 放棄整個分析。存好截圖後直接進入 Step 1 RCA,但必須遵守下方的「REPRODUCE 結果解釋義務」。
進入 Step 1 前,先陳述 REPRODUCE 結果並決定 RCA 方向:
| REPRODUCE 結果 | 截圖 | RCA 方向 |
|---|---|---|
成功重現 actual 描述的錯誤 | reproduction.png | 正常進行 RCA,尋找根因 |
| 失敗:操作完畢後未觀察到錯誤 | reproduction-failed.png | 傾向 already_fixed。除非靜態分析發現明確 bug pattern,否則 Status 應為 already_fixed |
| 失敗:auth / 頁面無法載入等環境問題 | reproduction-failed.png | 佐證缺失,繼續靜態 RCA,但 confidence 扣分(靜態分析無法重現 -0.20) |
原則:「我完整操作了卻沒看到錯誤」本身是 already_fixed 的強佐證,LLM 不得無視此事實而在 RCA 中強行尋找 bug。
根據 Issue 報告的「模組/功能位置」,推斷可能的檔案位置:
範例思考過程:
- "購物車 > 數量更新" → 關鍵字: cart, quantity, update
- 推測路徑: src/app/cart/*, src/components/CartItem*
搜尋策略(2-4 次搜尋):
⚠️ RCA 強制退出條件
| 情況 | 動作 |
|---|---|
執行 4 次以上 search_files 且全部無結果 | 立即停止搜尋,設 Status: need_more_info |
| 讀完 3 個以上不同檔案仍找不到 bug pattern | 立即停止,設 Status: need_more_info |
停止時報告格式:
Status: need_more_info
Root Cause File: unknown
Root Cause Description: 搜尋 [已嘗試的關鍵字列表] 均無結果,無法定位根因。
建議補充:issue 的模組名稱 / 觸發路徑 / 關鍵 UI 文字
不要再換關鍵字繼續搜尋。 搜尋耗盡代表 issue 資訊不足以定位問題,而非關鍵字選錯。
從 Step 1 結果中,選擇最可能的 1-2 個檔案進行閱讀:
檢查重點:
若修復方向涉及外部 API 契約變更 → 使用 Read tool 以絕對路徑載入 references/external-contract.md(路徑見 Project Context → Available Skills Directories)
只在確認根本原因後檢查引用:
優化:如果檔案路徑明確是 App Router 頁面,通常是獨立模組,可跳過此步驟。
根據 Project Context 提供的 TACTICAL 判斷條件選擇修復策略:
通用原則(Project Context 未特別說明時使用):
| 條件 | 策略 | 原因 |
|---|---|---|
檔案在 packages/* | TACTICAL | 共用套件不能隨便改 |
src/components/* 且引用 ≥ 3 次,無 className/style prop | TACTICAL | 共用元件要謹慎 |
src/components/* 且引用 ≥ 3 次,有 className/style prop | DIRECT | 可透過使用方的 prop 解決 |
src/components/* 且引用 1-2 次 | DIRECT | 局部元件可直接修改 |
檔案路徑包含 apps/*/src/app/(Next.js 頁面) | DIRECT | 獨立模組可直接修改 |
| 路徑包含 auth、websocket、store | TACTICAL | 核心功能不能亂動 |
| 其他 | DIRECT | 可以直接修改 |
觸發條件(符合任一即執行,否則跳過):
不觸發:純文字錯誤(i18n/文案)、純邏輯錯誤(條件反了/missing prop)、單一明確修復路徑
→ 觸發時使用 Read tool 以絕對路徑載入 references/ux-evaluation.md(路徑見 Project Context → Available Skills Directories)
### 分析報告
- **Issue ID**: <來自輸入的 issue_id>
- **Status**: confirmed | need_more_info | already_fixed
- **Root Cause File**: <完整檔案路徑>
- **Root Cause Line**: <行號>
- **Root Cause Description**: <問題描述>
- **Impacted Files**: <受影響檔案列表>
- **File Category**: isolated_component | shared_component | core_module
- **Fix Strategy**: DIRECT | TACTICAL
- **Fix Strategy Reason**: <策略選擇理由>
- **Code Snippet**: <問題程式碼片段,≤10 行,[static read at analysis time]>
- **Needs Design Phase**: true | false
- **Candidate Solutions**: <候選方案列表,僅 Needs Design Phase = true 時填寫>
- 方案 A:<描述> — UX 規則對照:<符合/違反哪條規則>
- 方案 B:<描述> — UX 規則對照:<符合/違反哪條規則>
- **Suggested Fix**: <1-2 行修復方向(非程式碼)。TACTICAL 時必須描述替代路徑,例如「勿直接修改 X,改在呼叫端加 Y prop」>
- **Confidence Score**: <依下表計算,base 1.0 扣分制,最低 0.1>
- 根因定位:確切檔案+行號 (0) / 確切檔案無行號 (-0.10) / 只有模組名 (-0.25) / 無法定位 (-0.50)
- 佐證來源:瀏覽器直接觀察 (0) / console error 或 network 4xx 間接佐證 (-0.05) / 靜態分析無法重現 (-0.20) / 純假設無工具佐證 (-0.40)
- 假設競爭:根因唯一 (0) / 有 1 個備選假設 (-0.05) / 有 2+ 個等可能假設 (-0.15)
- 修復路徑:明確知道改哪行 (0) / 方向明確細節待確認 (-0.05) / 修復方式不確定 (-0.10)
- 外部依賴假設:不涉及外部契約 (0) / 涉及且有文件或實測佐證 (-0.05) / 涉及但僅靠程式碼推測 (-0.40) / 程式碼看起來正確但行為失常(bug 可能在外部)→ 強制 need_more_info
- **Browser Reproduction Issues**: <瀏覽器操作時碰到的問題,如未登入導致 401、頁面跳轉錯誤等>(重現失敗時填寫,靜態分析也找到根因時仍保留)
完成分析後,將報告寫入 task prompt 指定的絕對路徑(Write analysis report to: <path>)。
報告與截圖都存放在 agent root(非被修正的目標專案目錄)。
need_more_info