Repository navigation
fix: ship the directory bundle under the plugin name the portal assigned - #71
Merged
Merged
Conversation
The 1.0.0 and 1.1.0 zips had no `.codex-plugin/plugin.json`, so the OpenAI plugin directory named the published listing after its app identifier, `app-6a3d93b924488191bdb7eb40fc4219e6`. The 1.2.0 zip was the first one with a manifest, and the portal rejected it with `plugin_name_mismatch`: an update must use the same `name` as the published plugin. OpenAI support (reference 17133460) confirmed that a published plugin cannot be renamed; the only other path is a second listing. The packager now writes the directory's name into the bundle manifest and the bundle gate checks it. The repository manifest keeps `onesignal`, so the Codex marketplace install still lists the skills as `onesignal:setup`. A directory install lists them under the app identifier. AGENT.md and the README record the difference.
sherwinski
requested review from
abdulraqeeb33,
fadi-george,
kalley and
nan-li
and removed request for
abdulraqeeb33
October 14, 2026 19:39
fadi-george
approved these changes
Oct 14, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One Line Summary
scripts/package_directory_bundle.pynow writesname: "app-6a3d93b924488191bdb7eb40fc4219e6"into the bundle manifest, so the OpenAI plugin directory accepts the zip as an update to the published OneSignal listing.Motivation
The upload of the 1.2.0 zip failed with
plugin_name_mismatch: "Plugin name must match the existing plugin.codex-plugin/plugin.json. Changenamefrom "onesignal" to "app-6a3d93b924488191bdb7eb40fc4219e6", then upload the ZIP again."The 1.0.0 and 1.1.0 zips had no manifest, so the portal generated one for the published package and used the app identifier as
name. The release zip downloaded from the portal confirms this: its manifest has"name": "app-6a3d93b924488191bdb7eb40fc4219e6", and its skill folders are identical to the 1.1.0 bundle (diff -rqreports no differences). The 1.2.0 zip was the first one with a manifest, so it was the first one the check could reject.OpenAI support confirmed that the portal does not rename a published plugin. The alternatives were to keep the assigned name or to publish a second listing. A second listing would not keep the installs or the review history, and its first upload would need to re-submit the MCP server. This change keeps the existing listing.
Scope
scripts/package_directory_bundle.py: aDIRECTORY_PLUGIN_NAMEconstant;bundle_manifestsetsnameto it;check_bundle_manifestrejects a bundle whosenamediffers. The source gate still requires a kebab-casenamein the repository manifest, and thebad-plugin-nameself-test still covers that..codex-plugin/plugin.jsonkeepsname: "onesignal", so the Codex marketplace install (codex plugin add onesignal@onesignal) still lists the skills asonesignal:setup. A directory install lists them asapp-6a3d93b924488191bdb7eb40fc4219e6:setup. This is the namespace the published 1.1.0 listing shows today, so the directory users see no change.AGENT.md: the manifest row and the bundle section state that the bundle ships under the identifier of the published listing; the local-load note shows the namespace Codex lists. The history behind the identifier stays in this PR, not in the repo.README.md: unchanged. The namespace note can go in once the identifier is a settled decision.main).Testing
python3 -m py_compile scripts/*.pypassed.python3 scripts/package_directory_bundle.py --checkprintedbundle check passed (version 1.2.0; nothing written).python3 scripts/package_directory_bundle.py --self-testpassed all 16 cases.python3 scripts/package_directory_bundle.py --out /tmp/bundlebuilt a bundle whose manifest hasnameapp-6a3d93b924488191bdb7eb40fc4219e6,version1.2.0,skills./skills/, and nomcpServers. The repository manifest still readsonesignal.Affected code
Checklist