Create a brand new Roam extension with all the tooling need to develop and deploy it.


The RoamJS Scripts init command generates a brand new repository with all of the files needed to develop your new custom Roam extension. The repository is set up similar to many existing RoamJS extensions, but you are then free to implement whatever features on top of the initial code generation. This command should only be used once ever per extension.


npx roamjs-scripts init --user dvargas92495 --name roamjs-google-calendar --description "Import Google Calendar events into Roam!"


  • --user [name] - The name of the GitHub owner where the repository will live
  • --name [name] - The name of RoamJS extension. Prefixing an extension name with roamjs- will use the full name for the repository name, but will strip this prefix for the package.json and the RoamJS URL path.
  • --description [description] - The description of the RoamJS extension.
  • --backend - A flag indicating whether or not to include backend resources for the extension. Please reach out to [email protected] before using this flag.
  • --repo [name] - Name of the GitHub repository associated with this extension, defaulted to the name value above.
You could also add the following environment variables:
  • GITHUB_TOKEN - A personal access token from your GitHub account with permission to create repos. Set this if you want a GitHub repo of the same name created in your account.
  • ROAMJS_DEVELOPER_TOKEN - The RoamJS token generated for you at Set this if you want a GitHub action added to your extension's repo for publishing the extension to RoamJS. It will add the token as a repository secret.