create-rigline-plugin
v1.0.0-alpha.10
Published
Scaffold a workspace for Claude Code VS Code extension plugins
Downloads
1,032
Maintainers
Readme
create-rigline-plugin
Scaffolds a workspace for Rigline plugins — plugins for the Claude Code VS Code extension.
npm create rigline-plugin my-pluginsA plugin runs inside a modification of Anthropic's extension, so the plugin policy applies to it — whether or not you ever publish it. One page, and the scaffolded README points at it too.
What you get
A pnpm workspace with plugins/* and one plugin in it, rather than a single-plugin repository. The
multi-plugin shape scaffolds correctly for one plugin and a second is then a directory copy, where a
single-plugin template could not grow into a workspace without a restructure.
my-plugins/
generated.ts the harvested identifiers, shared by every plugin here
pnpm-workspace.yaml with the supply-chain settings written down rather than inherited
tsconfig.base.json pulls the root harvest into every plugin's program
plugins/my-plugin/
rigline.json what the plugin declares it needs from the extension
src/index.ts the plugin
src/index.test.tsThen:
pnpm install
pnpm codegen # harvest your installed extension, and commit the result
pnpm build
pnpm rigline add plugins/my-pluginand Developer: Reload Webviews.
The workspace declares @rigline/core — the engine, which carries the rigline-engine command its
build and codegen scripts run — and never rigline, which is the layer a user installs to
fetch that engine. pnpm rigline <verb> here is a script forwarding to the engine in your own
node_modules, so the loop above needs nothing installed globally.
generated.ts ships as a placeholder so a fresh scaffold typechecks before codegen has ever run.
Once you run codegen it holds the identifiers your extension version actually has; commit it,
and the diff when you run against a newer extension is how you find out what moved.
Why a workspace root at all
The identifiers are harvested once, at the root, and imported by every plugin in the repository, because they all compile against the same installed extension. Module augmentation is per-program, so each plugin's tsconfig has to pull that harvest in — which the shared base config does, and which is the one ordering dependency in the whole arrangement.
Changelog — every package in this workspace shares it, and one version number.
MIT.
