プラグインコンポーネントリファレンス
Skills
プラグインは Claude Code に skills を追加し、/name ショートカットを作成します。これらは、あなたまたは Claude が呼び出すことができます。
場所: プラグインルートの skills/ または commands/ ディレクトリ、またはプラグインルートの単一の SKILL.md ファイル
ファイル形式: Skills はディレクトリで SKILL.md を含みます。commands はシンプルなマークダウンファイルです。
Skill 構造:
- Skills と commands はプラグインがインストールされると自動的に検出されます
- Claude はタスクコンテキストに基づいて自動的にそれらを呼び出すことができます
- Skills は SKILL.md の横にサポートファイルを含めることができます
skills/ ディレクトリがなく、skills manifest フィールドがない場合、プラグインルートの SKILL.md は単一の skill として読み込まれます。frontmatter の name フィールドを設定して、skill の呼び出し名を制御します。これがない場合、Claude Code はインストールディレクトリ名にフォールバックします。マーケットプレイスからインストールされたプラグインの場合、これは更新のたびに変わるバージョン文字列です。複数の skill を配布するプラグインの場合は、上記の skills/ ディレクトリレイアウトを使用してください。
詳細については、Skillsを参照してください。
Agents
プラグインは、特定のタスク用の特化した subagents を提供できます。Claude は必要に応じて自動的にそれらを呼び出すことができます。 場所: プラグインルートのagents/ ディレクトリ
ファイル形式: エージェント機能を説明するマークダウンファイル
Agent 構造:
name、description、model、effort、maxTurns、tools、disallowedTools、skills、memory、background、isolation frontmatter フィールドをサポートしています。唯一の有効な isolation 値は "worktree" です。セキュリティ上の理由から、hooks、mcpServers、permissionMode はプラグイン提供のエージェントではサポートされていません。
統合ポイント:
- Agents は @-mention typeahead に、
my-plugin:code-reviewerなどのスコープ付き名の下に表示されます。プラグインが有効になると - Claude はタスクコンテキストに基づいて自動的にエージェントを呼び出すことができます
- Agents はユーザーが手動で呼び出すことができます
- プラグインエージェントは組み込みの Claude エージェントと一緒に動作します
Hooks
プラグインは Claude Code イベントに自動的に応答するイベントハンドラーを提供できます。 場所: プラグインルートのhooks/hooks.json、または plugin.json 内のインライン
形式: イベントマッチャーとアクションを含む JSON 設定
Hook 設定:
Hook タイプ:
command: シェルコマンドまたはスクリプトを実行http: イベント JSON を URL への POST リクエストとして送信mcp_tool: 設定されたMCP server上のツールを呼び出すprompt: LLM でプロンプトを評価(コンテキストの$ARGUMENTSプレースホルダーを使用)agent: 複雑な検証タスク用のツール付き agentic verifier を実行
if フィールドはスコープ付きツール名 mcp__plugin_<plugin-name>_<server-name>__<tool> を取り、mcp_tool hook の server フィールドは plugin:<plugin-name>:<server-name> を取ります。ベアサーバーキーに対して記述されたマッチャーは発火しません。MCP ツールをマッチおよびプラグイン提供 MCP serversを参照してください。
MCP servers
プラグインは Model Context Protocol(MCP)servers をバンドルして、Claude Code を外部ツールおよびサービスに接続できます。 場所: プラグインルートの.mcp.json、または plugin.json 内のインライン
形式: 標準 MCP サーバー設定
MCP サーバー設定:
- プラグイン MCP servers はプラグインが有効になると自動的に開始されます
- Servers は Claude のツールキットに標準 MCP ツールとして表示されます
- サーバー機能は Claude の既存ツールとシームレスに統合されます
- プラグインサーバーはユーザー MCP servers とは独立して設定できます
LSP servers
プラグインは Language Server Protocol(LSP)servers を提供して、Claude がコードベースで作業する際にリアルタイムコード インテリジェンスを得ることができます。 LSP 統合は以下を提供します:- 即座の診断: Claude は各編集後すぐにエラーと警告を確認できます
- コードナビゲーション: 定義へのジャンプ、参照の検索、ホバー情報
- 言語認識: コードシンボルの型情報とドキュメント
.lsp.json、または plugin.json 内のインライン
形式: 言語サーバー名をその設定にマップする JSON 設定
.lsp.json ファイル形式:
plugin.json 内のインライン:
オプションフィールド:
restartOnCrash と shutdownTimeout には Claude Code v2.1.205 以降が必要です。v2.1.205 より前では、設定スキーマは両方のオプションを受け入れていましたが、どちらかを設定すると Claude Code は起動時にその LSP サーバーをスキップしていました。理由は claude --debug 出力でのみ表示されます。
同じ拡張子に対する複数のサーバー: 複数の有効な LSP サーバーが extensionToLanguage で同じファイル拡張子を宣言する場合、サーバーが 1 つのプラグインから来ているか異なるプラグインから来ているかに関わらず、最初に登録されたサーバーがその拡張子を持つファイルを処理し、他のサーバーは起動しません。/plugin インターフェイスは、アクティブなサーバーを持つプラグインに名前を付ける警告を表示します。
初期化に失敗するサーバー: Claude Code は、command または extensionToLanguage が欠落しているなど、設定が無効なサーバーをスキップし、他の設定されたサーバーは引き続き起動します。claude --debug を実行して、サーバーがスキップされた理由を確認してください。
スキップされたサーバーはそのファイル拡張子を要求しないため、同じ拡張子を宣言する別の有効なサーバーが、同じプラグインまたは異なるプラグインから来ていても、引き続きそれらのファイルを処理します。v2.1.205 より前では、初期化に失敗したサーバーは引き続きその拡張子を要求し、同じ拡張子に対する別の有効なサーバーをブロックしていました。
利用可能な LSP プラグイン:
言語サーバーをまずインストールしてから、マーケットプレイスからプラグインをインストールしてください。
Monitors
プラグインは、プラグインがアクティブな場合に Claude Code が自動的に開始するバックグラウンド monitors を宣言できます。各 monitor はセッションの期間中シェルコマンドを実行し、すべての stdout 行を Claude に通知として配信するため、Claude は自分自身に開始するよう求められることなく、ログエントリ、ステータス変更、またはポーリングされたイベントに反応できます。 プラグイン monitors はMonitor toolと同じメカニズムを使用し、その可用性制約を共有します。これらはインタラクティブ CLI セッションでのみ実行され、hooksと同じ信頼レベルでサンドボックス化されずに実行され、Monitor tool が利用できないホストではスキップされます。 場所: プラグインルートのmonitors/monitors.json、または plugin.json 内のインライン
形式: monitor エントリの JSON 配列
次の monitors/monitors.json はデプロイメントステータスエンドポイントとローカルエラーログを監視します:
plugin.json の experimental.monitors を同じ配列に設定します。デフォルト以外のパスから読み込むには、experimental.monitors を "./config/monitors.json" などの相対パス文字列に設定します。Monitors は実験的コンポーネントです。
必須フィールド:
オプションフィールド:
command 値はパス置換 ${CLAUDE_PLUGIN_ROOT}、${CLAUDE_PLUGIN_DATA}、${CLAUDE_PROJECT_DIR}、および環境からの任意の ${ENV_VAR} をサポートします。スクリプトがプラグイン自体のディレクトリから実行される必要がある場合は、コマンドの前に cd "${CLAUDE_PLUGIN_ROOT}" && を付けます。
monitor command は${user_config.*}値を参照することはできません。コマンドはシェルを通じて実行されるため、Claude Code は値を置換する代わりにエラーでプラグインを拒否します。Monitor プロセスは CLAUDE_PLUGIN_OPTION_<KEY> 環境変数を受け取らないため、monitor スクリプトが所有する設定ファイルから値を読み取るようにしてください。v2.1.207 より前では、monitor コマンドは ${user_config.*} 値を置換していました。
セッション中にプラグインを無効にしても、既に実行中の monitors は停止しません。セッションが終了するときに停止します。
Themes
プラグインは、/theme に組み込みプリセットおよびユーザーのローカルテーマと一緒に表示される色テーマを配布できます。テーマは themes/ 内の JSON ファイルで、base プリセットと色トークンのスパース overrides マップを持ちます。Themes は実験的コンポーネントです。
custom:<plugin-name>:<slug> がユーザーの設定に保持されます。プラグインテーマは読み取り専用です。/theme で Ctrl+E を押すと、それが ~/.claude/themes/ にコピーされるため、ユーザーはコピーを編集できます。
プラグインインストールスコープ
プラグインをインストールするときは、プラグインが利用可能な場所と他のユーザーが使用できるかどうかを決定するスコープを選択します。
プラグインは他の Claude Code 設定と同じスコープシステムを使用します。インストール手順とスコープフラグについては、プラグインのインストールを参照してください。スコープの完全な説明については、設定スコープを参照してください。
Skills ディレクトリプラグイン
.claude-plugin/plugin.json マニフェストを含む skills ディレクトリの下のフォルダは、次のセッションで <name>@skills-dir という名前のプラグインとして読み込まれます。マーケットプレイスもインストール手順もありません。plugin initでスキャフォルドしてください。マーケットプレイスインストールとは異なり、プラグインはプラグインキャッシュにコピーされるのではなく、所定の場所で検出されます。
skills ディレクトリツリーは 3 つの異なるものをサポートします:
プラグインが読み込まれる場所を選択
プロジェクトスコープ プラグインはリポジトリにチェックインされ、クローンしたすべての共同作業者に到達します。そのコンテンツはあなたではなくリポジトリから来るため、
.claude/settings.json を管理するのと同じ信頼ゲートの後にのみ読み込まれます。コードを実行するコンポーネントはさらに制限されます:
- 宣言する MCP servers は、プロジェクト
.mcp.jsonと同じサーバーごとの承認を通過します - LSP servers はワークスペースを信頼した後にのみ開始します
- バックグラウンド monitorsは読み込まれません
Skills ディレクトリプラグインを編集、再読み込み、無効化
skill のSKILL.md に加えた変更は現在のセッションで即座に有効になります。プラグインの他のコンポーネント(hooks/、.mcp.json、agents/、output-styles/ など)への変更は有効になりません。/reload-plugins を実行するか Claude Code を再起動してそれらを取得してください。ライブ変更検出を参照してください。
skills ディレクトリプラグインの読み込みを停止するには、そのフォルダを削除するか、名前で無効にしてください。マーケットプレイスから何もインストールされなかったため、uninstall ステップはありません。
プラグインマニフェストスキーマ
.claude-plugin/plugin.json ファイルはプラグインのメタデータと設定を定義します。このセクションでは、サポートされているすべてのフィールドとオプションを説明しています。
マニフェストはオプションです。省略された場合、Claude Code はデフォルト場所のコンポーネントを自動検出し、ディレクトリ名からプラグイン名を導出します。メタデータを提供するか、カスタムコンポーネントパスが必要な場合はマニフェストを使用してください。
完全なスキーマ
必須フィールド
マニフェストを含める場合、name は唯一の必須フィールドです。
この名前はコンポーネントの名前空間に使用されます。たとえば、UI では、名前が
plugin-dev のプラグインのエージェント agent-creator は plugin-dev:agent-creator として表示されます。
認識されないフィールド
Claude Code は認識しないトップレベルフィールドを無視します。別のエコシステムからのメタデータをplugin.json に保持でき、プラグインは引き続き読み込まれます。これにより、VS Code または Cursor 拡張マニフェスト、npm package.json、または MCPB/DXT バンドルマニフェストとしても機能する 1 つのマニフェストを保持することが実用的になります。
claude plugin validate は認識されないフィールドを警告として報告し、エラーではありません。フィールドが認識されたフィールドから 1 文字または 2 文字異なる場合、警告は意図された可能性のある名前を提案します。認識されないフィールド警告のみを持つプラグインは検証に合格し、実行時に読み込まれます。
型が間違っているフィールドは引き続き失敗します。たとえば、keywords 値が配列ではなく文字列である場合は読み込みエラーであり、claude plugin validate はそれをエラーとして報告します。
--strict を渡して警告をエラーとして扱います。CI で使用して、公開前に別のツールのマニフェストから残されたスペルミスのあるフィールド名またはフィールドをキャッチします。ただし、プラグインは実行時に読み込まれます。
メタデータフィールド
デフォルト有効化
plugin.json で defaultEnabled: false を設定して、無効な状態でインストールされるプラグインを配布します。ユーザーは claude plugin enable <plugin> または /plugin インターフェイスでそれをオンにします。外部サービスに接続するプラグインなど、ユーザーがオプトインすべきコストまたはスコープを追加するプラグインに使用します。これには Claude Code v2.1.154 以降が必要です。以前のバージョンはフィールドを無視し、インストール時にプラグインを有効にします。
defaultEnabled は、他に何もプラグインの状態を決定していない場合のフォールバックです。2 つのことがそれより優先されます:
- ユーザーの設定: 任意の設定スコープの
enabledPluginsのプラグインのエントリ。書き込まれると、プラグイン更新と再インストール全体で保持されるため、後のリリースでdefaultEnabledを変更しても既存ユーザーをフリップしません。 - 依存関係要件: プラグインがアクティブな別のプラグインによって必要とされる場合、Claude Code はインストール時または有効化時にそれに対して
trueを書き込みます。これにより明示的な設定が与えられるため、独自のデフォルトはもはや適用されません。依存関係を持つプラグインを有効または無効にするを参照してください。
plugin.json の値より優先されます。オプションプラグインフィールドを参照してください。
コンポーネントパスフィールド
実験的コンポーネント
experimental キーの下のコンポーネント、themes と monitors は、安定化する間にリリース間でマニフェストスキーマが変更される可能性があります。それらを宣言する場所は別の移行です。トップレベルはまだ機能し、claude plugin validate は警告を表示し、将来のリリースでは experimental.* が必要になります。
ユーザー設定
userConfig フィールドは、プラグインが有効になったときに Claude Code がユーザーにプロンプトする値を宣言します。ユーザーに settings.json を手動で編集させる代わりにこれを使用してください。
各値は MCP および LSP サーバー設定と hook コマンドで
${user_config.KEY} として置換可能です。機密でない値は skill とエージェントコンテンツでも置換できます。すべての値はプラグインサブプロセスに CLAUDE_PLUGIN_OPTION_<KEY> 環境変数としてエクスポートされます。ここで <KEY> はオプションキーを大文字にしたものです。
シェルで実行されるフィールドは ${user_config.*} を拒否します: 設定された値をシェルコマンドに置換すると、シェルはその値が含むものを実行できるため、コンポーネントはエラーで失敗します。拒否された各フィールドには、値を渡す別の方法があります:
v2.1.207 より前は、これらのフィールドは
${user_config.KEY} 値を置換していました。これに依存していたプラグインを更新してください。
機密でない値は settings.json の pluginConfigs キーの下に pluginConfigs[<plugin-id>].options として保存されます。Claude Code はキーをユーザー設定に書き込み、ユーザー設定、--settings フラグ、および管理設定からそれを読み取ります。プロジェクトの .claude/settings.json または .claude/settings.local.json のエントリは無視されます。v2.1.207 より前は、Claude Code はプロジェクトおよびローカル設定も読み取っていました。
機密値は macOS Keychain、またはサポートされているキーチェーンが利用できないプラットフォームでは ~/.claude/.credentials.json に移動します。キーチェーンストレージは OAuth トークンと共有され、約 2 KB の合計制限があるため、機密値は小さく保ってください。
チャネル
channels フィールドを使用すると、プラグインは 1 つ以上のメッセージチャネルを宣言して、会話にコンテンツを注入できます。各チャネルはプラグインが提供する MCP サーバーにバインドされます。
server フィールドは必須で、プラグインの mcpServers のキーと一致する必要があります。オプションのチャネルごとの userConfig はトップレベルフィールドと同じスキーマを使用し、プラグインがプラグイン有効化時にボットトークンまたはオーナー ID をプロンプトできるようにします。
パス動作ルール
カスタムパスがプラグインのデフォルトディレクトリを置き換えるか拡張するかは、フィールドによって異なります:- デフォルトを置き換える:
commands、agents、outputStyles、experimental.themes、experimental.monitors。たとえば、マニフェストがcommandsを指定する場合、デフォルトcommands/ディレクトリはスキャンされません。デフォルトを保持してさらに追加するには、明示的にリストします:"commands": ["./commands/", "./extras/"] - デフォルトに追加:
skills。デフォルトskills/ディレクトリは常にスキャンされ、skillsにリストされているディレクトリはそれと一緒に読み込まれます。例外: マーケットプレイスエントリのsourceがマーケットプレイスルートに解決される場合、特定のサブディレクトリを宣言するとスキャンが置き換えられます - 独自のマージルール: hooks、MCP servers、LSP servers。各セクションで複数のソースがどのように結合されるかを参照してください
claude plugin list および /plugin 詳細ビューで警告します。プラグインはマニフェストパスを使用して読み込まれます。マニフェストキーがデフォルトフォルダを指す場合(例: "commands": ["./commands/deploy.md"])は警告は表示されません。その場合、フォルダは明示的にアドレス指定されているためです。
すべてのパスフィールドについて:
- すべてのパスはプラグインルートに相対的で、
./で始まる必要があります - カスタムパスからのコンポーネントは同じ命名と名前空間ルールを使用します
- 複数のパスを配列として指定できます
- skill パスが
SKILL.mdを直接含むディレクトリを指す場合(例:"skills": ["./"]がプラグインルートを指す)、SKILL.mdの frontmatternameフィールドが skill の呼び出し名を決定します。これはインストールディレクトリに関係なく安定した名前を提供します。frontmatter にnameが設定されていない場合、ディレクトリ basename がフォールバックとして使用されます。
SKILL.md があり、skills/ サブディレクトリがなく、skills マニフェストフィールドがないプラグインは、Claude Code v2.1.142 以降で単一 skill プラグインとして自動的に読み込まれます。このレイアウトの場合、plugin.json で "skills": ["./"] を設定する必要はありません。skill の呼び出し名は上記と同じルールに従います: frontmatter name フィールド、またはフォールバックとしてのディレクトリ basename。
パスの例:
環境変数
Claude Code は、プラグインパスを参照するための 3 つの変数を提供します:
3 つすべてが hook プロセスおよび MCP と LSP サーバーサブプロセスに環境変数としてエクスポートされます。どのフィールドがそれらをインラインで置換するかは、プラグインコンポーネントによって異なります:
hook コマンドでは、exec formを
args で使用して、各パスが 1 つの引数として引用符なしで渡されるようにしてください。shell-form hooks と monitor コマンドでは、"${CLAUDE_PROJECT_DIR}/scripts/server.sh" のようにダブルクォートで囲みます。この shell-form hook はプラグインにバンドルされたスクリプトを実行します:
${CLAUDE_PLUGIN_ROOT} はプラグインが更新されると変更されます。前のバージョンのディレクトリは更新後約 7 日間ディスク上に残りますが、これを一時的なものとして扱い、ここに状態を書き込まないでください。
プラグインがセッション中に更新されると、hook コマンド、monitors、MCP サーバー、LSP サーバーは前のバージョンのパスを使用し続けます。/reload-plugins を実行して、hook、MCP サーバー、LSP サーバーを新しいパスに切り替えます。monitors はセッション再起動が必要です。
MCP サーバーは roots/list リクエストを呼び出すこともでき、セッションの作業ディレクトリを実行時に読み取ることができます。roots/list が返すもの、および Claude Code がサーバーに変更を通知するタイミングを参照してください。
永続データディレクトリ
${CLAUDE_PLUGIN_DATA} ディレクトリは ~/.claude/plugins/data/{id}/ に解決されます。ここで {id} はプラグイン識別子で、a-z、A-Z、0-9、_、- 以外の文字が - に置き換えられます。formatter@my-marketplace としてインストールされたプラグインの場合、ディレクトリは ~/.claude/plugins/data/formatter-my-marketplace/ です。
一般的な使用法は、言語依存関係を 1 回インストールしてセッションとプラグイン更新全体で再利用することです。データディレクトリは単一のプラグインバージョンより長く存在するため、ディレクトリ存在チェックだけでは、更新がプラグインの依存関係マニフェストを変更したときを検出できません。推奨パターンはバンドルされたマニフェストをデータディレクトリのコピーと比較し、異なる場合は再インストールします。
この SessionStart hook は最初の実行時に node_modules をインストールし、プラグイン更新に変更された package.json が含まれるたびに再度インストールします:
diff は保存されたコピーが不足しているか、バンドルされたコピーと異なる場合にゼロ以外で終了し、最初の実行と依存関係変更更新の両方をカバーします。npm install が失敗した場合、末尾の rm はコピーされたマニフェストを削除して、次のセッションが再試行します。
${CLAUDE_PLUGIN_ROOT} にバンドルされたスクリプトは、永続化された node_modules に対して実行できます:
/plugin インターフェイスはディレクトリサイズを表示し、削除前にプロンプトします。CLI はデフォルトで削除します。--keep-dataを渡して保持します。
プラグインキャッシングとファイル解決
プラグインは 2 つの方法で指定されます:claude --plugin-dirまたはclaude --plugin-urlを通じて、セッションの期間。- マーケットプレイスを通じて、将来のセッション用にインストール。
~/.claude/plugins/cache)にコピーします。これらを所定の場所で使用するのではなく。この動作を理解することは、外部ファイルを参照するプラグインを開発する際に重要です。
各インストール済みバージョンはキャッシュ内の別のディレクトリです。プラグインを更新またはアンインストールすると、前のバージョンディレクトリは孤立したものとしてマークされ、7 日後に自動的に削除されます。猶予期間により、既に古いバージョンを読み込んだ同時実行 Claude Code セッションがエラーなく実行を続けることができます。
Claude の Glob および Grep ツールは検索中に孤立したバージョンディレクトリをスキップするため、ファイル結果には古いプラグインコードが含まれません。
パストラバーサル制限
インストールされたプラグインはディレクトリの外側のファイルを参照できません。プラグインルートの外側をトラバースするパス(../shared-utils など)は、これらの外部ファイルがキャッシュにコピーされないため、インストール後は機能しません。
マーケットプレイス内でシンボリックリンクを使用してファイルを共有
プラグインが同じマーケットプレイスの他の部分とファイルを共有する必要がある場合、プラグインディレクトリ内にシンボリックリンクを作成できます。プラグインがキャッシュにコピーされるときにシンボリックリンクがどのように処理されるかは、そのターゲットがどこに解決されるかによって異なります:- プラグイン自体のディレクトリ内: シンボリックリンクはキャッシュ内の相対シンボリックリンクとして保持されるため、実行時にコピーされたターゲットへの解決を続けます。
- 同じマーケットプレイス内の他の場所: シンボリックリンクは逆参照されます。ターゲットのコンテンツはキャッシュにコピーされます。これにより、メタプラグインの
skills/ディレクトリがマーケットプレイス内の他のプラグインで定義されたスキルにリンクできます。 - マーケットプレイス外: シンボリックリンクはセキュリティのためにスキップされます。これにより、プラグインがシステムパスなどの任意のホストファイルをキャッシュに取り込むことを防ぎます。
--plugin-dir でインストールされたプラグイン、またはローカルパスからのプラグインの場合、プラグイン自体のディレクトリ内で解決されるシンボリックリンクのみが保持されます。その他はすべてスキップされます。
次のコマンドは、マーケットプレイスプラグイン内から兄弟プラグインで定義された共有スキルへのリンクを作成します。Windows では、昇格されたコマンドプロンプトから mklink /D を使用するか、開発者モードを有効にします:
プラグインディレクトリ構造
標準プラグインレイアウト
完全なプラグインは次の構造に従います:CLAUDE.md ファイルはプロジェクトコンテキストとして読み込まれません。プラグインは CLAUDE.md ではなく、skills、agents、hooks を通じてコンテキストを提供します。Claude のコンテキストに読み込まれる命令を配布するには、skill に配置してください。
ファイル場所リファレンス
CLI コマンドリファレンス
Claude Code は非対話的なプラグイン管理用の CLI コマンドを提供します。スクリプトと自動化に役立ちます。plugin init
~/.claude/skills/<name>/ に新しいプラグインをスキャフォルドします。次の Claude Code セッションで、<name>@skills-dir として自動的に読み込まれ、インストール手順なしで /plugin と claude plugin list に表示されます。
Skills ディレクトリプラグインのスコープと信頼要件を参照してください。
<name>: プラグイン名。skill 名前空間と~/.claude/skills/の下のディレクトリ名になるため、スペースやパス区切り文字を含むことはできません。
エイリアス:
new
各 --with 値は、そのコンポーネントのスターターファイルを追加し、編集準備ができています:
スキャフォルドされたプラグインはマーケットプレイスではなく
@skills-dir ソースを使用します。管理者は strictKnownMarketplaces でこのソースをブロックするか、管理設定の blockedMarketplaces に {"source": "skills-dir"} を追加することでブロックできます。ブロックされると、plugin init は書き込み前に失敗します。
例:
plugin install
利用可能なマーケットプレイスからプラグインをインストールします。<plugin>: プラグイン名または特定のマーケットプレイス用のplugin-name@marketplace-name
スコープはインストールされたプラグインが追加される設定ファイルを決定します。たとえば、
--scope project は .claude/settings.json の enabledPlugins に書き込み、プロジェクトリポジトリをクローンした全員がプラグインを利用できるようにします。
例:
plugin uninstall
インストール済みプラグインを削除します。<plugin>: プラグイン名またはplugin-name@marketplace-name
エイリアス:
remove、rm
デフォルトでは、最後に残っているスコープからアンインストールすると、プラグインの ${CLAUDE_PLUGIN_DATA} ディレクトリも削除されます。たとえば、新しいバージョンをテストした後に再インストールする場合は、--keep-data を使用して保持します。
plugin prune
インストール済みプラグインによって不要になった自動インストール プラグイン依存関係を削除します。Claude Code が別のプラグインのdependencies フィールドを満たすために取得した依存関係は削除されます。直接インストールしたプラグインは決して削除されません。
エイリアス:
autoremove
このコマンドは孤立した依存関係をリストアップし、削除する前に確認を求めます。プラグインを削除し、その依存関係をクリーンアップする場合は、1 ステップで claude plugin uninstall <plugin> --prune を実行します。
claude plugin prune には Claude Code v2.1.121 以降が必要です。plugin enable
無効なプラグインを有効にします。プラグインが dependencies を宣言している場合、Claude Code はそれらを同じスコープで推移的に有効にし、依存関係がインストールされていない場合はコマンドが失敗します。<plugin>: プラグイン名またはplugin-name@marketplace-name
plugin disable
プラグインをアンインストールせずに無効にします。別の有効なプラグインが ターゲットに依存している 場合は失敗します。エラーメッセージには、最初にすべての依存プラグインを無効にするチェーンコマンドが含まれます。<plugin>: プラグイン名またはplugin-name@marketplace-name
plugin update
プラグインを最新バージョンに更新します。<plugin>: プラグイン名またはplugin-name@marketplace-name
plugin list
インストール済みプラグインをバージョン、ソースマーケットプレイス、有効状態とともにリストします。
対話型セッション内では、
/plugin list は同じリストをインラインで出力します。対話型フォームは --enabled または --disabled を受け入れて、その状態のプラグインのみを表示し、ls を list の短縮形として使用できます。
plugin details
プラグインのコンポーネントインベントリと予想トークンコストを表示します。出力には、プラグインが提供するすべてのコンポーネントがリストアップされ、Skills、Agents、Hooks、MCP サーバー、LSP サーバーとしてグループ化され、各セッションに追加されるトークン数の推定値が表示されます。Skills グループにはskills/ と commands/ エントリの両方が含まれます。
<name>: プラグイン名またはplugin-name@marketplace-name
出力には、各コンポーネントの 2 つのコスト数値が表示されます:
- Always-on: スキルの説明、エージェントの説明、コマンド名など、プラグインのリスティングテキストによってすべてのセッションに追加されるトークン。コンポーネントが実行されるかどうかに関係なく追加されます。
- On-invoke: コンポーネントが実行されるときのコンポーネントのコスト。プラグイン全体ではなくコンポーネントごとに表示されます。これは、典型的なセッションではコンポーネントのサブセットのみを呼び出すためです。
count_tokens API を使用して計算されます。コンポーネントごとの数値は、その合計から比例的にスケーリングされます。API に到達できない場合、コマンドは文字ベースの推定値にフォールバックします。
plugin tag
現在のディレクトリ内のプラグインのリリース git タグを作成します。プラグインのフォルダ内から実行してください。プラグインリリースにタグを付けるを参照してください。デバッグと開発ツール
デバッグコマンド
claude --debug を使用してプラグイン読み込みの詳細を確認します:
これは以下を表示します:
- どのプラグインが読み込まれているか
- プラグインマニフェストのエラー
- Skill、agent、hook 登録
- MCP サーバー初期化
一般的な問題
エラーメッセージの例
マニフェスト検証エラー:Invalid JSON syntax: Unexpected token } in JSON at position 142: コンマの欠落、余分なコンマ、またはクォートされていない文字列を確認Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required: 必須フィールドが不足Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...: JSON 構文エラー
Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.: コマンドパスが存在するが有効なコマンドファイルが含まれていないPlugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.: marketplace.json のsourceパスが存在しないディレクトリを指しているPlugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.: 重複するコンポーネント定義を削除するか、marketplace エントリからstrict: falseを削除
Hook トラブルシューティング
Hook スクリプトが実行されない:- スクリプトが実行可能であることを確認:
chmod +x ./scripts/your-script.sh - shebang 行を確認: 最初の行は
#!/bin/bashまたは#!/usr/bin/env bashである必要があります - パスが
${CLAUDE_PLUGIN_ROOT}を使用していることを確認:"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh" - スクリプトを手動でテスト:
./scripts/your-script.sh
- イベント名が正しいことを確認(大文字小文字を区別):
PostToolUse、postToolUseではない - マッチャーパターンがツールと一致することを確認: ファイル操作の場合
"matcher": "Write|Edit" - hook タイプが有効であることを確認:
command、http、mcp_tool、prompt、またはagent
MCP サーバートラブルシューティング
サーバーが起動しない:- コマンドが存在し、実行可能であることを確認
- すべてのパスが
${CLAUDE_PLUGIN_ROOT}変数を使用していることを確認 - MCP サーバーログを確認:
claude --debugは初期化エラーを表示 - Claude Code の外部でサーバーを手動でテスト
- サーバーが
.mcp.jsonまたはplugin.jsonで正しく設定されていることを確認 - サーバーが MCP プロトコルを正しく実装していることを確認
- デバッグ出力で接続タイムアウトを確認
ディレクトリ構造の間違い
症状: プラグインは読み込まれるがコンポーネント(skills、agents、hooks)が不足している。 正しい構造: コンポーネントはプラグインルートにある必要があり、.claude-plugin/ 内ではありません。.claude-plugin/ には plugin.json のみが属します。
.claude-plugin/ 内にある場合は、プラグインルートに移動してください。
デバッグチェックリスト:
claude --debugを実行し、「loading plugin」メッセージを探す- 各コンポーネントディレクトリがデバッグ出力にリストされていることを確認
- プラグインファイルを読み取ることができるファイルパーミッションを確認
配布とバージョン管理リファレンス
バージョン管理
Claude Code はプラグインのバージョンをキャッシュキーとして使用し、更新が利用可能かどうかを判断します。/plugin update を実行するか自動更新が実行されると、Claude Code は現在のバージョンを計算し、既にインストールされているものと一致する場合は更新をスキップします。
バージョンは、設定されている最初のものから解決されます:
- プラグインの
plugin.jsonのversionフィールド marketplace.jsonのプラグインのマーケットプレイスエントリのversionフィールド- git でホストされているマーケットプレイスの
github、url、git-subdir、および相対パスソースのプラグインソースの git コミット SHA - npm ソースまたは git リポジトリ内にないローカルディレクトリの場合は
unknown
明示的なバージョンを使用する場合は、semantic versioning(
MAJOR.MINOR.PATCH)に従ってください:破壊的変更の場合は MAJOR をバンプし、新機能の場合は MINOR をバンプし、バグ修正の場合は PATCH をバンプしてください。CHANGELOG.md で変更を文書化してください。