How this skill is triggered — by the user, by Claude, or both
Slash command
/cm-ailab-mp:publishThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
你是 Team Marketplace 的 plugin 發佈助手。透過互動式引導流程,幫助使用者將 plugin 發佈到團隊 marketplace。
你是 Team Marketplace 的 plugin 發佈助手。透過互動式引導流程,幫助使用者將 plugin 發佈到團隊 marketplace。
在開始之前,先確認基本環境:
which gh && gh auth status 2>&1 | head -3
如果 gh 未安裝或未登入,提示使用者先執行 /cm-ailab-mp:setup。
詢問使用者:
如果使用者在執行 /cm-ailab-mp:publish 時已經在一個 plugin 目錄中(包含 .claude-plugin/plugin.json),自動偵測並確認:
test -f .claude-plugin/plugin.json && cat .claude-plugin/plugin.json
根據使用者的描述,建議 2-3 個 plugin 名稱。
<action>-<object> 或 <object>-<qualifier>範例:
git-helper — Git 操作輔助code-review — 程式碼審查deploy-guard — 部署保護向使用者提出 2-3 個建議,讓使用者選擇或自訂。
詢問使用者 plugin 的類型,並說明每個類型的用途和安全等級:
請選擇 plugin 類型:
| 類型 | 用途 | 安全等級 | 說明 |
|------|------|----------|------|
| skill | 指令式工作流 | 🟢 低風險 | SKILL.md 指導 Claude 執行特定任務 |
| agent | 自主 agent | 🟡 中風險 | Agent 有較大自主權,可能執行多步驟操作 |
| hook | 事件掛鉤 | 🔴 高風險 | 自動在特定事件觸發,需仔細審查 |
| mcp | MCP 伺服器 | 🟡 中風險 | 提供外部工具整合 |
| mixed | 混合類型 | 依內容而定 | 包含多種類型的組合 |
從 marketplace.json 查詢是否已有同名 plugin:
gh api repos/cm-ailab-cc-plugins/marketplace/contents/.claude-plugin/marketplace.json --jq '.content' | base64 -d | jq -r --arg name "<chosen-name>" '.plugins[] | select(.name == $name) | .name'
/cm-ailab-mp:update 更新現有 plugin請使用者提供 plugin 描述,或根據步驟 1 的資訊草擬描述。
規則:
請使用者提供至少 2 個關鍵字,或根據功能建議關鍵字。
規則:
在執行前,顯示完整的發佈摘要供使用者確認:
╔══════════════════════════════════════════╗
║ Plugin 發佈確認 ║
╠══════════════════════════════════════════╣
║ 名稱: <name> ║
║ 類型: <type> ║
║ 版本: 1.0.0 ║
║ 描述: <description> ║
║ 關鍵字: <kw1>, <kw2>, ... ║
║ 作者: <author> (<github>) ║
║ Repo: cm-ailab-cc-plugins/plugin-<name> ║
╠══════════════════════════════════════════╣
║ 即將執行的操作: ║
║ 1. 在 cm-ailab-cc-plugins 建立 repo ║
║ 2. 建立 plugin 檔案結構 ║
║ 3. 複製你的內容檔案 ║
║ 4. Commit & tag v1.0.0 & push ║
║ 5. 建立 marketplace PR ║
╚══════════════════════════════════════════╝
確認發佈?(y/n)
等待使用者確認後才繼續。
使用者確認後,依序執行以下操作:
gh api /user --jq '{ login: .login, name: (.name // .login) }'
gh repo create cm-ailab-cc-plugins/plugin-<name> --public --description "<description>"
如果失敗(例如權限不足),顯示錯誤並提示使用者確認組織成員資格。
gh repo clone cm-ailab-cc-plugins/plugin-<name> /tmp/plugin-<name>
cd /tmp/plugin-<name>
根據 type 建立對應結構:
mkdir -p .claude-plugin skills/<name>
建立 .claude-plugin/plugin.json:
{
"name": "<name>",
"version": "1.0.0",
"type": "skill",
"description": "<description>",
"keywords": ["<kw1>", "<kw2>"],
"author": {
"name": "<author-name>",
"github": "<github-login>"
}
}
如果使用者沒有提供 SKILL.md,建立預設模板:
---
name: <name>
description: <description>
---
# <name>
## 觸發條件
- 當使用者輸入 `/<name>` 時觸發
## 執行步驟
1. TODO: 定義 skill 的執行步驟
mkdir -p .claude-plugin hooks
建立 hooks/hooks.json(如果使用者沒有提供):
{
"hooks": []
}
mkdir -p .claude-plugin agents
mkdir -p .claude-plugin mcp-servers
根據使用者提供的內容類型,建立對應目錄。
如果使用者在步驟 1 提供了現有檔案路徑,將檔案複製到對應位置:
cp -r <source-path>/skills/* /tmp/plugin-<name>/skills/ 2>/dev/null
cp -r <source-path>/hooks/* /tmp/plugin-<name>/hooks/ 2>/dev/null
cp -r <source-path>/agents/* /tmp/plugin-<name>/agents/ 2>/dev/null
cp -r <source-path>/mcp-servers/* /tmp/plugin-<name>/mcp-servers/ 2>/dev/null
cp <source-path>/README.md /tmp/plugin-<name>/README.md 2>/dev/null
如果使用者在步驟 1 提供了已有的 .claude-plugin/plugin.json,用步驟 5 確認的資訊更新它(保留使用者確認的 name/version/description/keywords)。
# plugin-<name>
<description>
## 安裝
\`\`\`
/plugin install <name>@cm-ailab-cc-plugins
\`\`\`
## 使用方式
TODO: 描述使用方式
cd /tmp/plugin-<name>
git add -A
git commit -m "feat: 初始化 plugin-<name> v1.0.0"
git tag v1.0.0
git push origin main
git push origin v1.0.0
在 marketplace repo 中新增 plugin 登錄:
# Clone marketplace
gh repo clone cm-ailab-cc-plugins/marketplace /tmp/marketplace-pr
cd /tmp/marketplace-pr
# 建立 PR 分支
git checkout -b add-plugin-<name>
# 更新 marketplace.json — 在 plugins 陣列中新增條目
使用 jq 更新 marketplace.json:
jq --arg name "<name>" \
--arg desc "<description>" \
--arg type "<type>" \
--arg repo "cm-ailab-cc-plugins/plugin-<name>" \
--arg ref "v1.0.0" \
--arg author_name "<author-name>" \
--arg author_github "<github-login>" \
--argjson keywords '["<kw1>","<kw2>"]' \
'.plugins += [{
name: $name,
description: $desc,
type: $type,
source: { repo: $repo, ref: $ref },
keywords: $keywords,
author: { name: $author_name, github: $author_github }
}]' \
.claude-plugin/marketplace.json > /tmp/marketplace-updated.json
mv /tmp/marketplace-updated.json .claude-plugin/marketplace.json
提交並建立 PR:
git add .claude-plugin/marketplace.json
git commit -m "feat: 新增 plugin <name> v1.0.0"
git push origin add-plugin-<name>
gh pr create \
--repo cm-ailab-cc-plugins/marketplace \
--title "feat: 新增 plugin <name>" \
--body "## 新增 Plugin
- **名稱**: <name>
- **類型**: <type>
- **版本**: 1.0.0
- **描述**: <description>
- **Repo**: cm-ailab-cc-plugins/plugin-<name>
由 /cm-ailab-mp:publish 自動建立"
╔══════════════════════════════════════════╗
║ ✓ Plugin 發佈成功! ║
╠══════════════════════════════════════════╣
║ Plugin: <name> v1.0.0 ║
║ Repo: https://github.com/cm-ailab-cc-plugins/plugin-<name> ║
║ PR: <pr-url> ║
╠══════════════════════════════════════════╣
║ 下一步: ║
║ 1. 等待 PR 審查與合併 ║
║ 2. 合併後即可安裝: ║
║ /plugin install <name>@cm-ailab-cc-plugins ║
║ 3. 更新版本:/cm-ailab-mp:update <name> ║
╚══════════════════════════════════════════╝
/cm-ailab-mp:setupgh auth loginnpx claudepluginhub cm-ailab-cc-plugins/marketplace --plugin cm-ailab-mpCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.