Development Environment
Standard setup
Section titled “Standard setup”Use:
- WSL 2 on Windows
- Docker Desktop with WSL integration
- VS Code Dev Containers
- Java 21 baseline
- Maven
- Docker/Testcontainers
- Codex / Claude Code inside the Dev Container when possible
Agent credentials
Section titled “Agent credentials”The Dev Container persists agent state in named volumes:
/home/vscode/.claude/home/vscode/.codex/home/vscode/.config/ghDo not bind-mount broad host secret directories. Use SSH agent forwarding for Git.
GitHub CLI (gh)
Section titled “GitHub CLI (gh)”The github-cli Dev Container feature installs gh, so coding agents (Claude Code) can
create pull requests and releases from inside the container. Authenticate one of two ways:
- Interactive device flow (simplest): run
gh auth loginin the container terminal, pickGitHub.com/HTTPS/ browser login. The credential lives in the/home/vscode/.config/ghnamed volume, so it survives container rebuilds. - Repository-scoped token: copy
devcontainer.local.env.exampletodevcontainer.local.env(gitignored, loaded by the compose file) and setGH_TOKENto a fine-grained PAT limited to this repository (Contents and Pull requests read/write).ghpicks the variable up without any login.
Verify with gh auth status. Rebuild the container after changing devcontainer.local.env
(compose reads it at container creation).
Maven Wrapper
Section titled “Maven Wrapper”The initial scaffold does not commit maven-wrapper.jar. Generate the wrapper after opening the devcontainer:
./scripts/bootstrap-maven-wrapper.sh