載入中
載入中

Skills

Skills 是 Claude 動態載入的指令、腳本和資源資料夾,用於提升在特定任務上的表現。每個 Skill 的核心都是一個 SKILL.md 檔案——一組您上傳一次、然後附加到任何 messages.create 呼叫的打包指令。您正在教 Claude 如何以您的方式做某件事: 您的狀態報告格式、您的審查檢查清單、您的發布說明。Claude 會讀取 Skill、 遵循該流程,並以您的格式產生輸出。

Skills 與工具

值得明確區分兩者的差異,因為它們解決的是不同的問題:

  • 工具(Tools) 將 Claude 連接到資料和動作。「查詢這段程式碼」、「傳送這封電子郵件」——Claude 呼叫工具,然後由其他東西執行。
  • Skills 教導 Claude 一套流程。「依照這個範本產生每日狀態報告」——這是一份 Claude 會閱讀並遵循的操作手冊,有時也意味著它會自行執行隨附的腳本。

一個簡單的記憶方式:工具關乎 Claude 能做什麼,而 Skills 關乎您想要如何完成它。

工具與 Skills 的並排比較:工具連接資料、執行動作並執行程式碼——這是 Claude 能做什麼;Skills 僅以指令教導流程,不執行程式碼——這是您想要如何完成它

還有一點值得了解:Skills 在啟動時不會完整載入上下文視窗。一開始只會載入名稱和描述。當您的代理判斷某個 Skill 相關時,才會將完整的 Skill 載入上下文視窗。這樣即使有許多 Skills 可用,也能讓您的上下文視窗保持精簡。

上傳 Skill

Skills 只需上傳一次到您的工作區,之後即可透過 ID 參照。您可以直接在 Claude Platform 上上傳,或以程式化方式進行:

python
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。以下是狀態報告產生器的完整呼叫:

python
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-02 beta 標頭;仍然傳送該標頭的請求會繼續正常運作,不受影響。
  • container.skills 是 Skill 附加的位置。它是一個清單,因此您可以在一次呼叫中疊加多個 Skills。
  • 這裡也啟用了程式碼執行。這是必需的:在 API 上,Skills 會在程式碼執行工具的容器內執行,這正是讓 Skill 流程能夠進行實際工作的原因——例如在終端機中執行腳本。

執行它

輸出結果是一份完全依照 Skill 所指定的格式所產生的狀態報告。章節、語氣、阻礙處理——這一切都來自您上傳的 SKILL.md 檔案。使用者提示只有一行;流程則存在於 Skill 中。

產生的每日狀態報告的終端機輸出,包含由 Skill 格式化的「已完成」和「阻礙」章節以及摘要

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

一個專案管理應用程式,其中有一個「每日報告」頁面,每個專案的活動日誌都有一個由 Skill 支援的一鍵「產生報告」按鈕

回顧

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