Documentation Index
Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
Use this file to discover all available pages before exploring further.
options.plugins を使用して、ローカルプラグインディレクトリを現在のセッションに読み込みます。SDK は各ローカルプラグインを --plugin-dir <path> 起動パラメータに変換します。プラグインに含まれる commands、agents、skills、MCP servers はすべて今回のセッションの機能発見の対象になります。
ローカルプラグインの読み込み
--plugin-dir が出力されます。
💡query()は使い切りのメッセージストリームのため、ハンドシェイク後に init レスポンスを取得することはできません。プラグインが提供する command / agent / skill を読み取るには、QoderSDKClientを使用し、connect()の後にget_server_info()を呼び出すか、メッセージストリーム内でSystemMessage(subtype='init')を捕捉して自分でmessage.dataを読み取ってください。
プラグインディレクトリレイアウト
ローカルプラグインは通常以下を含むことができます。.qoder-plugin/plugin.json はプラグイン名、バージョン、説明を宣言するために使用します。その他のディレクトリはファイルタイプに応じて CLI が自動的にスキャンします。
SDK はパスが存在するか / 妥当かを検証しません。
- 存在しない
--plugin-dirパスは SDK モードではサイレントに無視され、セッションは正常に初期化されます。 - 破損したフロントマター /
.mcp.jsonは init をブロックしません。破損したコマンドは init レスポンスに表示されません。 - プラグインの読み込み失敗を明示的に診断したい場合、現状は
reload_plugins().error_countでフォールバックするしかありません。
プラグインが提供する slash commands
プラグイン内のcommands/*.md は get_server_info()['commands'] に表示され、名前は <plugin>:<cmd> の修飾名形式で現れます。
プラグインが提供する agents
プラグイン内のagents/*.md は get_server_info()['agents'] に表示されます。SDK は同期的な便利メソッドも提供しており、このリストを直接取得できます。
プラグインが提供する skills
プラグイン内のskills/<name>/SKILL.md はプラグイン修飾名(plugin:skill)で登録されます。メインセッションから呼び出せるようにするには、options.skills で明示的にリストする必要があります。Skills ドキュメント を参照してください。
プラグインが提供する MCP servers
プラグイン内の.mcp.json は CLI によって起動され、MCP 状態に組み込まれます。get_mcp_status() で読み取ることができます。
インストール済み同名プラグインの一時的な上書き
options.plugins で読み込まれたローカルプラグインはセッションスコープです。現在のセッション内で既にインストールされているプラグインと同名の場合、ローカルプラグインが今回のセッションの機能発見で優先されます。この機能はプラグインの開発、デバッグ、段階的検証に適しています。
実行中のプラグインリロード
プラグインディレクトリに変更があった場合、同じQoderSDKClient セッション内で reload_plugins() を呼び出すことで、CLI にプラグインリソースを再スキャンさせることができます。
- プラグイン開発時に
commands/*.mdを追加・削除した後のリフレッシュ。 - ローカルプラグインのインストールまたは更新後、ホストアプリケーションを再起動せずに反映。
- ホスト UI でリロード後の commands、agents、plugins、MCP 状態を表示する必要がある場合。
注意:reload_plugins()はQoderSDKClient(streaming)モードでのみ意味があります。使い切りのquery()ストリームにはランタイム制御チャンネルがありません。
Options クイックリファレンス
| フィールド | 型 | 説明 |
|---|---|---|
plugins | list[SdkPluginConfig] | ローカルプラグインディレクトリを読み込み。現在は {"type": "local", "path": ...} がよく使用されます |
settings | str | Path | dict[str, Any] | None | CLI に渡す settings。enabledPlugins、pluginConfigs などのフィールドを含むことができます |
setting_sources | list[Literal["user", "project", "local"]] | None | CLI がどの settings ソースを読み込むかを制御 |
settings.enabledPlugins、settings.pluginConfigs、settings.allowedChannelPlugins、settings.strictPluginOnlyCustomization などのエンタープライズポリシーフィールドは SDK 型として透過的に渡されますが、実際のパスは具体的な CLI バージョンに依存します。使用前にご自身の環境で検証してください。
戻り値リファレンス
client.get_server_info() と SystemMessage(subtype='init').data
client.reload_plugins()
ReloadPluginsResponse を返します。
ベストプラクティス
- ホスト UI ではまず
get_server_info()を読み取る:commands、agents、skills、plugins を表示するための安定したエントリポイントです。使い切りのquery()でこのデータを取得したい場合はQoderSDKClientに切り替えるか、メッセージストリーム内でSystemMessage(subtype='init').dataを読み取ってください。 - プラグイン開発時は
options.pluginsを使用:現在のセッションにのみ影響し、ユーザーのグローバルインストール状態を変更する必要がありません。 - リロード前にユーザープロンプトを準備:
reload_plugins()は CLI にディスクの再スキャンをトリガーし、利用可能なリソースリストが一時的に変わる可能性があるため、UI も同期的に更新することを推奨します。 - エラー診断には
error_countを確認:リロード後にerror_count > 0の場合はプラグインリソースの読み込みに失敗があることを示しており、そのソースをユーザーに表示すべきです。
現在の制限事項
- 一部の qodercli バージョンでは、ローカルプラグインの commands、agents、MCP は初期化結果に正常に表示されますが、プラグイン skills が
get_server_info()['skills']に表示されない場合があります。これは CLI 側の発見パスの問題です。 - 現在の qodercli 実装では、存在しない
--plugin-dirパスは SDK モードでサイレントに無視されます。プラグイン読み込み失敗を明示的に診断する必要がある場合、現在はreload_plugins().error_countでフォールバックするしかありません。 reload_plugins()はQoderSDKClientが公開するランタイム制御 API です。現在の CLI バージョンがthis._plugins関連の内部エラーを返す場合は、修正済みの qodercli にアップグレードする必要があります。settings.strictPluginOnlyCustomization、settings.allowedChannelPlugins、settings.pluginConfigs.<pid>.optionsのテンプレート置換はすべて dict として透過的に渡されるフィールドであり、SDK は解析しません。実際に効くかどうかは CLI バージョンに完全に依存します。