Review times
← Gemini CLI Extensions
Rejection library

Why Gemini CLI extensions get rejected

The reasons that apply to Gemini CLI extensions, what causes each one, and how to fix it before you submit.

2 reasons
0 rejections reported, 0 with a reason

How rejections arriveThere is no review queue: a daily crawler lists public repositories with the gemini-cli-extension topic that pass validation, and says nothing when it skips one.

Free, nothing stored. From a terminal: npx mcplane preflight --url https://your-server/mcp (mcplane docs).

At a glance

ReasonApplies toReportsCaught by
Plugin repository problemClaude Plugins, Cursor Marketplace, Grok Plugins, Gemini CLI Extensions, Docker MCP Catalog–mcplane CLI
No reason givenChatGPT Plugins, Claude Plugins, Grok Plugins, Docker MCP Catalog, Gemini CLI Extensions, Cursor Marketplace–By hand

Plugin package

Applies to Claude Plugins · Cursor Marketplace · Grok Plugins · Gemini CLI Extensions · Docker MCP Catalog

What reviewers and the rules say

“Put a README of at least 40 words in the plugin folder”
Claude Plugins · Anthropic’s plugin checklist (blocks if missing)
“main, v1.2.3, and abbreviated SHAs are rejected by the validator.”
Grok Plugins · xAI’s contributing guide
“looks like there’s a failure in the CI job that ran, you’ll need to fix that first”
Docker MCP Catalog · A Docker maintainer on a pull request
“(MIT or Apache 2 are great, GPL is not).”
Docker MCP Catalog · Docker’s contributing guide

Stores that take plugins read them from a public GitHub repository at a pinned commit, and validate it before anyone reviews it. A private repository, a missing manifest, README or licence, a branch instead of a commit, or a failing CI run leaves nothing to review. Gemini CLI’s gallery skips a repository that fails validation without saying so.

How to fix it

  • Host the plugin in its own public GitHub repository. A private monorepo can’t be pinned.
  • Claude: add .claude-plugin/plugin.json, a README of at least 40 words and a LICENSE, then run claude plugin validate --strict.
  • Don’t leave a SKILL.md at the root beside a skills/ folder. Claude loads it as a single-skill plugin and hides the rest.
  • Grok: pin a full 40-character commit SHA, not main or a tag.
  • Docker: use a licence that lets people run the server, such as MIT or Apache 2.0, and get CI green before asking for review.
  • Gemini CLI: put gemini-extension.json at the root and add the gemini-cli-extension topic.

Caught by

The store itself

Applies to ChatGPT Plugins · Claude Plugins · Grok Plugins · Docker MCP Catalog · Gemini CLI Extensions · Cursor Marketplace

What reviewers and the rules say

The rejection email said “Please see the details below:”, followed by nothing.
ChatGPT Plugins · A developer on the OpenAI developer forum (paraphrased)
The submission portal only shows “Rejected” with no notes.
Claude Plugins · A developer in Anthropic’s plugin issue tracker (paraphrased)

Some reviews end without an explanation. ChatGPT rejection emails have arrived with an empty details section, Claude’s old plugin portal showed “Rejected” with no notes, Grok and Docker maintainers often close pull requests without a comment, Gemini CLI’s crawler skips repositories silently, and Cursor’s publish form sends no confirmation.

How to fix it

  • ChatGPT: reply to the rejection email with your case ID and ask for the specific finding.
  • On a pull request, ask what would make it acceptable.
  • Rule out the mechanical causes with a server check before you resubmit.

Of the 6 pull requests maintainers closed in the Grok and Docker queues we track, none had a comment saying why (checked 1 October).

Caught by

No script can see this one. A server check rules out the mechanical causes first.

How this is counted

Reports count rejected submissions where the developer picked the reason, or wrote a note that names it. Pull requests closed in the Grok and Docker queues count as rejections, but carry no reason.

The reasons themselves come from rejection emails developers have shared, public posts, the stores’ own docs and our own submissions. Each check is open source in mcplane, and the server check runs the ones marked “Server check”. Tool checks need tools that list without sign-in; for a server behind sign-in, run mcplane with --token.

Rejected?

Add it with the reason. The next developer sees it here, and the store’s review times include it.

Add your rejection

Already reported it as waiting? Open your private link and mark it rejected; the reason is on the same form.