プラグインとスタンドアロン設定を使用する場合
Claude Codeは、カスタムスラッシュコマンド、エージェント、フックを追加する2つの方法をサポートしています:| アプローチ | スラッシュコマンド名 | 最適な用途 |
|---|---|---|
スタンドアロン (.claude/ ディレクトリ) | /hello | 個人的なワークフロー、プロジェクト固有のカスタマイズ、クイック実験 |
プラグイン (.claude-plugin/plugin.json を含むディレクトリ) | /plugin-name:hello | チームメイトとの共有、コミュニティへの配布、バージョン管理されたリリース、プロジェクト全体で再利用可能 |
- 単一のプロジェクト用にClaude Codeをカスタマイズしている
- 設定は個人的であり、共有する必要がない
- スラッシュコマンドやフックをパッケージ化する前に実験している
/helloや/reviewのような短いスラッシュコマンド名が必要
- チームまたはコミュニティと機能を共有したい
- 複数のプロジェクト全体で同じスラッシュコマンド/エージェントが必要
- 拡張機能のバージョン管理と簡単な更新が必要
- マーケットプレイスを通じて配布している
/my-plugin:helloのような名前空間付きスラッシュコマンドで問題ない(名前空間はプラグイン間の競合を防ぎます)
クイックスタート
このクイックスタートでは、カスタムスラッシュコマンドを使用してプラグインを作成する手順を説明します。マニフェスト(プラグインを定義する設定ファイル)を作成し、スラッシュコマンドを追加して、--plugin-dir フラグを使用してローカルでテストします。
前提条件
- Claude Code インストール済みで認証済み
- Claude Code バージョン 1.0.33 以降(
claude --versionで確認)
/plugin コマンドが表示されない場合は、Claude Codeを最新バージョンに更新してください。アップグレード手順については、トラブルシューティングを参照してください。最初のプラグインを作成する
1
プラグインディレクトリを作成する
すべてのプラグインは、マニフェストとカスタムコマンド、エージェント、またはフックを含む独自のディレクトリに存在します。今すぐ作成してください:
2
プラグインマニフェストを作成する
.claude-plugin/plugin.json のマニフェストファイルは、プラグインの名前、説明、バージョンなど、プラグインのアイデンティティを定義します。Claude Codeはこのメタデータを使用して、プラグインマネージャーにプラグインを表示します。プラグインフォルダ内に .claude-plugin ディレクトリを作成します:my-first-plugin/.claude-plugin/plugin.json を作成します:my-first-plugin/.claude-plugin/plugin.json
| フィールド | 目的 |
|---|---|
name | 一意の識別子とスラッシュコマンド名前空間。スラッシュコマンドにはこれが接頭辞として付きます(例:/my-first-plugin:hello)。 |
description | プラグインを参照またはインストールするときにプラグインマネージャーに表示されます。 |
version | セマンティックバージョニングを使用してリリースを追跡します。 |
author | オプション。属性付けに役立ちます。 |
homepage、repository、license などの追加フィールドについては、完全なマニフェストスキーマを参照してください。3
スラッシュコマンドを追加する
スラッシュコマンドは 次に、このコンテンツで
commands/ ディレクトリ内のMarkdownファイルです。ファイル名がスラッシュコマンド名になり、プラグインの名前空間が接頭辞として付きます(my-first-plugin という名前のプラグイン内の hello.md は /my-first-plugin:hello を作成します)。Markdownコンテンツは、スラッシュコマンドが実行されたときにClaudeがどのように応答するかを指示します。プラグインフォルダに commands ディレクトリを作成します:my-first-plugin/commands/hello.md を作成します:my-first-plugin/commands/hello.md
4
プラグインをテストする
--plugin-dir フラグを使用してClaude Codeを実行し、プラグインをロードします:/help を実行して、プラグイン名前空間の下にリストされたコマンドを確認してください。なぜ名前空間を使用するのか? プラグインスラッシュコマンドは常に名前空間が付きます(
/greet:hello など)。複数のプラグインが同じ名前のコマンドを持つ場合の競合を防ぐためです。名前空間プレフィックスを変更するには、plugin.json の name フィールドを更新してください。5
スラッシュコマンド引数を追加する
ユーザー入力を受け入れることで、スラッシュコマンドを動的にします。Claude Codeを再起動して変更を反映させ、名前を使用してコマンドを試してください:Claudeがあなたを名前で挨拶します。
$ARGUMENTS プレースホルダーは、ユーザーがスラッシュコマンドの後に提供するテキストをキャプチャします。hello.md ファイルを更新します:my-first-plugin/commands/hello.md
$1、$2 などの個別パラメータのための引数オプションについては、スラッシュコマンドを参照してください。- プラグインマニフェスト (
.claude-plugin/plugin.json):プラグインのメタデータを説明します - コマンドディレクトリ (
commands/):カスタムスラッシュコマンドを含みます - コマンド引数 (
$ARGUMENTS):動的な動作のためにユーザー入力をキャプチャします
プラグイン構造の概要
スラッシュコマンドを使用してプラグインを作成しましたが、プラグインにはさらに多くの機能が含まれます:カスタムエージェント、スキル、フック、MCPサーバー、LSPサーバー。| ディレクトリ | 場所 | 目的 |
|---|---|---|
.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 ファイルを含むスキルフォルダを追加します:
SKILL.md には、name と description フィールドを含むフロントマターが必要で、その後に指示が続きます:
プラグインにLSPサーバーを追加する
LSP(Language Server Protocol)プラグインは、Claudeにリアルタイムコード知能を提供します。公式LSPプラグインがない言語をサポートする必要がある場合は、プラグインに.lsp.json ファイルを追加することで、独自のプラグインを作成できます:
.lsp.json
複雑なプラグインを整理する
多くのコンポーネントを持つプラグインの場合、ディレクトリ構造を機能別に整理します。完全なディレクトリレイアウトと整理パターンについては、プラグインディレクトリ構造を参照してください。プラグインをローカルでテストする
開発中にプラグインをテストするには、--plugin-dir フラグを使用します。これにより、インストールを必要とせずにプラグインが直接ロードされます。
/command-nameでコマンドを試す/agentsにエージェントが表示されることを確認する- フックが期待通りに機能することを確認する
プラグインの問題をデバッグする
プラグインが期待通りに機能していない場合:- 構造を確認する:ディレクトリが
.claude-plugin/内ではなく、プラグインルートにあることを確認してください - コンポーネントを個別にテストする:各コマンド、エージェント、フックを個別に確認してください
- 検証とデバッグツールを使用する:CLIコマンドとトラブルシューティング技術については、デバッグと開発ツールを参照してください
プラグインを共有する
プラグインを共有する準備ができたら:- ドキュメントを追加する:インストールと使用方法の指示を含む
README.mdを含めます - プラグインをバージョン管理する:
plugin.jsonでセマンティックバージョニングを使用します - マーケットプレイスを作成または使用する:プラグインマーケットプレイスを通じて配布してインストールします
- 他のユーザーでテストする:より広い配布の前に、チームメンバーにプラグインをテストしてもらいます
完全な技術仕様、デバッグ技術、配布戦略については、プラグインリファレンスを参照してください。
既存の設定をプラグインに変換する
既に.claude/ ディレクトリにカスタムコマンド、スキル、またはフックがある場合は、それらをプラグインに変換して、より簡単に共有および配布できます。
移行手順
1
プラグイン構造を作成する
新しいプラグインディレクトリを作成します:
my-plugin/.claude-plugin/plugin.json にマニフェストファイルを作成します:my-plugin/.claude-plugin/plugin.json
2
既存のファイルをコピーする
既存の設定をプラグインディレクトリにコピーします:
3
フックを移行する
設定にフックがある場合は、フックディレクトリを作成します:
my-plugin/hooks/hooks.json をフック設定で作成します。.claude/settings.json または settings.local.json から hooks オブジェクトをコピーしてください。形式は同じです:my-plugin/hooks/hooks.json
4
移行されたプラグインをテストする
プラグインをロードしてすべてが機能することを確認します:各コンポーネントをテストします:コマンドを実行し、
/agents にエージェントが表示されることを確認し、フックが正しくトリガーされることを確認します。移行時の変更内容
スタンドアロン (.claude/) | プラグイン |
|---|---|
| 1つのプロジェクトでのみ利用可能 | マーケットプレイスを通じて共有可能 |
.claude/commands/ 内のファイル | plugin-name/commands/ 内のファイル |
settings.json 内のフック | hooks/hooks.json 内のフック |
| 共有するには手動でコピーが必要 | /plugin install でインストール可能 |
移行後、重複を避けるために
.claude/ から元のファイルを削除できます。ロードされたときにプラグインバージョンが優先されます。次のステップ
Claude Codeのプラグインシステムを理解したので、異なる目標のための推奨パスは次のとおりです:プラグインユーザー向け
- プラグインを発見してインストールする:マーケットプレイスを参照してプラグインをインストールする
- チームマーケットプレイスを設定する:チーム用のリポジトリレベルプラグインを設定する
プラグイン開発者向け
- マーケットプレイスを作成および配布する:プラグインをパッケージ化して共有する
- プラグインリファレンス:完全な技術仕様
- 特定のプラグインコンポーネントをさらに詳しく調べる: