# Portable plugins Install Agent Plugins and Claude or Codex plugin directories as WAMP extensions. Source: https://docs.vampikez.fun/build/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. ## Install a package Pass a plugin directory or ZIP to the CLI: ```bash 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. ## What loads 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.