Files
gh-mileschou-claude-marketp…/skills/skills-development/implementation.md
2025-11-30 08:40:34 +08:00

19 KiB
Raw Blame History

Skills 實施指南

本文件提供詳細的 skill 實施指南,包含檔案結構、格式規範、命名規範和實施步驟。

Skill 檔案結構

基本結構

每個 skill 都是一個獨立的資料夾,裡面的結構如下:

/
├── SKILL.md          # 必須Skill 定義檔
├── scripts/          # 可選:可執行腳本
│   ├── setup.sh
│   └── helper.py
├── templates/        # 可選:範本檔案
│   ├── config.yaml
│   └── example.md
└── resources/        # 可選:其他資源
    ├── diagrams/
    └── references/

目錄命名規範

官方標準 vs 本專案擴充

根據 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 Mattername, description
  • 核心功能說明
  • 執行步驟

範例

---
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

位於檔案開頭,使用 --- 包圍:

---
name: Skill-Name              # 必須skill 的名稱
description: 簡短描述         # 必須:一句話說明核心功能
---

name 欄位

必須欄位

格式

  • 使用 kebab-caseskills-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 字(一到兩句話)
  • 語言:繁體中文(本專案規範)
  • 語態:使用主動語態,直接說明功能

範例

# ✅ 優秀範例(包含 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 過程中
    • 當你需要處理版本控制問題時

內容結構

建議的章節順序

---
name: skill-name
description: 簡短描述
---

# Skill 標題

簡短的介紹1-2 段)

## 核心功能

- 列出主要功能

## 輸入條件(可選)

- 列出前置條件
- 需要的資訊或工具

## 執行步驟

1. 步驟 1
2. 步驟 2
3. 步驟 3

## 輸出結果(可選)

- 說明產出內容
- 如何被其他 commands/skills 使用

## 使用場景

- 適用情境
- 工作流程範例

## 注意事項

- 安全檢查
- 常見錯誤

## 整合其他工具(可選)

- 相關的 commands、skills、agents

章節說明

核心功能(必須)

列出 skill 的主要功能,使用條列式:

## 核心功能

- 偵測當前的衝突狀態rebase 或 merge
- 列出所有衝突的檔案
- 逐個檢視並解決衝突
- 完成 rebase 或 merge 流程

執行步驟(必須)

詳細說明工作流程,使用編號列表:

## 執行步驟

### 1. 準備階段

檢查前置條件:

- 確認工具已安裝
- 驗證環境設定

### 2. 執行階段

1. **第一步**
    - 詳細說明
    - 可能的指令

2. **第二步**
    - 詳細說明
    - 注意事項

### 3. 完成階段

清理和驗證:

- 檢查結果
- 產生報告

使用場景(建議)

提供實際的使用範例:

## 使用場景

### 適用情境

- 情境 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
resolvingConflict
resolving_conflict
skills-development skills-development Skills-Development
skillsDevelopment
SKILLS-DEVELOPMENT
quick-fix quick-fix Quick-Fix
quickFix
QuickFix

推薦做法

# 推薦:與資料夾名稱完全一致
資料夾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創建檔案結構

# 進入 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

---
name: your-skill-name
description: 一句話說明這個 skill 的核心功能50-100 字)
---

2.2 撰寫核心內容

按照以下順序組織內容:

  1. 主標題和簡介

    # Skill 標題
    
    簡短介紹這個 skill 的用途和價值1-2 段)
    
  2. 核心功能

    ## 核心功能
    
    - 功能 1
    - 功能 2
    - 功能 3
    
  3. 執行步驟

    ## 執行步驟
    
    ### 1. 步驟標題
    
    詳細說明...
    
    ### 2. 步驟標題
    
    詳細說明...
    
  4. 其他章節(視需要加入)

    • 輸入條件
    • 輸出結果
    • 使用場景
    • 注意事項
    • 整合其他工具

2.3 撰寫範例

提供實際的使用範例,幫助使用者理解:

## 工作流程範例

\`\`\`
User: [使用者的請求]

Agent: [Claude 的回應]
[執行 skill 的步驟]

User: [使用者的後續互動]

Agent: [完成的回應]
\`\`\`

步驟 3重構現有程式碼如果適用

如果是從現有的 command/agent 中抽取 skill

3.1 識別要抽取的邏輯

找出重複使用或可以獨立的部分

3.2 更新原始檔案

移除重複的邏輯,改為引用新的 skill

## 執行步驟

1. 準備工作
2. **使用 `{plugin-name}:{skill-name}` skill** 執行主要邏輯
3. 後續處理

3.3 測試功能

確保重構後功能正常:

  • 測試所有引用這個 skill 的 commands
  • 確認 skill 可以獨立執行
  • 檢查錯誤處理

步驟 4更新文件

4.1 更新 Plugin README.md

在 plugin 的 README 中加入新的 skill

## Skills

### {skill-name}

簡短說明這個 skill 的功能。

**位置**`skills/{skill-name}/SKILL.md`

**主要功能**

- 功能 1
- 功能 2

**使用方式**
在 commands 或 agents 中引用這個 skill

4.2 更新 CHANGELOG.md

記錄到 plugin 的 CHANGELOG

## [Unreleased]

### Added

- 新增 `{skill-name}` skill{簡短說明}

4.3 更新版本號(如果需要發布)

.claude-plugin/plugin.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 原則

Q2YAML name 必須使用 kebab-case 嗎?

A是的,統一使用全小寫的 kebab-case 與資料夾名稱完全一致。

範例:

資料夾skills-development/
YAML  name: skills-development  (全小寫的 kebab-case

這樣可以保持命名的一致性,便於維護和識別。

Q3description 應該寫多長?要包含什麼內容?

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:可以,但要注意避免循環依賴。

## 執行步驟

1. 使用 `analyze-changes` skill 分析變更
2. 根據分析結果決定策略
3. 執行對應的操作

Q5如何處理 skill 的版本控制?

ASkills 的版本跟隨 plugin 的版本。

  • 修改 skill 時更新 plugin 的 CHANGELOG
  • 如果是重大變更,考慮增加 plugin 的 MAJOR 版本號
  • 在 CHANGELOG 中明確記錄 skill 的變更

與其他文件的關聯


最後更新2025-10-19