Skip to content

Bootstrap a devcontainer.json

This form writes the devcontainer.json of a new organization workspace: a .dev repository that, once opened in a container, clones every other repository of the organization next to it. It is opinionated on purpose. What every helpers4 organization (helpers4, baxyz, tuxery, feature-today, brig-id) has in common is always included, and you only answer what actually differs: license, base image, version control, languages, assistants. Choices bring what they need with them: TypeScript adds package-auto-install and a pinned Node, Graphite and Bitwarden add their token variable, and Angular and Vite+ add their forwarded port.

The features come from the helpers4 Dev Container features of the latest release, so a new one shows up here by itself. The file is generated in your browser; nothing is sent anywhere.

Organization
License
Base image
Version control
Git comes with Git LFS and git absorb. jj works on the same repositories (colocated).
Languages
AI
Other helpers4 features

Always included: org-workspace, shell-history, dotfiles-sync, essential-dev, github-dev, auto-header, Docker outside of Docker, the GitHub token, Code Spell Checker and ShellCheck.

.devcontainer/devcontainer.json
  1. The .dev repository: create it in the organization and commit the file as .devcontainer/devcontainer.json. org-workspace clones the other repositories of the organization next to it on the first start, and keeps a .code-workspace file listing them.
  2. Tokens: export the variables named in the file’s comment on the host (for GitHub, a fine-grained token scoped to the organization), then Reopen in Container. gh and the GitHub extensions are signed in from the start.
  3. Lock the versions: run devcontainer upgrade --workspace-folder . to write .devcontainer/devcontainer-lock.json, and commit it; Dependabot (package-ecosystem: devcontainers) keeps it current.
  4. Read each feature’s page for its options: the form only sets the ones every organization uses. Working on a single repository rather than an organization? Drop org-workspace, workspaceFolder and workspaceMount.