構建高效 Skill 九大最佳實踐

Derek(Claude Code 核心工程師)在「慢學AI」講座中提出的 Skill 建構框架:三層九條,分別解決 Skill 的被看見靈活複用有狀態與可組合三個問題。

三層九條

📝 內容層:被看見與被理解

解決「Skill 存在但 AI 找不到 / 不知道什麼時候用」的問題。

1. Description 寫清觸發條件

description 欄位要說明「何時使用」,而非只列功能。這是 Skill 能否被 AI 發現的第一道門檻。

# ❌ 不好
description: "部署工具"
 
# ✅ 好
description: "在你準備好要把程式碼合併到 main 並部署到 staging/production 時使用"

2. 不陳述顯而易見的知識

聚焦補充 AI 不知道的:上下文、團隊偏好、踩坑經驗。

# ❌ 浪費空間
# Skill 用途:執行 git commit
 
# ✅ 有價值
# 注意:客戶不喜歡 Helvetica 字型和藍色 #0066FF,禁用

3. 建立 GOTCHAS(避坑指南)段落

記錄具體踩坑(如「不要在迴圈中呼叫 API,會慢 100 倍」)是 Skill 最有價值的內容,需持續更新。

🏗 結構層:可複用且不僵化

解決「Skill 太死板、上下文爆炸、無法維護」的問題。

4. 用檔案系統 + 漸進式揭露

把 Skill 組織為資料夾而非單檔,用 REFERENCES.mdassets/ 存詳細文件,讓 AI 按需載入:

.claude/commands/deploy/
├── SKILL.md              ← 精簡主指令(AI 一定讀)
├── common-mistakes.md    ← 按需讀入
├── preferences.md        ← 按需讀入
└── scripts/              ← 可執行工具

5. 仔細設計配置流程

需要用戶配置的資訊(如 Slack 頻道),用 config.json 持久化:

  • 首次執行:詢問用戶
  • 後續:自動讀取

讓 Skill 從「無狀態工具」升級為「有狀態助手」。

6. 避免過度約束

指令應約束「目標」而非「路徑」:

# ❌ 太死板(寫死執行順序)
# 先跑 lint → 再跑 test → 再跑 build → 再部署
 
# ✅ 給 AI 靈活性
# 部署前確保:測試通過、規範符合、構建成功

⚡ 高階技術層:有狀態與可組合

解決「Skill 缺記憶、重造輪子、規則無法動態啟停」的問題。

7. 實現記憶與資料儲存

對抗無狀態問題:執行後寫入日誌,下次讀取,只報告新變化。

# 每次執行後 append 到 skill-log.json
# 下次啟動時讀取,差分輸出「自上次以來的新事件」

8. 儲存指令碼並生成程式碼

將穩定能力封裝為可呼叫指令碼與輔助函式,讓 AI 負責「組合」而非「重造輪子」:

# scripts/check-tests.sh → AI 直接呼叫,不每次重寫

9. 使用按需 Hooks

對僅在特定場景需要的嚴格規則(如防危險命令),設計臨時啟用的 Hook,只在當前 session 有效,結束後自動失效。

# SKILL.md 中
在開始修改 production 資料庫前,請啟用 guardrails hook:
[安裝臨時 hook 的指令]

總覽

層次問題9 大實踐
內容層被看見 + 被理解① description ② 不陳述顯而易見 ③ GOTCHAS
結構層可複用且不僵化④ 檔案系統+漸進式揭露 ⑤ 配置流程 ⑥ 避免過度約束
高階技術層有狀態 + 可組合⑦ 記憶/資料儲存 ⑧ 指令碼封裝 ⑨ 按需 Hooks

相關概念

強連結(原文明確提及)

推斷連結(LLM 認為相關,待確認)

  • 反饋循環 ?? — GOTCHAS 段落的更新本身就是一條反饋循環
  • claude-reflect ?? — 自動把反饋寫入 CLAUDE.md / Skill 的工具,與實踐 ⑦ 理念一致

← 回到 wiki