Repository navigation
Conversation
tobocop2
force-pushed
the
feat/agent-npm-plugin
branch
from
November 3, 2026 10:39
c86feb7 to
7c77a32
Compare
tobocop2
marked this pull request as ready for review
November 3, 2026 17:35
tobocop2
marked this pull request as draft
November 3, 2026 21:03
tobocop2
force-pushed
the
feat/agent-npm-plugin
branch
from
November 3, 2026 21:56
7c77a32 to
c308ea9
Compare
tobocop2
force-pushed
the
feat/agent-npm-plugin
branch
from
November 3, 2026 22:27
c308ea9 to
e8c0fe1
Compare
tobocop2
marked this pull request as ready for review
November 4, 2026 00:58
This was referenced Nov 4, 2026
tobocop2
marked this pull request as draft
November 5, 2026 06:03
tobocop2
force-pushed
the
feat/agent-npm-plugin
branch
from
November 5, 2026 06:13
e8c0fe1 to
642b4e4
Compare
tobocop2
marked this pull request as ready for review
November 5, 2026 09:56
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
force-pushed
the
feat/agent-npm-plugin
branch
from
November 5, 2026 10:28
642b4e4 to
b698383
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
lilbeenpm packageThe existing
lilbeenpm package now also carries an opencode and pi plugin. It registers thelilbee mcpserver and both lilbee skills.opencode plugin add lilbeepi install npm:lilbeeThe JavaScript API is unchanged
The plugin sits behind its own
lilbee/serverentry point, which opencode 1.x and 2.x both read before the package's main entry. pi reads thepifield 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
lilbeenpm version bump. lilbee must be installed first, so thatlilbee mcpis on the PATH.What was run for real:
npm testin 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.