1. 前言
為什麼同樣用 Claude,你的效率差這麼多,本文將帶大家了解 Skill。不管你是什麼語言,沒寫過的情況下,你都可以學會它
如果你用過 Claude Code,大概率遇過這樣的情境:每次讓 Claude Code 寫程式、想讓部分程式碼風格保持一致時,你會告訴它專案的編碼風格,或者提供一段範例程式碼,或者指定某個檔案;
也就是重複描述某一個具體流程。為了解決這個問題,就要引出今天要說的 Skill。
核心速覽: Skill 的本質,就是在一個資料夾裡放一個 SKILL.md 檔案。透過編寫重複的指令,Claude 就會辨識這個檔案,執行特定功能
在開始討論 Skill 之前,我們要先區分一件事:它和 CLAUDE.md 的差別是什麼。CLAUDE.md 裡的內容每次對話都會載入,而 Skill 只有在需要時才載入,不用的時候幾乎不佔用上下文。
Skill 遵循的規範:(Specification - Agent Skills)。
位置路徑適用範圍
個人 ~/.claude/skills/<name>/SKILL.md 你所有的專案
專案 .claude/skills/<name>/SKILL.md 僅目前專案
外掛 <plugin>/skills/<name>/SKILL.md 啟用了該外掛的地方
接下來我們就以專案層級的 Skill 來說明如何實作。這也是你看完本文後能快速落地的方案。聰明的你,應該已經知道如何萃取 Skill,節省自己的 token,還能在履歷上大吹特吹,自研 xxxSkill。
這是我的路徑:.claude\skills\my-skill\SKILL.md
my-skill/
└── SKILL.md
SKILL.md 由兩部分組成——YAML 頭部(frontmatter)和 Markdown 內文:
當使用者打招呼時,用中文回覆,並附上一個冷笑話。
建立之後,你可以透過 /hello-world 手動呼叫,也可以讓 Claude 在匹配到 description 時自動呼叫。
你執行時,在對話框輸入 /,就可以看到下圖:

注意: 如果沒有出現,記得先完成上面的步驟,然後重新啟動你的 Claude
最終執行後,我們會得到:

常用 frontmatter 欄位速查:
欄位|作用
name|名稱,也是 /hello-world 的名字
description|最重要的欄位,Claude 會根據它決定是否載入
disable-model-invocation|設為 true 則只能手動呼叫,Claude 不會自動觸發
allowed-tools|該 skill 啟用時允許 Claude 免確認使用的工具
context|設為 fork 可在子代理中隔離執行
具體內容可以到上面的規範中查詢。值得注意的是,description 盡量要寫得通俗易懂;上圖的內容,你可以再回頭看看,就知道指的是哪裡。
掌握基本結構之後,關鍵在於寫得「好用」。以下是從官方文件和實作中整理出的核心要點:
第一,description 是觸發器,不是摘要。
Claude 判斷是否載入一個 Skill,完全依賴 name + description。不要寫「這是一個幫助生成程式碼的工具」,而要寫「生成 Vue 3 元件。當使用者要求建立元件、頁面或 Vue 檔案時使用」。把觸發詞和使用情境寫進去,Claude 才能準確匹配。說白了,把 Claude 當成你的合夥人,他要讀懂這份說明書,才能理解你的意思。
第二,指令用命令語氣,並按步驟編號。
寫「提取顏色主題」,不要寫「你應該提取顏色主題」。
第三,SKILL.md 控制在 500 行以內。
當你的專案特別龐大時,內容也會越來越多,我們可以把詳細的參考資料、模板、範例拆到同目錄下的獨立檔案裡,再在 SKILL.md 中引用它們:
my-skill/
├── SKILL.md # 主指令(必須)
├── template.vue # 元件模板
├── examples/
│ └── sample.vue # 範例輸出
└── scripts/
└── validate.sh # 輔助腳本
在 SKILL.md 中這樣引用:
第四,善用動態注入。
!command 語法可以在 skill 載入前執行 shell 命令,並把輸出注入到提示詞中:
!git diff --stat
!git diff
請審查以上程式碼變更,關注潛在的 bug 和規範問題。
Claude 看到的不是命令本身,而是命令的輸出結果。
第五,使用 $ARGUMENTS 接收參數。
修復 GitHub issue #$ARGUMENTS:
呼叫 /fix-issue 42 時,$ARGUMENTS 會被替換成 42。也支援 $0、$1 依位置取參數。
編號可以讓 Claude 按順序執行,減少遺漏。
第六,區分「誰來呼叫」。
有副作用的操作(部署、發送訊息)加上 disable-model-invocation: true,避免 Claude 自作主張。
建議從你日常最重複的流程開始,把它封裝成第一個 Skill。寫好之後提交到專案的 .claude/skills/ 裡,這樣團隊成員都能受益。(前提不是古法程式設計)
注意:description 要寫成觸發條件而非摘要;指令要用命令語氣並編號;大檔案拆分引用;善用動態注入和參數傳遞。