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_REFpoints at another ref. Set it tomainto restore floating behavior.EXTENSION_CREATE_TEMPLATE_URLpoints at another archive URL entirely.
.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. ItsvaluecarriesprojectPath,projectName,template, anddepsInstalled. - Failures print
ok: falsewith anerror.code:E_TEMPLATE_NOT_FOUNDfor an unknown catalog name,E_NETWORKfor a failed download,E_DESTINATION_NOT_EMPTYorE_DESTINATION_NOT_WRITABLEfor destination problems.
Shared global options
Also supports Global flags.Example commands
Available templates
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.

