Plugins(プラグイン)
Plugins は、Claude Code の機能拡張(Skills、Agents、Hooks、MCP サーバー等)を1つのパッケージにまとめて配布・共有できる仕組みです。ブラウザの拡張機能のように、誰でも簡単にインストールして同じ機能を使えます。
Plugins とは
身近な例えで理解する
.claude/ ディレクトリの設定
ブラウザの設定を手動で変更する。そのブラウザでしか使えない。
Plugins
Chrome ウェブストアから拡張機能をインストールする。誰でもワンクリックで同じ機能が使える。アップデートも自動。
Claude Code も同じです。.claude/ に直接書いた Skills や Hooks はそのプロジェクトでしか使えませんが、Plugin にすればチームメンバーや他のプロジェクトに簡単に配布できます。
なぜ Plugins が必要なのか
1. .claude/ の設定との使い分け
.claude/ 直接配置 |
Plugins | |
|---|---|---|
| スコープ | そのプロジェクトのみ | 複数プロジェクトで共有可能 |
| スキル名 | /hello |
/plugin-name:hello(名前空間で衝突防止) |
| 配布 | 手動コピー | マーケットプレイスからインストール |
| 向いている場面 | 個人用、プロジェクト固有、実験段階 | チーム共有、コミュニティ配布、バージョン管理 |
推奨フロー: まず .claude/ で試して、共有したくなったら Plugin に変換するのが推奨の流れです。
専用?"} CLAUDE[".claude/ に直接配置
Skills / Agents / Rules"] Q2{"他プロジェクトにも
展開したい?"} PLUGIN["Plugin 化して配布
plugin.json でパッケージング"] KEEP[".claude/ のまま運用"] START --> Q1 Q1 -->|"Yes"| CLAUDE Q1 -->|"No"| PLUGIN CLAUDE --> Q2 Q2 -->|"Yes"| PLUGIN Q2 -->|"No"| KEEP style START fill:#e0e7ff,stroke:#6366f1,color:#1e293b style Q1 fill:#fef3c7,stroke:#f59e0b,color:#1e293b style Q2 fill:#fef3c7,stroke:#f59e0b,color:#1e293b style CLAUDE fill:#ecfdf5,stroke:#10b981,color:#1e293b style PLUGIN fill:#f0f9ff,stroke:#3b82f6,color:#1e293b style KEEP fill:#f8fafc,stroke:#64748b,color:#1e293b
2. 名前空間で衝突を防ぐ
複数のプラグインが同じ名前のスキルを持っていても、/plugin-a:deploy と /plugin-b:deploy のように名前空間で区別されるため衝突しません。
3. バージョン管理と更新
plugin.json にバージョンを記載することで、セマンティックバージョニングによる管理ができます。更新も /plugin install で簡単です。
Plugin の構成
Plugin は以下のディレクトリ構造で構成されます。
my-plugin/
├── .claude-plugin/
│ └── plugin.json # マニフェスト(必須)
├── commands/ # カスタムコマンド
│ └── hello.md
├── skills/ # スキル
│ └── code-review/
│ └── SKILL.md
├── agents/ # サブエージェント
│ └── reviewer.md
├── hooks/ # フック
│ └── hooks.json
├── .mcp.json # MCP サーバー設定
├── .lsp.json # LSP サーバー設定
├── settings.json # デフォルト設定
└── README.md # プラグイン説明
重要: commands/, skills/, agents/ 等はプラグインルート直下に配置してください。.claude-plugin/ の中に入れないでください。
plugin.json(マニフェスト)
マニフェストファイルはプラグインのメタ情報を定義します。.claude-plugin/plugin.json に配置します。
{
"name": "my-plugin",
"description": "プラグインの説明",
"version": "1.0.0",
"author": {
"name": "作者名"
}
}
| フィールド | 必須 | 説明 |
|---|---|---|
name |
Yes | プラグイン名。スキルの名前空間になる |
description |
Yes | プラグインマネージャーに表示される説明 |
version |
Yes | セマンティックバージョニング(1.0.0) |
author |
- | 作者情報 |
homepage |
- | プラグインのホームページ URL |
repository |
- | ソースコードのリポジトリ URL |
license |
- | ライセンス |
サンプルプラグイン
スターターキットの .claude/plugins/sample-plugin/ に最小構成のサンプルプラグインがあります。これはあくまでも構成の参考例です。
ディレクトリ構造
sample-plugin/
├── .claude-plugin/
│ └── plugin.json # マニフェスト
└── skills/
└── hello/
└── SKILL.md # サンプルスキル
plugin.json
{
"name": "sample-plugin",
"description": "Claude Code Plugin の構成を示すサンプルプラグインです。実際のプラグイン作成の参考にしてください。",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
SKILL.md(サンプルスキル)
---
name: hello
description: ユーザーに挨拶して、どんなお手伝いができるか尋ねるサンプルスキル
disable-model-invocation: true
---
$ARGUMENTS さんに親しみを込めて挨拶し、今日どんなお手伝いができるか尋ねてください。
名前が指定されていない場合は「こんにちは!」と一般的な挨拶をしてください。
このスキルはプラグイン経由で読み込まれた場合、/sample-plugin:hello として名前空間付きで利用できます。
プラグインの作り方(ステップバイステップ)
ステップ1: ディレクトリ作成
# プラグインディレクトリを作成
mkdir -p my-plugin/.claude-plugin
ステップ2: マニフェスト作成
{
"name": "my-plugin",
"description": "マイプラグインの説明",
"version": "1.0.0",
"author": {
"name": "あなたの名前"
}
}
ステップ3: スキルを追加
# スキルディレクトリを作成
mkdir -p my-plugin/skills/greet
---
name: greet
description: チームメンバーに挨拶するスキル
---
$ARGUMENTS さんにチームの一員として挨拶し、
今日の作業予定を確認してください。
ステップ4: ローカルテスト
# プラグインを読み込んでClaude Codeを起動
claude --plugin-dir ./my-plugin
# 変更を反映(再起動不要)
/reload-plugins
# スキルのテスト(名前空間付き)
/my-plugin:greet 田中さん
ステップ5: カスタムコマンドやエージェントを追加(任意)
# コマンドを追加
mkdir -p my-plugin/commands
echo "レビューの指示内容..." > my-plugin/commands/review.md
# エージェントを追加
mkdir -p my-plugin/agents
echo "セキュリティレビューの指示..." > my-plugin/agents/security-reviewer.md
plugin.json 配置"] S2["2. Skills/Agents
追加"] S3["3. ローカルテスト
--plugin-dir"] S4["4. npm publish
または Git 共有"] S5["5. claude plugin add
で導入"] S1 --> S2 --> S3 --> S4 --> S5 style S1 fill:#e0e7ff,stroke:#6366f1,color:#1e293b style S2 fill:#ecfdf5,stroke:#10b981,color:#1e293b style S3 fill:#fef3c7,stroke:#f59e0b,color:#1e293b style S4 fill:#f0f9ff,stroke:#3b82f6,color:#1e293b style S5 fill:#ecfdf5,stroke:#10b981,color:#1e293b
.claude/ からの変換手順
既に .claude/ に Skills や Hooks がある場合、以下の手順で Plugin に変換できます。
# 1. プラグインディレクトリを作成
mkdir -p my-plugin/.claude-plugin
# 2. マニフェストを作成
echo '{"name":"my-plugin","description":"説明","version":"1.0.0"}' > my-plugin/.claude-plugin/plugin.json
# 3. 既存ファイルをコピー
cp -r .claude/commands my-plugin/
cp -r .claude/skills my-plugin/
cp -r .claude/agents my-plugin/
# 4. テスト
claude --plugin-dir ./my-plugin
Skills との関係
Skills は Plugin の中核的な構成要素です。.claude/skills/ に直接配置したスキルとプラグイン内のスキルの違いを理解しましょう。
.claude/skills/ 直接配置 |
Plugin 内のスキル | |
|---|---|---|
| 呼び出し方 | /hello |
/plugin-name:hello |
| 名前空間 | なし(衝突の可能性あり) | あり(衝突しない) |
| 共有 | 手動でファイルコピー | プラグインとしてインストール |
| 更新 | 手動 | /plugin install で更新 |
配布方法
| 方法 | 説明 |
|---|---|
| チーム内 | リポジトリにプラグインディレクトリをコミット |
| マーケットプレイス | /plugin install で他のユーザーがインストール可能 |
| 公式マーケットプレイス | claude.ai/settings/plugins/submit から申請 |
ベストプラクティス:
- まず
.claude/で試す - プロジェクト内で動作確認してから Plugin に変換しましょう - 名前空間を活かす - プラグイン名は簡潔で分かりやすいものにしましょう(スキル名のプレフィックスになります)
- README.md を充実させる - プラグインの使い方、前提条件、設定方法を記載しましょう
- セマンティックバージョニングを守る - 破壊的変更はメジャーバージョンを上げましょう
- 最小構成から始める - 必要な機能だけをパッケージに含め、段階的に拡張しましょう
- 設定のデフォルト値を提供する -
settings.jsonにデフォルト設定を含めると、導入の手間が減ります