Skip to main content

claude-code-plugin

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

معلومات المصدر

المستودع
miles990/claude-software-skills
آخر نشاط في المصدر
١٦ يناير ٢٠٢٦ في ٠٤:٠١
لغة SKILL.md المكتشفة
الصينية
النجوم
٢٥
التفرعات
٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub