公開ディレクトリに提出するプラグインには、ワークスペースにインストールするプラグインより厳しい基準が適用されます。ディレクトリに提出するには、共通のパッケージ検証に加え、掲載情報、審査資料、MCP ツール、スキル、アセット、画像の検証にも合格する必要があります。このリファレンスでは、MCP サーバー参照の検証など、提出ポータル以外でも実行される共通のパッケージ検証も扱います。
提出時に返されたエラーコードで、該当する要件を確認してください。エラーがあると提出できません。警告があっても提出できますが、先に内容を確認してください。
空にできない値には、空白文字以外の文字が必要です。制御文字、Unicode の行区切り文字や段落区切り文字、サポート対象外の不可視の書式制御文字は使用できません。HTTPS URL にはホストが必要です。認証情報やサポート対象外の文字は含められません。
ディレクトリへの最終提出
アップロード時の検証に合格したパッケージでも、ディレクトリへの最終提出時にエラーになることがあります。最終提出では、掲載情報により厳しい制限が適用されます。また、MCP の設定、スキルのスキャン結果、テストケース、ポリシー遵守の表明も確認されます。
| 項目 | 最終提出時の要件 |
|---|---|
| パッケージ名 | 必須です。64 文字以内で、先頭は ASCII の英字または数字にします。使用できるのは ASCII の英字、数字、_、- のみです。 |
| バージョン | 必須です。64 文字以内のセマンティックバージョンを指定してください。 |
| 表示名 | 必須です。1 行、30 文字以内で指定してください。 |
| 短い説明 | 必須です。1 行、30 文字以内で指定してください。 |
| 詳細な説明 | 必須です。4,000 文字以内で指定してください。改行を使用できます。 |
| 開発者名 | 必須です。1 行、80 文字以内で指定してください。 |
| カテゴリ | 必須です。掲載情報とインターフェースのエラーに記載されているカテゴリから選んでください。 |
| 機能 | 最大 20 件です。各機能は空にせず、1 行、120 文字以内で記述してください。 |
| 開始プロンプト | 最大 3 件です。各プロンプトは空にせず、1 行、128 文字以内で記述してください。Unicode と空白文字の正規化後も重複しないようにしてください。MCP サーバーへの @mention は含められません。 |
| URL | リモート MCP の提出では必須です。スキルのみのプラグインを ZIP でアップロードする場合は任意です。ウェブサイト、サポート、プライバシーポリシー、利用規約の各 URL には HTTPS を使用し、それぞれ 1,024 文字以内にしてください。 |
| ブランドカラー | 任意です。色は 6 桁の 16 進数で指定します。ライトモード用の色は白に対して、ダークモード用の色は #212121 に対して、それぞれ 2:1 以上のコントラスト比が必要です。 |
すべてのプラグインの提出には、次の要件もあります。
- 同梱するすべてのスキルが安全性とセキュリティのスキャンに合格する必要があります。スキャンには最大 2 時間かかる場合があります。
- 開発者の本人確認または事業者の確認が完了し、必要なポリシー遵守の表明がすべてそろっていること
リモート MCP プラグインの最終提出には、次の要件もあります。
- 上記の要件を満たすウェブサイト、サポート、プライバシーポリシー、利用規約の各 URL
- 対応プラットフォームでの主なユースケースとツールの使い方を示すデモ動画の URL
- 正常系のテストケース 5 件、異常系のテストケース 3 件(いずれも指定件数どおり)、およびリリースノート
- 本番 MCP サーバーの HTTPS URL、ドメイン検証チャレンジの完了、最新のツールスキャンの成功
- 各 MCP ツールでの
readOnlyHint、openWorldHint、destructiveHintの値の明示と、それぞれの値を設定した理由 - サーバーが OAuth を使用する場合は、審査担当者が使用できるデモ用の認証情報
最終提出時のメタデータエラー
以下のエラー名では、subtitle は短い説明、description は詳細な説明を指します。
| エラー名 | 要件 |
|---|---|
submission_display_name_required |
表示名は必須です。空にせず、1 行で指定してください。 |
submission_display_name_too_long |
表示名は 30 文字以内にしてください。 |
submission_display_name_character_unsupported |
表示名には使用可能な文字を使い、1 行に収めてください。 |
submission_subtitle_required |
短い説明は必須です。空にせず、1 行で記述してください。 |
submission_subtitle_too_long |
短い説明は 30 文字以内にしてください。 |
submission_subtitle_character_unsupported |
短い説明には使用可能な文字を使い、1 行に収めてください。 |
submission_description_required |
詳細な説明は必須で、空にはできません。改行を使用できます。 |
submission_description_too_long |
詳細な説明は 4,000 文字以内にしてください。 |
submission_description_character_unsupported |
詳細な説明には使用可能な文字を使ってください。改行を使用できます。 |
submission_developer_name_required |
開発者名は必須です。空にせず、1 行で指定してください。 |
submission_developer_name_too_long |
開発者名は 80 文字以内にしてください。 |
submission_developer_name_character_unsupported |
開発者名には使用可能な文字を使い、1 行に収めてください。 |
plugin_capability_invalid |
各機能は空にせず、使用可能な文字を使って 1 行、120 文字以内で記述してください。 |
plugin_default_prompt_mention |
開始プロンプトに MCP サーバーへの @mentions は含められません。 |
plugin_default_prompt_duplicate |
開始プロンプトは、Unicode と空白文字の正規化後も重複しないようにしてください。 |
MCP と審査に関するエラー
以下のエラーは、リモート MCP の提出時に発生します。
| エラー名 | 要件 |
|---|---|
annotations_required |
すべての MCP ツールで、実際の動作に合わせて readOnlyHint、openWorldHint、destructiveHint を正しく設定してください。 |
justification_required |
各 MCP ツールのアノテーションには、そのツールが読み取り専用か、外部のシステムとやり取りするか、破壊的な操作を行うかについて、それぞれの設定値の根拠を記載してください。 |
scan_required |
本番 MCP サーバーを対象とした最新の MCP ツールスキャンが成功している必要があります。 |
domain_verification_required |
MCP ホストまたは許可された親ホスト上に生成された /.well-known/openai-apps-challenge URL で、検証トークンを一字一句変えずに公開してください。Verify Domain による検証に合格する必要があります。 |
frame_domain_explanation_required |
MCP ツールのスキャンで報告された外部フレームのドメインごとに、UI がそのドメインを必要とする理由と、そこから提供されるコンテンツを説明してください。 |
アーカイブのエラー
ZIP アップロード時のエラーと警告
ポータルの Skills only からは、スキルの ZIP パッケージと承認済みのローカル MCP プラグインをアップロードできます。承認済みのローカル MCP プラグインには、スキルを含める必要はありません。エラーがあるとアップロードできません。警告が表示された場合は、続行する前に確認が必要です。
| 名前 | 要件 |
|---|---|
plugin_name_mismatch |
更新時のパッケージ名は、既存のプラグイン名と一致させてください。 |
plugin_version_unchanged |
新しいリリースでは、マニフェストの version を変更してください。公開済みのバージョンを再使用するには確認が必要です。 |
mcp_configuration_excluded |
所属組織がローカル MCP の提出を許可されていない場合、MCP の設定は除外されます。ローカル MCP プラグインの場合は、提出する組織が許可リストに登録されているか、OpenAI の担当者に確認してください。リモート MCP サーバーは With MCP から提出してください。 |
app_configuration_excluded |
アップロードする ZIP に apps や .app.json は含められません。リモート MCP サーバーは With MCP から提出してください。ローカル MCP サーバーの場合は、デスクトップ専用プラグインの提出手順に従ってください。 |
claude_format_normalized |
ポータルは .claude-plugin/plugin.json を .codex-plugin/plugin.json に変換し、不足しているインターフェースのデフォルト値と、正規化したテキストフィールドを追加します。 |
manifest_normalized |
ポータルは正規化したマニフェストを .codex-plugin/plugin.json として保存します。変更されたフィールドについては確認が必要です。 |
developer_name_defaulted |
掲載情報の開発者名は、ZIP 内の名前にかかわらず、選択した確認済みの開発者情報から自動設定されます。 |
ZIP の構造と上限に関するエラー
| エラー名 | 要件 |
|---|---|
archive_empty |
アーカイブは空にできません。 |
archive_too_large |
圧縮後の ZIP は 100 MB 以下にしてください。 |
archive_format_not_zip |
アーカイブには、破損していない有効な ZIP ファイルを使用してください。 |
archive_member_path_empty |
アーカイブ内のエントリのパスは空にできません。 |
archive_member_path_has_outer_whitespace |
エントリのパスの先頭と末尾に空白文字は使用できません。 |
archive_member_path_has_backslash |
エントリのパスの区切りには / を使用してください。バックスラッシュは使用できません。 |
archive_member_path_absolute |
エントリのパスは、アーカイブのルートからの相対パスにしてください。 |
archive_member_path_has_empty_segment |
エントリのパスに空のセグメントは含められません。 |
archive_member_path_has_parent_segment |
エントリのパスに .. セグメントは含められません。 |
archive_member_path_too_deep |
エントリのパスは、ファイル名を含めて 20 セグメント以内にしてください。 |
archive_member_path_too_long |
エントリのパスの長さは、サポートされる上限以内にしてください。 |
archive_member_path_normalization_collision |
エントリのパスは、大文字と小文字の区別をなくし、Unicode を正規化した後も重複しないようにしてください。 |
archive_member_type_unsupported |
アーカイブのエントリには、通常ファイルまたはディレクトリを使用してください。 |
archive_member_too_large |
各エントリのサイズは 100 MiB 以下にしてください。 |
archive_member_path_duplicate |
エントリのパスは重複しないようにしてください。 |
archive_member_path_type_conflict |
ファイルのパスをディレクトリのパスと兼用したり、その配下に別のエントリを配置したりすることはできません。 |
archive_too_many_entries |
アーカイブのエントリ数は 5,000 件以内にしてください。 |
archive_uncompressed_too_large |
展開後のアーカイブのサイズは 512 MiB 以下にしてください。 |
archive_member_unreadable |
各エントリは読み取り可能で、暗号化されておらず、サポートされている圧縮方式を使用している必要があります。 |
プラグインルートのエラー
| エラー名 | 要件 |
|---|---|
plugin_root_missing |
選択したパスは、プラグインを含む既存のディレクトリを指す必要があります。 |
archive_plugin_files_missing |
ZIP には、サポートされているプラグインマニフェストと、少なくとも 1 つの有効なスキル(または承認済みのローカル MCP サーバー)が必要です。 |
plugin_root_ambiguous |
ZIP 内のプラグインルートは 1 つだけにしてください。アーカイブのルートか、その直下の単一のディレクトリに配置します。 |
plugin_root_has_siblings |
ZIP の最上位にプラグインディレクトリを置く場合、そのディレクトリと同じ階層にファイルを置くことはできません。 |
プラグインマニフェストのエラー
| エラー名 | 要件 |
|---|---|
plugin_manifest_missing |
ZIP のルートまたはその直下の単一のディレクトリに、サポートされている Agent Plugins スキーマに準拠した plugin.json、.codex-plugin/plugin.json、.agent-plugin/plugin.json、.claude-plugin/plugin.json のいずれかを配置してください。 |
plugin_manifest_not_file |
プラグインマニフェストには、JSON 形式の通常ファイルを使用してください。 |
plugin_manifest_unreadable |
プラグインマニフェストは、読み取り可能な UTF-8 テキストにしてください。 |
plugin_manifest_json_malformed |
プラグインマニフェストには有効な JSON を記述してください。構文エラーは行番号とともに報告されます。 |
plugin_manifest_root_not_object |
プラグインマニフェストのトップレベルには JSON オブジェクトを指定してください。 |
codex_manifest_parent_not_directory |
.codex-plugin はディレクトリにしてください。 |
codex_manifest_path_not_file |
.codex-plugin/plugin.json は JSON 形式の通常ファイルにしてください。 |
plugin_id_wrong_type |
id を指定する場合は文字列にしてください。 |
plugin_id_empty |
id を指定する場合は空にできません。 |
plugin_name_missing |
name は必須です。 |
plugin_name_wrong_type |
name は文字列にしてください。 |
plugin_name_empty |
name は空にできません。 |
plugin_name_too_long |
name は 64 文字以内にしてください。 |
plugin_name_format |
name の先頭は ASCII の英字または数字にしてください。使用できるのは ASCII の英字、数字、_、- のみです。 |
plugin_version_missing |
version は必須です。 |
plugin_version_wrong_type |
version は文字列にしてください。 |
plugin_version_empty |
version には、1.0.0 のようなセマンティックバージョンを表す空でない文字列を指定してください。 |
plugin_version_not_semver |
version には、1.0.0 のようにセマンティックバージョニングに準拠した値を指定してください。 |
plugin_version_too_long |
version は 64 文字以内にしてください。 |
plugin_description_missing |
description は必須です。 |
plugin_description_wrong_type |
description は文字列にしてください。 |
plugin_description_empty |
description は空にできません。 |
plugin_description_too_long |
description は 1,024 文字以内にしてください。 |
plugin_description_character_unsupported |
description には使用可能な文字を使ってください。改行を使用できます。 |
plugin_developer_missing |
author.name は必須です。interface.developerName も必須で、エラーは個別に報告されます。 |
plugin_author_wrong_type |
author はオブジェクトにしてください。 |
plugin_author_name_wrong_type |
author.name は文字列にしてください。 |
plugin_author_name_empty |
author.name は空にできません。 |
plugin_author_name_too_long |
author.name は 120 文字以内にしてください。 |
plugin_author_name_character_unsupported |
author.name には使用可能な文字を使ってください。 |
plugin_author_email_wrong_type |
author.email を指定する場合は文字列にしてください。 |
plugin_author_email_empty |
author.email を指定する場合は空にできません。 |
plugin_author_email_too_long |
author.email は 320 文字以内にしてください。 |
plugin_author_email_character_unsupported |
author.email には使用可能な文字を使ってください。 |
plugin_author_url_wrong_type |
author.url を指定する場合は文字列にしてください。 |
plugin_author_url_empty |
author.url を指定する場合は空にできません。 |
plugin_author_url_not_https |
author.url には HTTPS URL を指定してください。 |
plugin_author_url_has_credentials |
author.url に認証情報は含められません。 |
plugin_author_url_too_long |
author.url は 2,048 文字以内にしてください。 |
plugin_author_url_character_unsupported |
author.url には使用可能な文字を使ってください。 |
掲載情報とインターフェースのエラー
プラグインマニフェストの interface オブジェクトには、ユーザーに表示する公開ディレクトリの掲載情報を定義します。このオブジェクトは .codex-plugin/plugin.json に記述し、displayName や shortDescription などのフィールドを使用します。
{
"interface": {
"displayName": "Example Plugin",
"shortDescription": "Summarize documents",
"longDescription": "Summarize and organize documents.",
"developerName": "Example",
"category": "Productivity",
"capabilities": ["Summarize documents"]
}
}
掲載情報に含める 4 つの URL(ウェブサイト、プライバシーポリシー、利用規約、サポート)は、スキルのみのプラグインを ZIP でアップロードする場合は任意です。リモート MCP の提出では必須です。各 URL の上限は、パッケージ検証時は 2,048 文字、ディレクトリへの最終提出時は 1,024 文字です。
| エラー名 | 要件 |
|---|---|
plugin_interface_wrong_type |
プラグインマニフェストの interface フィールドは JSON オブジェクトにしてください。 |
plugin_display_name_wrong_type |
interface.displayName は文字列にしてください。 |
plugin_display_name_empty |
interface.displayName は必須で、空にはできません。 |
plugin_display_name_too_long |
interface.displayName は、パッケージ検証時は 80 文字以内、ディレクトリへの最終提出時は 30 文字以内にしてください。 |
plugin_display_name_character_unsupported |
interface.displayName には使用可能な文字を使ってください。 |
plugin_short_description_missing |
interface.shortDescription は必須です。1 行で記述し、パッケージ検証時は 240 文字以内、ディレクトリへの最終提出時は 30 文字以内にしてください。 |
plugin_short_description_wrong_type |
interface.shortDescription は文字列にしてください。 |
plugin_short_description_empty |
interface.shortDescription は空にできません。 |
plugin_short_description_too_long |
interface.shortDescription は、パッケージ検証時は 240 文字以内、ディレクトリへの最終提出時は 30 文字以内にしてください。 |
plugin_short_description_character_unsupported |
interface.shortDescription には使用可能な文字を使ってください。 |
plugin_long_description_wrong_type |
interface.longDescription は文字列にしてください。 |
plugin_long_description_empty |
interface.longDescription は必須で、空にはできません。 |
plugin_long_description_too_long |
interface.longDescription は 4,000 文字以内にしてください。 |
plugin_long_description_character_unsupported |
interface.longDescription には使用可能な文字を使ってください。改行を使用できます。 |
plugin_developer_name_wrong_type |
interface.developerName は文字列にしてください。 |
plugin_developer_name_empty |
interface.developerName は必須で、空にはできません。 |
plugin_developer_name_too_long |
interface.developerName は、パッケージ検証時は 120 文字以内、ディレクトリへの最終提出時は 80 文字以内にしてください。 |
plugin_developer_name_character_unsupported |
interface.developerName には使用可能な文字を使ってください。 |
plugin_category_wrong_type |
interface.category は文字列にしてください。 |
plugin_category_empty |
interface.category を指定する場合は空にできません。省略すると Other が使用されます。 |
plugin_category_unknown |
interface.category には、Productivity、Creativity、Developer Tools、Business & Operations、Data & Analytics、Communication、Education & Research、Security、Finance、Healthcare、Travel、Entertainment、Other のいずれかを指定してください。 |
plugin_category_character_unsupported |
interface.category には使用可能な文字を使ってください。 |
plugin_capabilities_wrong_type |
interface.capabilities は文字列のリストにしてください。 |
plugin_capabilities_too_many |
interface.capabilities の項目数は 20 件以内にしてください。 |
plugin_capability_wrong_type |
interface.capabilities の各項目は文字列にしてください。 |
plugin_capability_empty |
interface.capabilities に指定する項目は空にできません。 |
plugin_capability_too_long |
interface.capabilities の各項目は 120 文字以内にしてください。 |
plugin_capability_character_unsupported |
interface.capabilities の各項目には使用可能な文字を使ってください。 |
plugin_website_url_wrong_type |
interface.websiteURL を指定する場合は文字列にしてください。 |
plugin_website_url_empty |
interface.websiteURL を指定する場合は空にできません。 |
plugin_website_url_format |
interface.websiteURL には HTTPS URL を指定してください。 |
plugin_website_url_too_long |
interface.websiteURL は掲載情報の URL の文字数上限以内にしてください。 |
plugin_privacy_policy_url_wrong_type |
interface.privacyPolicyURL を指定する場合は文字列にしてください。 |
plugin_privacy_policy_url_empty |
interface.privacyPolicyURL を指定する場合は空にできません。 |
plugin_privacy_policy_url_format |
interface.privacyPolicyURL には HTTPS URL を指定してください。 |
plugin_privacy_policy_url_too_long |
interface.privacyPolicyURL は掲載情報の URL の文字数上限以内にしてください。 |
plugin_terms_of_service_url_wrong_type |
interface.termsOfServiceURL を指定する場合は文字列にしてください。 |
plugin_terms_of_service_url_empty |
interface.termsOfServiceURL を指定する場合は空にできません。 |
plugin_terms_of_service_url_format |
interface.termsOfServiceURL には HTTPS URL を指定してください。 |
plugin_terms_of_service_url_too_long |
interface.termsOfServiceURL は掲載情報の URL の文字数上限以内にしてください。 |
plugin_support_url_wrong_type |
interface.supportURL を指定する場合は文字列にしてください。 |
plugin_support_url_empty |
interface.supportURL を指定する場合は空にできません。 |
plugin_support_url_format |
interface.supportURL には HTTPS URL を指定してください。 |
plugin_support_url_too_long |
interface.supportURL は掲載情報の URL の文字数上限以内にしてください。 |
plugin_homepage_wrong_type |
homepage を指定する場合は文字列にしてください。 |
plugin_homepage_empty |
homepage を指定する場合は空にできません。 |
plugin_homepage_format |
homepage には HTTPS URL を指定してください。 |
plugin_homepage_too_long |
homepage は 2,048 文字以内にしてください。 |
plugin_brand_color_wrong_type |
interface.brandColor を指定する場合は文字列にしてください。 |
plugin_brand_color_empty |
interface.brandColor を指定する場合は空にできません。 |
plugin_brand_color_format |
interface.brandColor には、#1ABCFE のように 6 桁の 16 進数で色を指定してください。 |
plugin_brand_color_dark_wrong_type |
interface.brandColorDark を指定する場合は文字列にしてください。 |
plugin_brand_color_dark_empty |
interface.brandColorDark を指定する場合は空にできません。 |
plugin_brand_color_dark_format |
interface.brandColorDark には、#1ABCFE のように 6 桁の 16 進数で色を指定してください。 |
plugin_brand_color_contrast |
interface.brandColor には、白に対するコントラスト比が 2:1 以上の色を指定してください。 |
plugin_brand_color_dark_contrast |
interface.brandColorDark には、#212121 に対するコントラスト比が 2:1 以上の色を指定してください。 |
plugin_default_prompt_wrong_type |
interface.defaultPrompt には、文字列または文字列のリストを指定してください。 |
plugin_default_prompt_too_many |
interface.defaultPrompt に指定できるプロンプトは最大 3 件です。 |
plugin_default_prompt_entry_wrong_type |
interface.defaultPrompt の各項目は文字列にしてください。 |
plugin_default_prompt_empty |
interface.defaultPrompt に指定する項目は空にできません。 |
plugin_default_prompt_too_long |
interface.defaultPrompt の各項目は、パッケージ検証時は 512 文字以内、ディレクトリへの最終提出時は 128 文字以内にしてください。 |
plugin_default_prompt_character_unsupported |
interface.defaultPrompt の各項目には使用可能な文字を使い、1 行に収めてください。 |
プラグインの内容に関するエラー
| エラー名 | 要件 |
|---|---|
plugin_skills_path_wrong_type |
skills には、ルートにある skills/ ディレクトリへのパスを文字列で指定してください。 |
plugin_skills_path_empty |
skills を指定する場合は、ルートにある skills/ ディレクトリへの空でないパスにしてください。 |
plugin_skills_path_unsupported |
skills のパスは、ルートにある skills/ ディレクトリを指す必要があります。 |
plugin_skills_directory_missing |
ルートの skills/ ディレクトリを宣言した場合、そのディレクトリが存在する必要があります。 |
plugin_skills_path_not_directory |
ルートの skills/ を宣言した場合、そのパスはディレクトリを指す必要があります。 |
plugin_apps_path_wrong_type |
apps には、ルートにある .app.json へのパスを文字列で指定してください。 |
plugin_apps_path_empty |
apps を指定する場合は、ルートにある .app.json への空でないパスにしてください。 |
plugin_apps_path_unsupported |
apps のパスは、ルートにある .app.json を指す必要があります。 |
plugin_apps_file_missing |
ルートの .app.json ファイルを宣言した場合、そのファイルが存在する必要があります。 |
plugin_apps_path_not_file |
ルートの .app.json を宣言した場合、そのパスは通常ファイルを指す必要があります。 |
plugin_mcp_path_wrong_type |
mcpServers には、ルートにある .mcp.json へのパスを文字列で指定してください。 |
plugin_mcp_path_empty |
mcpServers のパスは空にできません。./.mcp.json を指定するか、フィールドを削除してください。 |
plugin_mcp_path_unsupported |
mcpServers のパスは、ルートにある .mcp.json を指す必要があります。 |
plugin_mcp_file_missing |
mcpServers でルートの .mcp.json を宣言していますが、そのファイルが存在しません。 |
plugin_mcp_path_not_file |
ルートの .mcp.json は通常ファイルにしてください。 |
plugin_runtime_surface_missing |
公開ディレクトリに提出する ZIP には、少なくとも 1 つの有効なスキル(または承認済みのローカル MCP サーバー)が必要です。ローカルまたはワークスペース用のパッケージでは、利用条件を満たす MCP サーバーを参照することもできます。 |
MCP マニフェストのエラー
以下のエラーは、互換性のための .mcp.json ファイルに関するものです。ポータブルパッケージの場合、取り込み時に、このファイルと .codex-plugin/plugin.json がルートの plugin.json と mcp.json から生成されます。前のセクションにあるコンポーネントのパスに関するエラーも、これらの生成ファイルを指す場合があります。生成元のポータブルパッケージの設定を修正してください。互換性に関する診断メッセージにファイル名が表示されたという理由だけで、mcp.json を .mcp.json に改名しないでください。
| エラー名 | 要件 |
|---|---|
mcp_manifest_unreadable |
.mcp.json は読み取り可能な UTF-8 テキストにしてください。 |
mcp_manifest_json_malformed |
.mcp.json には有効な JSON を記述してください。構文エラーは行番号とともに報告されます。 |
mcp_manifest_wrong_type |
.mcp.json のトップレベルには JSON オブジェクトを指定してください。 |
mcp_servers_missing |
.mcp.json のトップレベルには mcpServers フィールドが必要です。 |
mcp_servers_wrong_type |
mcpServers はオブジェクトにしてください。 |
mcp_server_name_empty |
各 MCP サーバー名には、空白文字以外の文字が少なくとも 1 文字必要です。 |
mcp_server_wrong_type |
mcpServers.<server-name> の各値は、該当するサーバーの宣言を含むオブジェクトにしてください。 |
スキルのエラー
| エラー名 | 要件 |
|---|---|
skill_manifest_missing |
スキルには SKILL.md ファイルが必要です。 |
skill_bundle_too_large |
圧縮後の各スキルバンドルは、エラーに表示される MiB 単位の上限以内にしてください。 |
skill_directory_hidden |
スキルのディレクトリ名の先頭に . は使用できません。 |
skill_manifest_nested |
各スキルのディレクトリは skills/ の直下に配置してください。 |
skill_manifest_not_regular_file |
SKILL.md は通常ファイルにしてください。 |
skill_manifest_unreadable |
SKILL.md は読み取り可能にしてください。 |
skill_manifest_invalid_utf8 |
SKILL.md は有効な UTF-8 で記述してください。 |
skill_frontmatter_missing |
SKILL.md の先頭に、--- の行で囲んだ YAML フロントマターを記述してください。 |
skill_frontmatter_unclosed |
SKILL.md の YAML フロントマターの末尾には --- が必要です。 |
skill_frontmatter_yaml_malformed |
SKILL.md のフロントマターには有効な YAML を記述してください。 |
skill_frontmatter_wrong_type |
SKILL.md のフロントマターには YAML マッピングを記述してください。 |
skill_name_missing |
name は必須で、空にはできません。 |
skill_name_wrong_type |
name は文字列にしてください。 |
skill_name_empty |
name は空にできません。 |
skill_name_character_unsupported |
スキルのフロントマターの name には使用可能な文字を使ってください。 |
skill_description_missing |
description は必須で、空にはできません。 |
skill_description_wrong_type |
description は文字列にしてください。 |
skill_description_empty |
description は空にできません。 |
skill_description_too_long |
description は 1,024 文字以内にしてください。 |
skill_description_character_unsupported |
スキルのフロントマターの description には使用可能な文字を使ってください。 |
skill_body_empty |
スキルの指示は空にできません。 |
skill_identity_too_long |
プラグイン名とスキル名を結合した名前(plugin-name:skill-name)は 64 文字以内にしてください。 |
skill_identity_duplicate |
各スキルの name はプラグイン内で重複しないようにしてください。 |
スキルのエージェントメタデータに関するエラー
同梱するスキルは、独自の interface を skills/<skill>/agents/openai.yaml に定義できます。この設定でユーザーに表示するスキルの情報を指定します。プラグインマニフェストの interface とは別の設定です。スキルのインターフェースのフィールド名には snake_case を使用します。
interface:
display_name: "Summarize documents"
short_description: "Summarize a document"
icon_small: "./assets/icon.png"
default_prompt: "Summarize the selected document."
| エラー名 | 要件 |
|---|---|
skill_agent_not_regular_file |
agents/openai.yaml は通常ファイルにしてください。 |
skill_agent_unreadable |
agents/openai.yaml は読み取り可能にしてください。 |
skill_agent_invalid_utf8 |
agents/openai.yaml は有効な UTF-8 で記述してください。 |
skill_agent_yaml_malformed |
agents/openai.yaml には有効な YAML を記述してください。 |
skill_agent_top_level_wrong_type |
agents/openai.yaml のトップレベルには YAML マッピングを記述してください。 |
skill_agent_interface_missing |
interface は、agents/openai.yaml を同梱する場合に必須です。 |
skill_agent_interface_wrong_type |
interface は、agents/openai.yaml 内に YAML マッピングとして記述してください。 |
skill_agent_display_name_missing |
interface.display_name は必須で、空にはできません。 |
skill_agent_display_name_wrong_type |
interface.display_name は文字列にしてください。 |
skill_agent_display_name_empty |
interface.display_name は空にできません。 |
skill_agent_short_description_missing |
interface.short_description は必須で、空にはできません。 |
skill_agent_short_description_wrong_type |
interface.short_description は文字列にしてください。 |
skill_agent_short_description_empty |
interface.short_description は空にできません。 |
skill_agent_icon_small_wrong_type |
interface.icon_small を指定する場合は、ファイルへの空でない相対パスにしてください。 |
skill_agent_icon_small_empty |
interface.icon_small を指定する場合は、assets/icon.png のような、ファイルへの空でない相対パスにしてください。 |
skill_agent_icon_large_wrong_type |
interface.icon_large を指定する場合は、ファイルへの空でない相対パスにしてください。 |
skill_agent_icon_large_empty |
interface.icon_large を指定する場合は、assets/icon.png のような、ファイルへの空でない相対パスにしてください。 |
skill_agent_brand_color_wrong_type |
interface.brand_color を指定する場合は文字列にしてください。 |
skill_agent_brand_color_empty |
interface.brand_color を指定する場合は空にせず、#1ABCFE のように 6 桁の 16 進数で色を指定してください。 |
skill_agent_brand_color_format |
interface.brand_color には、#1ABCFE のように 6 桁の 16 進数で色を指定してください。 |
skill_agent_default_prompt_wrong_type |
interface.default_prompt を指定する場合は文字列にしてください。 |
skill_agent_default_prompt_empty |
interface.default_prompt を指定する場合は空にできません。 |
skill_agent_policy_wrong_type |
policy を指定する場合は YAML マッピングにしてください。 |
skill_agent_allow_implicit_invocation_wrong_type |
policy に指定できるのは products と allow_implicit_invocation のみです。products には CHAT、CODEX、またはその両方を含めてください。allow_implicit_invocation には true または false を指定してください。 |
skill_agent_dependencies_wrong_type |
dependencies は YAML マッピングにしてください。サポートされているのは tools のみです。 |
skill_agent_dependency_unsupported |
dependencies.tools のみが agents/openai.yaml でサポートされています。 |
アセットのパスに関するエラー
| エラー名 | 要件 |
|---|---|
declared_asset_path_wrong_type |
エラーに示されたアセットフィールドには、ファイルパスを文字列で指定してください。 |
declared_asset_path_empty |
該当するアセットフィールドは空にできません。 |
declared_asset_path_has_outer_whitespace |
該当するアセットフィールドの値の先頭と末尾に空白文字は使用できません。 |
declared_asset_path_has_control_character |
該当するアセットフィールドに U+0000~U+001F または U+007F の文字は使用できません。 |
branding_asset_path_missing_root_prefix |
該当するアセットフィールドの値は ./ で始めてください。 |
declared_asset_path_unsafe |
該当するアセットフィールドには、プラグイン内の相対パスを指定してください。絶対パス、ドライブの接頭辞、親ディレクトリに移動する .. セグメントは使用できません。 |
declared_asset_path_outside_package |
該当するアセットフィールドは、プラグイン内のファイルを参照する必要があります。 |
declared_asset_file_missing |
該当するアセットフィールドが参照しているファイルが存在しません。 |
declared_asset_not_regular_file |
該当するアセットフィールドには通常ファイルを指定してください。ディレクトリや特殊ファイルは指定できません。 |
画像のエラー
ディレクトリに掲載するブランド画像には、サポートされているファイル形式を使用し、以下のファイルサイズと画像寸法の制限を守ってください。これらの要件は、パッケージに含まれるブランドアセットに適用されます。
| エラー名 | 要件 |
|---|---|
plugin_logo_path_missing |
interface.logo は必須です。正方形の画像を指定してください。 |
plugin_composer_icon_path_missing |
interface.composerIcon は必須です。正方形の画像を指定してください。 |
image_file_unreadable |
画像ファイルは読み取り可能にしてください。 |
image_file_too_large |
画像のファイルサイズは 5 MiB 以下にしてください。 |
image_file_format_unsupported |
画像のファイル名の末尾は .png、.jpg、.jpeg、.webp、.svg のいずれかにしてください。 |
raster_image_decode_failed |
ラスター画像には、安全にデコードできる PNG、JPEG、WebP のいずれかのファイルを使用してください。 |
raster_image_extension_content_mismatch |
画像ファイルの拡張子は、検出された画像形式と一致させてください。 |
raster_image_not_square |
画像は正方形にしてください。 |
raster_image_dimensions_too_small |
画像の寸法は 48×48 ピクセル以上にしてください。 |
raster_image_dimensions_too_large |
画像の寸法は 4,096×4,096 ピクセル以下にしてください。 |
svg_xml_malformed |
SVG には UTF-8 で有効な XML を記述してください。 |
svg_root_element_invalid |
SVG のルート要素は <svg> にしてください。 |
svg_dimensions_missing |
SVG では、viewBox を数値で定義するか、width と height の両方を数値で定義してください。 |
svg_dimensions_not_numeric |
SVG の寸法は数値で指定してください。単位やパーセント表記は使用できません。 |
svg_dimensions_not_positive |
SVG の幅と高さは、正の有限数にしてください。 |
svg_dimensions_not_square |
SVG の幅と高さは同じ値にしてください。 |
svg_dimensions_too_small |
SVG の寸法は 48×48 ピクセル以上にしてください。 |
MCP サーバー参照のエラー
プラグインが登録済みの MCP サーバーを参照している場合、共通のパッケージ検証で .app.json が検証されます。提出ポータルでは、既存の連携先への参照は公開されません。Skills only からアップロードすると .app.json が削除されます。With MCP から MCP サーバーを直接提出してください。
ローカルまたはワークスペース用のパッケージでは、トップレベルの apps オブジェクトで、各 MCP サーバーのエイリアスと登録済みのサーバーエントリを対応付けます。これらの設定名とエラーコードでは、app という表記をそのまま使用します。
| エラー名 | 要件 |
|---|---|
app_manifest_unreadable |
.app.json は読み取り可能な UTF-8 テキストにしてください。 |
app_manifest_json_malformed |
.app.json の報告された行の付近に JSON の構文エラーがあります。 |
app_manifest_wrong_type |
.app.json のトップレベルには JSON オブジェクトを指定してください。 |
app_entries_missing |
apps は必須です。 |
app_entries_wrong_type |
apps はオブジェクトにしてください。 |
app_entry_wrong_type |
各サーバーエントリはオブジェクトにしてください。 |
app_id_missing |
各サーバーエントリの id は必須です。 |
app_id_wrong_type |
各サーバーエントリの id は文字列にしてください。 |
app_id_format |
各サーバーエントリの id は asdk_app_、connector_、templated_apps_ のいずれかで始め、その直後に英字または数字を置いてください。それ以降に使用できるのは、英字、数字、_、- のみです。 |
app_entry_optional_wrong_type |
サーバーエントリの optional を指定する場合は、true または false にしてください。 |
app_entry_required_wrong_type |
サーバーエントリの required を指定する場合は、true または false にしてください。 |
app_not_eligible |
ローカルまたはワークスペース用のパッケージでは、利用条件を満たし、現在利用可能な MCP サーバーを参照してください。ディレクトリに提出する場合は、With MCP から MCP サーバーを直接提出してください。 |
パッケージの警告
以下の警告は、検証時に無視または正規化されるパッケージの内容を示します。警告があっても提出できます。提出するプラグインに意図したファイルや設定が含まれているか、警告の内容を確認してください。
| 警告名 | 要件 |
|---|---|
duplicate_app_reference |
.app.json 内の各サーバー ID は 1 回だけ参照してください。重複する参照は 1 つのサーバーとして扱われます。 |
undeclared_app_manifest_ignored |
ルートの .app.json が取り込まれるのは、プラグインマニフェストの apps フィールドに ./.app.json を指定した場合のみです。 |
undeclared_mcp_manifest_ignored |
ルートの .mcp.json が取り込まれるのは、プラグインマニフェストの mcpServers フィールドに ./.mcp.json を指定した場合のみです。 |
skill_file_ignored |
skills/ 直下のファイルはスキルとして取り込まれません。各スキルは、SKILL.md を含むディレクトリに配置してください。 |
skill_symlink_ignored |
skills/ 直下のシンボリックリンクはスキルとして取り込まれません。各スキルには、SKILL.md を含む実体のあるディレクトリが必要です。 |
skill_frontmatter_adjusted |
スキルの name と description は、取り込み時に正規化されます。先頭と末尾の空白文字が削除され、内部で連続する空白文字は 1 つにまとめられます。 |
skill_metadata_ignored |
スキルのインターフェースを設定するには、interface マッピングを agents/openai.yaml に記述してください。metadata を SKILL.md に記述してもインターフェースは設定されません。 |
次のステップ
すべての検証エラーを解消したら、プラグインの提出に戻り、提出を完了してください。