plugin-package
/plugin-package
Build the two store packages for one MCP server from a single listing source - the ChatGPT plugin ZIP (plugin.json with the com.openai interface, review test cases and publication blocks, mcp.json with the OAuth settings, an onboarding skill, icons) and Claude's plugin bundle and connector-portal text - and check the ZIP for the mistakes the OpenAI upload rejects. Use when preparing a ChatGPT plugin ZIP or a Claude plugin, when the OpenAI portal says "Invalid plugin package" or "Update the MCP authentication settings", when a brand-colour or contrast finding appears, or when listing text needs
- Author
- saurabhyadavz ↗
- Repository
- publish-mcp-server-claude-chatgpt ↗
- Licence
- MIT
- Last repository change
- 07.11.2026
Assessment and security
- Files in this package
- 3
- Scripts
- 1
- HTML comments
- 0
- URLs in SKILL.md
- 3
No signals detected. Repository changed on 07.11.2026, without references to retired models or APIs.
MIT, open: use and modify while retaining author attribution.
- 1 scripts in this package. Review them before installing, as Claude may execute them.
Scripts: scripts/check_chatgpt_package.py
What it does and when to use it
Build the two store packages for one MCP server from a single listing source - the ChatGPT plugin ZIP (plugin.json with the com.openai interface, review test cases and publication blocks, mcp.json with the OAuth settings, an onboarding skill, icons) and Claude's plugin bundle and connector-portal text - and check the ZIP for the mistakes the OpenAI upload rejects. Use when preparing a ChatGPT plugin ZIP or a Claude plugin, when the OpenAI portal says "Invalid plugin package" or "Update the MCP authentication settings", when a brand-colour or contrast finding appears, or when listing text needs
Triggers from the description
Original author description
Build the two store packages for one MCP server from a single listing source - the ChatGPT plugin ZIP (plugin.json with the com.openai interface, review test cases and publication blocks, mcp.json with the OAuth settings, an onboarding skill, icons) and Claude's plugin bundle and connector-portal text - and check the ZIP for the mistakes the OpenAI upload rejects. Use when preparing a ChatGPT plugin ZIP or a Claude plugin, when the OpenAI portal says "Invalid plugin package" or "Update the MCP authentication settings", when a brand-colour or contrast finding appears, or when listing text needs
How it works
- The ChatGPT ZIP
- Claude
- Words that fit both
SKILL.md preview
---
name: plugin-package
description: Build the two store packages for one MCP server from a single listing source - the ChatGPT plugin ZIP (plugin.json with the com.openai interface, review test cases and publication blocks, mcp.json with the OAuth settings, an onboarding skill, icons) and Claude's plugin bundle and connector-portal text - and check the ZIP for the mistakes the OpenAI upload rejects. Use when preparing a ChatGPT plugin ZIP or a Claude plugin, when the OpenAI portal says "Invalid plugin package" or "Update the MCP authentication settings", when a brand-colour or contrast finding appears, or when listing text needs to fit each store's limits.
license: MIT
metadata:
author: Saurabh Yadav
version: "0.1.0"
---
# Two packages from one listing source
Keep every word of the listing (names, descriptions, prompts, test cases, URLs, colours) in one
file, for example `plugin/listing.json`, and generate both packages from it with a script. Put
the store's name in the shared description as a placeholder (`{app}` → "ChatGPT" or "Claude").
Re-run the generator in CI with a `--check` flag that fails when a package is out of date.
## The ChatGPT ZIP
Upload at platform.openai.com/plugins. The ZIP's root holds:
```
plugin.json $schema https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
mcp.json the server and its auth
skills/get-started/SKILL.md an onboarding skill (name must match the folder)
assets/icon.png icon-dark.png logo.png
```
Shapes and limits are in `references/chatgpt-package.md`. The checks that the upload enforces
and that bit us, all caught by `scripts/check_chatgpt_package.py`:
- `review.test_cases.positive[].tools_triggered` is **one string**, names joined by `", "`,
not a list ("Input should be a valid string").
- `mcp.json` `auth` needs **`authorizationUrl` and `tokenUrl`** beside `client: {mode: "cimd"}`
("Declare both authorizationUrl and tokenUrl for OAuth"), even though discovery gives them.
- **Brand colours need contrast**: dark vs `#212121` at least 2:1 ("Dark brand color must have at
least 2:1 contrast against #212121"); check the light one against white too.
- **The demo video is required to submit for review.** Leave an empty `demo_recording_url` out
(the upload rejects it), and tell the user they still need the video link before submitting:
in `plugin.json`, or pasted in the portal's Supporting content step.
- Exactly five positive and three negative test cases for submission; `developerName` equal to
your verified identity; `displayName` and `shortDescription` at most 30 characters; up to three
`defaultPrompt`s of at most 128.
- No `commerce` in the plugin: purchases stay on your website.
```
python3 scripts/check_chatgpt_package.py upsc-grade-chatgpt.zip # or a folder
python3 scripts/check_chatgpt_package.py dist/chatgpt --server https://api.example.com
```
`--server` also fetches your authorization-server metadata and checks the ZIP's
`authorizationUrl` and `tokenUrl` match it.
## Claude
Claude has two listings that can point at the same server:
- **The connector** (claude.ai/directory/manage → Submit → MCP connector): typed into the
portal. Generate its text (one-liner, description, use cases, test steps) from the listing
source into a markdown file you copy from; see `submit-to-claude`.
- **A plugin bundle** (optional): a public GitHub repo with `.claude-plugin/plugin.json`,
`.mcp.json` (`{"mcpServers": {"<name>": {"type": "http", "url": "https://…/mcp"}}}`), a skill,
a README of at least 40 words that says what it does, how to use it and what data it sends,
and a LICENSE. No symlinks, no secrets.
## Words that fit both
- ChatGPT: `shortDescription` 30 characters ("Your exam second brain"), `longDescription` up to
4,000, capabilities up to 20 lines of 120.
- Claude: one-liner up to 200, but the directory card shows about 90 before cutting it;
description up to 2,000.
- Claims must match what the tools do: reviewers compare them. Count things on real data (a
"20,000 answers" claim that counts empty rows is wrong), and say where data comes from
("from the official key wherever one is published").
- Leave affiliation disclaimers and marketing superlatives out of the one-liner; keep facts.
Files in this package (3)
- SKILL.md 4 KB
- references/chatgpt-package.md 3 KB
- scripts/check_chatgpt_package.py 9 KB
Versions
The database has no other skills named plugin-package.
Database snapshot: 13.11.2026 · package version 6e50fe93414b (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 90submit-to-chatgpt
Walk through publishing an MCP server as a ChatGPT plugin at platform.openai.com/plugins, step by step - testing it first as a custom MCP server in ChatGPT, uploading the ZIP, connecting the server, the domain-verification token at /.well-known/openai-apps-challenge, reviewer… - 90submit-to-claude
Walk through listing a remote MCP server in Claude's connector directory at claude.ai/directory/manage - testing it first as a custom connector, letting Anthropic's servers through bot protection, the portal's ten steps (connection, tools, listing copy that fits the directory… - 100package-author
当用户要把手头的工具打包/标准化成 pinvou 插件包时使用——包括纯技能(SKILL.md)、纯 MCP 服务或它们的组合包。用户说"打包/做成插件包/标准化这个工具/给我一个能上传的标准包/写 plugin.json/加个图标"等,或给了散乱脚本/目录要整理成可上传 zip 时,用本技能把内容规范成 plugin-protocol 标准包(补 plugin.json、补 mcp/manifest.json、补 SKILL.md、补图标、校验命名)。 - 90submit-plugin
Submit an AI plugin to the ChatGPT, Claude or Cursor stores: a store-ready kit with first-listing copy, assets, reviewer answers and the choices that can't change later, such as MCP origin, slug and countries. Use when preparing a plugin for submission, checking a repo is ready… - 100wp-plugin-zip
Builds and checks WordPress plugin and theme .zip packages so they install and activate cleanly. Use it whenever you package a WordPress plugin or theme for upload, a release or a client, and whenever the user reports "Plugin file does not exist", "The package could not be… - 90prepare-plugin-submission
Guide a user through preparing an existing plugin for public submission, including review and publication metadata, listing, examples, demo, and reviewer access. Use when the user wants to get ready to submit, create a submission-ready ZIP, submit, or publicly release a plugin.