Skip to content

Plugins

Plugins extend Lime with new tools, hooks, slash commands, MCP servers, and skills. Three kinds:

KindDescription
builtinShipped with the Lime binary itself.
bundledPre-installed in the Lime bundle directory next to the binary.
externalInstalled from a local path.

Manifest

Each plugin lives in a directory containing a .lime-plugin/plugin.json:

{
"id": "my-plugin",
"name": "My Plugin",
"version": "0.1.0",
"description": "Adds a /my-command slash and a custom MCP server.",
"author": "you@example.com",
"permissions": {
"tools": ["read_file", "write_file"]
},
"hooks": {
"PreToolUse": ["./bin/audit"]
},
"commands": [
{ "name": "my-command", "path": "./commands/my-command.md" }
],
"mcpServers": {
"my-tooling": {
"type": "stdio",
"command": "./bin/my-tooling-mcp"
}
},
"skills": [
{ "id": "review-pr", "path": "./skills/review-pr/skill.json" }
]
}

Fields:

  • permissions.tools — required tool surface; surfaced to the user during install.
  • hooks — same shape as the global hooks section.
  • commands — register custom slash commands inside the plugin directory.
  • mcpServers — plugin-delivered MCP servers (loaded as if you’d put them in your settings file).
  • skills — declare skills the plugin contributes.

Manage plugins

Plugin management lives behind slash commands inside the REPL:

/plugin list
/plugin install /path/to/my-plugin
/plugin enable my-plugin
/plugin disable my-plugin
/plugin uninstall <id>
/plugin update <id>

/plugins is an alias for /plugin.

Where plugins are discovered

Lime scans, in this order:

  1. Built-in registry (compiled into the binary).
  2. Bundled directory (next to the lime binary, configurable via plugins.bundledRoot).
  3. External directories listed in plugins.externalDirectories.
  4. The install root (plugins.installRoot, default ~/.lime/plugins/), where /plugin install writes.

Enable state is per-user under enabledPlugins (or plugins.enabled).

Marketplace

plugins.marketplaceUrl (and plugins.extraMarketplaceUrls) configure where /plugin install <name> looks for hosted plugins. Auto-update on launch is gated by plugins.marketplaceAutoUpdates (default false).

Sandboxing plugin code

Plugins inherit the runtime’s sandbox and permission model. A plugin’s hook scripts run under the same constraints as any other tool call — FullAccess operations are sandboxed, WriteWorkspace operations prompt for approval, and so on.