This repository provides a lean development container template for GitHub Codespaces and local VS Code Dev Containers.
- Ubuntu 26.04 (Resolute) base image
- Single-image devcontainer build based on
.devcontainer/Dockerfile - Core tooling for general development work:
- Python 3 with
venvandpip - Node.js LTS with
npm - GitHub CLI
- Claude Code CLI (authenticated session persisted across rebuilds)
- OpenCode TUI installed via
updateContentCommand(cached by prebuilds) - Bash shell with common utilities
- Build essentials (
gcc,make, and related packages) via base image
- Python 3 with
- VS Code extensions:
- Claude Code
- Python and Pylance
- GitHub Copilot and Copilot Chat
- YAML
The devcontainer is tuned for fast Codespaces startup:
- Minimal feature set: only
common-utils,sshd,node,github-cli, andclaude-codefeatures are installed — Docker-in-Docker and git features are omitted common-utilsconfigured with zsh and Oh My Zsh disabledcurl,wget,jq, andgitsourced from the base image — not re-installed in the Dockerfile- OpenCode TUI installed in
updateContentCommandinstead ofpostCreateCommand, so it is cached during Codespaces prebuilds and not re-run on every start - Claude Code authentication stored in a named volume
(
claude-code-config-${devcontainerId}) so sign-in survives container rebuilds - Small, targeted extension set
Approximate startup time: ~45–75 seconds without prebuilds and ~10–25 seconds with prebuilds enabled (actual times will vary by region, plan, and image cache state).
Codespaces prebuilds cache the fully built container image, installed features,
and updateContentCommand output on GitHub's infrastructure. This is the
single biggest lever for fast cold-starts.
- Navigate to the repository on GitHub.
- Go to Settings → Codespaces.
- Click Set up prebuild configuration.
- Select the
mainbranch and choose one or more regions closest to your team. - Set the trigger to "On every push" (or "On configuration change" for less frequent rebuilds).
- Save.
The first prebuild takes roughly 3–5 minutes. After that, every new Codespace
created from main will start in approximately 10–25 seconds.
Tip: Prebuilds are available on GitHub Team and Enterprise plans, and are free for public repositories up to a certain storage quota.
- Click "Code" button on the GitHub repository
- Select "Create codespace on main"
- Wait for the environment to build
- Run
claudein the integrated terminal and follow the authentication prompt
- Clone this repository
- Open in VS Code
- Click "Reopen in Container" when prompted
- Run
claudein the integrated terminal and follow the authentication prompt
.devcontainer/devcontainer.json: main devcontainer definition, features, VS Code extensions, and lifecycle commands.devcontainer/Dockerfile: minimal image customization for Python packages.github/workflows/ci.yml: CI pipeline — Dockerfile linting, secret scanning, image build (artifact-shared across jobs), devcontainer smoke testing, Trivy vulnerability scanning (gates on CRITICAL), SBOM generation, and scheduled daily security scans.github/dependabot.yml: daily updates for GitHub Actions, Docker base images, and devcontainer featuresAGENTS.md: guidance for AI agents and automated contributors working in this repository
Click "Use this template" button to create a new repository
cp -r .devcontainer /path/to/your/project/Edit .devcontainer/devcontainer.json to add features or tools:
{
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "17"
}
}
}To add Docker support when you need it:
{
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {}
}
}If you add new features or packages, keep the CI smoke test in sync with any new tooling expectations you want validated during the container smoke test.
This project is licensed under the MIT License - see the LICENSE file for details.