$npx -y skills add harryleemedia/second-brain --skill skill-creatorGuide 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.
| 1 | # 技能建立器 |
| 2 | |
| 3 | 此技能提供建立有效技能的指導。 |
| 4 | |
| 5 | ## 關於技能 |
| 6 | |
| 7 | 技能是模組化、自成一體的套件,透過提供專門化的知識、工作流程和工具來擴展 Claude 的能力。可以把它們想成特定領域或任務的「入職指南」——它們將 Claude 從通用型代理程式轉變為配備程序性知識的專門型代理程式,而這些知識是任何模型都無法完全具備的。 |
| 8 | |
| 9 | ### 技能提供什麼 |
| 10 | |
| 11 | 1. 專門化工作流程 - 特定領域的多步驟程序 |
| 12 | 2. 工具整合 - 與特定檔案格式或 API 協作的指令 |
| 13 | 3. 領域專業知識 - 公司特有的知識、結構定義、業務邏輯 |
| 14 | 4. 打包資源 - 複雜且重複性任務所需的腳本、參考資料和素材 |
| 15 | |
| 16 | ## 核心原則 |
| 17 | |
| 18 | ### 簡潔是關鍵 |
| 19 | |
| 20 | 上下文視窗是公共資源。技能與 Claude 需要的其他所有內容共享上下文視窗:系統提示詞、對話歷史、其他技能的中繼資料,以及實際的使用者請求。 |
| 21 | |
| 22 | **預設假設:Claude 已經非常聰明。** 只加入 Claude 還不知道的上下文。對每條資訊提出質疑:「Claude 真的需要這個解釋嗎?」以及「這段文字值得它的 token 成本嗎?」 |
| 23 | |
| 24 | 優先使用簡潔的範例而非冗長的解釋。 |
| 25 | |
| 26 | ### 設定適當的自由度 |
| 27 | |
| 28 | 根據任務的脆弱性和變異性來匹配具體程度: |
| 29 | |
| 30 | **高自由度(基於文字的指令)**:當多種方法都有效、決策取決於上下文,或以啟發式方法引導時使用。 |
| 31 | |
| 32 | **中自由度(帶參數的偽碼或腳本)**:當有偏好的模式存在、可接受一些變化,或設定會影響行為時使用。 |
| 33 | |
| 34 | **低自由度(特定腳本,少量參數)**:當操作脆弱且容易出錯、一致性至關重要,或必須遵循特定順序時使用。 |
| 35 | |
| 36 | 把 Claude 想成在探索一條路:懸崖旁的窄橋需要特定的護欄(低自由度),而開闊的田野允許多條路線(高自由度)。 |
| 37 | |
| 38 | ### 技能結構 |
| 39 | |
| 40 | 每個技能由必要的 SKILL.md 檔案和選填的打包資源組成: |
| 41 | |
| 42 | ``` |
| 43 | skill-name/ |
| 44 | ├── SKILL.md(必要) |
| 45 | │ ├── YAML 前置資料中繼資料(必要) |
| 46 | │ │ ├── name:(必要) |
| 47 | │ │ └── description:(必要) |
| 48 | │ └── Markdown 指令(必要) |
| 49 | └── 打包資源(選填) |
| 50 | ├── scripts/ - 可執行程式碼(Python/Bash 等) |
| 51 | ├── references/ - 按需載入上下文的文件 |
| 52 | └── assets/ - 輸出中使用的檔案(範本、圖示、字型等) |
| 53 | ``` |
| 54 | |
| 55 | #### SKILL.md(必要) |
| 56 | |
| 57 | 每個 SKILL.md 包含: |
| 58 | |
| 59 | - **前置資料**(YAML):包含 `name` 和 `description` 欄位。這些是 Claude 用來決定何時使用技能的唯一欄位,因此在描述技能是什麼以及何時應該使用時,清楚且全面非常重要。 |
| 60 | - **主體**(Markdown):使用技能的指令和指導。只在技能觸發後才載入(如果有觸發的話)。 |
| 61 | |
| 62 | #### 打包資源(選填) |
| 63 | |
| 64 | ##### 腳本(`scripts/`) |
| 65 | |
| 66 | 用於需要確定性可靠度或反覆重寫的任務的可執行程式碼(Python/Bash 等)。 |
| 67 | |
| 68 | - **何時納入**:當相同的程式碼反覆被重寫或需要確定性可靠度時 |
| 69 | - **範例**:用於 PDF 旋轉任務的 `scripts/rotate_pdf.py` |
| 70 | - **優點**:節省 token、確定性、可在不載入上下文的情況下執行 |
| 71 | - **注意**:腳本可能仍需要被 Claude 讀取以進行修補或環境特定的調整 |
| 72 | |
| 73 | ##### 參考資料(`references/`) |
| 74 | |
| 75 | 用於按需載入上下文以引導 Claude 流程和思考的文件和參考資料。 |
| 76 | |
| 77 | - **何時納入**:Claude 在工作時應參考的文件 |
| 78 | - **範例**:用於財務結構定義的 `references/finance.md`、用於公司保密協議範本的 `references/mnda.md`、用於公司政策的 `references/policies.md`、用於 API 規格的 `references/api_docs.md` |
| 79 | - **使用情境**:資料庫結構定義、API 文件、領域知識、公司政策、詳細工作流程指南 |
| 80 | - **優點**:保持 SKILL.md 精簡,只在 Claude 判斷需要時才載入 |
| 81 | - **最佳實踐**:如果檔案很大(>10k 字),在 SKILL.md 中包含 grep 搜尋模式 |
| 82 | - **避免重複**:資訊應只存在於 SKILL.md 或參考檔案中,而非兩者皆有。除非是技能真正核心的內容,否則優先使用參考檔案存放詳細資訊——這保持 SKILL.md 精簡,同時讓資訊可被發現而不佔用上下文視窗。只在 SKILL.md 中保留必要的程序性指令和工作流程指導;將詳細的參考資料、結構定義和範例移至參考檔案。 |
| 83 | |
| 84 | ##### 素材(`assets/`) |
| 85 | |
| 86 | 不打算載入上下文,而是用於 Claude 產出的輸出中的檔案。 |
| 87 | |
| 88 | - **何時納入**:當技能需要用於最終輸出的檔案時 |
| 89 | - **範例**:用於品牌素材的 `assets/logo.png`、用於 PowerPoint 範本的 `assets/slides.pptx`、用於 HTML/React 樣板的 `assets/frontend-template/`、用於排版的 `assets/font.ttf` |
| 90 | - **使用情境**:範本、圖片、圖示、樣板程式碼、字型、被複製或修改的範例文件 |
| 91 | - **優點**:將輸出資源與文件分開,讓 Claude 無需載入上下文即可使用檔案 |
| 92 | |
| 93 | #### 技能中不應包含的內容 |
| 94 | |
| 95 | 技能應只包含直接支援其功能的必要檔案。不要建立多餘的文件或輔助檔案,包括: |
| 96 | |
| 97 | - README.md |
| 98 | - INSTALLATION_GUIDE.md |
| 99 | - QUICK_REFERENCE.md |
| 100 | - CHANGELOG.md |
| 101 | - 等等 |
| 102 | |
| 103 | 技能應只包含 AI 代理程式執行手頭工作所需的資訊。不應包含建立過程的輔助上下文、設定和測試程序、面向使用者的文件等。建立額外的文件只會增加混亂和困惑。 |
| 104 | |
| 105 | ### 漸進式載入設計原則 |
| 106 | |
| 107 | 技能使用三層載入系統來高效管理上下文: |
| 108 | |
| 109 | 1. **中繼資料(名稱 + 描述)** - 始終在上下文中(約 100 字) |
| 110 | 2. **SKILL.md 主體** - 技能觸發時載入(<5k 字) |
| 111 | 3. **打包資源** - Claude 按需使用(無限制,因為腳本可在不讀入上下文視窗的情況下執行) |
| 112 | |
| 113 | #### 漸進式載入模式 |
| 114 | |
| 115 | 保持 SKILL.md 主體精簡且少於 500 行,以最小化上下文膨脹。接近此限制時將內容分拆到單獨的檔案中。分拆內容到其他檔案時,從 SKILL.md 中引用它們並清楚描述何時讀取它們非常重要,以確保技能的讀者知道它們的存在和使用時機。 |
| 116 | |
| 117 | **關鍵原則:** 當技能支援多種變體、框架或選項時,只在 SKILL.md 中保留核心工作流程和選擇指導。將變體特定的細節(模式、範例、設定)移入單獨的參考檔案。 |
| 118 | |
| 119 | **模式 1:帶參考資料的高層指南** |
| 120 | |
| 121 | ```markdown |
| 122 | # PDF 處理 |
| 123 | |
| 124 | ## 快速開始 |
| 125 | |
| 126 | 用 pdfplumber 擷取文字: |
| 127 | [程式碼範例] |
| 128 | |
| 129 | ## 進階功能 |
| 130 | |
| 131 | - **表單填寫**:完整指南請參見 [FORMS.md](FORMS.md) |
| 132 | - **API 參考**:所有方法請參見 [REFERENCE.md](REFERENCE.md) |
| 133 | - **範例**:常見模式請參見 [EXAMPLES.md](EXAMPLES.md) |
| 134 | ``` |
| 135 | |
| 136 | Claude 只在需要時才載入 FORMS.md、REFERENCE.md 或 EXAMPLES.md。 |
| 137 | |
| 138 | **模式 2:領域特定組織** |
| 139 | |
| 140 | 對於具有多個領域的技能,按領域組織內容以避免載入不相關的上下文: |
| 141 | |
| 142 | ``` |
| 143 | bigquery-skill/ |
| 144 | ├── SKILL.md(概覽和導航) |
| 145 | └── reference/ |
| 146 | ├── finance.md(營收、帳單指標) |
| 147 | ├── sales.md(商機、管線) |
| 148 | ├── product.md(API 使用量、功能) |
| 149 | └── marketing.md(活動、歸因) |
| 150 | ``` |
| 151 | |
| 152 | 當使用者詢問銷售指標時,Claude 只讀取 sales.md。 |
| 153 | |
| 154 | 同樣地,對於支援多個框架或變體的技能,按變體組織: |
| 155 | |
| 156 | ``` |
| 157 | cloud-deploy/ |
| 158 | ├── SKILL.md(工作流程 + 供應商選擇) |
| 159 | └── references/ |
| 160 | ├── aws.md(AWS 部署模式) |
| 161 | ├── gcp.md(GCP 部署模式) |
| 162 | └── azure.md(Azure 部署模式) |
| 163 | ``` |
| 164 | |
| 165 | 當使用者選擇 AWS 時,Claude 只讀取 aws.md。 |
| 166 | |
| 167 | **模式 3:條件式細節** |
| 168 | |
| 169 | 顯示基本內容,連結到進階內容: |
| 170 | |
| 171 | ```markdown |
| 172 | # DOCX 處理 |
| 173 | |
| 174 | ## 建立文件 |
| 175 | |
| 176 | 使用 docx-js 建立新文件。請參見 [DOCX-JS.md](DOCX-JS.md)。 |
| 177 | |
| 178 | ## 編輯文件 |
| 179 | |
| 180 | 簡單編輯可直接修改 XML。 |
| 181 | |
| 182 | **追蹤修訂**:請參見 [REDLINING.md](REDLINING.md) |
| 183 | **OOXML 細節**:請參見 [OOXML.md](OOXML.md) |
| 184 | ``` |
| 185 | |
| 186 | Claude 只在使用者需要這些功能時才讀取 REDLINING.md 或 OOXML.md。 |
| 187 | |
| 188 | **重要準則:** |
| 189 | |
| 190 | - **避免深度巢狀參考** - 保持參考從 SKILL.md 算起只有一層深。所有參考檔案應直接從 SKILL.md 連結。 |
| 191 | - **為較長的參考檔案建立結構** - 超過 100 行的檔案,在頂部加入目錄以便 Claude 在預覽時看到完整範圍。 |
| 192 | |
| 193 | ## 技能建立流程 |
| 194 | |
| 195 | 技能建立包含以下步驟: |
| 196 | |
| 197 | 1. 用具體範例理解技能 |
| 198 | 2. 規劃可重複使用的技能內容(腳本、參考資料、素材) |
| 199 | 3. 初始化技能(執行 init_skill.py) |
| 200 | 4. 編輯技能(實作資源並撰寫 SKILL.md) |
| 201 | 5. 打包技能(執行 package_skill.py) |
| 202 | 6. 根據實際使用進行迭代 |
| 203 | |
| 204 | 請依序遵循這些步驟,僅在有明確原因表明不適用時才跳過。 |
| 205 | |
| 206 | ### 步驟 1:用具體範例理解技能 |
| 207 | |
| 208 | 僅在技能的使用模式已被清楚理解時才跳過此步驟。即使在處理現有技能時,此步驟仍有價值。 |
| 209 | |
| 210 | 要建立有效的技能,需要清楚理解技能將如何被使用的具體範例。這種理解可以來自使用者直接提供的範例或經使用者回饋驗證的生成範例。 |
| 211 | |
| 212 | 例如,在建立圖片編輯技能時,相關問題包括: |
| 213 | |
| 214 | - 「圖片編輯技能應支援哪些功能?編輯、旋轉、還有其他嗎?」 |
| 215 | - 「你能舉一些使用此技能的例子嗎?」 |
| 216 | - 「我可以想像使用者會問『移除這張照片的紅眼』或『旋轉這張圖片』。你還能想到其他使用方式嗎?」 |
| 217 | - 「使用者說什麼應該觸發此技能?」 |
| 218 | |
| 219 | 為避免讓使用者不知所措,不要在單一訊息中問太多問題。從最重要的問題開始,根據需要追問以獲得更好的效果。 |
| 220 | |
| 221 | 當對技能應支援的功能有清楚的認知時,即可結束此步驟。 |
| 222 | |
| 223 | ### 步驟 2:規劃可重複使用的技能內容 |
| 224 | |
| 225 | 要將具體範例轉化為 |