Create Skill
Guides you through creating a new Claude Code Skill with best practices.
/plugin marketplace add MilesChou/claude-marketplace/plugin install plugin-dev@mileschou-marketplace技能描述協助你從構思到實作,建立一個符合最佳實踐的 Claude Code Skill。
接收一個可選的技能描述參數:
/plugin-dev:create-skill [技能描述]
如果使用者沒有提供描述,使用 AskUserQuestion 詢問:
問題:你想建立什麼樣的 Skill?
詢問以下資訊(使用一次 AskUserQuestion 同時詢問):
所屬 Plugin:這個 skill 屬於哪個 plugin?
使用場景:
邏輯複雜度:
引用 plugin-dev:skills-development 的判斷標準
根據收集到的資訊,評估是否符合 skill 的定位:
- [ ] 多處使用?(2+ 個地方)
- [ ] 邏輯複雜?(5+ 個步驟)
- [ ] 可獨立呼叫?(使用者可能單獨執行)
- [ ] 需要獨立維護?(邏輯會經常更新)
符合 3+ 項:✅ 適合建立 Skill,繼續流程
符合 1-2 項:❓ 提供建議
根據 YAGNI 原則,這個功能可能更適合:
- Command:如果使用者需要直接呼叫
- 直接寫在現有的 Command/Agent 中:如果只在一個地方使用
是否仍要繼續建立 Skill?
符合 0 項:❌ 不建議建立 Skill
這個功能不符合 Skill 的定位,建議:
1. 如果使用者需要直接呼叫 → 建立 Command
2. 如果需要複雜互動 → 建立 Agent
3. 如果邏輯簡單 → 直接寫在現有檔案中
提供替代方案建議。
如果確定要建立 skill,開始設計細節:
Skill 名稱(使用 kebab-case):
{功能動詞}-{對象} 格式analyze-atomicity、generate-commit-messageYAML Front Matter 名稱(使用 PascalCase 或自然語言):
Analyze Atomicity、Generate Commit MessageDescription(一句話說明):
輸入條件:
輸出結果:
將工作流程分解成清晰的步驟:
## 執行步驟
### 步驟 1:[第一個階段]
- 子步驟 1-1
- 子步驟 1-2
### 步驟 2:[第二個階段]
- 子步驟 2-1
- 子步驟 2-2
### 步驟 N:[最後階段]
- 完成並輸出結果
注意事項:
設計實際的使用場景和範例:
## 使用範例
### 場景 1:[典型使用情況]
[描述場景和範例程式碼]
### 場景 2:[特殊情況]
[描述場景和範例程式碼]
在產生檔案前,向使用者確認完整的設計:
## Skill 設計摘要
**Plugin**:{plugin-name}
**Skill 名稱**:{skill-name}
**描述**:{description}
**輸入條件**:
- [列出輸入項目]
**執行步驟**:
1. [步驟 1]
2. [步驟 2]
...
**輸出結果**:
- [列出輸出項目]
**使用場景**:
- [場景 1]
- [場景 2]
確認以上設計無誤?
使用 AskUserQuestion 確認,如果使用者提出修改意見,調整設計後再次確認。
mkdir -p plugins/{plugin-name}/skills/{skill-name}
使用 Write tool 建立 plugins/{plugin-name}/skills/{skill-name}/SKILL.md:
---
name: {Skill Name}
description: {簡短描述}
---
# {Skill 標題}
{詳細說明這個 skill 的功能和目的}
## 核心功能
- {功能點 1}
- {功能點 2}
- {功能點 3}
## 輸入條件
- {前置條件 1}
- {前置條件 2}
## 執行步驟
### 步驟 1:{步驟名稱}
{詳細說明}
### 步驟 2:{步驟名稱}
{詳細說明}
## 輸出結果
- {輸出項目 1}
- {輸出項目 2}
## 使用範例
### 場景 1:{場景名稱}
{範例說明}
## 注意事項
- {注意事項 1}
- {注意事項 2}
重要:
使用 Read tool 讀取剛建立的 SKILL.md,確認內容正確。
讀取 plugins/{plugin-name}/README.md,在 Skills 清單中加入新的 skill:
### `{plugin-name}:{skill-name}`
{description}
**功能特點:**
- {特點 1}
- {特點 2}
**適用場景:**
- {場景 1}
- {場景 2}
**使用方式:**
{簡要的使用說明}
讀取 plugins/{plugin-name}/CHANGELOG.md,在 [Unreleased] 區段的 ### Added 下加入:
- 新增 `{plugin-name}:{skill-name}` Skill
- {功能說明 1}
- {功能說明 2}
- {功能說明 3}
如果 [Unreleased] 區段不存在,創建它。
如果 ### Added 區段不存在,創建它。
完成後向使用者報告:
✅ Skill 建立完成!
**檔案位置**:
- SKILL.md: plugins/{plugin-name}/skills/{skill-name}/SKILL.md
- README.md: 已更新
- CHANGELOG.md: 已更新
**後續步驟建議**:
1. 測試 Skill
- 在實際場景中使用這個 skill
- 確認執行步驟是否清晰
- 驗證輸入輸出是否符合預期
2. 更新引用
- 在需要使用這個 skill 的 commands/agents 中加入引用
- 移除重複的邏輯程式碼
3. 版本管理
- 如果這是重要更新,考慮更新 plugin 版本號
- 在 CHANGELOG.md 中補充更詳細的說明
4. 文件完善
- 根據實際使用情況補充更多範例
- 加入常見問題和注意事項
在整個流程中,持續提醒並應用以下原則:
如果使用者指定的 plugin 不存在,詢問:
Plugin `{plugin-name}` 不存在。
你想要:
1. 建立新的 plugin `{plugin-name}`?
2. 選擇其他現有的 plugin?
如果選擇建立新 plugin,提示:
建立新 plugin 需要:
- .claude-plugin/plugin.json
- README.md
- CHANGELOG.md
建議先使用其他工具建立 plugin,再回來建立 skill。
或者我可以協助你建立基本的 plugin 結構?
如果 skill 已經存在,詢問:
Skill `{plugin-name}:{skill-name}` 已存在。
你想要:
1. 覆蓋現有的 skill(會備份舊版本)
2. 使用不同的名稱
3. 取消操作
根據評估結果,提供替代建議:
建議建立 Command:
這個功能更適合建立 Command,因為:
- [列出理由]
Command 的優點:
- 使用者可以直接呼叫(/plugin-name:command-name)
- 輕量快速
- 適合工具型功能
要改為建立 Command 嗎?
建議建立 Agent:
這個功能更適合建立 Agent,因為:
- [列出理由]
Agent 的優點:
- 可以深入分析和思考
- 支援複雜的多輪互動
- 適合需要專業判斷的場景
要改為建立 Agent 嗎?
如果建立檔案失敗:
❌ 建立檔案時發生錯誤:{錯誤訊息}
可能的原因:
- 權限不足
- 路徑不存在
- 檔案名稱不合法
請檢查並重試。
如果 YAML Front Matter 格式錯誤:
⚠️ 檢測到格式問題:
- YAML Front Matter 缺少 `---` 分隔線
- name 或 description 欄位缺失
已自動修正格式。
在完成前確認:
plugin-dev:skills-development skill