Skip to content

Portable plugins

You can install a local Agent Plugins, Claude Code, or Codex plugin package into a running WAMP engine. The package can provide conforming Agent Skills and remote MCP servers without configured headers.

Pass a plugin directory or ZIP to the CLI:

Terminal window
wamp ext install ./my-plugin
# or
wamp ext install ./my-plugin.zip
wamp ext status

Install from file in Desktop accepts the same ZIP. A plugin directory is archived under its own directory name, which supplies the name for a manifest-less Claude layout. A WAMP project with extension.json still takes the usual build and pack path.

Agent Plugins use a root plugin.json with the Agent Plugins 1.0.0 or 1.1.0 schema. Claude and Codex plugins use .claude-plugin/plugin.json or .codex-plugin/plugin.json; a directory with skills/, commands/, agents/, hooks/hooks.json, or .mcp.json also qualifies without a manifest. When both Claude and Codex manifests exist, the Claude manifest takes precedence.

WAMP imports conforming skills from skills/ and declared skill paths. Each skill’s frontmatter name must match its directory. ${CLAUDE_PLUGIN_ROOT} and ${CLAUDE_SKILL_DIR} in skill Markdown are rendered to installed paths. Skills requiring ${CLAUDE_PLUGIN_DATA} or ${CLAUDE_PROJECT_DIR} are skipped.

Agent Plugins mcp.json and Claude/Codex .mcp.json or mcpServers can provide header-free Streamable HTTP or SSE servers. Remote URLs must use HTTPS, except HTTP on a loopback host. Local subprocess servers and entries with headers are reported but do not load.

Commands, agents, hooks, LSP servers, output styles, workflows, settings, channels, binaries, and Codex apps are also reported. wamp ext status and the Marketplace Installed row show the skipped parts and reasons. If a package has no conforming skill or supported MCP entry, installation is refused and lists the reasons.

WAMP writes a generated extension.json into the installed copy. Its origin field records the original format and name plus diagnostics. The original plugin manifest remains in the installed copy as provenance. An update may replace an imported plugin only when its format and original name match.