メインコンテンツへスキップ
プラグインを使用すると、プロジェクトとチーム全体で共有できるカスタム機能を使用してClaude Codeを拡張できます。このガイドでは、スラッシュコマンド、エージェント、スキル、フック、MCPサーバーを使用して独自のプラグインを作成する方法について説明します。 既存のプラグインをインストールしたいですか?プラグインを発見してインストールするを参照してください。完全な技術仕様については、プラグインリファレンスを参照してください。

プラグインとスタンドアロン設定を使用する場合

Claude Codeは、カスタムスラッシュコマンド、エージェント、フックを追加する2つの方法をサポートしています:
アプローチスラッシュコマンド名最適な用途
スタンドアロン (.claude/ ディレクトリ)/hello個人的なワークフロー、プロジェクト固有のカスタマイズ、クイック実験
プラグイン (.claude-plugin/plugin.json を含むディレクトリ)/plugin-name:helloチームメイトとの共有、コミュニティへの配布、バージョン管理されたリリース、プロジェクト全体で再利用可能
スタンドアロン設定を使用する場合
  • 単一のプロジェクト用にClaude Codeをカスタマイズしている
  • 設定は個人的であり、共有する必要がない
  • スラッシュコマンドやフックをパッケージ化する前に実験している
  • /hello/review のような短いスラッシュコマンド名が必要
プラグインを使用する場合
  • チームまたはコミュニティと機能を共有したい
  • 複数のプロジェクト全体で同じスラッシュコマンド/エージェントが必要
  • 拡張機能のバージョン管理と簡単な更新が必要
  • マーケットプレイスを通じて配布している
  • /my-plugin:hello のような名前空間付きスラッシュコマンドで問題ない(名前空間はプラグイン間の競合を防ぎます)
.claude/ でスタンドアロン設定から始めてクイック反復を行い、共有する準備ができたら既存の設定をプラグインに変換してください。

クイックスタート

このクイックスタートでは、カスタムスラッシュコマンドを使用してプラグインを作成する手順を説明します。マニフェスト(プラグインを定義する設定ファイル)を作成し、スラッシュコマンドを追加して、--plugin-dir フラグを使用してローカルでテストします。

前提条件

/plugin コマンドが表示されない場合は、Claude Codeを最新バージョンに更新してください。アップグレード手順については、トラブルシューティングを参照してください。

最初のプラグインを作成する

1

プラグインディレクトリを作成する

すべてのプラグインは、マニフェストとカスタムコマンド、エージェント、またはフックを含む独自のディレクトリに存在します。今すぐ作成してください:
mkdir my-first-plugin
2

プラグインマニフェストを作成する

.claude-plugin/plugin.json のマニフェストファイルは、プラグインの名前、説明、バージョンなど、プラグインのアイデンティティを定義します。Claude Codeはこのメタデータを使用して、プラグインマネージャーにプラグインを表示します。プラグインフォルダ内に .claude-plugin ディレクトリを作成します:
mkdir my-first-plugin/.claude-plugin
次に、このコンテンツで my-first-plugin/.claude-plugin/plugin.json を作成します:
my-first-plugin/.claude-plugin/plugin.json
{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
フィールド目的
name一意の識別子とスラッシュコマンド名前空間。スラッシュコマンドにはこれが接頭辞として付きます(例:/my-first-plugin:hello)。
descriptionプラグインを参照またはインストールするときにプラグインマネージャーに表示されます。
versionセマンティックバージョニングを使用してリリースを追跡します。
authorオプション。属性付けに役立ちます。
homepagerepositorylicense などの追加フィールドについては、完全なマニフェストスキーマを参照してください。
3

スラッシュコマンドを追加する

スラッシュコマンドは commands/ ディレクトリ内のMarkdownファイルです。ファイル名がスラッシュコマンド名になり、プラグインの名前空間が接頭辞として付きます(my-first-plugin という名前のプラグイン内の hello.md/my-first-plugin:hello を作成します)。Markdownコンテンツは、スラッシュコマンドが実行されたときにClaudeがどのように応答するかを指示します。プラグインフォルダに commands ディレクトリを作成します:
mkdir my-first-plugin/commands
次に、このコンテンツで my-first-plugin/commands/hello.md を作成します:
my-first-plugin/commands/hello.md
---
description: Greet the user with a friendly message
---

# Hello Command

Greet the user warmly and ask how you can help them today.
4

プラグインをテストする

--plugin-dir フラグを使用してClaude Codeを実行し、プラグインをロードします:
claude --plugin-dir ./my-first-plugin
Claude Codeが起動したら、新しいコマンドを試してください:
/my-first-plugin:hello
Claudeが挨拶で応答するのが表示されます。/help を実行して、プラグイン名前空間の下にリストされたコマンドを確認してください。
なぜ名前空間を使用するのか? プラグインスラッシュコマンドは常に名前空間が付きます(/greet:hello など)。複数のプラグインが同じ名前のコマンドを持つ場合の競合を防ぐためです。名前空間プレフィックスを変更するには、plugin.jsonname フィールドを更新してください。
5

スラッシュコマンド引数を追加する

ユーザー入力を受け入れることで、スラッシュコマンドを動的にします。$ARGUMENTS プレースホルダーは、ユーザーがスラッシュコマンドの後に提供するテキストをキャプチャします。hello.md ファイルを更新します:
my-first-plugin/commands/hello.md
---
description: Greet the user with a personalized message
---

# Hello Command

Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.
Claude Codeを再起動して変更を反映させ、名前を使用してコマンドを試してください:
/my-first-plugin:hello Alex
Claudeがあなたを名前で挨拶します。$1$2 などの個別パラメータのための引数オプションについては、スラッシュコマンドを参照してください。
これらの主要なコンポーネントを使用してプラグインを正常に作成およびテストしました:
  • プラグインマニフェスト (.claude-plugin/plugin.json):プラグインのメタデータを説明します
  • コマンドディレクトリ (commands/):カスタムスラッシュコマンドを含みます
  • コマンド引数 ($ARGUMENTS):動的な動作のためにユーザー入力をキャプチャします
--plugin-dir フラグは開発とテストに役立ちます。プラグインを他のユーザーと共有する準備ができたら、プラグインマーケットプレイスを作成および配布するを参照してください。

プラグイン構造の概要

スラッシュコマンドを使用してプラグインを作成しましたが、プラグインにはさらに多くの機能が含まれます:カスタムエージェント、スキル、フック、MCPサーバー、LSPサーバー。
よくある間違いcommands/agents/skills/hooks/.claude-plugin/ ディレクトリ内に配置しないでください。.claude-plugin/ には plugin.json のみが入ります。他のすべてのディレクトリはプラグインルートレベルにある必要があります。
ディレクトリ場所目的
.claude-plugin/プラグインルートplugin.json マニフェストのみを含みます(必須)
commands/プラグインルートMarkdownファイルとしてのスラッシュコマンド
agents/プラグインルートカスタムエージェント定義
skills/プラグインルートSKILL.md ファイルを含むエージェントスキル
hooks/プラグインルートhooks.json 内のイベントハンドラー
.mcp.jsonプラグインルートMCPサーバー設定
.lsp.jsonプラグインルートコード知能用のLSPサーバー設定
次のステップ:さらに多くの機能を追加する準備ができましたか?より複雑なプラグインを開発するにジャンプして、エージェント、フック、MCPサーバー、LSPサーバーを追加してください。すべてのプラグインコンポーネントの完全な技術仕様については、プラグインリファレンスを参照してください。

より複雑なプラグインを開発する

基本的なプラグインに慣れたら、より洗練された拡張機能を作成できます。

プラグインにスキルを追加する

プラグインには、Claudeの機能を拡張するエージェントスキルを含めることができます。スキルはモデルによって呼び出されます:Claudeはタスクコンテキストに基づいて自動的にそれらを使用します。 プラグインルートに skills/ ディレクトリを追加し、SKILL.md ファイルを含むスキルフォルダを追加します:
my-plugin/
├── .claude-plugin/
│   └── plugin.json
└── skills/
    └── code-review/
        └── SKILL.md
SKILL.md には、namedescription フィールドを含むフロントマターが必要で、その後に指示が続きます:
---
name: code-review
description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.
---

When reviewing code, check for:
1. Code organization and structure
2. Error handling
3. Security concerns
4. Test coverage
プラグインをインストールした後、Claude Codeを再起動してスキルをロードします。段階的な開示とツール制限を含む完全なスキル作成ガイダンスについては、エージェントスキルを参照してください。

プラグインにLSPサーバーを追加する

TypeScript、Python、Rustなどの一般的な言語については、公式マーケットプレイスから事前構築されたLSPプラグインをインストールしてください。既にカバーされていない言語のサポートが必要な場合にのみ、カスタムLSPプラグインを作成してください。
LSP(Language Server Protocol)プラグインは、Claudeにリアルタイムコード知能を提供します。公式LSPプラグインがない言語をサポートする必要がある場合は、プラグインに .lsp.json ファイルを追加することで、独自のプラグインを作成できます:
.lsp.json
{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}
プラグインをインストールするユーザーは、マシンに言語サーバーバイナリをインストールしている必要があります。 完全なLSP設定オプションについては、LSPサーバーを参照してください。

複雑なプラグインを整理する

多くのコンポーネントを持つプラグインの場合、ディレクトリ構造を機能別に整理します。完全なディレクトリレイアウトと整理パターンについては、プラグインディレクトリ構造を参照してください。

プラグインをローカルでテストする

開発中にプラグインをテストするには、--plugin-dir フラグを使用します。これにより、インストールを必要とせずにプラグインが直接ロードされます。
claude --plugin-dir ./my-plugin
プラグインに変更を加えると、Claude Codeを再起動して更新を反映させます。プラグインコンポーネントをテストします:
  • /command-name でコマンドを試す
  • /agents にエージェントが表示されることを確認する
  • フックが期待通りに機能することを確認する
フラグを複数回指定することで、複数のプラグインを一度にロードできます:
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

プラグインの問題をデバッグする

プラグインが期待通りに機能していない場合:
  1. 構造を確認する:ディレクトリが .claude-plugin/ 内ではなく、プラグインルートにあることを確認してください
  2. コンポーネントを個別にテストする:各コマンド、エージェント、フックを個別に確認してください
  3. 検証とデバッグツールを使用する:CLIコマンドとトラブルシューティング技術については、デバッグと開発ツールを参照してください

プラグインを共有する

プラグインを共有する準備ができたら:
  1. ドキュメントを追加する:インストールと使用方法の指示を含む README.md を含めます
  2. プラグインをバージョン管理するplugin.jsonセマンティックバージョニングを使用します
  3. マーケットプレイスを作成または使用するプラグインマーケットプレイスを通じて配布してインストールします
  4. 他のユーザーでテストする:より広い配布の前に、チームメンバーにプラグインをテストしてもらいます
プラグインがマーケットプレイスに入ったら、他のユーザーはプラグインを発見してインストールするの指示を使用してインストールできます。
完全な技術仕様、デバッグ技術、配布戦略については、プラグインリファレンスを参照してください。

既存の設定をプラグインに変換する

既に .claude/ ディレクトリにカスタムコマンド、スキル、またはフックがある場合は、それらをプラグインに変換して、より簡単に共有および配布できます。

移行手順

1

プラグイン構造を作成する

新しいプラグインディレクトリを作成します:
mkdir -p my-plugin/.claude-plugin
my-plugin/.claude-plugin/plugin.json にマニフェストファイルを作成します:
my-plugin/.claude-plugin/plugin.json
{
  "name": "my-plugin",
  "description": "Migrated from standalone configuration",
  "version": "1.0.0"
}
2

既存のファイルをコピーする

既存の設定をプラグインディレクトリにコピーします:
# コマンドをコピー
cp -r .claude/commands my-plugin/

# エージェントをコピー(ある場合)
cp -r .claude/agents my-plugin/

# スキルをコピー(ある場合)
cp -r .claude/skills my-plugin/
3

フックを移行する

設定にフックがある場合は、フックディレクトリを作成します:
mkdir my-plugin/hooks
my-plugin/hooks/hooks.json をフック設定で作成します。.claude/settings.json または settings.local.json から hooks オブジェクトをコピーしてください。形式は同じです:
my-plugin/hooks/hooks.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{ "type": "command", "command": "npm run lint:fix $FILE" }]
      }
    ]
  }
}
4

移行されたプラグインをテストする

プラグインをロードしてすべてが機能することを確認します:
claude --plugin-dir ./my-plugin
各コンポーネントをテストします:コマンドを実行し、/agents にエージェントが表示されることを確認し、フックが正しくトリガーされることを確認します。

移行時の変更内容

スタンドアロン (.claude/)プラグイン
1つのプロジェクトでのみ利用可能マーケットプレイスを通じて共有可能
.claude/commands/ 内のファイルplugin-name/commands/ 内のファイル
settings.json 内のフックhooks/hooks.json 内のフック
共有するには手動でコピーが必要/plugin install でインストール可能
移行後、重複を避けるために .claude/ から元のファイルを削除できます。ロードされたときにプラグインバージョンが優先されます。

次のステップ

Claude Codeのプラグインシステムを理解したので、異なる目標のための推奨パスは次のとおりです:

プラグインユーザー向け

プラグイン開発者向け