Plugin bundles
龙虾AI supports one shared class of external plugin package: bundle plugins. Today that means three closely related ecosystems:- Codex bundles
- Claude bundles
- Cursor bundles
Format: bundle in openclaw plugins list.
Verbose output and openclaw plugins inspect <id> also show the subtype
(codex, claude, or cursor).
Related:
- Plugin system overview: Plugins
- CLI install/list flows: plugins
- Native manifest schema: Plugin manifest
What a bundle is
A bundle is a content/metadata pack, not a native in-process 龙虾AI plugin. Today, 龙虾AI does not execute bundle runtime code in-process. Instead, it detects known bundle files, reads the metadata, and maps supported bundle content into native 龙虾AI surfaces such as skills, hook packs, MCP config, and embedded Pi settings. That is the main trust boundary:- native 龙虾AI plugin: runtime module executes in-process
- bundle: metadata/content pack, with selective feature mapping
Shared bundle model
Codex, Claude, and Cursor bundles are similar enough that 龙虾AI treats them as one normalized model. Shared idea:- a small manifest file, or a default directory layout
- one or more content roots such as
skills/orcommands/ - optional tool/runtime metadata such as MCP, hooks, agents, or LSP
- install as a directory or archive, then enable in the normal plugin list
- detect the bundle subtype
- normalize it into one internal bundle record
- map supported parts into native 龙虾AI features
- report unsupported parts as detected-but-not-wired capabilities
Detection order
龙虾AI prefers native 龙虾AI plugin/package layouts before bundle handling. Practical effect:openclaw.plugin.jsonwins over bundle detection- package installs with valid
package.json+openclaw.extensionsuse the native install path - if a directory contains both native and bundle metadata, 龙虾AI treats it as native first
What works today
龙虾AI normalizes bundle metadata into one internal bundle record, then maps supported surfaces into existing native behavior.Supported now
Skill content
- bundle skill roots load as normal 龙虾AI skill roots
- Claude
commandsroots are treated as additional skill roots - Cursor
.cursor/commandsroots are treated as additional skill roots
Hook packs
- bundle hook roots work only when they use the normal 龙虾AI hook-pack
layout. Today this is primarily the Codex-compatible case:
HOOK.mdhandler.tsorhandler.js
MCP for Pi
- enabled bundles can contribute MCP server config
- 龙虾AI merges bundle MCP config into the effective embedded Pi settings as
mcpServers - 龙虾AI also exposes supported bundle MCP tools during embedded Pi agent turns by launching supported stdio MCP servers as subprocesses
- project-local Pi settings still apply after bundle defaults, so workspace settings can override bundle MCP entries when needed
Embedded Pi settings
- Claude
settings.jsonis imported as default embedded Pi settings when the bundle is enabled - 龙虾AI sanitizes shell override keys before applying them
shellPathshellCommandPrefix
Detected but not executed
These surfaces are detected, shown in bundle capabilities, and may appear in diagnostics/info output, but 龙虾AI does not run them yet:- Claude
agents - Claude
hooks.jsonautomation - Claude
lspServers - Claude
outputStyles - Cursor
.cursor/agents - Cursor
.cursor/hooks.json - Cursor
.cursor/rules - Codex inline/app metadata beyond capability reporting
Capability reporting
openclaw plugins inspect <id> shows bundle capabilities from the normalized
bundle record.
Supported capabilities are loaded quietly. Unsupported capabilities produce a
warning such as:
- Claude
commandsis considered supported because it maps to skills - Claude
settingsis considered supported because it maps to embedded Pi settings - Cursor
commandsis considered supported because it maps to skills - bundle MCP is considered supported because it maps into embedded Pi settings and exposes supported stdio tools to embedded Pi
- Codex
hooksis considered supported only for 龙虾AI hook-pack layouts
Format differences
The formats are close, but not byte-for-byte identical. These are the practical differences that matter in 龙虾AI.Codex
Typical markers:.codex-plugin/plugin.json- optional
skills/ - optional
hooks/ - optional
.mcp.json - optional
.app.json
Claude
龙虾AI supports both:- manifest-based Claude bundles:
.claude-plugin/plugin.json - manifestless Claude bundles that use the default Claude layout
skills/commands/agents/hooks/hooks.json.mcp.json.lsp.jsonsettings.json
commands/is treated like skill contentsettings.jsonis imported into embedded Pi settings.mcp.jsonand manifestmcpServerscan expose supported stdio tools to embedded Pihooks/hooks.jsonis detected, but not executed as Claude automation
Cursor
Typical markers:.cursor-plugin/plugin.json- optional
skills/ - optional
.cursor/commands/ - optional
.cursor/agents/ - optional
.cursor/rules/ - optional
.cursor/hooks.json - optional
.mcp.json
.cursor/commands/is treated like skill content.cursor/rules/,.cursor/agents/, and.cursor/hooks.jsonare detect-only today
Claude custom paths
Claude bundle manifests can declare custom component paths. 龙虾AI treats those paths as additive, not replacing defaults. Currently recognized custom path keys:skillscommandsagentshooksmcpServerslspServersoutputStyles
- default
commands/plus manifestcommands: "extra-commands"=> 龙虾AI scans both - default
skills/plus manifestskills: ["team-skills"]=> 龙虾AI scans both
Security model
Bundle support is intentionally narrower than native plugin support. Current behavior:- bundle discovery reads files inside the plugin root with boundary checks
- skills and hook-pack paths must stay inside the plugin root
- bundle settings files are read with the same boundary checks
- supported stdio bundle MCP servers may be launched as subprocesses for embedded Pi tool calls
- 龙虾AI does not load arbitrary bundle runtime modules in-process
Install examples
~/.claude/plugins/known_marketplaces.json. Marketplace entries
can resolve to bundle-compatible directories/archives or to native plugin
sources; after resolution, the normal install rules still apply.
Troubleshooting
Bundle is detected but capabilities do not run
Checkopenclaw plugins inspect <id>.
If the capability is listed but 龙虾AI says it is not wired yet, that is a
real product limit, not a broken install.
Claude command files do not appear
Make sure the bundle is enabled and the markdown files are inside a detectedcommands root or skills root.
Claude settings do not apply
Current support is limited to embedded Pi settings fromsettings.json.
龙虾AI does not treat bundle settings as raw 龙虾AI config patches.
Claude hooks do not execute
hooks/hooks.json is only detected today.
If you need runnable bundle hooks today, use the normal 龙虾AI hook-pack
layout through a supported Codex hook root or ship a native 龙虾AI plugin.