Scope / evidence
P2 feature expansion, researched 2026-09-06. Agent Bundle baseline 5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Official documentation read; no Cline installation or native execution performed.
The initial Ponytail comparison understated this host. Cline now documents native AgentPlugin packages, but explicitly limits that feature to SDK, CLI and Kanban—not the VS Code or JetBrains extension. One host-family issue must maintain separate supported profiles; do not infer IDE plugin support from the CLI implementation.
Primary specs / harness docs
Implementation must pin a host/SDK revision. The configuration overview and MCP page currently list different CLI storage locations, and older IDE hook roots differ from newer shared roots. Preserve this as a version/surface verification requirement, not a reason to write both configurations blindly.
Tier 1: native CLI/SDK package
A package declares package.json.cline.plugins with explicit .js/.ts entry paths and capability metadata. Without it, the installer can recursively discover code; that is dangerous in a composite directory containing other hosts' executable entries. Emit explicit paths.
composite-root/
package.json
cline-plugin/index.js
skills/review/SKILL.md
runtime/ # shared compiled implementation if needed
{
"name": "@example/plugin",
"type": "module",
"cline": {
"plugins": [{"paths":["./cline-plugin/index.js"],"capabilities":["tools","hooks"]}]
},
"peerDependencies": {"@cline/sdk":"*"},
"peerDependenciesMeta": {"@cline/sdk":{"optional":true}}
}
This illustrates the native package contract, not a final dependency-version recommendation. The host provides @cline/*; maintain scoped compiler-evidence for host-provided imports rather than bundling another Cline runtime or relaxing standalone self-containment.
AgentPlugin is an object with identity, optional manifest, setup and hooks. Hooks live in their own object and have semantic distinctions such as beforeRun/beforeTool/afterTool; map only proven canonical equivalents. Register tools from the canonical operation/schema rather than introducing another author-maintained tool definition. Do not use ClineCore to start a new agent loop inside the plugin.
Installation and profiles
cline plugin install npm:@example/plugin
cline plugin install https://github.com/example/plugin.git@v1.0.0
cline plugin install ./composite-root --cwd /absolute/project
cline config
Native local installation copies into the managed store; it is not automatically a live symlink. Project scope uses .cline/plugins, global uses ~/.cline/plugins; lookup supports compatibility paths. Detect actual installed entries before removing/updating and preserve plugin disabled state and independent user files. --force is not a substitute for receipt ownership.
For IDE profiles, use the supported Rules/Skills/Hooks/MCP UI and native storage contract rather than claiming the package installer loads there. Skills are separately documented as experimental and require the feature enabled; leave that consent to the operator.
Tier 2: executable hooks and MCP
Shell hook naming uses the native hook name, extensionless on POSIX and .ps1 on Windows. Older hook docs use .clinerules/hooks plus Documents/Cline/Hooks; the shared configuration guide also documents .cline/hooks and ~/.cline/hooks. Pin discovery order in native evidence before choosing an output path.
Input carries task identity, workspaceRoots and event-specific nested data. Output is JSON, for example:
{"cancel":false,"contextModification":"Declared project guidance","errorMessage":""}
Do not substitute Claude exit-code/output JSON merely because both have a PreToolUse event. Distinguish event cancellation from successful observation and preserve stderr as diagnostics. Global and project hooks can both execute; duplicate registration is a real composite concern.
MCP supports local command/argv and remote configuration. Example operator-owned entry:
{"mcpServers":{"example":{"command":"node","args":["/absolute/plugin/mcp/example.mjs"],"disabled":false,"autoApprove":[]}}}
Remote recommended transport is explicitly "type":"streamableHttp"; omitting the type may select legacy SSE. Use cline mcp or the IDE's Configure MCP Servers control to resolve actual storage. Do not copy secrets into generated files or populate autoApprove on the user's behalf.
Acceptance
No new agent orchestration, model/provider setup, task scheduler, automatic trust grant or forced IDE feature enablement is in scope.
Scope / evidence
P2 feature expansion, researched 2026-09-06. Agent Bundle baseline
5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Official documentation read; no Cline installation or native execution performed.The initial Ponytail comparison understated this host. Cline now documents native AgentPlugin packages, but explicitly limits that feature to SDK, CLI and Kanban—not the VS Code or JetBrains extension. One host-family issue must maintain separate supported profiles; do not infer IDE plugin support from the CLI implementation.
Primary specs / harness docs
Implementation must pin a host/SDK revision. The configuration overview and MCP page currently list different CLI storage locations, and older IDE hook roots differ from newer shared roots. Preserve this as a version/surface verification requirement, not a reason to write both configurations blindly.
Tier 1: native CLI/SDK package
A package declares
package.json.cline.pluginswith explicit.js/.tsentry paths and capability metadata. Without it, the installer can recursively discover code; that is dangerous in a composite directory containing other hosts' executable entries. Emit explicit paths.{ "name": "@example/plugin", "type": "module", "cline": { "plugins": [{"paths":["./cline-plugin/index.js"],"capabilities":["tools","hooks"]}] }, "peerDependencies": {"@cline/sdk":"*"}, "peerDependenciesMeta": {"@cline/sdk":{"optional":true}} }This illustrates the native package contract, not a final dependency-version recommendation. The host provides
@cline/*; maintain scoped compiler-evidence for host-provided imports rather than bundling another Cline runtime or relaxing standalone self-containment.AgentPluginis an object with identity, optional manifest, setup and hooks. Hooks live in their own object and have semantic distinctions such as beforeRun/beforeTool/afterTool; map only proven canonical equivalents. Register tools from the canonical operation/schema rather than introducing another author-maintained tool definition. Do not use ClineCore to start a new agent loop inside the plugin.Installation and profiles
Native local installation copies into the managed store; it is not automatically a live symlink. Project scope uses
.cline/plugins, global uses~/.cline/plugins; lookup supports compatibility paths. Detect actual installed entries before removing/updating and preserve plugin disabled state and independent user files.--forceis not a substitute for receipt ownership.For IDE profiles, use the supported Rules/Skills/Hooks/MCP UI and native storage contract rather than claiming the package installer loads there. Skills are separately documented as experimental and require the feature enabled; leave that consent to the operator.
Tier 2: executable hooks and MCP
Shell hook naming uses the native hook name, extensionless on POSIX and
.ps1on Windows. Older hook docs use.clinerules/hooksplus Documents/Cline/Hooks; the shared configuration guide also documents.cline/hooksand~/.cline/hooks. Pin discovery order in native evidence before choosing an output path.Input carries task identity,
workspaceRootsand event-specific nested data. Output is JSON, for example:{"cancel":false,"contextModification":"Declared project guidance","errorMessage":""}Do not substitute Claude exit-code/output JSON merely because both have a PreToolUse event. Distinguish event cancellation from successful observation and preserve stderr as diagnostics. Global and project hooks can both execute; duplicate registration is a real composite concern.
MCP supports local command/argv and remote configuration. Example operator-owned entry:
{"mcpServers":{"example":{"command":"node","args":["/absolute/plugin/mcp/example.mjs"],"disabled":false,"autoApprove":[]}}}Remote recommended transport is explicitly
"type":"streamableHttp"; omitting the type may select legacy SSE. Usecline mcpor the IDE's Configure MCP Servers control to resolve actual storage. Do not copy secrets into generated files or populate autoApprove on the user's behalf.Acceptance
cline.pluginsentry discovery prevents imports of unrelated composite JS files.No new agent orchestration, model/provider setup, task scheduler, automatic trust grant or forced IDE feature enablement is in scope.