Package a plugin
OverviewShip your skills and MCP connection together in a native plugin package.
A plugin packages your skills and the connection to your MCP server. Flow generates Claude Code
and portable Agent Plugins packages from the same agent/skills/ folder.
Choose a host
Section titled “Choose a host”Generate the Claude package and load it locally.
ChatGPTConnect your server and prepare a plugin for ChatGPT.
CodexPackage your tools and workflow skills for Codex.
Other Agent Plugins hostsUse the portable format in a compatible host.
Before you start
Section titled “Before you start”You need an MCP server, a URL the host can reach, and any skills in agent/skills/.
The packages connect to your running server; generating them does not deploy it.
Generate and check the packages
Section titled “Generate and check the packages”Write the plugin output
Run this in the agent’s folder, replacing the example URL with your server’s URL:
npx @flow-engineer/flow plugin \ --server https://agent.example.com/mcp \ --out pluginsAdd --name my-product to choose a plugin name instead of the package name.
Validate it
npx @flow-engineer/flow check --plugin pluginsCheck it worked: both package folders exist and the check reports no stale or unsupported skill references.
Load it in your host
Choose the package format your host supports and follow that host’s installation flow. Try a request that uses one of your skills and tools.
Check it worked: the host loads the skill once and calls a tool through /mcp/plugin.
Directory publication, where available, has its own submission and review process.
Generated files
Section titled “Generated files”.claude-plugin/ plugin.json.mcp.jsonskills/ <name>/SKILL.mdThe MCP connection uses type: "http" and points to /mcp/plugin.
plugin.jsonmcp.jsonskills/ <name>/SKILL.mdThis uses Agent Plugins 1.0.0 and type: "streamable-http". ChatGPT and Codex accept the
portable format; installation and distribution depend on the host.
Why two MCP endpoints?
Section titled “Why two MCP endpoints?”| Endpoint | What it delivers | Use it with |
|---|---|---|
/mcp | Tools, skill descriptions and read_skill | A standalone MCP connection |
/mcp/plugin | Tools only | A plugin that already ships the skill files |
Both use the same tools, authentication and descriptor overrides. This gives the host one copy of each skill.
Change the plugin endpoint
Disable it with mcpServer({ ..., plugin: false }), or change it with
plugin: { path: "/native" }. handle.plugin exposes its path and descriptors.
For a custom route, pass its URL ending in /plugin to the generator or update the generated
MCP configuration. The server’s instructions override and extend handlers apply to both paths.
Keep it in sync
Section titled “Keep it in sync”Regenerate after changing a skill or one of its assets. check --plugin compares content hashes,
so checking out a file cannot make a stale package look current.
Format references: Agent Plugins 1.0.0, OpenAI plugin packaging, and Claude Code plugins. The generator’s formats were checked on 18 October 2026.
Thanks, we read every comment.