| name | plugin-marketplace-creator |
| description | Plugin Marketplace構造を対話的に生成し、marketplace.json、plugin.json、ディレクトリ構造を自動作成するスキル。Use when users mention "plugin marketplace", "marketplace作成", "プラグインカタログ", "複数のプラグインを管理", "チーム向けプラグイン配布", or need to create marketplace.json/plugin.json files. Also use when users want to organize multiple Claude Code plugins for distribution. |
Plugin Marketplace Creator
Overview
このスキルは、Claude Code Plugin Marketplaceの完全な構造を対話的に生成します。marketplace.json、個別のplugin.json、推奨ディレクトリ構造、テンプレートファイルを自動作成し、claude plugin validateでの検証までサポートします。
Workflow Decision Tree
ユーザーの要求に応じて適切なワークフローを選択します:
ユーザーの要求
├─ 新規Marketplace作成 → Full Workflow (Step 1-5)
├─ 既存Marketplaceにプラグイン追加 → Step 3-5
├─ 既存ツールとの連携 → Integration Workflow
└─ 設定ファイルのみ生成 → Step 4-5
Step 1: Initialize Marketplace Structure
1-1. 基本情報の収集
AskUserQuestionツールを使用して、以下の情報を対話的に収集します:
質問1: Marketplace名
- Header: "Marketplace名"
- Question: "Marketplaceの名前を指定してください(kebab-case形式)"
- Options:
- Label: "company-tools", Description: "企業ツール向け(推奨)"
- Label: "team-plugins", Description: "チーム向けプラグイン"
- Label: "project-marketplace", Description: "プロジェクト固有"
質問2: 配置ディレクトリ
- Header: "配置先"
- Question: "Marketplaceを作成するディレクトリを指定してください"
- Options:
- Label: "./my-marketplace", Description: "カレントディレクトリ配下(推奨)"
- Label: "../claude-marketplace", Description: "親ディレクトリ"
- Label: "~/.claude/marketplaces/", Description: "グローバルmarketplace"
1-2. ディレクトリ構造の作成
scripts/init_marketplace.pyを実行してディレクトリ構造を作成します:
python3 ${CLAUDE_SKILL_ROOT}/scripts/init_marketplace.py <marketplace-name> --path <output-directory>
生成される構造:
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json
├── plugins/
│ └── .gitkeep
├── README.md
└── .gitignore
Step 2: Configure Marketplace Metadata
2-1. オーナー情報の収集
AskUserQuestionツールで収集:
質問1: オーナー名
- Header: "Owner"
- Question: "Marketplaceのメンテナー名を入力してください"
- Options:
- Label: "DevTools Team", Description: "開発チーム名"
- Label: "Engineering", Description: "エンジニアリング部門"
- Label: "個人名", Description: "個人メンテナー"
質問2: メールアドレス(オプション)
- Header: "Email"
- Question: "メンテナーのメールアドレスを入力しますか?"
- Options:
- Label: "入力する", Description: "team@example.com形式"
- Label: "スキップ", Description: "メールアドレスなし"
2-2. メタデータ設定(オプション)
質問: メタデータ追加
- Header: "Metadata"
- Question: "追加のメタデータを設定しますか?"
- Options:
- Label: "はい", Description: "description, version, pluginRoot等を設定"
- Label: "いいえ", Description: "最小限の設定のみ"
メタデータを追加する場合:
- description: Marketplaceの説明(1-2文)
- version: セマンティックバージョン(例: 1.0.0)
- pluginRoot: プラグインのルートディレクトリ(推奨:
./plugins)
Step 3: Add Plugins
3-1. プラグイン追加方法の選択
質問: プラグイン追加方法
- Header: "プラグイン追加"
- Question: "プラグインをどのように追加しますか?"
- MultiSelect: true
- Options:
- Label: "対話的に追加", Description: "1つずつ情報を入力"
- Label: "既存プラグインをインポート", Description: "既存のplugin.jsonから読み込み"
- Label: "新規作成と連携", Description: "/claude-code:create-*コマンドを使用"
3-2. プラグイン情報の収集
各プラグインについて以下を収集:
必須フィールド:
name: プラグイン名(kebab-case)source: ソースタイプ- 相対パス:
"./plugins/plugin-name" - GitHub:
{"source": "github", "repo": "owner/repo"} - Git URL:
{"source": "url", "url": "https://..."}
- 相対パス:
オプションフィールド:
description: プラグインの説明version: バージョン番号author: 作成者情報homepage: ドキュメントURLrepository: リポジトリURLlicense: ライセンス(例: MIT, Apache-2.0)keywords: 検索キーワード配列category: カテゴリー(例: productivity, devops)tags: タグ配列strict:true(デフォルト)またはfalse
3-3. プラグイン追加の繰り返し
質問: 追加のプラグイン
- Header: "追加"
- Question: "別のプラグインを追加しますか?"
- Options:
- Label: "はい", Description: "さらにプラグインを追加"
- Label: "いいえ", Description: "完了"
Step 4: Generate Configuration Files
4-1. marketplace.jsonの生成
scripts/generate_marketplace.pyを実行:
python3 ${CLAUDE_SKILL_ROOT}/scripts/generate_marketplace.py \
--name <marketplace-name> \
--owner-name "<owner-name>" \
--owner-email "<owner-email>" \
--plugins <plugins-json> \
--output <output-path>
生成されるmarketplace.jsonはreferences/marketplace-schema.mdのスキーマに準拠します。
4-2. 個別plugin.jsonの生成
各プラグインについて、scripts/generate_plugin.pyを実行:
python3 ${CLAUDE_SKILL_ROOT}/scripts/generate_plugin.py \
--name <plugin-name> \
--description "<description>" \
--version <version> \
--output <plugin-directory>/.claude-plugin/plugin.json
4-3. テンプレートファイルの配置
以下のテンプレートをassets/templates/からコピー:
README.md→ プロジェクトルート.gitignore→ プロジェクトルート
Step 5: Validate Marketplace
5-1. 自動検証の実行
Bashツールを使用して検証:
cd <marketplace-directory>
claude plugin validate .
または:
cd <marketplace-directory>
/plugin validate
5-2. 検証結果の確認
検証で確認される項目:
- ✅ marketplace.jsonのJSON構文
- ✅ 必須フィールドの存在(name, owner, plugins)
- ✅ プラグインソースパスの存在確認
- ✅ plugin.jsonの構文(strict: trueの場合)
- ✅ 命名規則(kebab-case)
5-3. エラー修正
検証エラーが発生した場合:
- エラーメッセージを分析
- 該当箇所を修正
- 再度検証を実行
Integration with Existing Tools
/claude-code:create-skillとの連携
新しいスキルを作成してmarketplaceに追加:
# Step 1: スキル作成
/claude-code:create-skill <skill-description>
# Step 2: スキルをmarketplaceに追加
# このスキルを再度呼び出して、作成されたスキルをプラグインとして追加
/claude-code:create-commandとの連携
新しいコマンドを作成してmarketplaceに追加:
# Step 1: コマンド作成
/claude-code:create-command <command-description>
# Step 2: コマンドをmarketplaceに追加
/claude-code:create-subagentとの連携
新しいsubagentを作成してmarketplaceに追加:
# Step 1: subagent作成
/claude-code:create-subagent <subagent-description>
# Step 2: subagentをmarketplaceに追加
詳細はreferences/integration-guide.mdを参照してください。
Best Practices
予約済み名を避ける
以下のmarketplace名は使用できません:
claude-code-marketplaceclaude-code-pluginsclaude-plugins-officialanthropic-marketplaceanthropic-pluginsagent-skillslife-sciences
プラグイン命名規則
- kebab-caseのみ使用
- 小文字と数字、ハイフンのみ
- 最大64文字
- 例:
code-formatter,deploy-tools,security-scanner
pluginRootの活用
多数のプラグインを管理する場合、metadata.pluginRootを設定して相対パスを簡潔化:
{
"metadata": {
"pluginRoot": "./plugins"
},
"plugins": [
{
"name": "formatter",
"source": "formatter" // "./plugins/formatter"と解釈される
}
]
}
${CLAUDE_PLUGIN_ROOT}変数の使用
プラグイン内のパス指定には必ず${CLAUDE_PLUGIN_ROOT}を使用:
{
"mcpServers": {
"db-server": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server"
}
}
}
Resources
scripts/
init_marketplace.py: Marketplaceディレクトリ構造を初期化generate_marketplace.py: marketplace.jsonを生成generate_plugin.py: plugin.jsonを生成
references/
marketplace-schema.md: marketplace.jsonの完全なスキーマ仕様plugin-schema.md: plugin.jsonのスキーマ仕様integration-guide.md: 既存ツールとの連携方法
assets/templates/
marketplace.json: Marketplaceテンプレートplugin.json: PluginテンプレートREADME.md: プロジェクトREADMEテンプレート.gitignore: .gitignoreテンプレート