816 lines
19 KiB
Markdown
816 lines
19 KiB
Markdown
# Skills 實施指南
|
||
|
||
本文件提供詳細的 skill 實施指南,包含檔案結構、格式規範、命名規範和實施步驟。
|
||
|
||
## Skill 檔案結構
|
||
|
||
### 基本結構
|
||
|
||
每個 skill 都是一個獨立的資料夾,裡面的結構如下:
|
||
|
||
```
|
||
/
|
||
├── SKILL.md # 必須:Skill 定義檔
|
||
├── scripts/ # 可選:可執行腳本
|
||
│ ├── setup.sh
|
||
│ └── helper.py
|
||
├── templates/ # 可選:範本檔案
|
||
│ ├── config.yaml
|
||
│ └── example.md
|
||
└── resources/ # 可選:其他資源
|
||
├── diagrams/
|
||
└── references/
|
||
```
|
||
|
||
### 目錄命名規範
|
||
|
||
**官方標準 vs 本專案擴充**
|
||
|
||
根據 [Claude Code Skills 官方規範](https://docs.claude.com/en/docs/claude-code/skills),以下是目錄命名的規範:
|
||
|
||
| 目錄名稱 | 性質 | 說明 | 建議 |
|
||
|--------------|-------|---------------------------|-------------------------|
|
||
| `SKILL.md` | 官方必須 | Skill 定義檔,也可以是其他 `.md` 檔案 | 強烈建議使用 `SKILL.md` 保持一致性 |
|
||
| `scripts/` | 官方建議 | 存放可執行腳本的標準目錄 | **建議使用**官方名稱以保持跨平台相容性 |
|
||
| `resources/` | 官方建議 | 存放輔助資源的標準目錄 | **建議使用**官方名稱以保持跨平台相容性 |
|
||
| `templates/` | 本專案擴充 | 本專案新增的範本檔案目錄 | 可選使用,不影響官方相容性 |
|
||
|
||
**自訂目錄名稱**
|
||
|
||
雖然官方沒有強制規定目錄名稱,但為了保持一致性和跨平台相容性:
|
||
|
||
- ✅ **建議**:使用官方推薦的 `scripts/` 和 `resources/` 名稱
|
||
- ✅ **可以**:新增本專案的 `templates/` 或其他自訂目錄
|
||
- ⚠️ **不建議**:修改官方推薦的目錄名稱(如將 `scripts/` 改為 `bin/`)
|
||
- ❌ **避免**:使用可能與官方未來擴充衝突的名稱
|
||
|
||
**重要提醒**:
|
||
|
||
- 使用官方名稱可確保 skill 在不同平台(Claude.ai、Claude Code、Claude API)間正常運作
|
||
- 自訂目錄只能在支援的平台上使用,可能影響可移植性
|
||
|
||
### 必須的檔案
|
||
|
||
#### SKILL.md
|
||
|
||
**用途**:定義 skill 的核心工作流程和行為
|
||
|
||
**必須包含**:
|
||
|
||
- YAML Front Matter(name, description)
|
||
- 核心功能說明
|
||
- 執行步驟
|
||
|
||
**範例**:
|
||
|
||
```markdown
|
||
---
|
||
name: example-skill
|
||
description: 簡短描述這個 skill 的核心功能
|
||
---
|
||
|
||
# Skill 標題
|
||
|
||
## 核心功能
|
||
|
||
- 功能 1
|
||
- 功能 2
|
||
|
||
## 執行步驟
|
||
|
||
1. 步驟 1
|
||
2. 步驟 2
|
||
3. 步驟 3
|
||
```
|
||
|
||
### 可選的資源類型
|
||
|
||
#### 腳本檔案 (scripts/)
|
||
|
||
**用途**:存放可執行的腳本
|
||
|
||
**適用情境**:
|
||
|
||
- Skill 需要執行系統命令
|
||
- 包含可重複使用的腳本邏輯
|
||
- 需要與外部工具整合
|
||
|
||
**範例**:
|
||
|
||
```
|
||
scripts/
|
||
├── analyze.py # Python 分析腳本
|
||
├── format.sh # Bash 格式化腳本
|
||
└── validate.js # JavaScript 驗證腳本
|
||
```
|
||
|
||
**注意事項**:
|
||
|
||
- 腳本應該有可執行權限(`chmod +x`)
|
||
- 在 SKILL.md 中說明如何使用這些腳本
|
||
- 腳本應該有清晰的錯誤處理
|
||
|
||
#### 範本檔案 (templates/)
|
||
|
||
**用途**:存放範本檔案
|
||
|
||
**適用情境**:
|
||
|
||
- Skill 需要產生標準格式的檔案
|
||
- 提供可自訂的配置範本
|
||
- 包含文件範本
|
||
|
||
**範例**:
|
||
|
||
```
|
||
templates/
|
||
├── README.template.md # README 範本
|
||
├── config.template.yaml # 配置檔範本
|
||
└── test.template.js # 測試檔案範本
|
||
```
|
||
|
||
**注意事項**:
|
||
|
||
- 範本中使用清晰的佔位符(如 `{{PLACEHOLDER}}`)
|
||
- 在 SKILL.md 中說明如何使用範本
|
||
- 提供範本的填寫說明
|
||
|
||
#### 輔助資源檔案 (resources/)
|
||
|
||
**用途**:存放其他輔助資源
|
||
|
||
**適用情境**:
|
||
|
||
- 需要參考的圖表或文件
|
||
- 靜態資料檔案
|
||
- 額外的說明文件
|
||
|
||
**範例**:
|
||
|
||
```
|
||
resources/
|
||
├── diagrams/
|
||
│ └── workflow.mermaid # Mermaid 流程圖
|
||
├── references/
|
||
│ └── api-spec.json # API 規格
|
||
└── data/
|
||
└── examples.json # 範例資料
|
||
```
|
||
|
||
---
|
||
|
||
## SKILL.md 格式規範
|
||
|
||
### YAML Front Matter
|
||
|
||
位於檔案開頭,使用 `---` 包圍:
|
||
|
||
```yaml
|
||
---
|
||
name: Skill-Name # 必須:skill 的名稱
|
||
description: 簡短描述 # 必須:一句話說明核心功能
|
||
---
|
||
```
|
||
|
||
#### name 欄位
|
||
|
||
**必須欄位**
|
||
|
||
**格式**:
|
||
|
||
- 使用 kebab-case(如 `skills-development`)
|
||
- 與資料夾名稱完全一致
|
||
|
||
**範例**:
|
||
|
||
```
|
||
# ✅ 正確
|
||
name: resolving-conflict
|
||
name: skills-development
|
||
name: quick-fix
|
||
|
||
# ❌ 錯誤
|
||
name: Resolving-Conflict # 首字母大寫
|
||
name: resolvingConflict # camelCase
|
||
name: resolving_conflict # snake_case
|
||
name: RESOLVING-CONFLICT # SCREAMING-KEBAB-CASE
|
||
```
|
||
|
||
#### description 欄位
|
||
|
||
**必須欄位**
|
||
|
||
**用途與重要性**
|
||
|
||
description 是 **AI 發現和選擇 skill 的關鍵**:
|
||
|
||
1. **啟動時預載入**:Claude 在啟動時會預載入所有 skills 的 name 和 description 到 system prompt
|
||
2. **動態發現**:工作時 Claude 會掃描 descriptions 來找到相關的 skills
|
||
3. **漸進式揭露**:只有在需要時才載入完整的 SKILL.md 內容
|
||
4. **Token 效率**:每個 skill 只佔用幾十個 tokens,保持 Claude 快速運作
|
||
|
||
**內容要求**
|
||
|
||
description 必須包含兩個關鍵資訊:
|
||
|
||
1. ✅ **What(做什麼)**:這個 skill 的核心功能
|
||
2. ✅ **When(何時使用)**:Claude 應該在什麼情況下使用它
|
||
|
||
**格式規範**
|
||
|
||
- **官方限制**:最大 1024 字元
|
||
- **建議長度**:50-150 字(一到兩句話)
|
||
- **語言**:繁體中文(本專案規範)
|
||
- **語態**:使用主動語態,直接說明功能
|
||
|
||
**範例**
|
||
|
||
```yaml
|
||
# ✅ 優秀範例(包含 What 和 When)
|
||
description: 協助解決 Git Rebase 或 Merge 過程中的衝突,提供系統化的衝突解決流程。
|
||
# What: 解決 Git 衝突
|
||
# When: Git Rebase 或 Merge 過程中
|
||
|
||
description: 協助設計和開發 Claude Code Skills,提供 skill 設計的思考邏輯和最佳實踐
|
||
# What: 協助設計和開發 Skills
|
||
# When: 設計 Skills 時需要思考邏輯和最佳實踐
|
||
|
||
# ⚠️ 需要改進
|
||
description: 解決衝突
|
||
# 問題:太簡短,缺少 When(何時使用)
|
||
|
||
description: 這個 skill 是用來幫助使用者解決 Git 衝突的工具
|
||
# 問題:不要用「這個 skill」開頭,語句冗長
|
||
|
||
description: 處理資料
|
||
# 問題:太模糊,沒有說明做什麼資料處理、何時使用
|
||
|
||
# ❌ 錯誤範例
|
||
description: Helps resolve git conflicts
|
||
# 問題:應使用繁體中文(本專案規範)
|
||
|
||
description: 解決 Git 衝突的工具,可以幫助使用者在遇到衝突時進行處理,包含自動分析、手動編輯、衝突標記移除等多種功能,並且支援 rebase 和 merge 兩種模式
|
||
# 問題:太冗長,應該簡潔明瞭
|
||
```
|
||
|
||
**撰寫技巧**
|
||
|
||
1. **直接說明功能**
|
||
- ✅ 協助解決 Git Rebase 或 Merge 過程中的衝突
|
||
- ❌ 這是一個用來解決 Git 衝突的 skill
|
||
|
||
2. **包含使用時機**
|
||
- ✅ 在 Git Rebase 或 Merge 過程中遇到衝突時
|
||
- ❌ 解決衝突(沒說明什麼時候)
|
||
|
||
3. **保持簡潔但完整**
|
||
- ✅ 一到兩句話,涵蓋 What 和 When
|
||
- ❌ 過度詳細的功能列表(這些應該放在 SKILL.md 內容中)
|
||
|
||
4. **使用具體的情境**
|
||
- ✅ Git Rebase 或 Merge 過程中
|
||
- ❌ 當你需要處理版本控制問題時
|
||
|
||
### 內容結構
|
||
|
||
**建議的章節順序**:
|
||
|
||
```markdown
|
||
---
|
||
name: skill-name
|
||
description: 簡短描述
|
||
---
|
||
|
||
# Skill 標題
|
||
|
||
簡短的介紹(1-2 段)
|
||
|
||
## 核心功能
|
||
|
||
- 列出主要功能
|
||
|
||
## 輸入條件(可選)
|
||
|
||
- 列出前置條件
|
||
- 需要的資訊或工具
|
||
|
||
## 執行步驟
|
||
|
||
1. 步驟 1
|
||
2. 步驟 2
|
||
3. 步驟 3
|
||
|
||
## 輸出結果(可選)
|
||
|
||
- 說明產出內容
|
||
- 如何被其他 commands/skills 使用
|
||
|
||
## 使用場景
|
||
|
||
- 適用情境
|
||
- 工作流程範例
|
||
|
||
## 注意事項
|
||
|
||
- 安全檢查
|
||
- 常見錯誤
|
||
|
||
## 整合其他工具(可選)
|
||
|
||
- 相關的 commands、skills、agents
|
||
```
|
||
|
||
### 章節說明
|
||
|
||
#### 核心功能(必須)
|
||
|
||
列出 skill 的主要功能,使用條列式:
|
||
|
||
```markdown
|
||
## 核心功能
|
||
|
||
- 偵測當前的衝突狀態(rebase 或 merge)
|
||
- 列出所有衝突的檔案
|
||
- 逐個檢視並解決衝突
|
||
- 完成 rebase 或 merge 流程
|
||
```
|
||
|
||
#### 執行步驟(必須)
|
||
|
||
詳細說明工作流程,使用編號列表:
|
||
|
||
```markdown
|
||
## 執行步驟
|
||
|
||
### 1. 準備階段
|
||
|
||
檢查前置條件:
|
||
|
||
- 確認工具已安裝
|
||
- 驗證環境設定
|
||
|
||
### 2. 執行階段
|
||
|
||
1. **第一步**
|
||
- 詳細說明
|
||
- 可能的指令
|
||
|
||
2. **第二步**
|
||
- 詳細說明
|
||
- 注意事項
|
||
|
||
### 3. 完成階段
|
||
|
||
清理和驗證:
|
||
|
||
- 檢查結果
|
||
- 產生報告
|
||
```
|
||
|
||
#### 使用場景(建議)
|
||
|
||
提供實際的使用範例:
|
||
|
||
```markdown
|
||
## 使用場景
|
||
|
||
### 適用情境
|
||
|
||
- 情境 1
|
||
- 情境 2
|
||
|
||
### 工作流程範例
|
||
|
||
\`\`\`
|
||
[使用者的操作]
|
||
|
||
User: 描述使用者的請求
|
||
|
||
Agent: Claude 的回應和操作
|
||
|
||
[執行 skill 的過程]
|
||
|
||
User: 使用者的後續互動
|
||
|
||
Agent: 完成的回應
|
||
\`\`\`
|
||
```
|
||
|
||
---
|
||
|
||
## 命名規範
|
||
|
||
### 資料夾命名
|
||
|
||
**格式**:kebab-case(全小寫,單字用 `-` 分隔)
|
||
|
||
**規則**:
|
||
|
||
- ✅ 使用小寫字母和數字
|
||
- ✅ 使用 `-` 分隔單字
|
||
- ❌ 不使用 `_`(底線)
|
||
- ❌ 不使用大寫字母
|
||
- ❌ 不使用特殊字元
|
||
|
||
**範例**:
|
||
|
||
| ✅ 正確 | ❌ 錯誤 | 原因 |
|
||
|---------------------------|---------------------------|---------------|
|
||
| `resolving-conflict` | `ResolvingConflict` | 不使用大寫 |
|
||
| `skills-development` | `skills_development` | 使用 `-` 而非 `_` |
|
||
| `quick-fix` | `quickFix` | 不使用 camelCase |
|
||
| `generate-commit-message` | `generate.commit.message` | 不使用 `.` |
|
||
| `api-v2-client` | `api_v2_client` | 使用 `-` 而非 `_` |
|
||
|
||
### YAML name 欄位命名
|
||
|
||
**格式**:kebab-case(全小寫,與資料夾名稱完全一致)
|
||
|
||
**規則**:
|
||
|
||
- ✅ 使用 kebab-case 與資料夾名稱完全一致
|
||
- ❌ 不使用首字母大寫
|
||
- ❌ 不使用 camelCase
|
||
- ❌ 不使用 snake_case
|
||
- ❌ 不使用 PascalCase
|
||
|
||
**範例**:
|
||
|
||
| 資料夾名稱 | ✅ 正確的 name | ❌ 錯誤的 name |
|
||
|----------------------|----------------------|-------------------------------------------------------------|
|
||
| `resolving-conflict` | `resolving-conflict` | `Resolving-Conflict`<br>`resolvingConflict`<br>`resolving_conflict` |
|
||
| `skills-development` | `skills-development` | `Skills-Development`<br>`skillsDevelopment`<br>`SKILLS-DEVELOPMENT` |
|
||
| `quick-fix` | `quick-fix` | `Quick-Fix`<br>`quickFix`<br>`QuickFix` |
|
||
|
||
**推薦做法**:
|
||
|
||
```yaml
|
||
# 推薦:與資料夾名稱完全一致
|
||
資料夾:skills-development/
|
||
name: skills-development
|
||
```
|
||
|
||
### 描述性命名
|
||
|
||
Skill 名稱應該清楚描述功能:
|
||
|
||
**✅ 好的命名**:
|
||
|
||
| 名稱 | 說明 |
|
||
|---------------------------|--------------|
|
||
| `analyze-atomicity` | 明確說明「分析原子性」 |
|
||
| `generate-commit-message` | 明確說明「產生提交訊息」 |
|
||
| `resolving-conflict` | 明確說明「解決衝突」 |
|
||
| `validate-config` | 明確說明「驗證配置」 |
|
||
|
||
**❌ 壞的命名**:
|
||
|
||
| 名稱 | 問題 |
|
||
|-------------|------------|
|
||
| `helper` | 太抽象,不知道幫什麼 |
|
||
| `utils` | 太通用,應該明確功能 |
|
||
| `processor` | 不知道處理什麼 |
|
||
| `manager` | 不知道管理什麼 |
|
||
| `do-stuff` | 完全不清楚功能 |
|
||
|
||
### 命名最佳實踐
|
||
|
||
#### 1. 使用動詞開頭
|
||
|
||
描述 skill 的動作:
|
||
|
||
```
|
||
✅ analyze-atomicity (分析原子性)
|
||
✅ generate-message (產生訊息)
|
||
✅ validate-input (驗證輸入)
|
||
✅ resolve-conflict (解決衝突)
|
||
|
||
❌ atomicity-analyzer (應該用動詞開頭)
|
||
❌ message-generator (應該用動詞開頭)
|
||
```
|
||
|
||
#### 2. 保持簡潔但清楚
|
||
|
||
```
|
||
✅ validate-config (簡潔清楚)
|
||
✅ parse-json (簡潔清楚)
|
||
|
||
❌ validate-all-configuration-files (太長)
|
||
❌ val-cfg (縮寫不清楚)
|
||
```
|
||
|
||
#### 3. 避免重複
|
||
|
||
```
|
||
✅ git/skills/resolve-conflict/ (git 已在 plugin 名稱中)
|
||
❌ git/skills/git-resolve-conflict/ (重複 git)
|
||
|
||
✅ jira/skills/analyze-ticket/
|
||
❌ jira/skills/jira-analyze-ticket/
|
||
```
|
||
|
||
---
|
||
|
||
## 實施計畫
|
||
|
||
當你決定要創建一個新的 skill 時,按照以下步驟進行:
|
||
|
||
### 步驟 1:創建檔案結構
|
||
|
||
```bash
|
||
# 進入 plugin 目錄
|
||
cd plugins/{plugin-name}
|
||
|
||
# 創建 skill 資料夾
|
||
mkdir -p skills/{skill-name}
|
||
|
||
# 創建核心定義檔
|
||
touch skills/{skill-name}/SKILL.md
|
||
|
||
# 如果需要,創建可選的資源資料夾
|
||
mkdir -p skills/{skill-name}/scripts
|
||
mkdir -p skills/{skill-name}/templates
|
||
mkdir -p skills/{skill-name}/resources
|
||
```
|
||
|
||
### 步驟 2:設計 SKILL.md
|
||
|
||
**2.1 撰寫 YAML Front Matter**
|
||
|
||
```yaml
|
||
---
|
||
name: your-skill-name
|
||
description: 一句話說明這個 skill 的核心功能(50-100 字)
|
||
---
|
||
```
|
||
|
||
**2.2 撰寫核心內容**
|
||
|
||
按照以下順序組織內容:
|
||
|
||
1. **主標題和簡介**
|
||
```markdown
|
||
# Skill 標題
|
||
|
||
簡短介紹這個 skill 的用途和價值(1-2 段)
|
||
```
|
||
|
||
2. **核心功能**
|
||
```markdown
|
||
## 核心功能
|
||
|
||
- 功能 1
|
||
- 功能 2
|
||
- 功能 3
|
||
```
|
||
|
||
3. **執行步驟**
|
||
```markdown
|
||
## 執行步驟
|
||
|
||
### 1. 步驟標題
|
||
|
||
詳細說明...
|
||
|
||
### 2. 步驟標題
|
||
|
||
詳細說明...
|
||
```
|
||
|
||
4. **其他章節**(視需要加入)
|
||
- 輸入條件
|
||
- 輸出結果
|
||
- 使用場景
|
||
- 注意事項
|
||
- 整合其他工具
|
||
|
||
**2.3 撰寫範例**
|
||
|
||
提供實際的使用範例,幫助使用者理解:
|
||
|
||
```markdown
|
||
## 工作流程範例
|
||
|
||
\`\`\`
|
||
User: [使用者的請求]
|
||
|
||
Agent: [Claude 的回應]
|
||
[執行 skill 的步驟]
|
||
|
||
User: [使用者的後續互動]
|
||
|
||
Agent: [完成的回應]
|
||
\`\`\`
|
||
```
|
||
|
||
### 步驟 3:重構現有程式碼(如果適用)
|
||
|
||
如果是從現有的 command/agent 中抽取 skill:
|
||
|
||
**3.1 識別要抽取的邏輯**
|
||
|
||
找出重複使用或可以獨立的部分
|
||
|
||
**3.2 更新原始檔案**
|
||
|
||
移除重複的邏輯,改為引用新的 skill:
|
||
|
||
```markdown
|
||
## 執行步驟
|
||
|
||
1. 準備工作
|
||
2. **使用 `{plugin-name}:{skill-name}` skill** 執行主要邏輯
|
||
3. 後續處理
|
||
```
|
||
|
||
**3.3 測試功能**
|
||
|
||
確保重構後功能正常:
|
||
|
||
- 測試所有引用這個 skill 的 commands
|
||
- 確認 skill 可以獨立執行
|
||
- 檢查錯誤處理
|
||
|
||
### 步驟 4:更新文件
|
||
|
||
**4.1 更新 Plugin README.md**
|
||
|
||
在 plugin 的 README 中加入新的 skill:
|
||
|
||
```markdown
|
||
## Skills
|
||
|
||
### {skill-name}
|
||
|
||
簡短說明這個 skill 的功能。
|
||
|
||
**位置**:`skills/{skill-name}/SKILL.md`
|
||
|
||
**主要功能**:
|
||
|
||
- 功能 1
|
||
- 功能 2
|
||
|
||
**使用方式**:
|
||
在 commands 或 agents 中引用這個 skill
|
||
```
|
||
|
||
**4.2 更新 CHANGELOG.md**
|
||
|
||
記錄到 plugin 的 CHANGELOG:
|
||
|
||
```markdown
|
||
## [Unreleased]
|
||
|
||
### Added
|
||
|
||
- 新增 `{skill-name}` skill:{簡短說明}
|
||
```
|
||
|
||
**4.3 更新版本號**(如果需要發布)
|
||
|
||
在 `.claude-plugin/plugin.json` 中更新版本號:
|
||
|
||
```json
|
||
{
|
||
"name": "plugin-name",
|
||
"version": "1.1.0",
|
||
...
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 品質檢查清單
|
||
|
||
創建或修改 skill 後,使用這個檢查清單確保品質:
|
||
|
||
### 檔案結構
|
||
|
||
- [ ] `SKILL.md` 檔案存在且位於正確位置
|
||
- [ ] 資料夾名稱使用 kebab-case
|
||
- [ ] 檔案結尾有空行
|
||
- [ ] 可選的資料夾(scripts, templates, resources)有適當的組織
|
||
|
||
### YAML Front Matter
|
||
|
||
- [ ] 包含 `name` 欄位
|
||
- [ ] 包含 `description` 欄位
|
||
- [ ] `name` 使用 PascalCase 或 kebab-case
|
||
- [ ] `description` 清楚簡潔(50-100 字)
|
||
- [ ] 使用繁體中文
|
||
- [ ] YAML 格式正確(使用 `---` 包圍)
|
||
|
||
### 內容品質
|
||
|
||
- [ ] 包含「核心功能」章節
|
||
- [ ] 包含「執行步驟」章節
|
||
- [ ] 執行步驟清晰且可操作
|
||
- [ ] 提供使用範例或場景
|
||
- [ ] 包含注意事項(如果適用)
|
||
- [ ] Markdown 格式正確
|
||
- [ ] 沒有錯字和語法錯誤
|
||
|
||
### 命名規範
|
||
|
||
- [ ] 資料夾名稱使用 kebab-case
|
||
- [ ] YAML name 與資料夾名稱一致(推薦)
|
||
- [ ] 名稱具有描述性,清楚說明功能
|
||
- [ ] 使用動詞開頭(建議)
|
||
- [ ] 避免重複 plugin 名稱
|
||
|
||
### 功能驗證
|
||
|
||
- [ ] Skill 可以獨立執行
|
||
- [ ] 所有引用這個 skill 的 commands/agents 都能正常運作
|
||
- [ ] 測試過主要使用場景
|
||
- [ ] 錯誤處理完善
|
||
|
||
### 文件更新
|
||
|
||
- [ ] 更新 Plugin README.md
|
||
- [ ] 更新 CHANGELOG.md
|
||
- [ ] 更新版本號(如果需要發布)
|
||
- [ ] 所有文件間的連結正確
|
||
|
||
### 整合檢查
|
||
|
||
- [ ] 與其他 skills 的介面清楚
|
||
- [ ] 與 commands 的整合正確
|
||
- [ ] 與 agents 的整合正確
|
||
- [ ] 沒有與其他 skills 重複的功能
|
||
|
||
---
|
||
|
||
## 常見問題
|
||
|
||
### Q1:應該創建多少個可選資料夾?
|
||
|
||
**A**:只創建你實際需要的資料夾。
|
||
|
||
- 如果沒有腳本,不要創建空的 `scripts/` 資料夾
|
||
- 如果沒有範本,不要創建空的 `templates/` 資料夾
|
||
- 保持結構簡單,遵循 YAGNI 原則
|
||
|
||
### Q2:YAML name 必須使用 kebab-case 嗎?
|
||
|
||
**A**:**是的,統一使用全小寫的 kebab-case** 與資料夾名稱完全一致。
|
||
|
||
範例:
|
||
|
||
```
|
||
資料夾:skills-development/
|
||
YAML: name: skills-development (全小寫的 kebab-case)
|
||
```
|
||
|
||
這樣可以保持命名的一致性,便於維護和識別。
|
||
|
||
### Q3:description 應該寫多長?要包含什麼內容?
|
||
|
||
**A**:**建議 50-150 字**,一到兩句話,必須包含 **What(做什麼)** 和 **When(何時使用)**。
|
||
|
||
**原因**:
|
||
- description 是 AI 發現 skill 的關鍵,會被預載入到 system prompt
|
||
- Claude 透過掃描 descriptions 來決定使用哪個 skill
|
||
- 官方限制最大 1024 字元
|
||
|
||
**範例**:
|
||
- ✅ 優秀:「協助解決 Git Rebase 或 Merge 過程中的衝突,提供系統化的衝突解決流程。」
|
||
- What: 解決 Git 衝突
|
||
- When: Git Rebase 或 Merge 過程中
|
||
- ❌ 太簡短:「解決衝突」(缺少 When 和具體情境)
|
||
- ❌ 太冗長:列出所有功能細節(應該放在 SKILL.md 內容中)
|
||
|
||
### Q4:可以在 skill 中引用其他 skills 嗎?
|
||
|
||
**A**:可以,但要注意避免循環依賴。
|
||
|
||
```markdown
|
||
## 執行步驟
|
||
|
||
1. 使用 `analyze-changes` skill 分析變更
|
||
2. 根據分析結果決定策略
|
||
3. 執行對應的操作
|
||
```
|
||
|
||
### Q5:如何處理 skill 的版本控制?
|
||
|
||
**A**:Skills 的版本跟隨 plugin 的版本。
|
||
|
||
- 修改 skill 時更新 plugin 的 CHANGELOG
|
||
- 如果是重大變更,考慮增加 plugin 的 MAJOR 版本號
|
||
- 在 CHANGELOG 中明確記錄 skill 的變更
|
||
|
||
---
|
||
|
||
## 與其他文件的關聯
|
||
|
||
- **[SKILL.md](SKILL.md)**:核心判斷標準,決定是否需要創建 skill
|
||
- **[official-reference.md](official-reference.md)**:官方格式規範的詳細說明
|
||
- **[examples.md](examples.md)**:實際案例,看其他 skills 如何實作
|
||
- **[best-practices.md](best-practices.md)**:避免實施中的常見錯誤
|
||
|
||
---
|
||
|
||
**最後更新**:2025-10-19
|