This is what it does

Validate and pack a plugin

Paste an orbit.plugin.json and the folder’s file names: the kit’s own validator and linter return a verdict, then it packs what you pasted into one deterministic .orbit archive with its byte length and SHA-256.

Runs in your browser — nothing to install, nothing uploaded

  • What it does: validates a manifest against the kit’s JSON Schema, lints it, and packs the folder into a single .orbit whose bytes are the same every time — the same input packs to the same SHA-256.
  • What to try: pack the template first, then break it — an id with a space or a capital, or priceCents set to true — and pack again. The refusal names the field, and an invalid folder writes no package at all.
  • What it does not do yet: this is the packing half. Listing records and the money commands are the Python tools, and the selling half does not exist, so nothing here can charge or pay anyone.

Under the hood

What it is built on

Stack
Python standard library only — no third-party packages. The manifest and the listing each have a JSON Schema as their machine contract, and the playground runs the same rules client-side.
Surfaces
The browser playground above; the packer (validate, pack, lint, test); and the listing builder (build, validate, checkout, entitle, simulate, payout).
Runs where
The playground runs in this page. The package is a zip that unpacks to the command-line tools on any machine with Python installed; a pack writes dist/<id>-<version>.orbit.
Tested by
Two unittest suites from the standard library — 50 tests over validate, pack, lint and the negative cases, and 16 over listings and the anti-fake invariants — plus a mutation falsifier that mutates the real identifier pattern and requires the check to fail.

One refusal is worth naming: a credential-shaped file anywhere in the folder — id_rsa, .netrc, deploy.pem, a secrets.json — is refused before packing, because a package that carries one would ship that secret to everyone who installs the plugin. The check matches filename and extension rather than reading contents, so an innocently named secret is not caught.

Status

Where this stands today

  • 50 packer tests and 16 listing tests, all passing. The listing suite is anti-fake invariants: a record that claims money moved when it did not cannot validate, and a simulated record must carry its own not-a-sale marker.
  • An invalid folder writes nothing. Packing a folder that fails validation returns no package, so the failure mode is not a broken artifact sitting in the output directory looking like a good one.
  • The selling half does not exist, and the kit says so. No catalogue page, no seller upload flow, no payment rail, no payout account and no host, so the 85/15 split is a price hypothesis from the plan rather than a rate anything charges or pays. The packaged kit is on the beta page.

Questions about the Orbit Plugin Kit

What a manifest requires, what the packer refuses and why, or where the kit ends and the rest of the plan begins — ask.

Ask about the kit