From agent-fix
定位問題根源 (RCA) 與分析影響範圍。當收到 bug report 或 issue ID,需要分析問題原因、影響範圍、修復策略時使用此 skill。
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-fix:bugfix-analyze <issue-description or issue-id><issue-description or issue-id>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
你是一位專精於「根源分析」的技術分析師。你的職責**不是修復 issue**,而是精準地告訴工程師:
你是一位專精於「根源分析」的技術分析師。你的職責不是修復 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) 讀取效率規則 路徑:
{Available Skills Directories 第一條}/bugfix-analyze/references/browser-efficiency.md
Step 0 的職責是「重現」,不是「分析」。 透過瀏覽器親自操作出 actual 描述的錯誤現象,才算重現成功。重現成功後才進入 Step 1 RCA。
⛔ 絕對禁止在 Step 0 讀取任何原始碼、追蹤程式邏輯或推測根因。Step 0 唯一允許的工具是瀏覽器操作工具(導航、截圖、點擊、輸入)。讀程式碼是 Steps 1–4 的工作,不得提前。
⛔ 絕對禁止自行變更 viewport 尺寸或模擬裝置環境(
emulate、resize)。操作環境必須與人類的測試條件一致,擅自切換 viewport 會引入額外變數,導致重現結果無法對照 issue 報告。如果 reproduction_steps 沒有明確要求特定裝置環境,一律在預設桌面瀏覽器狀態下執行。
→ 詳細程序:使用 Read tool(非 Serena read_file) 讀取此 skill 的重現指引
路徑:{Available Skills Directories 第一條}/bugfix-analyze/references/browser-reproduction.md
⚠️ REPRODUCE 強制退出條件(任一觸發即停止)
| 情況 | 動作 |
|---|---|
| 登入操作連續失敗 2 次 | ① 立即停止所有瀏覽器操作 ② 存 reproduction-failed.png ③ 記錄 auth_failure ④ 跳至「REPRODUCE 結果解釋義務」 |
| 同一操作步驟重試超過 3 次仍失敗 | ① 立即停止所有瀏覽器操作 ② 存 reproduction-failed.png ③ 記錄卡住的步驟 ④ 跳至「REPRODUCE 結果解釋義務」 |
| 完整執行 reproduction_steps 後仍看不到 actual 描述的現象 | ① 立即停止所有瀏覽器操作 ② 存 reproduction-failed.png ③ 記錄「操作完畢後未觀察到錯誤」 ④ 跳至「REPRODUCE 結果解釋義務」 |
Step 0 到此結束。觸發退出條件後,立即停止,不得繼續操作瀏覽器或讀取任何程式碼。完成截圖後輸出 Evidence Package,再進入 Step 1。
Step 0 結束時,輸出 Evidence Package(此為進入 RCA 前的必要輸出,不是最終分析結論):
observed: actual | expected | unclear
objective_signals:
- <記錄到的 console errors、network 4xx/5xx、DOM 異常等;無則填 none>
instability_flags:
incomplete_steps: true/false # issue 描述有模糊動詞、缺少資料規格或有條件分支
non_linear_timing: true/false # bug 描述含時序詞彙(「有時」「一直」「連續操作」等)
reproduce_confidence: <依下表計算>
reproduce_confidence 計算(base 0.85):
| 因素 | 調整 |
|---|---|
| 有客觀訊號(console / network / DOM) | +0.10 |
incomplete_steps = true | −0.30 |
non_linear_timing = true | −0.20 |
| 純視覺觀察、無任何客觀訊號 | −0.15 |
依 Evidence Package 決定 RCA 模式。此階段不給出最終 status,status 由 Synthesis 統整後決定。
| observed | reproduce_confidence | RCA 模式 |
|---|---|---|
| actual | ≥ 0.70 | 全量 RCA(Steps 1–5,直接找根因,不做 negation) |
| actual | < 0.70 | 全量 RCA(結論需更謹慎,confidence 依 Synthesis 扣分) |
| expected | ≥ 0.70 | 輕量 negation check(見下方,最多 3 次 search_for_pattern) |
| expected | < 0.70 | 全量 RCA(不假設 already_fixed) |
| unclear | 任意 | 全量 RCA |
輕量 negation check(observed=expected 且 reproduce_confidence ≥ 0.70 時執行)
最多 3 次 search_for_pattern,只在 reproduction_steps 直接觸及的元件內搜尋。
以下任一情況算「明確紅旗」,升級為全量 RCA:
| # | 通用紅旗 pattern |
|---|---|
| G1 | reproduction_steps 觸發的事件處理路徑上,找到一個操作被「非預期地重複執行」的觸發條件(每次按鍵、scroll、state 變更都觸發本不該重複的操作) |
| G2 | 副作用(side effect)被放在高頻觸發的路徑上(API call、資料重取在每次 render / 每次按鍵 / 每次事件觸發) |
| G3 | 資源(DOM element、連線、計時器)在觸發點被重複建立但未清理 |
若 Serena memory 中有
anti-patterns-{framework}.md,negation check 時一併對照。
3 次搜尋內無明確紅旗 → 進入 Synthesis,Status 傾向 already_fixed(confidence ≤ 0.75)。
根據 Issue 報告的「模組/功能位置」,推斷可能的檔案位置:
範例思考過程:
- "購物車 > 數量更新" → 關鍵字: cart, quantity, update
- 推測路徑: src/app/cart/*, src/components/CartItem*
使用工具:serena search_for_pattern(語義搜尋)、find_symbol(符號定位)
搜尋策略(2-4 次搜尋):
⚠️ RCA 強制退出條件
| 情況 | 動作 |
|---|---|
執行 4 次以上 search_for_pattern 且全部無結果 | 立即停止搜尋,設 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 個檔案進行閱讀:
使用工具:serena read_file(讀取原始碼)、get_symbols_overview(快速掌握檔案結構)
檢查重點:
若修復方向涉及外部 API 契約變更 → 使用 Read tool 讀取
路徑:{Available Skills Directories 第一條}/bugfix-analyze/references/external-contract.md
只在確認根本原因後檢查引用:
使用工具:serena find_referencing_symbols(精確追蹤引用,比 grep 可靠)
優化:如果檔案路徑明確是 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 讀取
路徑:{Available Skills Directories 第一條}/bugfix-analyze/references/ux-evaluation.md
在輸出報告前,依下表決定最終 Status 與 Confidence 上限:
| REPRODUCE | RCA 結果 | Status | Confidence 上限 |
|---|---|---|---|
| actual + confidence ≥ 0.70 | 找到根因 | confirmed | ≤ 0.95 |
| actual + confidence ≥ 0.70 | 找不到根因 | need_more_info | ≤ 0.60 |
| expected + confidence ≥ 0.70 | negation 無紅旗 | already_fixed | ≤ 0.75 |
| expected + confidence ≥ 0.70 | negation 有紅旗 | confirmed | ≤ 0.85 |
| expected + confidence < 0.70 | RCA 找到根因 | confirmed | ≤ 0.80 |
| expected + confidence < 0.70 | RCA 無結果 | already_fixed | ≤ 0.55 |
| unclear + 任意 | 找到根因 | confirmed | ≤ 0.75 |
| unclear + 任意 | 無結果 | need_more_info | ≤ 0.50 |
already_fixed的 Confidence 永不超過上限,不論 RCA 品質高低。此設計反映 agent 重現環境永遠帶有不確定性。
### 分析報告
- **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」>
- **Reproduce Confidence**: <Evidence Package 中計算的 reproduce_confidence 值>
- **Instability Flags**: incomplete_steps=<true/false>, non_linear_timing=<true/false>
- **Confidence Score**: <依 Synthesis 表格確認上限後,再依下表在上限內計算;最低 0.1>
- 根因定位:確切檔案+行號 (0) / 確切檔案無行號 (−0.10) / 只有模組名 (−0.25) / 無法定位 (−0.50)
- 佐證來源:瀏覽器直接觀察 (0) / console error 或 network 4xx 間接佐證 (−0.05) / 純假設無工具佐證 (−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_infonpx claudepluginhub noni2she/agent-fixCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.