POC: runnable extension skeleton that drives @cline/sdk #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
A standalone VS Code extension that activates in the Extension Development Host
and runs one trivial Cline interaction via
@cline/sdk— proving Approach Aand giving every later coauthoring feature a place to land. A walking skeleton, not
a shippable product.
Problem / pain
The whole Epic rests on one unproven bet: that our own standalone extension
can programmatically drive the Cline agent through
@cline/sdk. Until that isdemonstrated end-to-end — repo builds → F5 launches the extension → a command
invokes the SDK → a result comes back — there is no skeleton to build
coauthoring into and the architecture is unvalidated. Every later Feature is
blocked on this foundation existing.
Who feels it
The dev team building the plugin (this de-risks the architecture and unblocks
all subsequent work); ultimately the coauthoring user who benefits from a sound
foundation.
Desired outcome / value
A known-good starting point: the repo builds, the extension loads, and a
command invokes
@cline/sdkand surfaces a result — so subsequent Features(threads, attribution, propose/accept) have a foundation, and the
@cline/sdkapproach is confirmed early (or we learn early that it isn't viable, while the
cost of changing course is still near zero).
Acceptance — "done right"
package.json(publisher,engines.vscode, one contributed command + activation),tsconfig.json, anesbuild bundle, ESLint,
.vscode/launch.json.active.
@cline/sdkto run one trivial interaction and surfaces the result (a notification or
output-channel line). If a live agent turn needs credentials not present in CI,
it is acceptable for the smoke path to instantiate the SDK and confirm the
integration surface (version/connectivity) instead — the point is the wiring.
pure proof of concept + skeleton.
Scope / non-goals
In scope: the extension scaffold;
@cline/sdkdeclared and wired; oneSDK-driven command; the build / test / run (F5) loop; a one-line README on how to
run it.
Out of scope: any coauthoring (threads, attribution, diff flow); packaging /
marketplace publishing; auth/secret hardening beyond what a local dev run needs;
multi-file or agent choreography.
Assumptions · constraints · dependencies
@cline/sdkis installable via npm and runs under Node ≥22.existing setup); no secret bytes go in this repo or issue — the SDK reads
them from the environment. (Open question: exactly what
@cline/sdkneeds torun a turn vs. just initialize — resolved during the build.)
Source / signal
Capture session
vscode-cowriting-plugin-0001; parent Epic #1(
coauthoring-plugin-on-cline). Architecture lineage:ben.stull/rfc-app#48.Priority (WSJF)
Provisional: Value medium (pure enabler) · Time-criticality high (blocks
every other Feature) · Opportunity-enablement high ÷ Size small → P1,
do first.
Decomposition (Feature → slice checklist)
package.json,tsconfig.json, esbuild, ESLint,.vscode/launch.json).@cline/sdkas a dependency and wire a minimal client.@cline/sdkinteraction and showsthe result.
Solution notes (optional — NOT a design)
Keep the SDK call trivial (a one-shot prompt, or even a version/connectivity
check) — the value is the wiring, not capability. If
@cline/sdk's surfacediffers from what we expect, that discovery is the value of this POC. Use
conventional npm + TypeScript + esbuild for our extension (Cline's own monorepo
uses Bun/Biome, but
@cline/sdkis a plain Node package npm consumes fine).Shipped in session
vscode-cowriting-plugin-0002via PR #3 (merged tomain). The runnable extension skeleton on@cline/sdkbuilds, F5 launches the Extension Development Host with the extension active, and theCowriting: Show Cline SDK Infocommand drives the SDK and shows a result (operator-confirmed). Closing F1. Next: F2 (#4).