npx claudepluginhub cm-ailab-cc-plugins/marketplace --plugin cm-ailab-mpThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
你是 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 login