Skip to main content
create scaffolds files, configuration, and starter scripts for the selected template and optionally installs dependencies.

When to use create

  • Start a new extension from scratch.
  • Spin up multiple proof-of-concept ideas quickly.
  • Standardize onboarding for your teammates with consistent template defaults.

Create command capabilities

Usage

Arguments and flags

When you want the default JavaScript starter, omit --template entirely. Add --template=<slug> only for another stack from the official examples. --template also accepts a GitHub URL or a ZIP URL, so you can scaffold from any repository. The catalog holds 52 templates in 6 groups: starters, sidebar, content scripts, new tab, toolbar action, and special folders. Run extension create --help for the full list. The default javascript template ships inside the CLI, so it scaffolds with no network call. Every other template downloads the catalog archive at create time.

Template corpus pinning

Catalog downloads are pinned to one immutable commit of the examples repository. Two scaffolds of the same version therefore produce the same bytes. Two environment variables override the pin:
  • EXTENSION_CREATE_TEMPLATE_REF points at another ref. Set it to main to restore floating behavior.
  • EXTENSION_CREATE_TEMPLATE_URL points at another archive URL entirely.
Each scaffold writes a .extension-create.json provenance file into the project. It records the create version, the template, the source, and the resolved ref, so template drift stays auditable.

Machine output with --output json

--output json prints one schema-1 envelope on stdout and routes scaffold progress lines to stderr:
  • A successful run prints a status: "created" frame. Its value carries projectPath, projectName, template, and depsInstalled.
  • Failures print ok: false with an error.code: E_TEMPLATE_NOT_FOUND for an unknown catalog name, E_NETWORK for a failed download, E_DESTINATION_NOT_EMPTY or E_DESTINATION_NOT_WRITABLE for destination problems.

Shared global options

Also supports Global flags.

Example commands

Available templates

For the full, continuously updated list of templates, browse the examples repository.

JavaScript (default)

Minimal starter. Use when you want a clean baseline.

TypeScript

Typed starter with tsconfig.json preconfigured.

React

React UI wired for content scripts and popup views.

Vue

Vue UI with single-file component (SFC) support baked in.

Best practices

  • Start from a template that matches your UI/runtime needs to reduce setup drift.
  • Keep the first run small, then add extra tooling after verifying baseline command flow.