はじめに
Plugin 検証の修正
Plugin 検証の修正
ClawHub は公開前に Plugin パッケージを検証し、自動パッケージスキャンの検出結果も表示できます。このページでは、Plugin 作成者がパッケージメタデータ、マニフェスト、SDK インポート、または公開済みアーティファクトで修正できる、作成者向けの検出結果について説明します。
内部の Plugin Inspector カバレッジに関する検出結果は対象外です。完全なレポートに、作成者向けの修正ガイダンスがないスキャナーメンテナンスコードが含まれている場合、それらは Plugin 作成者ではなく OpenClaw メンテナー向けです。
修正を適用した後、次を再実行します。
clawhub package validate <path-to-plugin>作成者向けの検出結果
| コード | まずはこちら |
|---|---|
package-json-missing |
パッケージメタデータを追加する |
package-openclaw-metadata-missing |
パッケージの openclaw ブロックを追加する |
package-openclaw-entry-missing |
OpenClaw パッケージのエントリポイントを宣言する |
package-entrypoint-missing |
宣言したエントリポイントを公開する |
package-install-metadata-incomplete |
インストールメタデータを完成させる |
package-plugin-api-compat-missing |
Plugin API の互換性を宣言する |
package-min-host-version-drift |
ホストの最小バージョンを一致させる |
package-manifest-version-drift |
パッケージとマニフェストのバージョンを一致させる |
package-openclaw-unsupported-metadata |
サポートされていない OpenClaw パッケージメタデータを削除する |
package-npm-pack-unavailable |
npm アーティファクトをパック可能にする |
package-npm-pack-entrypoint-missing |
npm pack の出力にエントリポイントを含める |
package-npm-pack-metadata-missing |
npm pack の出力にメタデータを含める |
manifest-name-missing |
マニフェストの表示名を追加する |
manifest-unknown-fields |
サポートされていないマニフェストフィールドを削除する |
manifest-unknown-contracts |
サポートされていないコントラクトキーを削除する |
legacy-root-sdk-import |
ルート SDK インポートを置き換える |
reserved-sdk-import |
予約済み SDK インポートを削除する |
sdk-load-session-store |
セッションストア全体へのアクセスを置き換える |
sdk-session-store-write |
セッションストア全体への書き込みを置き換える |
sdk-session-file-helper |
セッションファイルパスヘルパーを置き換える |
sdk-session-transcript-file-target |
従来のトランスクリプトファイルターゲットを置き換える |
sdk-session-transcript-low-level |
低レベルのトランスクリプトヘルパーを置き換える |
legacy-before-agent-start |
before_agent_start を置き換える |
provider-auth-env-vars |
プロバイダーの環境変数をセットアップメタデータへ移動する |
channel-env-vars |
現在のメタデータにチャンネル環境変数を反映する |
security-manifest-schema-unavailable |
利用できないセキュリティマニフェストスキーマ参照を削除する |
unrecognized-security-manifest |
サポートされていないセキュリティマニフェストファイルを削除する |
パッケージメタデータ
package-json-missing
パッケージルートに package.json が含まれていないため、ClawHub は npm パッケージ、バージョン、エントリポイント、または OpenClaw メタデータを識別できません。
name、version、およびtypeを指定したpackage.jsonを追加します。- パッケージに OpenClaw Plugin が含まれる場合は、
openclawブロックを追加します。 - 最小限のパッケージ例については Plugin の構築を、パッケージとマニフェストの区分については Plugin マニフェストを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-openclaw-metadata-missing
パッケージには package.json がありますが、OpenClaw パッケージメタデータが宣言されていません。
package.json#openclawを追加します。openclaw.extensionsやopenclaw.runtimeExtensionsなどのエントリポイントメタデータを含めます。- パッケージを ClawHub を通じて公開またはインストールする場合は、互換性とインストールのメタデータを追加します。
- 検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-openclaw-entry-missing
パッケージメタデータは存在しますが、OpenClaw ランタイムのエントリポイントが宣言されていません。
- ネイティブ Plugin のエントリポイントには
openclaw.extensionsを追加します。 - 公開済みパッケージでビルド済み JavaScript を読み込む場合は、
openclaw.runtimeExtensionsを追加します。 - すべてのエントリポイントパスをパッケージディレクトリ内に保持します。
- Plugin のエントリポイントおよび検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-entrypoint-missing
パッケージでは OpenClaw エントリポイントが宣言されていますが、参照先ファイルが検証対象のパッケージにありません。
openclaw.extensions、openclaw.runtimeExtensions、openclaw.setupEntry、およびopenclaw.runtimeSetupEntryの各パスを確認します。- エントリポイントが
distに生成される場合は、パッケージをビルドします。 - エントリポイントが移動した場合は、メタデータを更新します。
- Plugin のエントリポイントを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-install-metadata-incomplete
ClawHub は、パッケージをどのようにインストールまたは更新すべきか判断できません。
clawhubSpec、npmSpec、localPathなど、サポートされているインストール元をopenclaw.installに設定します。- 複数のインストール元を利用できる場合は、
openclaw.install.defaultChoiceを設定します。 - OpenClaw ホストの最小バージョンには
openclaw.install.minHostVersionを使用します。 - 検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-plugin-api-compat-missing
パッケージでは、サポートする OpenClaw Plugin API の範囲が宣言されていません。
package.jsonにopenclaw.compat.pluginApiを追加します。- ビルドおよびテストの対象とした OpenClaw Plugin API のバージョンまたは semver の下限を使用します。
- これはパッケージバージョンとは別に管理します。パッケージバージョンは Plugin リリースを表し、
openclaw.compat.pluginApiはホスト API コントラクトを表します。 - 検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-min-host-version-drift
パッケージのホスト最小バージョンが、そのパッケージのビルド対象となった OpenClaw バージョンのメタデータと一致しません。
openclaw.install.minHostVersionを確認します。- リリース時に使用した OpenClaw バージョンなど、パッケージ内の OpenClaw ビルドメタデータを確認します。
- ホストの最小バージョンを、パッケージが実際にサポートするホストバージョン範囲と一致させます。
- 検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-manifest-version-drift
パッケージバージョンと Plugin マニフェストのバージョンが一致しません。
- パッケージのリリースバージョンとして
package.json#versionを優先します。 openclaw.plugin.jsonにversionも含まれている場合は、一致するように更新するか、パッケージメタデータが正となる場合は古いマニフェストバージョンのメタデータを削除します。- 公開済みメタデータを変更した後は、新しいパッケージバージョンを公開します。
- Plugin マニフェストを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-openclaw-unsupported-metadata
package.json#openclaw ブロックに、OpenClaw パッケージメタデータとしてサポートされていないフィールドが含まれています。
openclaw.bundleなど、サポートされていないフィールドを削除します。- ネイティブ Plugin のメタデータは
openclaw.plugin.jsonに保持します。 - パッケージのエントリポイント、互換性、インストール、セットアップ、およびカタログのメタデータは、サポートされている
package.json#openclawフィールドに保持します。 - 検出に影響する package.json フィールドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
公開済みアーティファクト
package-npm-pack-unavailable
パッケージを、ClawHub が検査または公開するアーティファクトとしてパックできません。
- パッケージルートから
npm pack --dry-runを実行します。 - パックを失敗させる、無効なパッケージメタデータ、壊れたライフサイクルスクリプト、または files エントリを修正します。
- このパッケージを一般公開する場合は、
private: trueを削除します。 clawhub package validate <path-to-plugin>を再実行します。
package-npm-pack-entrypoint-missing
パッケージはパックできますが、パック済みアーティファクトに package.json#openclaw で宣言されたエントリポイントファイルが含まれていません。
npm pack --dry-runを実行し、含まれる予定のファイルを確認します。- パックする前に、生成されるエントリポイントをビルドします。
files、.npmignore、またはビルド出力を更新し、宣言されたエントリポイントが含まれるようにします。- Plugin のエントリポイントを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
package-npm-pack-metadata-missing
パック済みアーティファクトに、ソースパッケージには存在する OpenClaw メタデータがありません。
npm pack --dry-runを実行し、含まれているメタデータファイルを確認します。- パックされた成果物に、
package.jsonのopenclawブロックが含まれていることを確認します。 - パッケージがネイティブ OpenClaw plugin の場合は、
openclaw.plugin.jsonが含まれていることを確認します。 - パッケージメタデータが除外されないように、
filesまたは.npmignoreを更新します。 - Plugin のビルドを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
マニフェストメタデータ
manifest-name-missing
ネイティブ plugin のマニフェストに表示名が含まれていません。
openclaw.plugin.jsonに空でないnameフィールドを追加します。nameは人が読める形式にし、idは安定したマシン ID として維持します。- Plugin マニフェストを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
manifest-unknown-fields
plugin のマニフェストに、OpenClaw がサポートしていないトップレベルフィールドがあります。
- 各トップレベルフィールドをマニフェストフィールドリファレンスと比較します。
openclaw.plugin.jsonからカスタムフィールドを削除します。- パッケージまたはインストールのメタデータを、マニフェストではなく、サポートされている
package.json#openclawフィールドに移動します。 clawhub package validate <path-to-plugin>を再実行します。
manifest-unknown-contracts
マニフェストの contracts 内で、サポートされていないキーが宣言されています。
contracts配下の各キーをコントラクトリファレンスと比較します。- サポートされていないコントラクトキーを削除します。
- ランタイム動作を plugin 登録コードに移動し、
contractsは静的な機能所有権メタデータのみに限定します。 clawhub package validate <path-to-plugin>を再実行します。
SDK と互換性の移行
legacy-root-sdk-import
plugin が非推奨のルート SDK バレルからインポートしています:
openclaw/plugin-sdk。
- ルートバレルからのインポートを、対象を絞った公開サブパスからのインポートに置き換えます。
definePluginEntryにはopenclaw/plugin-sdk/plugin-entryを使用します。- チャネルエントリヘルパーには
openclaw/plugin-sdk/channel-coreを使用します。 - インポート規約と Plugin SDK サブパスを使用して、対象を絞ったインポートを見つけます。
clawhub package validate <path-to-plugin>を再実行します。
reserved-sdk-import
plugin が、バンドル済み plugin または内部互換性のために予約された SDK パスをインポートしています。
- 予約された OpenClaw 内部 SDK インポートを、文書化された公開
openclaw/plugin-sdk/*サブパスに置き換えます。 - 該当する動作に公開 SDK がない場合は、ヘルパーをパッケージ内に保持するか、公開 OpenClaw API をリクエストします。
- Plugin SDK サブパスと SDK の移行を使用して、サポートされているインポートを選択します。
clawhub package validate <path-to-plugin>を再実行します。
sdk-load-session-store
plugin が非推奨のセッションストア全体を扱うヘルパー loadSessionStore を引き続き使用しています。
- セッション状態の読み取りには、
getSessionEntry(...)またはlistSessionEntries(...)を使用します。 - セッション状態の書き込みには、
patchSessionEntry(...)またはupsertSessionEntry(...)を使用します。 - セッションストアオブジェクト全体の読み込み、変更、保存は避けます。
- 宣言した互換性範囲が、それを必要とする古い OpenClaw バージョンを引き続きサポートしている間だけ、
loadSessionStore(...)を維持します。 - ランタイム APIと Plugin SDK サブパスを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
sdk-session-store-write
plugin が、saveSessionStore や updateSessionStore など、非推奨のセッションストア全体を書き込むヘルパーを引き続き使用しています。
- 既存のセッションエントリのフィールドを更新する場合は、
patchSessionEntry(...)を使用します。 - セッションエントリを置換または作成する場合は、
upsertSessionEntry(...)を使用します。 - セッションストアオブジェクト全体の読み込み、変更、保存は避けます。
- 宣言した互換性範囲が、それらを必要とする古い OpenClaw バージョンを引き続きサポートしている間だけ、ストア全体の書き込みヘルパーを維持します。
- ランタイム APIと Plugin SDK サブパスを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
sdk-session-file-helper
plugin が、resolveSessionFilePath や resolveAndPersistSessionFile など、非推奨のセッションファイルパスヘルパーを引き続き使用しています。
- エージェントとセッションの ID に基づいてセッションメタデータを読み取るには、
getSessionEntry(...)を使用します。 - セッションメタデータを永続化するには、
patchSessionEntry(...)またはupsertSessionEntry(...)を使用します。 - コードがトランスクリプト操作を準備している場合は、トランスクリプト ID またはターゲットヘルパーを使用します。
- 従来のトランスクリプトファイルパスを永続化したり、それに依存したりしないでください。
- ランタイム APIと Plugin SDK サブパスを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
sdk-session-transcript-file-target
plugin が非推奨のトランスクリプトファイルターゲットヘルパー resolveSessionTranscriptLegacyFileTarget を引き続き使用しています。
- コードが公開セッション ID のみを必要とする場合は、
resolveSessionTranscriptIdentity(...)を使用します。 - コードが構造化されたトランスクリプト操作ターゲットを必要とする場合は、
resolveSessionTranscriptTarget(...)を使用します。 - 従来のトランスクリプトファイルターゲットを直接読み取ったり構築したりすることは避けます。
- 宣言した互換性範囲が、それを必要とする古い OpenClaw バージョンを引き続きサポートしている間だけ、従来のヘルパーを維持します。
- ランタイム APIと Plugin SDK サブパスを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
sdk-session-transcript-low-level
plugin が、appendSessionTranscriptMessage や emitSessionTranscriptUpdate など、非推奨の低レベルトランスクリプトヘルパーを引き続き使用しています。
- トランスクリプトへの追記には
appendSessionTranscriptMessageByIdentity(...)を使用します。 - トランスクリプト更新通知には
publishSessionTranscriptUpdateByIdentity(...)を使用します。 - OpenClaw が正しいトランザクション境界と ID 処理を適用できるように、構造化されたトランスクリプトランタイムサーフェスを優先します。
- 宣言した互換性範囲が、それらを必要とする古い OpenClaw バージョンを引き続きサポートしている間だけ、低レベルトランスクリプトヘルパーを維持します。
- ランタイム APIと Plugin SDK サブパスを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
legacy-before-agent-start
plugin が従来の before_agent_start フックを引き続き使用しています。
- モデルまたはプロバイダーのオーバーライド処理を
before_model_resolveに移動します。 - プロンプトまたはコンテキストの変更処理を
before_prompt_buildに移動します。 - 宣言した互換性範囲が、それを必要とする古い OpenClaw バージョンを引き続きサポートしている間だけ、
before_agent_startを維持します。 - フックと Plugin の互換性を参照してください。
clawhub package validate <path-to-plugin>を再実行します。
provider-auth-env-vars
マニフェストが従来の providerAuthEnvVars プロバイダー認証メタデータを引き続き使用しています。
- プロバイダーの環境変数メタデータを
setup.providers[].envVarsに反映します。 - サポート対象の OpenClaw 範囲で引き続き必要な間だけ、
providerAuthEnvVarsを互換性メタデータとして維持します。 - セットアップリファレンスと SDK の移行を参照してください。
clawhub package validate <path-to-plugin>を再実行します。
channel-env-vars
マニフェストが、ClawHub で想定されている現在のセットアップまたは設定メタデータを伴わない、従来または旧形式のチャネル環境変数メタデータを使用しています。
- OpenClaw がチャネルランタイムを読み込まずにセットアップ状態を確認できるように、チャネル環境変数メタデータを宣言的に維持します。
- 環境変数駆動のチャネルセットアップを、plugin の構成で使用される現在のセットアップ、チャネル設定、またはパッケージのチャネルメタデータに反映します。
- サポート対象の古い OpenClaw バージョンで引き続き必要な間だけ、
channelEnvVarsを互換性メタデータとして維持します。 - Plugin マニフェストと チャネル pluginを参照してください。
clawhub package validate <path-to-plugin>を再実行します。
セキュリティマニフェスト
security-manifest-schema-unavailable
パッケージに含まれる openclaw.security.json が、ClawHub で利用可能と認識されていないスキーマを参照しています。
- スキーマ URL が参考情報にすぎない場合は削除します。
- OpenClaw が公開した後にのみ、文書化されたバージョン付きスキーマを使用します。
clawhub package validate <path-to-plugin>を再実行します。
unrecognized-security-manifest
パッケージにサポートされていないセキュリティマニフェストファイルが含まれています。
- OpenClaw がバージョン付きセキュリティマニフェストスキーマと ClawHub の動作を文書化するまで、
openclaw.security.jsonを削除します。 - マニフェストのコントラクトが確立されるまで、セキュリティ上重要な動作を公開パッケージのドキュメントまたは README に記載します。
clawhub package validate <path-to-plugin>を再実行します。