Skip to main content

claude-code-plugin

Claude Code Plugin 開發、發布、安裝、更新與 Marketplace 管理完整指南

Source facts

Repository
miles990/claude-software-skills
Last source activity
January 16, 2026 at 04:01
Detected SKILL.md language
Chinese
Stars
25
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
schema
1.0
name
claude-code-plugin
version
1.1.0
description
Claude Code Plugin 開發、發布、安裝、更新與 Marketplace 管理完整指南
triggers
{"keywords":{"primary":["plugin","claude-code","claude code plugin","插件","hooks","commands","marketplace"],"secondary":["mcp","skill","subagent","版本控管","version","publish","發布","安裝","更新","sync"]},"context_boost":["claude","anthropic","cli","automation","workflow"],"context_penalty":["game","trading","design"],"priority":"high"}
keywords
["claude-code","plugin","development","automation","marketplace"]
dependencies
{"software-skills":["git-workflows","automation-scripts"]}
author
claude-software-skills
# Claude Code Plugin 完整指南 > 建立、發布、安裝、更新、同步 Claude Code Plugin 的完整指南 ## 適用場景 - 開發新的 Claude Code Plugin - 發布 Plugin 到 Marketplace - 安裝和更新 Plugin - 管理 Plugin 版本 - 同步最新版本 - 建立自訂 Marketplace --- ## Part 1: Plugin 架構 ### 目錄結構 ``` my-plugin/ ├── .claude-plugin/ │ ├── plugin.json # Plugin manifest(必要) │ └── marketplace.json # Marketplace 索引(選用) ├── commands/ # Slash 命令(在根目錄!) │ └── my-command.md ├── skills/ # Agent Skills │ └── my-skill/ │ └── SKILL.md ├── hooks/ │ └── hooks.json # Hook 配置 ├── agents/ # Subagent 定義 ├── .mcp.json # MCP 伺服器配置 ├── CHANGELOG.md └── README.md ``` ⚠️ **重要**:commands/、skills/、hooks/ 必須在根目錄,不要放進 .claude-plugin/ ### plugin.json 規範 ```json { "name": "my-plugin", "version": "1.0.0", "description": "Plugin 功能描述", "author": { "name": "作者名稱", "email": "email@example.com" }, "license": "MIT", "keywords": ["keyword1", "keyword2"] } ``` ### 四大組件 | 組件 | 用途 | 觸發方式 | 檔案格式 | |------|------|----------|----------| | **Commands** | 用戶執行的斜線命令 | `/command` 手動 | Markdown | | **Skills** | 教 Claude 如何做事 | 自動根據上下文 | SKILL.md | | **Hooks** | 事件驅動自動化 | 系統事件觸發 | JSON + Shell | | **MCP** | 提供工具能力 | Claude 呼叫 | .mcp.json | --- ## Part 2: 發布 Plugin ### 方式一:GitHub Marketplace(推薦) **Step 1: 建立 marketplace.json** ```json { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "my-marketplace", "description": "我的 Plugin 集合", "owner": { "name": "username", "email": "email@example.com" }, "plugins": [ { "name": "my-plugin", "version": "1.0.0", "source": "./", "description": "Plugin 描述", "category": "development" } ] } ``` **Step 2: 推送到 GitHub** ```bash git add . git commit -m "feat: add Plugin marketplace format" git tag -a v1.0.0 -m "Release v1.0.0" git push origin main git push origin v1.0.0 ``` **Step 3: 用戶安裝** ```bash # 添加 marketplace /plugin marketplace add owner/repo # 安裝 plugin /plugin install my-plugin@my-marketplace ``` ### 方式二:npm 發布 ```bash # 1. 在 package.json 中命名(加 claude-plugin- 前綴) { "name": "claude-plugin-my-plugin", "version": "1.0.0" } # 2. 發布 npm publish # 3. 用戶安裝 npm install -g claude-plugin-my-plugin ``` ### 方式三:直接分享 ```bash # 用戶下載後本地安裝 /plugin install /path/to/my-plugin ``` --- ## Part 3: 安裝 Plugin ### 從 Marketplace 安裝 ```bash # 1. 先添加 marketplace(只需一次) /plugin marketplace add owner/repo # 2. 列出可用 plugins /plugin marketplace list # 3. 安裝 plugin /plugin install plugin-name@marketplace-name ``` ### 從 GitHub 直接安裝 ```bash # 完整路徑安裝 /plugin install github:owner/repo#path/to/plugin # 範例 /plugin install github:miles990/evolve-plugin ``` ### 本地安裝 ```bash # 從本地目錄安裝 /plugin install /path/to/my-plugin ``` ### 查看已安裝 ```bash # 列出所有已安裝的 plugins /plugin list # 查看詳細資訊 /plugin info plugin-name@marketplace ``` ### 解除安裝 ```bash # 解除安裝特定 plugin /plugin uninstall plugin-name@marketplace # 範例 /plugin uninstall evolve@evolve-plugin # 強制解除安裝(忽略相依性) /plugin uninstall plugin-name@marketplace --force ``` **解除安裝注意事項**: - 解除安裝不會移除 marketplace,只移除已安裝的 plugin - 如果其他 plugin 依賴此 plugin,會警告 - 解除安裝後可隨時重新安裝 --- ## Part 4: 更新 Plugin ### 檢查更新 ```bash # 檢查所有 plugins 是否有更新 /plugin update --check # 檢查特定 plugin /plugin update --check plugin-name@marketplace ``` ### 執行更新 ```bash # 更新特定 plugin /plugin update plugin-name@marketplace # 更新所有 plugins /plugin update --all ``` ### 自動版本檢查流程 ``` 本地版本 → 遠端版本 → 比較 ↓ ↓ plugin.json GitHub API / marketplace.json ↓ 若遠端較新 → 提示用戶更新 ``` ### 手動版本檢查 ```bash # 取得本地版本 cat ~/.claude/plugins/installed_plugins.json | jq '.plugins["plugin@marketplace"][0].version' # 取得遠端版本 curl -s https://raw.githubusercontent.com/owner/repo/main/.claude-plugin/plugin.json | jq -r '.version' ``` --- ## Part 5: 版本控管 ### 版本位置(必須同步) | 位置 | 說明 | |------|------| | `.claude-plugin/plugin.json` | Plugin manifest | | `.claude-plugin/marketplace.json` | Marketplace 索引 | | `skills/*/SKILL.md` | Skill 版本(如適用) | | `CHANGELOG.md` | 變更記錄 | | Git tag | 發布標記 | ### 語意化版本 ``` MAJOR.MINOR.PATCH │ │ └── Bug fixes(修復) │ └── 新功能(向後相容) └── 破壞性變更(不相容) ``` ### 發布檢查清單 ```bash # 更新所有版本位置 - [ ] plugin.json → version - [ ] marketplace.json → plugins[].version - [ ] SKILL.md → version: (如適用) - [ ] CHANGELOG.md → 新條目 - [ ] README.md → 版本徽章 # Git 操作 git add . git commit -m "chore: bump version to vX.Y.Z" git tag -a vX.Y.Z -m "Release vX.Y.Z: 描述" git push origin main git push origin vX.Y.Z ``` ### CHANGELOG.md 格式 ```markdown ## [1.1.0] - 2026-01-16 ### Added - 新功能描述 ### Changed - 變更描述 ### Fixed - 修復描述 ### Security - 安全修復 ``` --- ## Part 6: 同步最新版本 ### 從主 repo 同步到獨立 plugin repo 當 plugin 是從主專案分離出來時: ```bash # 1. 複製 skills 目錄 cp -r /path/to/main-project/skills /path/to/plugin-repo/ # 2. 更新版本 # 編輯 plugin.json, marketplace.json # 3. 提交並推送 cd /path/to/plugin-repo git add -A git commit -m "chore: sync with main-project vX.Y.Z" git push origin main ``` ### 同步腳本範例 ```bash #!/bin/bash # sync-plugin.sh - 同步 plugin 到獨立 repo MAIN_REPO="$1" PLUGIN_REPO="$2" VERSION="$3" # 複製 skills rm -rf "$PLUGIN_REPO/skills" cp -r "$MAIN_REPO/skills" "$PLUGIN_REPO/" # 更新版本 sed -i '' "s/\"version\": \".*\"/\"version\": \"$VERSION\"/" \ "$PLUGIN_REPO/.claude-plugin/plugin.json" # 提交 cd "$PLUGIN_REPO" git add -A git commit -m "chore: sync with main-project v$VERSION" git push origin main ``` ### 自動同步(使用 GitHub Actions) ```yaml # .github/workflows/sync-plugin.yml name: Sync Plugin on: push: branches: [main] paths: - 'skills/**' - 'evolve-plugin/**' jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Sync to plugin repo run: | # Clone plugin repo git clone https://github.com/owner/plugin-repo.git # Copy files cp -r skills/ plugin-repo/ cp evolve-plugin/.claude-plugin/* plugin-repo/.claude-plugin/ # Push cd plugin-repo git add -A git commit -m "chore: auto-sync from main repo" git push ``` --- ## Part 7: Marketplace 管理 ### 建立自己的 Marketplace **Step 1: 建立 marketplace.json** ```json { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "my-marketplace", "description": "我的 Plugin 集合", "owner": { "name": "username" }, "plugins": [ { "name": "plugin-a", "version": "1.0.0", "source": "./plugin-a", "description": "Plugin A 描述", "category": "development" }, { "name": "plugin-b", "version": "2.0.0", "source": "./plugin-b", "description": "Plugin B 描述", "category": "productivity" } ] } ``` **Step 2: 組織目錄結構** ``` my-marketplace/ ├── .claude-plugin/ │ └── marketplace.json ├── plugin-a/ │ ├── .claude-plugin/ │ │ └── plugin.json │ ├── commands/ │ └── skills/ ├── plugin-b/ │ ├── .claude-plugin/ │ │ └── plugin.json │ └── commands/ └── README.md ``` ### 管理已添加的 Marketplace ```bash # 列出已添加的 marketplaces /plugin marketplace list # 添加新 marketplace /plugin marketplace add owner/repo # 移除 marketplace /plugin marketplace remove marketplace-name # 更新 marketplace 索引 /plugin marketplace refresh ``` ### 已知 Marketplaces 儲存位置 ``` ~/.claude/plugins/known_marketplaces.json ``` --- ## Part 8: Hooks 開發 ### Hook 事件類型 | 事件 | 時機 | 用途 | |------|------|------| | **PreToolUse** | 工具執行前 | 阻擋/修改工具調用 | | **PostToolUse** | 工具執行後 | 後處理、通知 | | **UserPromptSubmit** | 用戶輸入時 | 輸入驗證 | | **SessionStart** | 會話開始 | 初始化 | | **SessionEnd** | 會話結束 | 清理 | | **Stop** | AI 完成回應 | 後處理 | | **SubagentStop** | Subagent 完成 | 子任務處理 | ### hooks.json 配置 ```json { "hooks": [ { "type": "command", "event": "PreToolUse", "command": "./hooks/protect-env.sh" }, { "type": "command", "event": "PostToolUse", "command": "./hooks/format-code.sh" }, { "type": "command", "event": "SessionStart", "command": "./hooks/init.sh" } ] } ``` ### 範例 Hook:保護敏感檔案 ```bash #!/bin/bash # hooks/protect-env.sh FILE_PATH=$(echo "$1" | jq -r '.tool.input.path // .tool.input.file_path // empty') if [[ "$FILE_PATH" =~ \.(env|key|secret|credentials)$ ]]; then
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub