clawhub: prefix を使用してください。
要件
- Node 22.19+、Node 23.11+、または Node 24+ と、
npmやpnpmなどの package manager を使用してください。 - TypeScript ESM modules に慣れている必要があります。
- リポジトリ内の bundled plugin 作業では、リポジトリを clone して
pnpm installを実行してください。 source-checkout plugin 開発は pnpm のみです。OpenClaw は bundled plugins をextensions/*workspace packages から読み込むためです。
Plugin の形を選ぶ
Channel plugin
OpenClaw をメッセージング platform に接続します。
Provider plugin
model、media、search、fetch、speech、または realtime provider を追加します。
CLI backend plugin
OpenClaw model fallback を通じて local AI CLI を実行します。
Tool plugin
agent tools を登録します。
クイックスタート
必須の agent tool を 1 つ登録して、最小構成の tool plugin を作成します。これは 実用的な Plugin 形態として最短であり、package、manifest、entry point、 local proof を示します。Create package metadata
contracts.tools に含める必要があります。これにより、OpenClaw は
すべての Plugin runtime を eagerly loading せずに ownership を discovery できます。
activation.onStartup は意図的に設定してください。この例は Gateway startup 時に起動します。Host-trusted plugin surfaces も manifest-gated であり、インストール済み Plugins では明示的な
enablement が必要です。インストール済み Plugin が
api.registerAgentToolResultMiddleware(...) を登録する場合は、各 target runtime を
contracts.agentToolResultMiddleware で宣言してください。api.registerTrustedToolPolicy(...) を登録する場合は、
各 policy id を contracts.trustedToolPolicies で宣言してください。これらの宣言により、install-time
inspection と runtime registration の整合性が保たれます。すべての manifest field については、Plugin manifest を参照してください。Register the tool
index.ts
definePluginEntry を使用してください。Channel plugins は
defineChannelPluginEntry を使用します。Test the runtime
インストール済みまたは外部 Plugin では、読み込まれた runtime を inspect します。Plugin が CLI command を登録する場合は、その command も実行してください。たとえば、
demo command には
openclaw demo-plugin ping のような execution proof が必要です。このリポジトリ内の bundled plugin では、OpenClaw は extensions/* workspace から
source-checkout plugin packages を discovery します。最も近い targeted
test を実行してください。Test the package install
package-ready plugin を公開する前に、ユーザーが利用するものと同じ install 形態をテストします。
まず build step を追加し、
openclaw.extensions などの runtime entries が
./dist/index.js のような build 済み JavaScript を指すようにし、
npm pack にその dist/ output が含まれることを確認します。TypeScript source entries は
source checkouts と local development paths 専用です。次に Plugin を pack し、npm-pack: で tarball をインストールします。npm-pack: は OpenClaw の managed per-plugin npm project を使用するため、
source checkout testing では隠れがちな runtime dependency の誤りを検出できます。これは
package と dependency の形を証明するものであり、catalog-linked official trust を証明するものではありません。
Runtime imports は dependencies または optionalDependencies に含める必要があります。
devDependencies だけに残された dependencies は、managed runtime project にはインストールされません。official または privileged plugin behavior の最終 proof として raw archive/path install を使用しないでください。
Raw sources は local debugging には便利ですが、
npm または ClawHub installs と同じ dependency path を証明しません。
Plugin が trusted official plugin status に依存する場合は、
catalog-backed official install または official trust を記録する published package path を通じた 2 つ目の proof を追加してください。
install-root と dependency ownership の詳細については、
Plugin dependency resolution を参照してください。tools の登録
Tools は required または optional にできます。Required tools は、 Plugin が enabled のとき常に利用できます。Optional tools は user opt-in が必要です。api.registerTool(...) で登録されたすべての tool は、Plugin manifest でも宣言する必要があります。
tools.allow で opt in します。
parameters のない tool descriptors を含む malformed
registrations も skipped され、同じ方法で報告されます。登録済み tools は、policy と allowlist checks を通過した後に
model が呼び出せる typed functions です。
Tool factories は runtime-supplied context object を受け取ります。tool が現在の
turn の active model を log、display、または adapt する必要がある場合は ctx.activeModel を使用してください。
この object には provider、modelId、modelRef が含まれることがあります。これは
informational runtime metadata として扱い、local
operator、インストール済み Plugin code、または変更された OpenClaw runtime に対する security boundary として扱わないでください。
Sensitive local tools では引き続き明示的な Plugin または operator opt-in を要求し、
active-model metadata が欠落しているか不適切な場合は fail closed するべきです。
manifest は ownership と discovery を宣言します。execution は引き続き live
registered tool implementation を呼び出します。toolMetadata.<tool>.optional: true を
api.registerTool(..., { optional: true }) と揃えておくことで、OpenClaw はその Plugin runtime を
tool が明示的に allowlisted されるまで読み込まずに済みます。
Import conventions
focused SDK subpaths から import してください。api.ts や
runtime-api.ts などの local barrel files を使用してください。自分の Plugin を
SDK path 経由で import しないでください。Provider-specific helpers は、その seam が本当に generic でない限り、
provider package 内に留めてください。
Custom Gateway RPC methods は advanced entry point です。これらは
plugin-specific prefix に置いてください。config.*、
exec.approvals.*、operator.admin.*、wizard.*、update.* などの core admin namespaces は reserved のままで、
operator.admin に解決されます。
openclaw/plugin-sdk/gateway-method-runtime bridge は、
contracts.gatewayMethodDispatch: ["authenticated-request"] を宣言する plugin HTTP
routes 専用に reserved です。
完全な import map については、Plugin SDK overview を参照してください。
提出前 checklist
package.json に正しい
openclaw metadata があるopenclaw.plugin.json manifest が存在し、有効である
Entry point が
defineChannelPluginEntry または definePluginEntry を使用しているすべての imports が focused
plugin-sdk/<subpath> paths を使用しているInternal imports が SDK self-imports ではなく local modules を使用している
Tests が通る(
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check が通る(in-repo plugins)beta releases に対してテストする
- openclaw/openclaw の GitHub リリースタグを監視し、
Watch>Releasesで購読します。ベータタグはv2026.3.N-beta.1のような形式です。リリース告知を受け取るには、OpenClaw の公式 X アカウント @openclaw の通知を有効にすることもできます。 - ベータタグが表示されたら、すぐにそのタグに対して自分の Plugin をテストします。安定版までの期間は通常、数時間しかありません。
- テスト後、自分の Plugin のスレッドで、
plugin-forumDiscord チャネルにall goodまたは壊れた内容を投稿します。まだスレッドがない場合は作成します。 - 何かが壊れた場合は、
Beta blocker: <plugin-name> - <summary>というタイトルの Issue を開くか更新し、beta-blockerラベルを適用します。その Issue リンクをスレッドに貼ります。 fix(<plugin-id>): beta blocker - <summary>というタイトルでmainへの PR を開き、PR と Discord スレッドの両方で Issue をリンクします。コントリビューターは PR にラベルを付けられないため、タイトルがメンテナーと自動化に対する PR 側のシグナルになります。PR があるブロッカーはマージされますが、PR がないブロッカーはそのまま出荷される可能性があります。メンテナーはベータテスト中にこれらのスレッドを監視します。- 無言はグリーンを意味します。この期間を逃した場合、修正は次のサイクルに入る可能性が高くなります。
次のステップ
Channel Plugins
メッセージングチャネル Plugin を構築する
Provider Plugins
モデルプロバイダー Plugin を構築する
CLI Backend Plugins
ローカル AI CLI バックエンドを登録する
SDK Overview
インポートマップと登録 API のリファレンス
Runtime Helpers
api.runtime 経由の TTS、検索、サブエージェントTesting
テストユーティリティとパターン
Plugin Manifest
完全なマニフェストスキーマのリファレンス