このガイドでは、Droidのプラグイン作成方法を説明します。プラグインは、スキル、コマンド、ツールを共有可能なパッケージにまとめ、プロジェクトやチーム間で利用できるものです。
クイックスタート
プラグインディレクトリを作成
mkdir -p my-plugin/.factory-plugin
マニフェストを作成
my-plugin/.factory-plugin/plugin.jsonを作成します:{
"name" : "my-plugin" ,
"description" : "A helpful plugin description" ,
"version" : "1.0.0"
}
コマンドを追加
my-plugin/commands/hello.mdを作成します:---
description : Greet the user with a friendly message
---
Greet the user warmly and ask how you can help them today.
プラグインをテスト
テストのためローカルディレクトリからインストールします: droid plugin marketplace add ./my-plugin
droid plugin install my-plugin@my-plugin
次に/helloを実行してテストします。
プラグインマニフェスト
.factory-plugin/plugin.jsonにあるマニフェストファイルは、プラグインのメタデータを定義します:
{
"name" : "my-plugin" ,
"description" : "What this plugin does" ,
"version" : "1.0.0" ,
"author" : {
"name" : "Your Name" ,
"email" : "you@example.com"
},
"homepage" : "https://github.com/you/my-plugin" ,
"repository" : "https://github.com/you/my-plugin" ,
"license" : "MIT"
}
必須フィールド
フィールド 説明 name一意の識別子。小文字、数字、ハイフンを使用。 descriptionプラグインマネージャーに表示される短い説明。 versionセマンティックバージョン(例:1.0.0)。
オプションフィールド
フィールド 説明 authornameと任意のemailを含むオブジェクト。homepageプラグインドキュメントのURL。 repositoryGitリポジトリのURL。 licenseライセンス識別子(例:MIT、Apache-2.0)。
スキルの追加
スキルはモデルによって呼び出される機能です。skills/ディレクトリに作成してください:
my-plugin/
└── skills/
└── code-review/
└── SKILL.md
スキル形式
---
name : code-review
description : ベストプラクティスと潜在的な問題についてコードをレビューする。コードレビュー、PR確認、コード品質分析で使用します。
---
コードをレビューするときは、以下を確認します:
1. コードの整理と構造
2. エラーハンドリング
3. セキュリティ上の懸念
4. テストカバレッジ
行参照付きで具体的かつ実行可能なフィードバックを提供します。
スキルのフロントマター
フィールド 必須 説明 nameはい スキルの一意識別子 descriptionはい このスキルをいつ使用するか(モデルがいつ呼び出すかを判断するのに役立つ) disable-model-invocationいいえ ユーザー専用にするにはtrueを設定 allowed-toolsいいえ スキルが使用できるツールを制限
コマンドの追加
コマンドはスラッシュ記法でユーザーによって呼び出されます。commands/ディレクトリに作成してください:
my-plugin/
└── commands/
└── review-pr.md
コマンド形式
---
description : 現在のPRに問題がないかレビューする
disable-model-invocation : true
---
# PRレビューコマンド
現在のプルリクエストをレビューします。以下を確認します:
1. コードの正確性とロジックエラー
2. テストカバレッジ
3. ドキュメント更新
4. 破壊的変更
ユーザーが引数を指定した場合: $ARGUMENTS
引数を使用してレビュー対象を特定の領域に絞ります。
commands/review-pr.mdにあるコマンドは/review-prになります。
コマンド引数
ユーザー入力を取得するには$ARGUMENTSを使用します:
---
description : Greet a user by name
---
Greet the user named "$ARGUMENTS" warmly.
使用方法:/greet Alice
エージェントの追加
droids/ディレクトリに特殊化されたサブエージェントを定義します:
my-plugin/
└── droids/
└── security-reviewer.md
エージェント形式
---
name : security-reviewer
description : Reviews code for security vulnerabilities
model : inherit
tools : [ "Read" , "Grep" , "Glob" ]
---
You are a security expert. Review the code for:
1. Injection vulnerabilities (SQL, command, XSS)
2. Authentication/authorization issues
3. Sensitive data exposure
4. Insecure cryptography
5. Security misconfigurations
Report findings with severity levels and remediation steps.
完全なエージェント設定オプションについてはCustom Droids を参照してください。
フックの追加
hooks/hooks.jsonでライフサイクルフックを定義します:
my-plugin/
└── hooks/
├── hooks.json
└── format-check.sh
フック設定
{
"PostToolUse" : [
{
"matcher" : "Create|Edit|ApplyPatch" ,
"hooks" : [
{
"type" : "command" ,
"command" : "${DROID_PLUGIN_ROOT}/hooks/format-check.sh" ,
"timeout" : 30
}
]
}
]
}
環境変数
変数 説明 ${DROID_PLUGIN_ROOT}プラグインディレクトリへの絶対パス ${CLAUDE_PLUGIN_ROOT}${DROID_PLUGIN_ROOT}のエイリアス(Claude Code互換性)
プラグインフックは/hooks importではインポートできません。プラグインのルートパスを解決できるインストール済みプラグイン内でのみ機能します。
MCPサーバーの追加
プラグインルートのmcp.jsonでMCPサーバーを設定します:
{
"mcpServers" : {
"my-api" : {
"command" : "npx" ,
"args" : [ "-y" , "@example/mcp-server" ],
"env" : {
"API_KEY" : "${MY_API_KEY}"
}
}
}
}
プラグインのテスト
ローカルテスト
開発中のテストには、ローカルディレクトリからインストールします:
droid plugin marketplace add ./my-plugin
droid plugin install my-plugin@my-plugin
検証チェックリスト
プラグインを共有する前に:
プラグインの配布
マーケットプレースの作成
マーケットプレースは、利用可能なプラグインをリストするマニフェストを含むGitリポジトリです:
my-marketplace/
├── .factory-plugin/
│ └── marketplace.json
├── plugin-one/
│ └── .factory-plugin/
│ └── plugin.json
└── plugin-two/
└── .factory-plugin/
└── plugin.json
マーケットプレースマニフェスト
.factory-plugin/marketplace.jsonを作成します:
{
"name" : "my-marketplace" ,
"description" : "A collection of useful plugins" ,
"owner" : {
"name" : "Your Name"
},
"plugins" : [
{
"name" : "plugin-one" ,
"description" : "Description of plugin one" ,
"source" : "./plugin-one"
},
{
"name" : "plugin-two" ,
"description" : "Description of plugin two" ,
"source" : "./plugin-two"
}
]
}
フィールド 必須 説明 nameはい マーケットプレース識別子 descriptionいいえ マーケットプレースを閲覧時に表示 ownerいいえ 連絡先情報 plugins[].nameはい プラグイン識別子 plugins[].sourceはい プラグインディレクトリへの相対パス plugins[].descriptionいいえ プラグインブラウザに表示 plugins[].categoryいいえ プラグインを整理するため
バージョン管理
ドキュメント目的でプラグインマニフェストではセマンティックバージョニングを使用します:
メジャー (1.0.0 → 2.0.0):破壊的変更
マイナー (1.0.0 → 1.1.0):新機能、後方互換性あり
パッチ (1.0.0 → 1.0.1):バグ修正
DroidはプラグインバージョンをセマンティックバージョンではなくGitコミットハッシュで追跡します。ユーザーがプラグインを更新すると、常にマーケットプレイスの最新コミットを取得します。バージョン固定は現在サポートされていません。
Claude Code互換性
DroidはClaude Codeプラグインと完全に互換性があります。Claude Codeプラグインを見つけた場合、直接インストールでき、Droidが自動的に形式を変換します。
ベストプラクティス
プラグインは単一の目的またはワークフローを中心に設計します。すべてを行う巨大なプラグインより、複数の小さなプラグインを優先してください。
READMEには以下を含めます:
プラグインの内容
インストール手順
利用可能なすべてのコマンドと使い方
設定オプション
例
更新がワークフローを壊す可能性があるタイミングをユーザーが把握できるよう、semver規約に従います。
該当する場合は、プラグインがmacOS、Linux、Windowsで動作することを確認します。移植性のあるシェルコマンドを使用し、プラットフォーム固有のパスを避けます。
スクリプトはユーザーをブロックせず、適切に失敗するべきです。エラーはログに記録し、セッションをクラッシュさせないでください。
明示的な同意なしにテレメトリを収集したりデータを送信したりしないでください。プラグインが行うネットワークリクエストは文書化してください。
例:完全なプラグイン
コードレビュープラグインの完全な例です:
code-review-plugin/
├── .factory-plugin/
│ └── plugin.json
├── commands/
│ └── review.md
├── skills/
│ └── review-patterns/
│ └── SKILL.md
├── droids/
│ └── reviewer.md
└── README.md
.factory-plugin/plugin.json:
{
"name" : "code-review" ,
"description" : "Automated code review with multiple specialized reviewers" ,
"version" : "1.0.0" ,
"author" : { "name" : "Your Team" }
}
commands/review.md:
---
description : Run comprehensive code review on staged changes
---
Review the staged git changes using the review-patterns skill.
Focus on: $ARGUMENTS
If no focus area specified, perform a general review.
skills/review-patterns/SKILL.md:
---
name : review-patterns
description : Use when reviewing code to check for common issues and best practices.
---
以下についてコードを確認します:
- ロジックエラーとエッジケース
- エラーハンドリングの完全性
- セキュリティ脆弱性
- パフォーマンス上の懸念
- テストカバレッジの不足
droids/reviewer.md:
---
name : reviewer
description : 専門のコードレビュアーサブエージェント
model : inherit
tools : read-only
---
あなたはシニアコードレビュアーです。提供されたコードを分析して報告します:
Summary: <1行の評価>
Issues:
- <重大度> <説明>
Suggestions:
- <改善案>
次のステップ
プラグイン概要 プラグインのインストールと管理について学びます。
カスタムコマンド ユーザー起動のスラッシュコマンドを作成します。
カスタムDroid プラグイン用の専門サブエージェントを作成します。