Codex plugin manifest is Claude-Code-shaped — MCP won't register (PUBLISH BLOCKER)
Found by code-review-lead during #10 validation (validated against the real OpenAI Codex plugin spec via context7 + full-page fetch, not the self-attestation). Verdict: issues/10#issuecomment-4987419442.
The blocker
.codex-plugin/plugin.json is shaped like a Claude Code plugin, not a Codex plugin. It declares an inline "mcp": {servers:…} block, but Codex requires "mcpServers": "./.mcp.json" (a path pointer) and no .mcp.json exists. Net effect: the MCP server never registers → the plugin is inert (tools + Response Widget never load).
Required fix (Codex format)
Cleared clean (no change): marketplace source:url+ref:main valid for a root-located plugin; homepage/repo resolve; all 4 SKILL.md valid + no hardcoded keys; repo-wide grep clean.
⚠️ OPEN DESIGN QUESTION (dual-client) — gated on Sean
The plugin must work in BOTH the ChatGPT/Codex desktop app AND Claude Desktop. The current inline-mcp shape IS the Claude-Code shape. Does dropping it break the Claude path? Determine whether one manifest can dual-target, or whether Codex vs Claude need distinct packaging. Resolve before restructuring.
⚠️ DECONFLICT (before ANY edit) — gated on Sean
This is a prime candidate for WHY the ChatGPT/Codex app rejected the plugin. The chatgpt-submission team (separate worktree) is investigating that rejection and may already be editing plugin.json. Confirm ownership before two teams touch the same manifest.
Constraints
Hard gates: no minds-ai-co/webapp edits; no publish; no release tag. Fix lands as a DRAFT PR (stays draft; only Sean un-drafts). Owner TBD pending deconfliction (default: frontend-lead as plugin owner; code-review-lead re-verifies — keep author≠reviewer).
Codex plugin manifest is Claude-Code-shaped — MCP won't register (PUBLISH BLOCKER)
Found by code-review-lead during #10 validation (validated against the real OpenAI Codex plugin spec via context7 + full-page fetch, not the self-attestation). Verdict:
issues/10#issuecomment-4987419442.The blocker
.codex-plugin/plugin.jsonis shaped like a Claude Code plugin, not a Codex plugin. It declares an inline"mcp": {servers:…}block, but Codex requires"mcpServers": "./.mcp.json"(a path pointer) and no.mcp.jsonexists. Net effect: the MCP server never registers → the plugin is inert (tools + Response Widget never load).Required fix (Codex format)
.mcp.json— serverminds, streamable-http, urlhttps://getminds.ai/mcp, bearer token via the.mcp.jsonmechanism."mcpServers": "./.mcp.json", DROP the inline"mcp"block."config"secret block into.mcp.json(not a Codex top-level field).commands/+"commands": Codex has no commands concept → those Claude-Code files are dead. Remove, OR keep only if the Claude-Desktop target needs them (see design question).interfaceobject (composerIcon / logo / privacyPolicyURL);iconUrlis not a Codex field.descriptionto ≤200 chars (currently 206).codex plugin installsmoke test → MCP registers + tools list. Needs Codex installed = Sean-gated capture.Cleared clean (no change): marketplace
source:url+ref:mainvalid for a root-located plugin; homepage/repo resolve; all 4 SKILL.md valid + no hardcoded keys; repo-wide grep clean.The plugin must work in BOTH the ChatGPT/Codex desktop app AND Claude Desktop. The current inline-
mcpshape IS the Claude-Code shape. Does dropping it break the Claude path? Determine whether one manifest can dual-target, or whether Codex vs Claude need distinct packaging. Resolve before restructuring.This is a prime candidate for WHY the ChatGPT/Codex app rejected the plugin. The chatgpt-submission team (separate worktree) is investigating that rejection and may already be editing
plugin.json. Confirm ownership before two teams touch the same manifest.Constraints
Hard gates: no
minds-ai-co/webappedits; no publish; no release tag. Fix lands as a DRAFT PR (stays draft; only Sean un-drafts). Owner TBD pending deconfliction (default: frontend-lead as plugin owner; code-review-lead re-verifies — keep author≠reviewer).