feat(codex): repo marketplace so Codex users can install the plugin before the directory lists it

Merged
LI
2mo ago
+42-3

Why

Codex users have no way to install the TesterArmy plugin until the OpenAI Plugins Directory lists it, and that submission (Linear GTM-82) still waits on Business verification, a reviewer account and app PR #2409. Codex also reads plugin catalogues from GitHub repos: .agents/plugins/marketplace.json at the repo root, added with codex plugin marketplace add owner/repo, and the ChatGPT desktop app shows the same file as a source in its Plugins tab. This is the Codex twin of the Claude Code marketplace this repo already is.

What changes

.agents/plugins/marketplace.json: one plugin, testerarmy, source ./ (the root already carries .codex-plugin/plugin.json and the portable plugin.json), category Developer Tools, sign-in on install. Marketplace name testerarmy-agent-skills, the same as the Claude marketplace, so the install command reads the same on both:

codex plugin marketplace add tester-army/cli
codex plugin add testerarmy@testerarmy-agent-skills

scripts/check-plugin-manifests.sh and validate-plugin.yml: the new file is parsed, must name the same plugin as plugin.json, point at ./, and share the Claude marketplace name. CI runs on PRs touching .agents/plugins/**.

README: the two Codex commands next to the Claude Code ones, plus the sign-in note.

Verification

Tested with codex-cli 0.153.4 on this branch:

  • codex plugin marketplace add <local checkout> and codex plugin marketplace add lil-bsz/cli --ref codex/repo-marketplace (GitHub source) both register the marketplace
  • codex plugin list shows testerarmy@testerarmy-agent-skills 1.0.0
  • codex plugin add testerarmy@testerarmy-agent-skills installs to ~/.codex/plugins/cache/testerarmy-agent-skills/testerarmy/1.0.0 and codex mcp list then shows testerarmy https://tester.army/mcp (not logged in until codex mcp login testerarmy)
  • codex plugin remove and marketplace remove clean up fully
  • consistency script passes, and fails when the marketplace names a different plugin (checked); actionlint clean

After merge

Nothing to configure. The two commands above work for anyone with Codex. When the directory listing goes live, the repo marketplace keeps working alongside it.

🤖 Generated with Claude Code