Skip to content

Install lilbee into opencode and pi from the lilbee npm package - #1237

Open
tobocop2 wants to merge 2 commits into
mainfrom
feat/agent-npm-plugin
Open

tobocop2 wants to merge 2 commits into
mainfrom
feat/agent-npm-plugin

Conversation

@tobocop2

@tobocop2 tobocop2 commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Problem

opencode and pi users have no one-command way to add lilbee's MCP server and skills. They must copy the skill out of a clone and write the MCP entry by hand.

Solution

The plugin ships in the lilbee npm package

The existing lilbee npm package now also carries an opencode and pi plugin. It registers the lilbee mcp server and both lilbee skills.

  • opencode: opencode plugin add lilbee
  • pi: pi install npm:lilbee

The JavaScript API is unchanged

The plugin sits behind its own lilbee/server entry point, which opencode 1.x and 2.x both read before the package's main entry. pi reads the pi field of the package manifest. import "lilbee" still gives the API, and the plugin shares no code with it.

One copy of the skills

The skills stay in plugins/lilbee/skills, which the Claude Code plugin reads. Packing and testing the npm package copies them in, so the two never differ. The layout tests no longer restate package and CI config; the real npm pack and plugin tests cover it.

Promotions are told apart by their commit subject

Without the plugin manifest, a release commit changes the same files as a promotion. The promote script now commits "Promote ", and the promotion check requires that subject, so two releases in a row are no longer read as a promotion.

Notes

Stacked on #1236. No new dependency; the package grows by about 26 KB unpacked.

The package version is not bumped here, so the plugin reaches npm users at the next lilbee npm version bump. lilbee must be installed first, so that lilbee mcp is on the PATH.

What was run for real: npm test in the package, 162 passing, including the packed-tarball check. The plugin paths were checked with opencode 1.19.5, opencode 2.2.5 and pi 1.5.0 against the packed package.

@tobocop2
tobocop2 force-pushed the feat/agent-npm-plugin branch from c86feb7 to 7c77a32 Compare November 3, 2026 10:39
@tobocop2
tobocop2 marked this pull request as ready for review November 3, 2026 17:35
@tobocop2
tobocop2 marked this pull request as draft November 3, 2026 21:03
@tobocop2
tobocop2 force-pushed the feat/agent-npm-plugin branch from 7c77a32 to c308ea9 Compare November 3, 2026 21:56
@tobocop2 tobocop2 changed the title Install lilbee into opencode and pi from npm Install lilbee into opencode and pi from the lilbee npm package Nov 3, 2026
@tobocop2
tobocop2 force-pushed the feat/agent-npm-plugin branch from c308ea9 to e8c0fe1 Compare November 3, 2026 22:27
@tobocop2
tobocop2 marked this pull request as ready for review November 4, 2026 00:58
@tobocop2
tobocop2 marked this pull request as draft November 5, 2026 06:03
@tobocop2
tobocop2 force-pushed the feat/agent-npm-plugin branch from e8c0fe1 to 642b4e4 Compare November 5, 2026 06:13
@tobocop2
tobocop2 marked this pull request as ready for review November 5, 2026 09:56
@tobocop2
tobocop2 changed the base branch from feat/claude-plugin to main November 5, 2026 10:27
The plugin lives inside the existing npm package lilbee instead of a
second package. opencode loads it from the ./server export and pi reads
the pi key; import "lilbee" still gives the API and the bins are
unchanged. The plugin code under plugin/ and the API under lib/ share
no module.

The skills stay in plugins/lilbee/skills. A copy step runs before pack
and before test and puts them in the ignored skills/ directory of the
package, so no second tracked copy can drift.

The npm version of the package is bumped by a pull request, so the
release and promote scripts stop stamping a plugin package.json. The
separate plugin test job, make target and version-order script go
away; the launcher job runs the plugin tests.

With the plugin package.json gone, a release commit changes only the
files a promotion changes, so two releases in a row looked like a
promotion. The promote script now commits "Promote <v>", and the
promotion check also requires that subject.
The three deleted tests pinned config text: package.json fields,
the copy script's path literal, and the CI job's working-directory.
The real toolchain already proves each claim. npm test packs the
tarball and asserts every entry point and both skills ship in it,
the pretest copy step feeds that pack, and the launcher CI job
runs npm test itself.

The command agreement test stays. It cross-checks the plugin's MCP
command against the Claude Code plugin config, which no npm test
reads.
@tobocop2
tobocop2 force-pushed the feat/agent-npm-plugin branch from 642b4e4 to b698383 Compare November 5, 2026 10:28

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant