curation
/curation — Learned Skills 品質管控
按需執行的維護工具,用於清理和標準化 ~/.claude/skills/learned/ 中累積的 learned skills。不綁定任何自動化流程,使用者想整理時手動呼叫。
Role: Retrospective Format Remediation
修復既有 learned skills 的格式漂移。與 /update Step 4(在新寫入時強制格式)互補,非替代。
| 時機 | 工具 |
|---|---|
| 批量修復既有 learned skills | /curation |
| 新 skill 寫入時格式把關 | /update Step 4 (learn-eval) |
Step 1: 掃描 learned skills
掃描 ~/.claude/skills/learned/ 目錄(含子目錄),對每個 .md 檔案收集:
| 欄位 | 來源 |
|---|---|
| slug(檔名) | 檔案名稱 |
| 有無 frontmatter | 檢查是否以 --- 開頭 |
| frontmatter 完整度 | 是否包含 name/description/user-invocable/origin |
| 品質評分格式 | 表格 vs 單行 vs 無 |
| 最後修改日 | 檔案 mtime |
| 檔案大小 | bytes |
輸出統計表:
Learned Skills 掃描結果:
- 總數:XX 個
- 有 frontmatter:XX 個
- 無 frontmatter:XX 個
- 評分格式分布:表格 XX / 單行 XX / 無 XX
建立問題 manifest(依據:DAMA-DMBOK Completeness):
掃描結束後,將每個有問題的檔案登錄至記憶體中的 manifest,格式如下:
| 檔案 slug | 問題類型 | 預期修正動作 | 狀態 |
|---|---|---|---|
| xxx.md | fmt-missing-frontmatter | 插入推斷的 frontmatter | PENDING |
| yyy.md | fmt-score-inconsistent | 轉換評分表格 | PENDING |
Manifest 為後續 Step 4 驗證的基準,總問題數 = manifest 列數。
Step 2: 分類問題
將掃描結果分為四類:
| 問題類型 | 判斷標準 | 可自動修正 |
|---|---|---|
fmt-missing-frontmatter |
檔案不以 --- 開頭 |
Yes — 從 H1 標題推斷 name,從第一段推斷 description |
fmt-incomplete-frontmatter |
有 frontmatter 但缺少必要欄位 | Yes — 補全缺少的欄位 |
fmt-score-inconsistent |
品質評分使用單行格式(specificity=4, ...)而非表格 |
Yes — 轉換為 5 維度表格 |
deprecated-marked |
在索引檔案(如 ~/.claude/skills/learned/index.md 或目錄下的 README.md)中被 ~~strikethrough~~ 標記但 .md 檔案仍存在。若無索引檔案,跳過此分類並在報告中註明 |
HITL — 確認後刪除 |
明確不做:
- 不自動合併「相似」的 skills(相似度判斷主觀,需人工決定)
- 不重新評分現有 skills(現有分數是提取時的判斷,有歷史價值)
Step 3: HITL 確認(批次)
用 AskUserQuestion 展示分類結果:
Learned Skills 品質掃描結果:
總數:XX 個
格式問題:
- 無 frontmatter:XX 個
- frontmatter 不完整:XX 個
- 評分格式不統一:XX 個
廢棄標記:
- 已標記廢棄但檔案仍存在:XX 個
建議操作:
1. 全部自動修正(格式問題 + 刪除廢棄)
2. 只修正格式,廢棄項目逐一確認
3. 逐一確認所有修正
4. 只查看清單,不修正
Step 4: 執行修正
根據使用者選擇執行:
格式修正(自動):
-
無 frontmatter → 從內容推斷並插入:
name:從 H1 標題轉 kebab-casedescription:取第一段的第一句話user-invocable: falseorigin: auto-extracted
-
不完整 frontmatter → 補全缺少欄位
-
評分格式轉換:
specificity=4, actionability=5, ...→ 5 維度表格(保留原有數值,將specificity=4對應填入 specificity 列的「分數 (1-5)」欄)維度 分數 (1-5) 說明 specificity 知識的具體程度 actionability 可直接應用的程度 scope fit 適用範圍是否恰當 non-redundancy 與現有 skills 的重複度 coverage 涵蓋場景的完整度
廢棄清理(HITL):
- 對每個廢棄標記的 skill,展示名稱和描述
- 使用者確認後刪除 .md 檔案
- 同步更新索引檔案(移除 strikethrough 條目)
修正後驗證(依據:ITIL CMDB Reconciliation):
每個修正動作執行後,立即執行確定性驗證:
fmt-missing-frontmatter修正後:grep -c "^---" <file>確認 ≥ 2(開頭與結尾各一個---)fmt-incomplete-frontmatter修正後:grep -E "^(name|description|user-invocable|origin):" <file>確認 4 個欄位全部存在fmt-score-inconsistent修正後:grep -c "| specificity |" <file>確認 ≥ 1(表格列存在)
每個驗證完成後更新 manifest 的「狀態」欄:
- 驗證通過 →
DONE - 驗證失敗 →
FAILED(保留在 manifest 中,不標記為完成)
Step 5: 輸出報告
## /curation 執行結果
### 統計
- 掃描:XX 個 skills
- 修正格式:XX 個
- 刪除廢棄:XX 個
- 跳過:XX 個
### 修正明細
| Skill | 問題 | 動作 |
|-------|------|------|
| xxx.md | 無 frontmatter | 已補全 |
| yyy.md | 評分格式 | 已轉換為表格 |
| zzz.md | 已廢棄 | 已刪除 |
### Manifest 比對結果(依據:DAMA-DMBOK Completeness)
- Manifest 總問題數:XX 個
- 已修正(DONE):XX 個
- 修正失敗(FAILED):XX 個
- 使用者跳過:XX 個
- 完成率:XX / XX = XX%
<!-- 完成率 < 100% 時,列出未完成項目及原因 -->
### 剩餘問題
<!-- 若有使用者跳過或 FAILED 的項目,列出 manifest 中狀態非 DONE 的列 -->
More from ashe-li/agent-skills
update
更新知識庫 — 依序執行 doc-updater、code-reviewer、對話 context 整理、learn-eval,將本次 session 的變更沉澱為文件與知識。
37design
開發設計 — 自動盤點 ECC 資源,透過 planner 建立完整實作計畫,輸出至 plans/active/<slug>.md 供使用者確認後才進入實作。
37pr
總結當前工作、commit、推送並建立或更新 PR。自動將對話脈絡寫入 PR description,確保 reviewer 能快速理解背景。
36assist
萬用助手 — 自動分析情境、盤點 ECC 資源、智慧路由至最佳 agent pipeline,一鍵完成複雜工作流。
35ecc-skill-defer
Manage ECC skill loading — defer unused skills to save init tokens, restore on demand. Use when user wants to check, defer, or restore ECC skills.
31plan-archive
將已完成的 plan 從 plans/active/ 歸檔至 plans/completed/,補上驗證結果與完成時間。適合在實作結束後呼叫。
27