Claude Codeを使っていると、便利なslash commandやMCPサーバの設定を他のプロジェクトでも使い回したくなる。でも毎回手作業でファイルをコピーしたり、設定を書き写したりするのは面倒だった。チームで共有しようとすると、READMEに手順を書いて「この設定を追加してください」と説明する必要があり、導入のハードルが高かった。
そんな中、AnthropicがPlugin Marketplaceという仕組みを発表した。GitHubリポジトリに決められたフォーマットでファイルを置くだけで、Slash CommandやAgent Skills、MCPサーバ設定を配布できるらしい。
実際に作ってみたら、思いのほか簡単だった。この記事では、Conventional Commit用のslash commandとSerena MCPサーバを配布するまでの過程を書いていく。
Plugin配布の課題
Claude Codeは、Slash commandやMCPサーバを組み合わせると、開発フローがかなり効率化できる。Slash commandは.claude/commands/にMarkdownファイルを置けば使えるし、MCPサーバは/mcp addで追加できる。仕組み自体はシンプルでわかりやすい。
ただ、これを他の人に使ってもらおうとすると面倒なことになる。GitHubでslash commandを公開しても、利用者は手動でファイルをダウンロードして適切な場所に置かないといけない。MCPサーバはもっと大変で、JSON設定を正確にコピーしてもらって、環境変数の設定も説明する必要がある。チームで標準化しようとすると、導入手順を細かく書く必要があって、これがまた手間だった。
こういう配布の面倒さを解決する仕組みが、Plugin Marketplaceだ。
Plugin Marketplaceは、GitHubリポジトリに決められたディレクトリ構造でpluginを置いて、メタデータを書けば、それでmarketplaceになる。npmやHomebrewみたいに、誰でもmarketplaceを立ち上げられる。利用者は/plugin installコマンドだけで済む。
Marketplaceを作ってみた
リポジトリの準備
まず、GitHubに新しいリポジトリを作った。名前はclaude-plugins。
Marketplaceの構造は、Plugin directory structureで定義されている。各プラグインを規定のディレクトリ構造で置いて、.claude-plugin/marketplace.jsonにmarketplaceのメタデータを書く形になる。
実際に作ったディレクトリ構成はこんな感じ。
git ls-files | grep -vE '^(\.devcontainer/|\.gitignore$|\.prettierrc\.json$|LICENSE$|README\.md$)' | tree --fromfile -a . ├── .claude-plugin │ └── marketplace.json └── plugins └── common-dev-essentials ├── .mcp.json ├── commands │ └── commit.md └── plugin.json 5 directories, 4 files
プラグインのディレクトリ構成
プラグインは、こういうディレクトリ構造になる。
plugin-root/ ├── commands/ # Slash commands ├── agents/ # Subagents ├── skills/ # Agent Skills │ ├── code-reviewer/ │ └── pdf-processor/ ├── hooks/ # Hook configurations ├── .mcp.json # MCP server definitions ├── plugin.json # Plugin metadata
プラグインのルートに、commands/とかagents/とかskills/とかのディレクトリを置けば、Claude Codeが勝手に認識してくれる。
plugin.jsonにはプラグインのメタデータを書く。標準構成に従ったので、必要最小限の情報だけで済んだ。
{ "name": "common-dev-essentials", "description": "Essential utilities and workflow enhancements for any development project", "version": "0.2.0", "author": { "name": "kiririmode" }, "homepage": "https://github.com/kiririmode/claude-plugins", "repository": "https://github.com/kiririmode/claude-plugins", "license": "MIT", }
marketplace.json
次に、.claude-plugin/marketplace.jsonでmarketplaceのメタデータを書く。
各プラグインには、plugins[].nameとplugins[].sourceが必須になる。nameはplugin.jsonのnameと対応させる。sourceには、プラグインのディレクトリパスを指定する。今回はローカルのファイルパスにしたけど、外部のGitHubリポジトリも指定できる。
{ "name": "kiririmode-claudecode-plugins", "owner": { "name": "kiririmode", "email": "kiririmode@gmail.com" }, "metadata": { "description": "A curated collection of Claude Code plugins used by kiririmode for everyday development workflows. This marketplace provides practical tools and integrations to enhance development productivity.", "version": "0.1.0", "pluginRoot": "./plugins" }, "plugins": [ { "name": "common-dev-essentials", "source": "./plugins/common-dev-essentials", "strict": true } ] }
Pluginの作成
marketplace.jsonができたので、次は実際に配布するプラグインを作る。
今回は、開発プロジェクト全般で使える汎用的なプラグインということで、common-dev-essentialsという名前にした。このプラグインには、Conventional Commit用のslash commandと、Serena MCPサーバの設定を入れる。
Conventional Commit slash commandの作成
まず、Conventional Commit形式のコミットメッセージを自動生成するslash commandを作った。
コミットメッセージの書き方を統一するのはいつも面倒なので、git diffから自動的にConventional Commit形式のメッセージを生成させることにした。Slash Commandの作り方は、Slash commands - Claude Docsに詳しく載っている。
--- allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git diff:*) description: Analyze changes and create commits in Conventional Commits format, split into logical units --- このコマンドは、現在の変更を分析し、論理的な単位に分割して日本語のコミットメッセージを生成します。 # コンテキスト - 現在の git status: !`git status` - 現在の git diff (ステージ済みと未ステージの変更): !`git diff HEAD` - 現在のブランチ: !`git branch --show-current` - 最近のコミットスタイルの確認: !`git log --oneline -10` ## 実行手順 1. **変更の分類と Conventional Commits タイプの決定** 変更を以下のような論理的な単位に分類し、適切な Conventional Commits タイプを選択してください: - **feat**: 機能追加(新しい機能の実装) - **fix**: バグ修正(既存機能の不具合修正) - **refactor**: リファクタリング(動作を変えずにコードを改善) - **docs**: ドキュメント更新(README、コメント、docstring等) - **test**: テスト追加/修正 - **chore**: 設定変更(CI/CD、開発環境、ビルドプロセス等) - **perf**: パフォーマンス改善 - **style**: コードスタイルの修正(フォーマット、空白等) - **build**: ビルドシステムや外部依存関係の変更 - **ci**: CI設定ファイルやスクリプトの変更 2. **コミットメッセージの生成(Conventional Commits 形式)** 各論理的な単位について、以下の形式で日本語の Conventional Commits メッセージを作成してください: (略)
このファイルをcommon-dev-essentials/commands/commit.mdとして保存した。プラグインをインストールすれば、Claude Codeから/commitコマンドが使える。
Serena MCP サーバ設定の作成
次に、MCPサーバの設定を作った。MCPサーバの設定も、プラグインとして配布できる。.mcp.jsonという隠しファイルとして置く形だ。
{ "mcpServers": { "serena": { "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant", "--project", "${PROJECT_ROOT}" ], "env": { "PROJECT_ROOT": "${PWD}" } } } }
リポジトリの公開
プラグインができたら、GitHubにpushする。これでmarketplaceが完成して、https://github.com/kiririmode/claude-pluginsがmarketplace URLとして使えるようになる。
実際に使ってみた
Marketplaceの登録
作ったmarketplaceを、Claude Codeに登録する。/plugin marketplace addコマンドを使う。コマンドを忘れたら、/pluginだけ入力すれば、選択肢が出てくる。
> /plugin marketplace add kiririmode/claude-plugins ⎿ Successfully added marketplace: kiririmode-claudecode-plugins
marketplaceを追加すると、リポジトリの内容が$HOME/.claude/plugins/marketplaces/kiririmode-claudecode-pluginsに展開される。ただ、この段階ではまだpluginは使えない。次にインストールが必要になる。
/plugin install <プラグイン名>でpluginをインストールする。インストール後、Claude Codeを再起動すると有効化される。
> /plugin install common-dev-essentials ⎿ ✓ Installed common-dev-essentials. Restart Claude Code to load new plugins.
再起動すると、<プラグイン名>:スラッシュコマンド名という形式でslash commandが使えるようになる。
> /commit
─────────────────────────────────────────────────────────────────────────────────
/common-dev-essentials:commit Analyze changes and create commits in
Conventional Commits format, split into
logical units (plugin:common-dev-essentials
@kiririmode-claudecode-plugins)
MCPサーバも勝手に設定されている。
> /mcp ╭───────────────────────────────────────────────────────────────────────────────╮ │ Manage MCP servers │ │ │ │ ❯ 1. plugin:common-dev-essentials:serena ✔ connected · Enter │ │ to view details │
Marketplaceの利点
実際に使ってみて、いくつか良い点があった。
まず、配布が簡単。.claude-plugin/marketplace.jsonにメタデータを書いて、プラグインのディレクトリを規定の構造で置くだけ。特別なサーバーとかインフラは不要で、GitHubリポジトリに置けば誰でもアクセスできる。
次に、複数の機能をパッケージ化できるのが便利だった。今回のcommon-dev-essentialsでは、Slash commandとMCPサーバの設定を1つのプラグインにまとめた。利用者は/plugin install common-dev-essentialsだけで、/commitコマンドとSerena MCPサーバの両方が使えるようになる。関連する機能をセットで配布できるのは、手動設定では難しかったことだ。
それから、チーム内での共有が現実的になった。これまでは「この設定ファイルをコピーして」「環境変数をこう設定して」という手順をREADMEに書いてたけど、marketplace URLを共有するだけで済むようになる。新しいメンバーが入っても、/plugin marketplace addと/plugin installの2コマンドで環境を揃えられる。
MCPサーバの設定を.mcp.jsonで配布できるのも大きい。プラグインとして配布すれば勝手に設定される。環境変数の置換も${PWD}とか${PROJECT_ROOT}で書けるので、プロジェクトごとの設定も柔軟に扱える。
まとめ
Claude Code Plugin Marketplaceを構築して、Conventional Commit用のslash commandとSerena MCPサーバを配布してみた。作業としては、GitHubリポジトリに決められたディレクトリ構造でファイルを置いて、marketplace.jsonとplugin.jsonを書くだけだった。
実際に使ってみると、plugin配布のハードルが大きく下がった。slash commandは手動でファイルをコピーする必要がなくなったし、MCPサーバは.mcp.jsonで設定を配布できるようになった。複数の機能を1つのプラグインにまとめられるので、関連するツールをセットで提供できる。
今後は、チーム用のmarketplaceを育てていきたい。プロジェクト固有のslash commandとか、よく使うMCPサーバの設定とか、開発フローを効率化するAgent Skillsとかを追加していけば、チーム全体の生産性が上がりそうだ。Marketplaceの仕組みがあることで、こうした社内ツールの共有が現実的になった。