~/.claude
を眺めていたらいつの間にか plugins
ディレクトリが生えていたのでよく観察したところ、プラグイン機能の実装が進んでいるようです。
すでに触れるようになっているので、概要や手順を紹介します。
概要
Claude Codeプラグインでは、gitリポジトリを介してスラッシュコマンド、サブエージェント、フック を配ることができます。
リポジトリを登録しておくと、Claude Code起動時に pull して最新の状態を同期して読み込んでくれる仕組みです。
現在もMCPサーバーのPromptとして外部からスラッシュコマンドを読み込めますが、サブエージェントやフックも読み込めるようになるのが新しいポイントですね。
プラグインの構造
Claude Code プラグインは次の構造になっています。プラグインレジストリ、プラグインリポジトリなどの呼び名は、説明の便宜上ぼくが勝手に命名しただけなので注意してください。
-
~/.claude/plugins/
-
config.json
: プラグインレジストリ -
repos/[owner]/[repo]/
: プラグインリポジトリ-
[plugin]/
: プラグイン
-
-
プラグインレジストリ
読み込む対象のプラグインリポジトリを登録するファイルです。ここに登録したリポジトリを走査してプラグインを読み込みます。
プラグインリポジトリ
プラグインを管理するgitリポジトリです。複数のプラグインを含むことができます。このリポジトリのpush, pullを通してプラグインを同期します。
プラグイン
プラグイン本体です。スラッシュコマンド、サブエージェント、フックを持ちます。
使い方
プラグインリポジトリの作成
まず適当なgitリポジトリを作成します。ここでは cc-demo-plugins
という名前にします。
この時点ではリポジトリの中身は空です。
プラグインの作成
リポジトリの中には複数のプラグインを配置できます。ここでは例として translation
というプラグインを作成しましょう。
まずリポジトリの中に translation
ディレクトリを作り、その直下に plugin.json
を作成します。
plugin.json
の中身はこれだけでよいです。
plugin.json
{
"name": "translation"
}
プラグインにコマンドを追加する
プラグインの実装として、入力を英語に変換する to-english
コマンドを追加してみます。コマンドの定義方法は既存のスラッシュコマンドと同様で、プラグイン直下の commands
ディレクトリに配置します。
to-english.md
---
description: Translate the text to English
argument-hint: [text]
---
Translate the following text to English:
$ARGUMENTS
ここではコマンドを追加しましたが、サブエージェントやフックも同様に agents
, hooks
ディレクトリで定義できます。
プラグインリポジトリをGitHubに乗せる
Claude Codeは自動的にプラグインリポジトリに対して git pull
を実行するため、リモートリポジトリの存在を前提とします。
そのためプラグインリポジトリをGitHubに乗せます。git pull
ができればよいので、自分だけで使う分にはプライベートリポジトリで問題ないです。
ここでは yukukotani/cc-demo-plugins
におきました。
プラグインリポジトリの配置
プラグインリポジトリを Claude Code 所定の ~/.claude/plugins/repos
に配置します。ここを直接いじって uncommited change があると git pull
できなくて読み込み失敗したりするので、ここではさっきまでいじっていたローカルリポジトリを持っていくというよりは、別でcloneしてしまうのがよいでしょう。
git clone https://github.com/yukukotani/cc-demo-plugins ~/.claude/plugins/repos/yukukotani/cc-demo-plugins
プラグインレジストリへの登録
~/.claude/plugins/config.json
に次のように書き込み、プラグインリポジトリをレジストリに登録します。
config.json
{
"repositories": {
"yukukotani/cc-demo-plugins": {
"enabled": true
}
}
}
プラグインの有効化
~/.claude/settings.json
に enabledPlugins
プロパティに次のように書き込み、プラグインを有効化します。"[owner]/[repo]": ["plugin"]
の構造です。
settings.json
{
...
"enabledPlugins": {
"yukukotani/cc-demo-plugins": ["translation"]
}
}
これで設定は完了です。
プラグインレジストリへの登録やプラグインの有効化は、今は直接書き込むしかないようですが、おそらく claude mcp
コマンドと似たような形で書き込めるようになる気がします。
プラグイン機能付きで実行
今のところ ENABLE_PLUGINS
環境変数でプラグイン機能を opt-in できるようです。次のように実行しましょう。
ENABLE_PLUGINS=true claude
先ほど追加したコマンドが、 /[plugin]:[command]
の形式で登録されていれば成功です。
なお、Claude Code を --debug
オプション付きで実行すると、プラグイン読み込みのログも確認できます。
[DEBUG] Auto-updating repository yukukotani/cc-demo-plugins...
[DEBUG] Loaded plugin: translation from yukukotani/cc-demo-plugins
[DEBUG] Found 1 plugins (1 enabled, 0 disabled) from 1 repositories
[DEBUG] Registered 0 hooks from 1 plugins
[DEBUG] Loaded 1 commands from plugin translation
[DEBUG] Total plugin commands loaded: 1
終わりに
Claude Codeの応用的な組織活用が進みそうですね。まだまだ破壊的変更もあるでしょうから、使ってみる場合は注意してください。
Views: 0