The blipkit CLI
| Command | What it does |
|---|---|
blipkit new <name> |
Scaffolds package.json, src/index.ts, tsconfig.json, and a README.md for a new extension. |
blipkit dev |
Builds in watch mode (esbuild) and symlinks the folder into Blipbar’s Extensions/ folder. The host reloads your extension on every rebuild, and its log (ctx.log lines and errors) prints in the terminal as [log]. Runs until you Ctrl+C. |
blipkit build |
Bundles src/index.ts → dist/index.js (esbuild: CommonJS, node22 target, @blipbar/api inlined), validates the manifest shape, and writes dist/tools.json if you have tools (Tools). This is what actually ships: package.json plus dist/ is the whole extension. |
blipkit validate |
Builds (validating your tools), then runs your update() once against a mock host (in-memory storage, recorded emit/end/notify/…, real exec gated by your declared permissions.exec), stamps each emitted blip the way the runtime would, and validates every one against the schema. Prints what it would emit. --prefs '<json>' sets preferences for the run, and --tool <name> --values '<json>' runs one tool too (Testing a tool). Like the app, it won’t run without the preferences marked required, and it holds fetch to permissions.network: a refused request fails the check even when your code catches it. Use it constantly while developing: it’s the fastest “did I break the shape of my payload” check, with no app required. |
blipkit send <file.json | -> |
POSTs a payload (or a JSON array of several) straight to a running Blipbar app’s /v1/blips, reading the port and token from webhook.json. Useful for testing how a specific payload actually renders, separate from your extension’s own update logic. |
blipkit pack |
Builds, then writes <name>-<version>.blipbar: a zip of package.json, dist/ (without source maps) and your README and licence. One file to share (A .blipbar file). It prints the file’s SHA-256 and the entry that lists it in the directory (The directory), with the repo taken from package.json’s repository. |
blipkit validate only exercises update() (and, with --tool, one tool, Testing a tool). It
has no mock webhook or action to drive onEvent/onAction through. Test those with
real unit tests instead (Testing).