CLI
extension is the Extension.js command line: it creates, runs, debugs and builds an extension on your machine with no account. Reach for it in a terminal or a CI job. An agent reaches the same engine through @extension.dev/mcp.
Quick start
npx extension@latest create my-extension --template=init
cd my-extension
npm install
npm run devA browser opens with the extension loaded, and every save reloads it. Full documentation lives at extension.js.org.
How it works
Two packages, two jobs. extension creates, runs, debugs and builds an extension on your machine. @extension.dev/mcp gives a coding agent the same verbs plus the platform ones, and ships the extension-mcp headless commands.
The command surface is create, dev, start, preview, build, logs, doctor, capabilities, install, uninstall, eval, storage, reload, inspect, navigate, open and telemetry. The framework's commands reference documents each one, and this site does not restate them.
Linking a build the platform made is a platform action too. Ask your agent: extension_publish in the MCP server returns the build's page with a download and a run command for each browser. See Publish a build. The revocable preview link is a different verb and an upload: Share an unpublished build for review.
Store submission and release promotion are platform actions, not framework commands. Run them from the console's Submissions tab, from an agent with extension_submit and extension_release_promote, or over the HTTP API.
A build often needs values that stay out of the source. To see how a build reads environment values, start from the Content Env template.
Reference
| Command | Needs |
|---|---|
create, dev, start, preview, build, logs, doctor, capabilities, install, uninstall, telemetry | Nothing: no account, no session flag |
storage, reload, inspect, navigate, open | A dev session started with --allow-control |
eval | A dev session started with --allow-eval, which implies control |
When it fails
eval,storage,reload,inspect,navigateoropenrefuse: they act on a live dev session, and the gate is a flag on the session, not on the verb. Startextension dev --allow-control(or--allow-evalforeval), then retry.- You are looking for a submit command: store submission is a platform action. Use the console's Submissions tab, an agent's
extension_submit, orPOST /api/cli/stores/submit. See Publishing.
Next
- Publish a build links a project's build page from an agent
- Publishing for the store path
- Access tokens to authenticate from CI
- MCP server for the same engine from an agent