Skip to content

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 ​

bash
npx extension@latest create my-extension --template=init
cd my-extension
npm install
npm run dev

A browser opens with the extension loaded, and every save reloads it. Full documentation lives at extension.js.org.

create, install and dev typed in a terminal, then Chrome opens with the extension loaded.

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 ​

CommandNeeds
create, dev, start, preview, build, logs, doctor, capabilities, install, uninstall, telemetryNothing: no account, no session flag
storage, reload, inspect, navigate, openA dev session started with --allow-control
evalA dev session started with --allow-eval, which implies control

When it fails ​

  • eval, storage, reload, inspect, navigate or open refuse: they act on a live dev session, and the gate is a flag on the session, not on the verb. Start extension dev --allow-control (or --allow-eval for eval), 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, or POST /api/cli/stores/submit. See Publishing.

Next ​