メインコンテンツへスキップ

Plugin Manifest(openclaw.plugin.json)

このページは、ネイティブなOpenClaw plugin manifest のみを対象としています。 互換bundleレイアウトについては、Plugin bundles を参照してください。 互換bundle形式では、別のmanifest filesを使います。
  • Codex bundle: .codex-plugin/plugin.json
  • Claude bundle: .claude-plugin/plugin.json または、manifestを持たない デフォルトのClaude componentレイアウト
  • Cursor bundle: .cursor-plugin/plugin.json
OpenClawはそれらのbundleレイアウトも自動検出しますが、このページで説明する openclaw.plugin.json schemaに対しては検証しません。 互換bundleについて、OpenClawは現在、bundle metadataに加えて、宣言された skill roots、Claude command roots、Claude bundleの settings.json defaults、 Claude bundleのLSP defaults、および、そのレイアウトがOpenClaw runtimeの期待に一致する場合に サポートされるhook packsを読み取ります。 すべてのネイティブOpenClaw pluginは、plugin rootopenclaw.plugin.json fileを必ず含めなければなりません。OpenClawはこのmanifestを使って、 plugin codeを実行せずに設定を検証します。manifestが欠けている、または無効な場合は plugin errorとして扱われ、config validationをブロックします。 plugin system全体のガイドは Plugins を参照してください。 ネイティブcapability modelと現在の外部互換ガイダンスについては: Capability model

このファイルの役割

openclaw.plugin.json は、plugin codeを読み込む前にOpenClawが読むmetadataです。 用途:
  • plugin identity
  • config validation
  • plugin runtimeを起動しなくても利用できるauthおよびonboarding metadata
  • plugin runtimeが読み込まれる前に解決されるべきaliasとauto-enable metadata
  • plugin runtimeが読み込まれる前にpluginを自動有効化すべき shorthand model-family ownership metadata
  • bundled compat wiringおよびcontract coverageに使われる静的capability ownership snapshot
  • runtimeを読み込まずにcatalogおよびvalidation surfacesへマージされるべきchannel固有config metadata
  • config UI hints
用途ではないもの:
  • runtime behaviorの登録
  • code entrypointsの宣言
  • npm install metadata
それらはplugin codeと package.json に属します。

最小例

{
  "id": "voice-call",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {}
  }
}

リッチな例

{
  "id": "openrouter",
  "name": "OpenRouter",
  "description": "OpenRouter provider plugin",
  "version": "1.0.0",
  "providers": ["openrouter"],
  "modelSupport": {
    "modelPrefixes": ["router-"]
  },
  "cliBackends": ["openrouter-cli"],
  "providerAuthEnvVars": {
    "openrouter": ["OPENROUTER_API_KEY"]
  },
  "providerAuthChoices": [
    {
      "provider": "openrouter",
      "method": "api-key",
      "choiceId": "openrouter-api-key",
      "choiceLabel": "OpenRouter API key",
      "groupId": "openrouter",
      "groupLabel": "OpenRouter",
      "optionKey": "openrouterApiKey",
      "cliFlag": "--openrouter-api-key",
      "cliOption": "--openrouter-api-key <key>",
      "cliDescription": "OpenRouter API key",
      "onboardingScopes": ["text-inference"]
    }
  ],
  "uiHints": {
    "apiKey": {
      "label": "API key",
      "placeholder": "sk-or-v1-...",
      "sensitive": true
    }
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "apiKey": {
        "type": "string"
      }
    }
  }
}

トップレベルフィールドリファレンス

FieldRequiredType意味
idYesstring正規のplugin idです。これは plugins.entries.<id> で使われるidです。
configSchemaYesobjectこのpluginのconfig用インラインJSON Schemaです。
enabledByDefaultNotruebundled pluginをデフォルト有効としてマークします。デフォルトで無効のままにするには、省略するか、true 以外の任意の値を設定します。
legacyPluginIdsNostring[]この正規plugin idへ正規化されるlegacy idsです。
autoEnableWhenConfiguredProvidersNostring[]auth、config、またはmodel refsで言及されたときに、このpluginを自動有効化すべきprovider idsです。
kindNo"memory" | "context-engine"plugins.slots.* で使われる排他的plugin kindを宣言します。
channelsNostring[]このpluginが所有するchannel idsです。discoveryとconfig validationに使われます。
providersNostring[]このpluginが所有するprovider idsです。
modelSupportNoobjectplugin runtime前にpluginを自動読み込みするために使われる、manifest所有のshorthand model-family metadataです。
cliBackendsNostring[]このpluginが所有するCLI inference backend idsです。明示的なconfig refsからの起動時自動有効化に使われます。
providerAuthEnvVarsNoRecord<string, string[]>plugin codeを読み込まずにOpenClawが調べられる、軽量なprovider-auth env metadataです。
providerAuthChoicesNoobject[]onboarding picker、preferred-provider解決、単純なCLI flag配線のための軽量auth-choice metadataです。
contractsNoobjectspeech、realtime transcription、realtime voice、media-understanding、image-generation、video-generation、web-fetch、web search、およびtool ownership用の静的bundled capability snapshotです。
channelConfigsNoRecord<string, object>runtime前にdiscoveryとvalidation surfacesへマージされる、manifest所有のchannel config metadataです。
skillsNostring[]plugin rootからの相対パスで指定する、読み込むskill directoriesです。
nameNostring人が読めるplugin名です。
descriptionNostringplugin surfacesに表示される短い要約です。
versionNostring情報用のplugin versionです。
uiHintsNoRecord<string, object>config fields向けのUI labels、placeholders、sensitivity hintsです。

providerAuthChoicesリファレンス

providerAuthChoices エントリは、1つのonboardingまたはauth choiceを表します。 OpenClawはprovider runtimeが読み込まれる前にこれを読みます。
FieldRequiredType意味
providerYesstringこのchoiceが属するprovider idです。
methodYesstringディスパッチ先のauth method idです。
choiceIdYesstringonboardingおよびCLI flowsで使われる安定したauth-choice idです。
choiceLabelNostringユーザー向けラベルです。省略時、OpenClawは choiceId を使います。
choiceHintNostringpicker向けの短い補助テキストです。
assistantPriorityNonumberassistant主導の対話型pickerで、値が小さいほど先に並びます。
assistantVisibilityNo"visible" | "manual-only"assistant pickerからは隠しつつ、手動CLI選択は許可します。
deprecatedChoiceIdsNostring[]ユーザーをこの置き換えchoiceへ誘導すべきlegacy choice idsです。
groupIdNostring関連choiceをまとめる任意のgroup idです。
groupLabelNostringそのgroupのユーザー向けラベルです。
groupHintNostringgroup向けの短い補助テキストです。
optionKeyNostring単一flagの単純なauth flow用内部option keyです。
cliFlagNostring--openrouter-api-key のようなCLI flag名です。
cliOptionNostring--openrouter-api-key <key> のような完全なCLI option形です。
cliDescriptionNostringCLI helpで使われる説明です。
onboardingScopesNoArray<"text-inference" | "image-generation">このchoiceをどのonboarding surfaceに表示するか。省略時は ["text-inference"] がデフォルトになります。

uiHintsリファレンス

uiHints は、config field名から小さな表示ヒントへのマップです。
{
  "uiHints": {
    "apiKey": {
      "label": "API key",
      "help": "Used for OpenRouter requests",
      "placeholder": "sk-or-v1-...",
      "sensitive": true
    }
  }
}
各field hintには次を含められます。
FieldType意味
labelstringユーザー向けfield label。
helpstring短い補助テキスト。
tagsstring[]任意のUI tags。
advancedbooleanfieldをadvancedとしてマークします。
sensitivebooleanfieldをsecretまたはsensitiveとしてマークします。
placeholderstringform input向けplaceholder text。

contractsリファレンス

contracts は、plugin runtimeをimportせずにOpenClawが 読み取れる静的capability ownership metadataにのみ使ってください。
{
  "contracts": {
    "speechProviders": ["openai"],
    "realtimeTranscriptionProviders": ["openai"],
    "realtimeVoiceProviders": ["openai"],
    "mediaUnderstandingProviders": ["openai", "openai-codex"],
    "imageGenerationProviders": ["openai"],
    "videoGenerationProviders": ["qwen"],
    "webFetchProviders": ["firecrawl"],
    "webSearchProviders": ["gemini"],
    "tools": ["firecrawl_search", "firecrawl_scrape"]
  }
}
各リストは任意です。
FieldType意味
speechProvidersstring[]このpluginが所有するspeech provider idsです。
realtimeTranscriptionProvidersstring[]このpluginが所有するrealtime-transcription provider idsです。
realtimeVoiceProvidersstring[]このpluginが所有するrealtime-voice provider idsです。
mediaUnderstandingProvidersstring[]このpluginが所有するmedia-understanding provider idsです。
imageGenerationProvidersstring[]このpluginが所有するimage-generation provider idsです。
videoGenerationProvidersstring[]このpluginが所有するvideo-generation provider idsです。
webFetchProvidersstring[]このpluginが所有するweb-fetch provider idsです。
webSearchProvidersstring[]このpluginが所有するweb-search provider idsです。
toolsstring[]bundled contract checks用にこのpluginが所有するagent tool namesです。

channelConfigsリファレンス

channel pluginがruntime前に軽量config metadataを必要とする場合は channelConfigs を使ってください。
{
  "channelConfigs": {
    "matrix": {
      "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "homeserverUrl": { "type": "string" }
        }
      },
      "uiHints": {
        "homeserverUrl": {
          "label": "Homeserver URL",
          "placeholder": "https://matrix.example.com"
        }
      },
      "label": "Matrix",
      "description": "Matrix homeserver connection",
      "preferOver": ["matrix-legacy"]
    }
  }
}
各channelエントリには次を含められます。
FieldType意味
schemaobjectchannels.<id> 用JSON Schemaです。宣言された各channel configエントリで必須です。
uiHintsRecord<string, object>そのchannel config section向けの任意のUI labels/placeholders/sensitive hintsです。
labelstringruntime metadataがまだ準備できていない場合にpickerおよびinspect surfacesへマージされるchannel labelです。
descriptionstringinspectおよびcatalog surfaces向けの短いchannel descriptionです。
preferOverstring[]selection surfacesでこのchannelが優先すべきlegacyまたは低優先度plugin idsです。

modelSupportリファレンス

plugin runtimeが読み込まれる前に、gpt-5.4claude-sonnet-4.6 のような shorthand model idsからOpenClawがprovider pluginを推測すべき場合は、 modelSupport を使ってください。
{
  "modelSupport": {
    "modelPrefixes": ["gpt-", "o1", "o3", "o4"],
    "modelPatterns": ["^computer-use-preview"]
  }
}
OpenClawは次の優先順位を適用します。
  • 明示的な provider/model refsは、manifest metadata内の所有 providers を使います
  • modelPatternsmodelPrefixes より優先されます
  • 1つのnon-bundled pluginと1つのbundled pluginの両方が一致した場合、non-bundled pluginが勝ちます
  • 残る曖昧さは、ユーザーまたはconfigがproviderを指定するまで無視されます
フィールド:
FieldType意味
modelPrefixesstring[]shorthand model idsに対して startsWith で一致させるprefixesです。
modelPatternsstring[]profile suffix除去後のshorthand model idsに対して一致させるregex sourcesです。
legacyなトップレベルcapability keysは非推奨です。openclaw doctor --fix を使って、 speechProvidersrealtimeTranscriptionProvidersrealtimeVoiceProvidersmediaUnderstandingProvidersimageGenerationProvidersvideoGenerationProviderswebFetchProviderswebSearchProviderscontracts 配下へ移動してください。 通常のmanifest loadingでは、これらのトップレベルfieldsはcapability ownershipとして扱われなくなりました。

manifestとpackage.jsonの違い

この2つのファイルは別の役割を持ちます。
File用途
openclaw.plugin.jsondiscovery、config validation、auth-choice metadata、およびplugin code実行前に存在している必要があるUI hints
package.jsonnpm metadata、dependency installation、およびentrypoints、install gating、setup、catalog metadataに使われる openclaw block
どこに置くべきmetadataか迷ったら、次のルールを使ってください。
  • OpenClawがplugin codeを読み込む前に知る必要があるなら、openclaw.plugin.json に置く
  • packaging、entry files、またはnpm install behaviorに関するものなら、package.json に置く

discoveryに影響するpackage.json fields

一部のpre-runtime plugin metadataは、openclaw.plugin.json ではなく package.jsonopenclaw block配下に意図的に置かれています。 重要な例:
Field意味
openclaw.extensionsネイティブplugin entrypointsを宣言します。
openclaw.setupEntryonboardingおよび遅延channel startup中に使われる、軽量なsetup専用entrypointです。
openclaw.channellabels、docs paths、aliases、selection copyのような軽量channel catalog metadataです。
openclaw.install.npmSpec / openclaw.install.localPathbundledおよび外部公開plugin向けのinstall/update hintsです。
openclaw.install.defaultChoice複数install sourceが利用可能なときの優先install pathです。
openclaw.install.minHostVersion>=2026.3.22 のようなsemver floorで表す、サポートされる最小OpenClaw host versionです。
openclaw.install.allowInvalidConfigRecoveryconfigが無効なときの、限定的なbundled-plugin再インストール回復経路を許可します。
openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListenstartup中、完全なchannel pluginより先にsetup-only channel surfacesを読み込めるようにします。
openclaw.install.minHostVersion は、install時とmanifest registry loading時に強制されます。無効な値は拒否されます。新しすぎるが有効な値は、 古いhostではそのpluginをスキップさせます。 openclaw.install.allowInvalidConfigRecovery は意図的に対象を絞っています。 任意の壊れたconfigをinstall可能にするものではありません。現時点では、 missing bundled plugin pathや、その同じbundled pluginに対する古い channels.<id> エントリのような、 特定の古いbundled-plugin upgrade failureからinstall flowが回復することだけを許可します。 無関係なconfig errorsは引き続きinstallをブロックし、operatorは openclaw doctor --fix へ誘導されます。

JSON Schema要件

  • すべてのpluginはJSON Schemaを含めなければなりません。configを受け付けない場合でも必要です。
  • 空のschemaでも構いません(例: { "type": "object", "additionalProperties": false })。
  • Schemaはruntime時ではなく、config read/write時に検証されます。

検証の挙動

  • plugin manifestでchannel idが宣言されていない限り、不明な channels.* keysはエラーです。
  • plugins.entries.<id>plugins.allowplugins.deny、および plugins.slots.*discoverable なplugin idsを参照しなければなりません。不明なidsはエラーです。
  • pluginがインストールされていてもmanifestまたはschemaが壊れている、あるいは欠けている場合、 validationは失敗し、Doctorがplugin errorを報告します。
  • plugin configが存在してもpluginが無効なら、そのconfigは保持され、 Doctor + logsで警告が表示されます。
完全な plugins.* schemaについては Configuration reference を参照してください。

注意

  • manifestは、ローカルfilesystem loadを含むネイティブOpenClaw pluginsで必須です。
  • runtimeは引き続きplugin moduleを別途読み込みます。manifestは discovery + validation専用です。
  • ネイティブmanifestはJSON5で解析されるため、最終値がobjectである限り、 comments、trailing commas、unquoted keysが受け付けられます。
  • manifest loaderが読むのは文書化されたmanifest fieldsだけです。ここに 独自のトップレベルkeysを追加するのは避けてください。
  • providerAuthEnvVars は、auth probes、env-marker validation、そのほかenv名を調べるためだけにplugin runtimeを起動したくない provider-auth surfaces向けの軽量metadata経路です。
  • providerAuthChoices は、auth-choice pickers、 --auth-choice 解決、preferred-provider mapping、provider runtime読み込み前の単純なonboarding CLI flag登録向けの軽量metadata経路です。provider codeが必要なruntime wizard metadataについては、 Provider runtime hooks を参照してください。
  • 排他的plugin kindsは plugins.slots.* で選択されます。
    • kind: "memory"plugins.slots.memory で選択されます。
    • kind: "context-engine"plugins.slots.contextEngine で選択されます(デフォルト: built-in legacy)。
  • pluginが不要なら、channelsproviderscliBackendsskills は省略できます。
  • pluginがnative modulesに依存する場合は、build stepsと package-manager allowlist要件(たとえば pnpm allow-build-scripts
    • pnpm rebuild <package>)を文書化してください。

関連