Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:40:34 +08:00
commit 7c88e7d08d
10 changed files with 3266 additions and 0 deletions

461
commands/create-skill.md Normal file
View File

@@ -0,0 +1,461 @@
---
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 中的版本管理規範