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 に変換するのが推奨の流れです。

flowchart TD START(["新しい機能を作りたい"]) Q1{"このプロジェクト
専用?"} 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
.claude/ で試作 → 良ければ Plugin 化の判断フロー

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 に配置します。

.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/
sample-plugin/
├── .claude-plugin/
│   └── plugin.json          # マニフェスト
└── skills/
    └── hello/
        └── SKILL.md         # サンプルスキル

plugin.json

sample-plugin/.claude-plugin/plugin.json
{
  "name": "sample-plugin",
  "description": "Claude Code Plugin の構成を示すサンプルプラグインです。実際のプラグイン作成の参考にしてください。",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}

SKILL.md(サンプルスキル)

sample-plugin/skills/hello/SKILL.md
---
name: hello
description: ユーザーに挨拶して、どんなお手伝いができるか尋ねるサンプルスキル
disable-model-invocation: true
---

$ARGUMENTS さんに親しみを込めて挨拶し、今日どんなお手伝いができるか尋ねてください。

名前が指定されていない場合は「こんにちは!」と一般的な挨拶をしてください。

このスキルはプラグイン経由で読み込まれた場合、/sample-plugin:hello として名前空間付きで利用できます。

プラグインの作り方(ステップバイステップ)

ステップ1: ディレクトリ作成

# プラグインディレクトリを作成
mkdir -p my-plugin/.claude-plugin

ステップ2: マニフェスト作成

my-plugin/.claude-plugin/plugin.json
{
  "name": "my-plugin",
  "description": "マイプラグインの説明",
  "version": "1.0.0",
  "author": {
    "name": "あなたの名前"
  }
}

ステップ3: スキルを追加

# スキルディレクトリを作成
mkdir -p my-plugin/skills/greet
my-plugin/skills/greet/SKILL.md
---
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
flowchart LR S1["1. ディレクトリ作成
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 にデフォルト設定を含めると、導入の手間が減ります