メインコンテンツへスキップ
このガイドでは、Droidのプラグイン作成方法を説明します。プラグインは、スキル、コマンド、ツールを共有可能なパッケージにまとめ、プロジェクトやチーム間で利用できるものです。

クイックスタート

1

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

2

マニフェストを作成

my-plugin/.factory-plugin/plugin.jsonを作成します:
3

コマンドを追加

my-plugin/commands/hello.mdを作成します:
4

プラグインをテスト

テストのためローカルディレクトリからインストールします:
次に/helloを実行してテストします。

プラグインマニフェスト

.factory-plugin/plugin.jsonにあるマニフェストファイルは、プラグインのメタデータを定義します:

必須フィールド

オプションフィールド

スキルの追加

スキルはモデルによって呼び出される機能です。skills/ディレクトリに作成してください:

スキル形式

スキルのフロントマター

コマンドの追加

コマンドはスラッシュ記法でユーザーによって呼び出されます。commands/ディレクトリに作成してください:

コマンド形式

commands/review-pr.mdにあるコマンドは/review-prになります。

コマンド引数

ユーザー入力を取得するには$ARGUMENTSを使用します:
使用方法:/greet Alice

エージェントの追加

droids/ディレクトリに特殊化されたサブエージェントを定義します:

エージェント形式

完全なエージェント設定オプションについてはCustom Droidsを参照してください。

フックの追加

hooks/hooks.jsonでライフサイクルフックを定義します:

フック設定

環境変数

プラグインフックは/hooks importではインポートできません。プラグインのルートパスを解決できるインストール済みプラグイン内でのみ機能します。

MCPサーバーの追加

プラグインルートのmcp.jsonでMCPサーバーを設定します:

プラグインのテスト

ローカルテスト

開発中のテストには、ローカルディレクトリからインストールします:

検証チェックリスト

プラグインを共有する前に:
  • マニフェストに必須フィールドがある(namedescriptionversion
  • すべてのスキルのフロントマターにnamedescriptionがある
  • コマンドが引数ありでもなしでも動作する
  • ハードコードされたパスや機械固有の設定がない
  • READMEですべてのコマンドと機能が文書化されている

プラグインの配布

マーケットプレースの作成

マーケットプレースは、利用可能なプラグインをリストするマニフェストを含むGitリポジトリです:

マーケットプレースマニフェスト

.factory-plugin/marketplace.jsonを作成します:

プラグインソース

各プラグインエントリの source フィールドは、Droid にプラグインの取得元を伝えます。既定の形式である "./plugin-one" のような相対パス文字列は、マーケットプレースリポジトリ内のディレクトリを指します。別の場所にあるプラグインには、source オブジェクトを使用します。 固定方法はソースタイプによって異なります。Git ベースのソース(githuburlgit-subdir)は、ref(ブランチまたはタグ)または sha によりプラグインごとに固定されます。相対パスのプラグインは、それらが含まれているマーケットプレースソースを固定することで固定されます。npm プラグインは version フィールドで固定され、npm のバージョン解決に従います。

npm パッケージ

すでにプライベートレジストリ(Artifactory、CodeArtifact、GitHub Packages、Verdaccio など)へ配布しており、その経路を Droid プラグインにも再利用したい場合は、プラグインを npm パッケージとして配布します。npm レジストリ上の公開パッケージも同様に動作します。npm ソースでは、固定と更新は version フィールドによる npm のバージョン解決に従います。バージョン管理 にある Git コミットハッシュの指針は、Git ベースのソースにのみ適用されます。 npm がインストールされ、PATH から利用できる必要があります。利用できない場合、CLI は明確なエラーを表示します。
特定のバージョンまたは範囲に固定するには:
プライベートレジストリからインストールするには:
トークンが必要なプライベートレジストリ(たとえば JFrog Artifactory、AWS CodeArtifact、GitHub Packages)で認証するには:
ユーザーは Droid を起動する前に、指定された環境変数を設定しておく必要があります:
トークンをソース管理にコミットしたり、マーケットプレース JSON に貼り付けたりしないでください。authTokenEnvVar フィールドには、シークレットそのものではなく環境変数名だけが保存されます。
レイアウト要件。 公開パッケージのルートにはプラグインマニフェストが含まれている必要があります。Droid ネイティブのレイアウト(.factory-plugin/plugin.jsondroids/mcp.json)と Claude Code のレイアウト(.claude-plugin/plugin.jsonagents/.mcp.json)の両方を受け付けます。Claude Code レイアウトは、パッケージがプラグインキャッシュにコピーされる際に Droid 形式へ変換されます。 一般的な公開パッケージの構成は次のとおりです:
プラグイン本体だけが配布されるよう、package.jsonfiles フィールドを設定します:
ハードニング。 Droid はプラグインごとの一時ディレクトリで npm install--ignore-scripts--no-save--no-audit--no-fund とともに実行します。ライフサイクルスクリプト(postinstallpreinstall など)は実行されず、グローバルな npm 設定も参照・変更されません。ライフサイクルスクリプトはスキップされるため、postinstall のビルドステップに依存するパッケージでは利用可能な内容が配布されません。事前ビルド済み成果物を公開し(npm publish の前にビルドを実行し)、files の許可リスト配下の内容をそのまま利用できる状態にしてください。
npm: は有効なマーケットプレースソースではありません。Droid が npm を受け付けるのは、マーケットプレースの marketplace.json 内にあるプラグインごとのソースとしてのみです。完全なマーケットプレースリポジトリを用意せずに、npm で公開した単一プラグインをチームに配布したい場合は、最小のラッパーマーケットプレースを公開してください(以下を参照)。
単一の npm プラグイン向けラッパーマーケットプレース
専用のマーケットプレースリポジトリなしで npm 公開済みプラグインを 1 つ配布するには、任意のフォルダに小さな marketplace.json をコミットします。フォルダ名がそのままマーケットプレース名になります。
チームメイトは、他のローカルマーケットプレースと同様に追加できます:

バージョン管理

ドキュメント目的でプラグインマニフェストではセマンティックバージョニングを使用します:
  • メジャー(1.0.0 → 2.0.0):破壊的変更
  • マイナー(1.0.0 → 1.1.0):新機能、後方互換性あり
  • パッチ(1.0.0 → 1.0.1):バグ修正
Git ベースのプラグインソース(相対パス、githuburlgit-subdir)では、Droid はセマンティックバージョンではなく Git コミットハッシュでプラグインバージョンを追跡します。デフォルトでは、プラグインを更新するとマーケットプレースから最新のコミットを取得します。プラグインを特定のバージョンに固定するには、マーケットプレースソースに ref(ブランチまたはタグ)または sha(フルコミット SHA)を設定して、プラグインが含まれるマーケットプレースを固定してください。詳細はマーケットプレースをrefまたはコミットに固定するを参照してください。npm プラグインソースでは、代わりにプラグインごとの version フィールドに従って固定されます。

Claude Code互換性

DroidはClaude Codeプラグインと完全に互換性があります。Claude Codeプラグインを見つけた場合、直接インストールでき、Droidが自動的に形式を変換します。

ベストプラクティス

プラグインは単一の目的またはワークフローを中心に設計します。すべてを行う巨大なプラグインより、複数の小さなプラグインを優先してください。
READMEには以下を含めます:
  • プラグインの内容
  • インストール手順
  • 利用可能なすべてのコマンドと使い方
  • 設定オプション
更新がワークフローを壊す可能性があるタイミングをユーザーが把握できるよう、semver規約に従います。
該当する場合は、プラグインがmacOS、Linux、Windowsで動作することを確認します。移植性のあるシェルコマンドを使用し、プラットフォーム固有のパスを避けます。
スクリプトはユーザーをブロックせず、適切に失敗するべきです。エラーはログに記録し、セッションをクラッシュさせないでください。
明示的な同意なしにテレメトリを収集したりデータを送信したりしないでください。プラグインが行うネットワークリクエストは文書化してください。

例:完全なプラグイン

コードレビュープラグインの完全な例です:
.factory-plugin/plugin.json:
commands/review.md:
skills/review-patterns/SKILL.md:
droids/reviewer.md:

次のステップ

プラグイン概要

プラグインのインストールと管理について学びます。

スキル

強力なスキルの作成を詳しく学びます。

カスタムコマンド

ユーザー起動のスラッシュコマンドを作成します。

カスタムDroid

プラグイン用の専門サブエージェントを作成します。