| name | skill-creator |
| description | Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations. |
| license | Complete terms in LICENSE.txt |
技能建立器
此技能提供建立有效技能的指導。
關於技能
技能是模組化、自成一體的套件,透過提供專門化的知識、工作流程和工具來擴展 Claude 的能力。可以把它們想成特定領域或任務的「入職指南」——它們將 Claude 從通用型代理程式轉變為配備程序性知識的專門型代理程式,而這些知識是任何模型都無法完全具備的。
技能提供什麼
- 專門化工作流程 - 特定領域的多步驟程序
- 工具整合 - 與特定檔案格式或 API 協作的指令
- 領域專業知識 - 公司特有的知識、結構定義、業務邏輯
- 打包資源 - 複雜且重複性任務所需的腳本、參考資料和素材
核心原則
簡潔是關鍵
上下文視窗是公共資源。技能與 Claude 需要的其他所有內容共享上下文視窗:系統提示詞、對話歷史、其他技能的中繼資料,以及實際的使用者請求。
預設假設:Claude 已經非常聰明。 只加入 Claude 還不知道的上下文。對每條資訊提出質疑:「Claude 真的需要這個解釋嗎?」以及「這段文字值得它的 token 成本嗎?」
優先使用簡潔的範例而非冗長的解釋。
設定適當的自由度
根據任務的脆弱性和變異性來匹配具體程度:
高自由度(基於文字的指令):當多種方法都有效、決策取決於上下文,或以啟發式方法引導時使用。
中自由度(帶參數的偽碼或腳本):當有偏好的模式存在、可接受一些變化,或設定會影響行為時使用。
低自由度(特定腳本,少量參數):當操作脆弱且容易出錯、一致性至關重要,或必須遵循特定順序時使用。
把 Claude 想成在探索一條路:懸崖旁的窄橋需要特定的護欄(低自由度),而開闊的田野允許多條路線(高自由度)。
技能結構
每個技能由必要的 SKILL.md 檔案和選填的打包資源組成:
skill-name/
├── SKILL.md(必要)
│ ├── YAML 前置資料中繼資料(必要)
│ │ ├── name:(必要)
│ │ └── description:(必要)
│ └── Markdown 指令(必要)
└── 打包資源(選填)
├── scripts/ - 可執行程式碼(Python/Bash 等)
├── references/ - 按需載入上下文的文件
└── assets/ - 輸出中使用的檔案(範本、圖示、字型等)
SKILL.md(必要)
每個 SKILL.md 包含:
- 前置資料(YAML):包含
name 和 description 欄位。這些是 Claude 用來決定何時使用技能的唯一欄位,因此在描述技能是什麼以及何時應該使用時,清楚且全面非常重要。
- 主體(Markdown):使用技能的指令和指導。只在技能觸發後才載入(如果有觸發的話)。
打包資源(選填)
腳本(scripts/)
用於需要確定性可靠度或反覆重寫的任務的可執行程式碼(Python/Bash 等)。
- 何時納入:當相同的程式碼反覆被重寫或需要確定性可靠度時
- 範例:用於 PDF 旋轉任務的
scripts/rotate_pdf.py
- 優點:節省 token、確定性、可在不載入上下文的情況下執行
- 注意:腳本可能仍需要被 Claude 讀取以進行修補或環境特定的調整
參考資料(references/)
用於按需載入上下文以引導 Claude 流程和思考的文件和參考資料。
- 何時納入:Claude 在工作時應參考的文件
- 範例:用於財務結構定義的
references/finance.md、用於公司保密協議範本的 references/mnda.md、用於公司政策的 references/policies.md、用於 API 規格的 references/api_docs.md
- 使用情境:資料庫結構定義、API 文件、領域知識、公司政策、詳細工作流程指南
- 優點:保持 SKILL.md 精簡,只在 Claude 判斷需要時才載入
- 最佳實踐:如果檔案很大(>10k 字),在 SKILL.md 中包含 grep 搜尋模式
- 避免重複:資訊應只存在於 SKILL.md 或參考檔案中,而非兩者皆有。除非是技能真正核心的內容,否則優先使用參考檔案存放詳細資訊——這保持 SKILL.md 精簡,同時讓資訊可被發現而不佔用上下文視窗。只在 SKILL.md 中保留必要的程序性指令和工作流程指導;將詳細的參考資料、結構定義和範例移至參考檔案。
素材(assets/)
不打算載入上下文,而是用於 Claude 產出的輸出中的檔案。
- 何時納入:當技能需要用於最終輸出的檔案時
- 範例:用於品牌素材的
assets/logo.png、用於 PowerPoint 範本的 assets/slides.pptx、用於 HTML/React 樣板的 assets/frontend-template/、用於排版的 assets/font.ttf
- 使用情境:範本、圖片、圖示、樣板程式碼、字型、被複製或修改的範例文件
- 優點:將輸出資源與文件分開,讓 Claude 無需載入上下文即可使用檔案
技能中不應包含的內容
技能應只包含直接支援其功能的必要檔案。不要建立多餘的文件或輔助檔案,包括:
- README.md
- INSTALLATION_GUIDE.md
- QUICK_REFERENCE.md
- CHANGELOG.md
- 等等
技能應只包含 AI 代理程式執行手頭工作所需的資訊。不應包含建立過程的輔助上下文、設定和測試程序、面向使用者的文件等。建立額外的文件只會增加混亂和困惑。
漸進式載入設計原則
技能使用三層載入系統來高效管理上下文:
- 中繼資料(名稱 + 描述) - 始終在上下文中(約 100 字)
- SKILL.md 主體 - 技能觸發時載入(<5k 字)
- 打包資源 - Claude 按需使用(無限制,因為腳本可在不讀入上下文視窗的情況下執行)
漸進式載入模式
保持 SKILL.md 主體精簡且少於 500 行,以最小化上下文膨脹。接近此限制時將內容分拆到單獨的檔案中。分拆內容到其他檔案時,從 SKILL.md 中引用它們並清楚描述何時讀取它們非常重要,以確保技能的讀者知道它們的存在和使用時機。
關鍵原則: 當技能支援多種變體、框架或選項時,只在 SKILL.md 中保留核心工作流程和選擇指導。將變體特定的細節(模式、範例、設定)移入單獨的參考檔案。
模式 1:帶參考資料的高層指南
# PDF 處理
## 快速開始
用 pdfplumber 擷取文字:
[程式碼範例]
## 進階功能
- **表單填寫**:完整指南請參見 [FORMS.md](FORMS.md)
- **API 參考**:所有方法請參見 [REFERENCE.md](REFERENCE.md)
- **範例**:常見模式請參見 [EXAMPLES.md](EXAMPLES.md)
Claude 只在需要時才載入 FORMS.md、REFERENCE.md 或 EXAMPLES.md。
模式 2:領域特定組織
對於具有多個領域的技能,按領域組織內容以避免載入不相關的上下文:
bigquery-skill/
├── SKILL.md(概覽和導航)
└── reference/
├── finance.md(營收、帳單指標)
├── sales.md(商機、管線)
├── product.md(API 使用量、功能)
└── marketing.md(活動、歸因)
當使用者詢問銷售指標時,Claude 只讀取 sales.md。
同樣地,對於支援多個框架或變體的技能,按變體組織:
cloud-deploy/
├── SKILL.md(工作流程 + 供應商選擇)
└── references/
├── aws.md(AWS 部署模式)
├── gcp.md(GCP 部署模式)
└── azure.md(Azure 部署模式)
當使用者選擇 AWS 時,Claude 只讀取 aws.md。
模式 3:條件式細節
顯示基本內容,連結到進階內容:
# DOCX 處理
## 建立文件
使用 docx-js 建立新文件。請參見 [DOCX-JS.md](DOCX-JS.md)。
## 編輯文件
簡單編輯可直接修改 XML。
**追蹤修訂**:請參見 [REDLINING.md](REDLINING.md)
**OOXML 細節**:請參見 [OOXML.md](OOXML.md)
Claude 只在使用者需要這些功能時才讀取 REDLINING.md 或 OOXML.md。
重要準則:
- 避免深度巢狀參考 - 保持參考從 SKILL.md 算起只有一層深。所有參考檔案應直接從 SKILL.md 連結。
- 為較長的參考檔案建立結構 - 超過 100 行的檔案,在頂部加入目錄以便 Claude 在預覽時看到完整範圍。
技能建立流程
技能建立包含以下步驟:
- 用具體範例理解技能
- 規劃可重複使用的技能內容(腳本、參考資料、素材)
- 初始化技能(執行 init_skill.py)
- 編輯技能(實作資源並撰寫 SKILL.md)
- 打包技能(執行 package_skill.py)
- 根據實際使用進行迭代
請依序遵循這些步驟,僅在有明確原因表明不適用時才跳過。
步驟 1:用具體範例理解技能
僅在技能的使用模式已被清楚理解時才跳過此步驟。即使在處理現有技能時,此步驟仍有價值。
要建立有效的技能,需要清楚理解技能將如何被使用的具體範例。這種理解可以來自使用者直接提供的範例或經使用者回饋驗證的生成範例。
例如,在建立圖片編輯技能時,相關問題包括:
- 「圖片編輯技能應支援哪些功能?編輯、旋轉、還有其他嗎?」
- 「你能舉一些使用此技能的例子嗎?」
- 「我可以想像使用者會問『移除這張照片的紅眼』或『旋轉這張圖片』。你還能想到其他使用方式嗎?」
- 「使用者說什麼應該觸發此技能?」
為避免讓使用者不知所措,不要在單一訊息中問太多問題。從最重要的問題開始,根據需要追問以獲得更好的效果。
當對技能應支援的功能有清楚的認知時,即可結束此步驟。
步驟 2:規劃可重複使用的技能內容
要將具體範例轉化為有效的技能,對每個範例進行分析:
- 考慮如何從頭開始執行這個範例
- 辨識在重複執行這些工作流程時,哪些腳本、參考資料和素材會有幫助
範例:建立 pdf-editor 技能來處理像「幫我旋轉這個 PDF」這樣的查詢時,分析顯示:
- 旋轉 PDF 每次都需要重寫相同的程式碼
- 在技能中存放
scripts/rotate_pdf.py 腳本會很有幫助
範例:設計 frontend-webapp-builder 技能來處理像「幫我建立一個 todo 應用」或「建立一個追蹤步數的儀表板」這樣的查詢時,分析顯示:
- 撰寫前端網頁應用每次都需要相同的 HTML/React 樣板
- 在技能中存放包含樣板 HTML/React 專案檔案的
assets/hello-world/ 範本會很有幫助
範例:建立 big-query 技能來處理像「今天有多少使用者登入?」這樣的查詢時,分析顯示:
- 查詢 BigQuery 每次都需要重新探索表格結構定義和關聯
- 在技能中存放記錄表格結構定義的
references/schema.md 檔案會很有幫助
要建立技能的內容,分析每個具體範例以建立要納入的可重複使用資源清單:腳本、參考資料和素材。
步驟 3:初始化技能
此時,是時候實際建立技能了。
僅在正在開發的技能已經存在且需要迭代或打包時才跳過此步驟。在這種情況下,繼續下一步。
從頭建立新技能時,始終執行 init_skill.py 腳本。該腳本方便地生成一個新的範本技能目錄,自動包含技能所需的一切,使技能建立流程更加高效和可靠。
用法:
scripts/init_skill.py <skill-name> --path <output-directory>
腳本會:
- 在指定路徑建立技能目錄
- 生成帶有正確前置資料和 TODO 佔位符的 SKILL.md 範本
- 建立範例資源目錄:
scripts/、references/ 和 assets/
- 在每個目錄中加入可自訂或刪除的範例檔案
初始化後,根據需要自訂或移除生成的 SKILL.md 和範例檔案。
步驟 4:編輯技能
編輯(新生成或現有的)技能時,請記住技能是為另一個 Claude 實例使用而建立的。包含對 Claude 有益且非顯而易見的資訊。考慮什麼樣的程序性知識、領域特定細節或可重複使用的素材能幫助另一個 Claude 實例更有效地執行這些任務。
學習經驗證的設計模式
根據你的技能需求參考這些實用指南:
- 多步驟流程:順序工作流程和條件邏輯請參見 references/workflows.md
- 特定輸出格式或品質標準:範本和範例模式請參見 references/output-patterns.md
這些檔案包含有效技能設計的既定最佳實踐。
從可重複使用的技能內容開始
開始實作時,從上面辨識的可重複使用資源開始:scripts/、references/ 和 assets/ 檔案。注意此步驟可能需要使用者輸入。例如,實作 brand-guidelines 技能時,使用者可能需要提供品牌素材或範本存放在 assets/ 中,或文件存放在 references/ 中。
新增的腳本必須透過實際執行來測試,以確保沒有錯誤且輸出符合預期。如果有許多類似的腳本,只需測試具代表性的樣本即可確保信心,同時平衡完成時間。
技能不需要的範例檔案和目錄應該被刪除。初始化腳本在 scripts/、references/ 和 assets/ 中建立範例檔案以展示結構,但大多數技能不需要全部。
更新 SKILL.md
撰寫指南: 始終使用祈使句/不定式形式。
前置資料
撰寫帶有 name 和 description 的 YAML 前置資料:
name:技能名稱
description:這是技能的主要觸發機制,幫助 Claude 理解何時使用技能。
- 同時包含技能做什麼以及使用的特定觸發條件/上下文。
- 將所有「何時使用」的資訊放在這裡——不要放在主體中。主體只在觸發後才載入,因此主體中的「何時使用此技能」區段對 Claude 沒有幫助。
docx 技能的描述範例:"Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks"
不要在 YAML 前置資料中包含任何其他欄位。
主體
撰寫使用技能及其打包資源的指令。
步驟 5:打包技能
技能開發完成後,必須打包成可分發的 .skill 檔案以與使用者分享。打包流程會自動先驗證技能以確保符合所有要求:
scripts/package_skill.py <path/to/skill-folder>
可選指定輸出目錄:
scripts/package_skill.py <path/to/skill-folder> ./dist
打包腳本會:
-
自動驗證技能,檢查:
- YAML 前置資料格式和必要欄位
- 技能命名慣例和目錄結構
- 描述的完整性和品質
- 檔案組織和資源參考
-
如果驗證通過則打包技能,建立以技能命名的 .skill 檔案(例如 my-skill.skill),包含所有檔案並維持正確的目錄結構以供分發。.skill 檔案是帶有 .skill 副檔名的 zip 檔案。
如果驗證失敗,腳本會報告錯誤並在不建立套件的情況下退出。修復所有驗證錯誤後再次執行打包指令。
步驟 6:迭代
測試技能後,使用者可能會要求改進。這通常發生在使用技能之後,對技能表現有新鮮的認知。
迭代工作流程:
- 在真實任務中使用技能
- 注意困難或低效之處
- 辨識 SKILL.md 或打包資源應如何更新
- 實施更改並再次測試