{"id":22396,"plugin_id":"plugins_6ab0aed0959c8191b18c646c14b0244c","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:17:14.891Z","digest":"268500659b6d4c6ed01cd684d31b854c54d1fba172a478acb70831c0fd937308","against":null,"payload":{"name":"submission-preflight","description":"Run a deterministic preflight for OpenAI plugin manifests, assets, skills, prompts, names, and ZIP structure before dashboard upload.","included_files":[],"skill_md_contents":"---\nname: submission-preflight\ndescription: Run a deterministic preflight for OpenAI plugin manifests, assets, skills, prompts, names, and ZIP structure before dashboard upload.\n---\n\n# Submission preflight\n\nUse this skill before every OpenAI dashboard upload or version update.\n\n## Checks\n\n- Parse `.codex-plugin/plugin.json` and confirm the package name matches the outer folder.\n- Confirm `interface.defaultPrompt` is an array containing at most three non-empty strings.\n- Confirm the subtitle is no more than 30 characters and describes a concrete user benefit.\n- For every skill, confirm frontmatter exists, the skill name is normalized, and the combined plugin-name plus skill-name length is within the platform limit.\n- Resolve `interface.logo` and `interface.composerIcon`; require square PNG files and verify directory and composer minimum dimensions.\n- Confirm every referenced skill and asset exists.\n- Confirm the ZIP has `.codex-plugin/plugin.json` at its root and contains no accidental parent directory, secrets, or macOS metadata.\n- Run the plugin validator and record its exact result.\n\n## Issue ledger\n\nFor every failure, record the observed error, source path and field, smallest fix, validation result, and remaining status. Do not move to dashboard upload while a preflight failure remains.\n\n## Update invariant\n\nWhen updating an existing published plugin, preserve its plugin ID, package name, developer identity, public metadata, branding, and directory identity. Only upload a newly versioned package after all checks pass.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}