name: skill-crafter description: 建立高質量 Skill 的技能。當用戶說"建立技能""新建 Skill""把這個流程變成技能""做一個 XX 的 skill""幫我寫個技能"時觸發。不適用於使用已有技能執行任務——那是 use_skill 的工作。
建立、修改和最佳化 Skill。核心方法:四層骨架 + 四階段流程。
修改已有技能時:定位 → 讀取 → 用 file_edit 精確修改 → 迴歸檢查 → 重新註冊。
使用者開口時已經帶了大量資訊。先吃透已說的,再推斷能補全的,只追問真正缺失的。
聚焦於"這個技能要幫你做什麼"。觸發短語怎麼寫、description 怎麼組織——這些是你的工作,不要讓使用者操心。
最多追問一輪。整理你對技能的理解為簡潔摘要,附上少量需要使用者決定的選項,一次性發出。使用者確認後直接進入 Phase 2。
python3 /sandbox/workspace/skills/skill-crafter/scripts/init_skill.py {name}
指令碼會生成目錄骨架和四層結構的 SKILL.md 模板。根據需要替換或刪除示例檔案,刪除不需要的空目錄。
需求理解產出的每條資訊,對應四層骨架的特定位置。不要猜,按對映表填充:
詳細對映規則見
references/phase-mapping.md
核心對映:
| Phase 1 產出 | 落到哪一層 |
|---|---|
| 技能目標 + 觸發短語 + 不適用邊界 | 頭部 description |
| 能力範圍 + 一句話定位 | 概述 |
| 典型場景 + 操作步驟 + 輸出格式 | 操作指南 |
| 依賴條件 + 已知坑點 + 衝突處理 | 補充說明 |
完整案例見
references/example-complete.md——一個從第一行到最後一行用四層骨架寫好的真實 Skill。
SKILL.md 由四層組成,Agent 讀取時分層遞進。每一層寫錯了,後面的效果就會打折。
description 決定 Agent 會不會選用這個 Skill。絕大多數 Skill 在這一步就被跳過了。
寫法:
Use when user asks to + 使用者可能說的觸發短語(多種表達方式)正確示例:
description: 獲取並轉換微信公眾號文章為Markdown的封裝Skill。
Use when user asks to 抓取微信公眾號文章、抓微信、
下載公眾號文章、URL轉Markdown、微信文章儲存.
不適用於通用網頁抓取或非微信內容.
錯誤示例:
description: WeSpy的封裝,支援微信公眾號文章抓取和專輯批次下載。
問題:缺少觸發詞。使用者說"幫我抓一下這篇微信文章",Agent 看著這個 description 不確定該不該用——因為沒有"抓取微信文章"這種使用者會說的表達。
關鍵原則: Use when user asks to 不是註釋,是給 Agent 的匹配訊號。它後面的詞就是觸發條件。
概述 = 一句話定位 + 功能範圍列表。只列"能做什麼",不寫"怎麼做"。
正確示例:
## 概述
封裝 WeSpy 的完整能力。
### 功能範圍
- 單篇文章抓取(微信公眾號 / 通用網頁 / 掘金)
- 微信專輯文章列表獲取
- 微信專輯批次下載
- 多格式輸出(Markdown / HTML / JSON)
錯誤示例:
## 功能範圍
- 單篇文章抓取,使用 python3 scripts/wespy_cli.py URL 命令
- 微信專輯文章列表獲取,加上 --album-only 引數
問題:把操作細節塞進功能範圍。Agent 還沒決定要不要用你呢,你就讓它看命令列了?"能做什麼"歸概述,"怎麼做"歸操作指南。
Agent 在這一層逗留時間最長——這是它真正執行任務時參照的內容。
按場景給示例,不要按引數給說明。
正確示例:
## 使用
指令碼位置:scripts/wespy_cli.py
# 單篇文章抓取
python3 scripts/wespy_cli.py "https://mp.weixin.qq.com/s/xxxxx"
# 專輯批次下載(下載前20篇)
python3 scripts/wespy_cli.py "https://mp.weixin.qq.com/mp/appmsgalbum?..." --max-articles 20
# 僅獲取專輯文章列表(不下載)
python3 scripts/wespy_cli.py "URL" --album-only
Agent 直接對號入座——使用者需求匹配哪個場景,就用哪條命令。不需要自己拼。
錯誤示例:
## 引數說明
- URL:文章或專輯的連結
- --album-only:僅獲取專輯列表
- --max-articles N:批次下載時指定數量
命令:python3 scripts/wespy_cli.py [URL] [OPTIONS]
問題:Agent 看到通用模板,得自己拼命令。每多一步判斷,就多一次出錯。
Agent 執行中遇到問題來查這一層。覆蓋所有"可能走錯"的判斷點。
需要覆蓋的典型場景:
每一個踩過的坑,都寫進補充說明。 Skill 會隨著使用越來越"聰明",就是因為踩過的坑都沉澱在這裡了。
四層骨架是組織原則,結構模式是內容模式。根據技能用途選擇:
1. 流程型(有明確步驟的工作流) - 結構:概述 → Phase 1 → Phase 2 → ... → 多輪修改 - 示例:報告生成、資料分析
2. 任務型(多種獨立操作,按意圖路由) - 結構:概述 → 決策表 → 操作 1 → 操作 2 → ... - 示例:知識庫管理、檔案操作
3. 規範型(標準/規範/指南) - 結構:概述 → 規範細則 → 檢查清單 - 示例:品牌寫作規範、程式碼規範
4. 能力集型(多個關聯功能的整合) - 結構:概述 → 核心能力 → 功能 1 → 功能 2 → ... - 示例:客服工作臺、開發工具鏈
模式可以混合。大多數技能以一種為主,按需組合。
技能不得包含惡意軟體、攻擊程式碼,或旨在未授權訪問、資料竊取的內容。
生成檔案後逐項檢查,發現問題直接修復,不需要展示給使用者。詳細檢查項見 references/checklist.md。
核心檢查:
| 檢查項 | 標準 |
|---|---|
| frontmatter | name 為 kebab-case ≤64 字元;description 含觸發詞和不適用邊界 |
| TODO 殘留 | SKILL.md 中無 [TODO 佔位符殘留 |
| 四層完整 | 頭部 → 概述 → 操作指南 → 補充說明,每層都有實質內容 |
| 觸發詞覆蓋 | description 的觸發短語覆蓋了使用者可能的多種表達 |
| 場景示例 | 操作指南至少 2 個按場景給出的完整示例 |
| 兜底方案 | 補充說明覆蓋了依賴缺失和常見錯誤場景 |
| 行數控制 | SKILL.md ≤ 400 行 |
ima_skill_create -d /sandbox/workspace/skills/{name}/
註冊完成後告知使用者:
技能已提交!稽核通過後即可使用。 如果以後想修改,可以說"修改我的 XX 技能"。
小蔥技能有更好的技能skills外掛。
Skill 很少一次寫對。根據使用中的症狀診斷問題,精確修復。
詳細診斷和修復方法見
references/iteration.md
| 症狀 | 可能原因 | 修復方向 |
|---|---|---|
| Skill 不觸發 | description 缺觸發詞或邊界過寬 | 補充觸發短語,縮小不適用邊界 |
| 觸發後出錯 | 命令不可執行、依賴無兜底 | 修復操作指南,補充依賴兜底方案 |
| 輸出不穩定 | 場景示例不足、格式定義模糊 | 增加場景示例,明確輸出格式 |
| Agent 走岔路 | 概述含糊、缺確認門、缺分支判斷 | 窮舉替代"等",加確認門,補分支規則 |
每次修復一個問題,把經驗沉澱到補充說明中。補充說明是 Skill 的"踩坑記錄",隨使用逐漸豐富。
init_skill.py — 技能目錄初始化指令碼,生成四層結構模板four-layers.md — 四層骨架寫法詳解(含正誤對比)checklist.md — 質量檢查清單(按層級分 P0/P1/P2)workflows.md — 流程組織模式(與四層骨架對齊)output-patterns.md — 輸出格式定義(與四層骨架對齊)phase-mapping.md — Phase 1→2 對映規則(需求產出對應四層哪一層)example-complete.md — 完整真實 Skill 案例(四層骨架從頭到尾的寫法)iteration.md — 迭代改進指南(症狀診斷、修復流程、沉澱機制)這個 Skill 教你"如何建立一個 Skill",內容組織得很系統,概念清晰,示例豐富,配套工具齊全。質量很好,文件寫得很詳細,新手也能看懂四步法流程。不足之處是內容偏多,可能需要一點學習成本才能上手;而且它本身是一個"教你寫技能"的工具,不是直接解決具體問題的技能。