Files
gh-mileschou-claude-marketp…/commands/create-skill.md
2025-11-30 08:40:34 +08:00

462 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: Create Skill
argument-hint: [技能描述]
allowed-tools: Read,Write,Edit,Bash(mkdir:*),AskUserQuestion
---
# 建立新的 Skill
協助你從構思到實作,建立一個符合最佳實踐的 Claude Code Skill。
## 參數說明
接收一個可選的技能描述參數:
```
/plugin-dev:create-skill [技能描述]
```
- 如果有提供描述,直接進入設計流程
- 如果沒有提供,先詢問使用者想要建立什麼 skill
## 執行流程
### 步驟 1收集需求
#### 1-1. 取得技能描述
如果使用者沒有提供描述,使用 AskUserQuestion 詢問:
**問題**:你想建立什麼樣的 Skill
- 請描述這個 skill 的主要功能
- 它會在什麼場景下使用?
#### 1-2. 收集基本資訊
詢問以下資訊(使用一次 AskUserQuestion 同時詢問):
1. **所屬 Plugin**:這個 skill 屬於哪個 plugin
- 提供當前可用的 plugins 清單作為選項
- 允許使用者輸入新的 plugin 名稱
2. **使用場景**
- 目前有哪些地方會使用這個 skill
- 預期未來會在哪些地方使用?
3. **邏輯複雜度**
- 大概需要幾個步驟?(簡單 3-5、中等 5-10、複雜 10+
### 步驟 2套用設計原則
**引用 `plugin-dev:skills-development` 的判斷標準**
根據收集到的資訊,評估是否符合 skill 的定位:
#### 檢查清單
```markdown
- [ ] 多處使用2+ 個地方)
- [ ] 邏輯複雜5+ 個步驟)
- [ ] 可獨立呼叫?(使用者可能單獨執行)
- [ ] 需要獨立維護?(邏輯會經常更新)
```
#### 評估結果
**符合 3+ 項**:✅ 適合建立 Skill繼續流程
**符合 1-2 項**:❓ 提供建議
```markdown
根據 YAGNI 原則,這個功能可能更適合:
- Command如果使用者需要直接呼叫
- 直接寫在現有的 Command/Agent 中:如果只在一個地方使用
是否仍要繼續建立 Skill
```
**符合 0 項**:❌ 不建議建立 Skill
```markdown
這個功能不符合 Skill 的定位,建議:
1. 如果使用者需要直接呼叫 → 建立 Command
2. 如果需要複雜互動 → 建立 Agent
3. 如果邏輯簡單 → 直接寫在現有檔案中
提供替代方案建議。
```
### 步驟 3設計 Skill 結構
如果確定要建立 skill開始設計細節
#### 3-1. 確認命名
**Skill 名稱**(使用 kebab-case
- 清楚描述功能
- 遵循 `{功能動詞}-{對象}` 格式
- 範例:`analyze-atomicity``generate-commit-message`
**YAML Front Matter 名稱**(使用 PascalCase 或自然語言):
- 範例:`Analyze Atomicity``Generate Commit Message`
**Description**(一句話說明):
- 簡潔明瞭50 字以內
- 說明核心功能和使用場景
#### 3-2. 設計輸入輸出
**輸入條件**
- 需要哪些前置資訊?
- 依賴哪些工具或環境?
- 有什麼前提條件?
**輸出結果**
- 返回什麼資訊?
- 如何被其他 commands/skills 使用?
- 會產生哪些副作用(如建立檔案、修改狀態)?
#### 3-3. 規劃執行步驟
將工作流程分解成清晰的步驟:
```markdown
## 執行步驟
### 步驟 1[第一個階段]
- 子步驟 1-1
- 子步驟 1-2
### 步驟 2[第二個階段]
- 子步驟 2-1
- 子步驟 2-2
### 步驟 N[最後階段]
- 完成並輸出結果
```
**注意事項**
- 每個步驟應該有明確的目標
- 步驟之間的依賴關係要清楚
- 包含錯誤處理的說明
#### 3-4. 提供使用範例
設計實際的使用場景和範例:
```markdown
## 使用範例
### 場景 1[典型使用情況]
[描述場景和範例程式碼]
### 場景 2[特殊情況]
[描述場景和範例程式碼]
```
### 步驟 4確認設計
在產生檔案前,向使用者確認完整的設計:
```markdown
## Skill 設計摘要
**Plugin**{plugin-name}
**Skill 名稱**{skill-name}
**描述**{description}
**輸入條件**
- [列出輸入項目]
**執行步驟**
1. [步驟 1]
2. [步驟 2]
...
**輸出結果**
- [列出輸出項目]
**使用場景**
- [場景 1]
- [場景 2]
確認以上設計無誤?
```
使用 AskUserQuestion 確認,如果使用者提出修改意見,調整設計後再次確認。
### 步驟 5產生檔案
#### 5-1. 建立目錄結構
```bash
mkdir -p plugins/{plugin-name}/skills/{skill-name}
```
#### 5-2. 產生 SKILL.md
使用 Write tool 建立 `plugins/{plugin-name}/skills/{skill-name}/SKILL.md`
```yaml
---
name: {Skill Name}
description: {簡短描述}
---
# {Skill 標題}
{詳細說明這個 skill 的功能和目的}
## 核心功能
- {功能點 1}
- {功能點 2}
- {功能點 3}
## 輸入條件
- {前置條件 1}
- {前置條件 2}
## 執行步驟
### 步驟 1{步驟名稱}
{詳細說明}
### 步驟 2{步驟名稱}
{詳細說明}
## 輸出結果
- {輸出項目 1}
- {輸出項目 2}
## 使用範例
### 場景 1{場景名稱}
{範例說明}
## 注意事項
- {注意事項 1}
- {注意事項 2}
```
**重要**
- 檔案結尾要留一個空行
- YAML Front Matter 格式要正確
- Markdown 格式要規範
#### 5-3. 確認檔案已建立
使用 Read tool 讀取剛建立的 SKILL.md確認內容正確。
### 步驟 6更新文件
#### 6-1. 更新 README.md
讀取 `plugins/{plugin-name}/README.md`,在 Skills 清單中加入新的 skill
```markdown
### `{plugin-name}:{skill-name}`
{description}
**功能特點:**
- {特點 1}
- {特點 2}
**適用場景:**
- {場景 1}
- {場景 2}
**使用方式:**
{簡要的使用說明}
```
#### 6-2. 更新 CHANGELOG.md
讀取 `plugins/{plugin-name}/CHANGELOG.md`,在 `[Unreleased]` 區段的 `### Added` 下加入:
```markdown
- 新增 `{plugin-name}:{skill-name}` Skill
- {功能說明 1}
- {功能說明 2}
- {功能說明 3}
```
如果 `[Unreleased]` 區段不存在,創建它。
如果 `### Added` 區段不存在,創建它。
### 步驟 7總結並提供後續建議
完成後向使用者報告:
```markdown
✅ 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. 文件完善
- 根據實際使用情況補充更多範例
- 加入常見問題和注意事項
```
## 設計原則提醒
在整個流程中,持續提醒並應用以下原則:
### YAGNIYou Aren't Gonna Need It
- 不要為「可能的」未來需求過度設計
- 保持簡單,專注於當前的實際需求
### DRYDon't Repeat Yourself
- 確保這個 skill 真的能避免重複
- 如果只有一個使用場景,考慮延後創建
### 單一職責原則
- 一個 skill 只做一件事
- 職責要清晰明確
### 清晰介面
- 輸入輸出要明確
- 文件要完整清楚
## 特殊情況處理
### 情況 1Plugin 不存在
如果使用者指定的 plugin 不存在,詢問:
```markdown
Plugin `{plugin-name}` 不存在。
你想要:
1. 建立新的 plugin `{plugin-name}`
2. 選擇其他現有的 plugin
```
如果選擇建立新 plugin提示
```markdown
建立新 plugin 需要:
- .claude-plugin/plugin.json
- README.md
- CHANGELOG.md
建議先使用其他工具建立 plugin再回來建立 skill。
或者我可以協助你建立基本的 plugin 結構?
```
### 情況 2Skill 已存在
如果 skill 已經存在,詢問:
```markdown
Skill `{plugin-name}:{skill-name}` 已存在。
你想要:
1. 覆蓋現有的 skill會備份舊版本
2. 使用不同的名稱
3. 取消操作
```
### 情況 3使用者提出的功能不適合 Skill
根據評估結果,提供替代建議:
**建議建立 Command**
```markdown
這個功能更適合建立 Command因為
- [列出理由]
Command 的優點:
- 使用者可以直接呼叫(/plugin-name:command-name
- 輕量快速
- 適合工具型功能
要改為建立 Command 嗎?
```
**建議建立 Agent**
```markdown
這個功能更適合建立 Agent因為
- [列出理由]
Agent 的優點:
- 可以深入分析和思考
- 支援複雜的多輪互動
- 適合需要專業判斷的場景
要改為建立 Agent 嗎?
```
## 錯誤處理
### 檔案操作錯誤
如果建立檔案失敗:
```markdown
❌ 建立檔案時發生錯誤:{錯誤訊息}
可能的原因:
- 權限不足
- 路徑不存在
- 檔案名稱不合法
請檢查並重試。
```
### 格式錯誤
如果 YAML Front Matter 格式錯誤:
```markdown
⚠️ 檢測到格式問題:
- YAML Front Matter 缺少 `---` 分隔線
- name 或 description 欄位缺失
已自動修正格式。
```
## 品質檢查清單
在完成前確認:
- [ ] SKILL.md 的 YAML Front Matter 格式正確
- [ ] 檔案結尾有空行
- [ ] Markdown 格式規範(標題、列表、程式碼區塊)
- [ ] 輸入輸出說明清楚
- [ ] 執行步驟完整且有邏輯順序
- [ ] 至少有一個使用範例
- [ ] README.md 已更新
- [ ] CHANGELOG.md 已更新
- [ ] 檔案路徑和命名符合規範
## 參考資源
- 設計原則:參考 `plugin-dev:skills-development` skill
- 檔案結構:參考專案 CLAUDE.md 中的目錄結構說明
- 版本管理:參考 CLAUDE.md 中的版本管理規範