Installing Plugins
Install plugins from file URLs, npm, git, or local sources using the CLI or programmatically.
The Cline CLI provides a plugin install command to install plugins from various sources. You can also load plugins programmatically via session config.
CLI Installation
Use the cline plugin install command to install plugins from file URLs, npm, git repositories, or local paths.
cline plugin install <source> [options]The shorthand cline plugin i works as well.
Install from a File URL
cline plugin install https://github.com/cline/cline/blob/main/sdk/examples/plugins/weather-metrics.ts
cline plugin install https://raw.githubusercontent.com/cline/cline/main/sdk/examples/plugins/weather-metrics.tsInstalls a single .ts or .js plugin file from an HTTPS URL. GitHub blob URLs are normalized to raw file downloads automatically.
Install from npm
cline plugin install --npm @scope/plugin-nameInstalls the package from the npm registry into the Cline plugin directory.
Install from Git
cline plugin install --git https://github.com/owner/repo.git
cline plugin install --git github.com/owner/repoClones the repository (shallow, with blobless filter for speed) and installs its dependencies. The .git directory is excluded from the final install.
Install from Local Source
cline plugin install ./path/to/plugin.ts # Single file
cline plugin install /absolute/path/to/dir # Directory with package.jsonSupports both files and directories. Local installs copy the source, filter out .git and node_modules, and run npm install to resolve dependencies.
Options
| Option | Description |
|---|---|
--npm | Treat the source as an npm package name |
--git | Treat the source as a git repository URL |
--force | Overwrite an existing plugin at the same path |
--json | Output results as JSON (useful for scripting) |
--cwd | Install to <path>/.cline/plugins and resolve relative local paths from <path> |
Examples
# Install a local plugin directory
cline plugin install ./my-custom-plugin
# Install a single plugin file from GitHub
cline plugin install https://github.com/cline/cline/blob/main/sdk/examples/plugins/weather-metrics.ts
# Install an npm package as a plugin
cline plugin install --npm @cline/plugin-sql
# Install from a GitHub repo
cline plugin install --git https://github.com/my-org/my-plugin.git
# Force reinstall an existing plugin
cline plugin install --force --npm @scope/plugin-name
# Use shorthand
cline plugin i --git github.com/owner/repoListing Installed Plugins
Installed plugins appear in the plugins section of your CLI config:
cline configFind All Your Plugins from your file system
Project-scoped plugins live in the .cline/plugins/ folder at your workspace root. The CLI auto-discovers plugins from this folder when you run Cline in that project.
your-project/
├── .cline/
│ └── plugins/
│ ├── my-plugin.ts
│ └── another-plugin/
└── ...To add a single-file plugin to a project, install it with --cwd:
cline plugin install https://github.com/owner/repo/blob/main/plugins/my-plugin.ts --cwd .Global plugins are discovered from ~/.cline/plugins/, and Cline may also discover plugins from the system Plugins folder. Use --cwd . when you want plugins to stay with a specific project.
Programmatic Installation
Using pluginPaths (ClineCore)
In SDK code, load plugins from file paths using the pluginPaths session config option:
import { ClineCore } from "@cline/sdk"
const cline = await ClineCore.create({ clientName: "my-app" })
await cline.start({
config: {
systemPrompt: "Analyze this project",
// ...model/runtime config
pluginPaths: ["/absolute/path/to/plugin.ts"],
},
})Plugin files must export an AgentPlugin as the default export. pluginPaths also accepts a package directory -- the SDK reads package.json and follows the cline.plugins entries, so you can npm install once inside a package and iterate without re-running cline plugin install on every edit.
Using plugins (Agent Runtime)
When using the Agent or AgentRuntime directly, pass plugin instances in the plugins array:
import { Agent } from "@cline/sdk"
import { myPlugin } from "./my-plugin"
const agent = new Agent({
providerId: "anthropic",
modelId: "claude-sonnet-4-6",
plugins: [myPlugin],
})Using extensions (ClineCore)
With ClineCore, use the extensions config array instead:
import { ClineCore } from "@cline/sdk"
const cline = await ClineCore.create({ clientName: "my-app" })
await cline.start({
config: {
systemPrompt: "Analyze customer records",
extensions: [myPlugin],
},
})Next Steps
- Learn about Plugins — Understand what plugins are and their benefits.
- Follow the Writing Plugins guide — Build and distribute your own plugin.
- Explore Plugin Examples to install ready-to-run plugin examples from the SDK repository.