Skills
Skills 是 Claude 動態載入的指令、腳本和資源資料夾,用於提升在特定任務上的表現。每個
Skill 的核心都是一個 SKILL.md 檔案——一組您上傳一次、然後附加到任何
messages.create 呼叫的打包指令。您正在教 Claude 如何以您的方式做某件事:
您的狀態報告格式、您的審查檢查清單、您的發布說明。Claude 會讀取 Skill、
遵循該流程,並以您的格式產生輸出。
Skills 與工具
值得明確區分兩者的差異,因為它們解決的是不同的問題:
- 工具(Tools) 將 Claude 連接到資料和動作。「查詢這段程式碼」、「傳送這封電子郵件」——Claude 呼叫工具,然後由其他東西執行。
- Skills 教導 Claude 一套流程。「依照這個範本產生每日狀態報告」——這是一份 Claude 會閱讀並遵循的操作手冊,有時也意味著它會自行執行隨附的腳本。
一個簡單的記憶方式:工具關乎 Claude 能做什麼,而 Skills 關乎您想要如何完成它。

還有一點值得了解:Skills 在啟動時不會完整載入上下文視窗。一開始只會載入名稱和描述。當您的代理判斷某個 Skill 相關時,才會將完整的 Skill 載入上下文視窗。這樣即使有許多 Skills 可用,也能讓您的上下文視窗保持精簡。
上傳 Skill
Skills 只需上傳一次到您的工作區,之後即可透過 ID 參照。您可以直接在 Claude Platform 上上傳,或以程式化方式進行:
skill = client.skills.create(
display_name="Status Report Generator",
files=files_from_dir("status-report-skill"), # folder containing SKILL.md
)
print(skill.id) # reference this ID in future requests在這個範例中,我想要一個狀態報告產生器。所有關於什麼是好的狀態報告的規則——章節、語氣、如何摘要、如何處理阻礙——都存在於事先打包好的 Skill 中。活動日誌本身只是在請求時傳入的一個字串。
將 Skill 附加到請求
Skills 透過容器設定附加到請求——容器內有一個 skills 陣列,其中每個項目都指定了 skill_id 和 version。以下是狀態報告產生器的完整呼叫:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
container={
"skills": [
{
"type": "custom",
"skill_id": skill.id,
"version": "latest",
}
]
},
tools=[
{
"type": "code_execution_20250825",
"name": "code_execution",
}
],
messages=[
{
"role": "user",
"content": f"Generate the daily status report from this activity log:\n\n{activity_log}",
}
],
)有幾點值得指出:
- 我們呼叫的是標準的
client.messages.create,不需要 beta 標頭。Skills 已在 Claude API 上正式發布(generally available),因此不再需要skills-2025-10-02beta 標頭;仍然傳送該標頭的請求會繼續正常運作,不受影響。 container.skills是 Skill 附加的位置。它是一個清單,因此您可以在一次呼叫中疊加多個 Skills。- 這裡也啟用了程式碼執行。這是必需的:在 API 上,Skills 會在程式碼執行工具的容器內執行,這正是讓 Skill 流程能夠進行實際工作的原因——例如在終端機中執行腳本。
執行它
輸出結果是一份完全依照 Skill 所指定的格式所產生的狀態報告。章節、語氣、阻礙處理——這一切都來自您上傳的 SKILL.md 檔案。使用者提示只有一行;流程則存在於 Skill 中。

在正式環境的應用程式中,這就是團隊如何在整個功能中標準化輸出的方式。透過這個每日狀態報告端點,每位 PM 都能得到相同的結構、相同的語氣、相同的章節,並以相同的順序呈現——而不需要任何人將範本複製貼上到提示中。

回顧
- Skills 封裝您的流程。 一個
SKILL.md檔案(加上任何腳本和資源)教導 Claude 您想要如何完成某件事。 - 工具與 Skills 的比較: 工具關乎 Claude 能做什麼;Skills 關乎您想要如何完成它。
- Skills 會逐步載入。 啟動時只會載入名稱和描述;當代理決定使用它時,完整的 Skill 才會載入上下文視窗。
- 使用
client.skills.create上傳一次,然後在任何messages.create呼叫中使用container.skills附加——這是一個清單,因此您可以疊加多個 Skills。 - 當 Skill 的流程需要進行實際工作時,搭配程式碼執行使用。
- 當如何做與做什麼同等重要時,請選用 Skill。