---
description: 從會話中擷取可重用的模式，在儲存前進行品質自評，並決定正確的儲存路徑（全域 vs 專案）。
---

# /learn-eval - 擷取、評估並儲存

擴充了 `/learn` 指令，在寫入任何技能檔案之前，加入品質閘控 (Quality gate) 與儲存位置的決策。

## 擷取對象

尋找以下內容：

1. **錯誤修復模式** — 根本原因 + 修復方法 + 可重用性
2. **偵錯技巧** — 非直觀的步驟、工具組合
3. **權宜措施 (Workarounds)** — 套件庫的奇特行為、API 限制、特定版本的修正
4. **專案特定模式** — 慣例、架構決策、整合模式

## 流程

1. 審查會話以找出可擷取的模式
2. 識別出最有價值且可重用的見解

3. **決定儲存位置：**
   - 詢問：「這個模式是否對其他專案也有用？」
   - **全域 (Global)** (`~/.claude/skills/learned/`)：可在 2 個以上不同專案中使用的通用模式 (Bash 相容性、LLM API 行為、偵錯技巧等)。
   - **專案 (Project)** (目前專案中的 `.claude/skills/learned/`)：專案特定的知識 (特定配置檔案的特性、專案內部的架構決策等)。
   - 若有疑慮，優先選擇「全域」(將全域遷移至專案比反向操作更容易)。

4. 使用以下格式撰寫技能檔案草稿：

```markdown
---
name: 模式名稱
description: "請控制在 130 個字元以內"
user-invocable: false
origin: auto-extracted
---

# [描述性模式名稱]

**擷取日期：** [日期]
**適用情境：** [簡短描述適用此模式的時機]

## 問題
[解決了什麼問題 — 請具體說明]

## 解決方案
[模式/技術/權宜措施 — 包含程式碼範例]

## 何時使用
[觸發條件]
```

5. **儲存前進行自評** (參考以下標準)：

   | 維度 | 1 | 3 | 5 |
   |-----------|---|---|---|
   | 具體性 | 僅有抽象原則，無程式碼範例 | 包含具代表性的程式碼範例 | 具備涵蓋所有使用模式的豐富範例 |
   | 可執行性 | 不清楚該採取什麼行動 | 主要步驟容易理解 | 具備立即執行性，涵蓋邊緣情況 |
   | 範圍契合度 | 太廣泛或太狹隘 | 大部分合適，邊界略顯模糊 | 名稱、觸發點與內容完美契合 |
   | 非冗餘性 | 與另一項技能幾乎相同 | 有些重疊但具備獨特觀點 | 具備完全獨特的價值 |
   | 覆蓋完整度 | 僅涵蓋目標任務的一小部分 | 涵蓋主要情況，缺少常見變體 | 涵蓋主要情況、邊緣情況與陷阱 |

   - 每個維度評分為 1–5 分
   - 若任何維度低於 3 分，請修改草稿並重新評分，直到所有維度均 ≥ 3
   - 向使用者展示評分表與最終草稿

6. 請求使用者確認：
   - 展示：預計儲存路徑 + 評分表 + 最終草稿
   - 在獲得明確確認後才進行寫入

7. 儲存至選定的位置

## 步驟 5 的輸出格式 (評分表)

| 維度 | 分數 | 理由/依據 |
|-----------|-------|-----------|
| 具體性 | N/5 | ... |
| 可執行性 | N/5 | ... |
| 範圍契合度 | N/5 | ... |
| 非冗餘性 | N/5 | ... |
| 覆蓋完整度 | N/5 | ... |
| **總分** | **N/25** | |

## 注意事項

- 不要擷取瑣碎的修復 (拼字錯誤、簡單的語法錯誤)
- 不要擷取一次性的問題 (特定 API 故障等)
- 專注於能為未來會話節省時間的模式
- 保持技能專一 — 每個技能檔案僅包含一個模式
- 若「覆蓋完整度」評分較低，請在儲存前加入相關的變體說明
