Trait

Idempotent

Safe to run again. Repeating it converges on the same state rather than duplicating work.

Lifecycle Environment & Tooling

Devcontainer Lifecycle

Six ordered hook phases that take a development container from host-side preparation to an attached, ready workspace.

.devcontainer/lifecycle/ 8
Lifecycle Environment & Tooling

Initialize Phase

Host-side hooks that run before the container is built or created, preparing only the files and directories the container definition expects.

.devcontainer/lifecycle/initialize.d/ 2
Lifecycle Environment & Tooling

On-Create Phase

Early in-container hooks that create container-local state — user-home caches, CLI configuration, directories — before repository-driven setup runs.

.devcontainer/lifecycle/on-create.d/ 4
Lifecycle Environment & Tooling

Post-Create Phase

The last mile of workspace bootstrap — linking wrappers, configuring the shell, generating local configuration — once the container and content are in place.

.devcontainer/lifecycle/post-create.d/ 4
Lifecycle Environment & Tooling

Post-Start Phase

Fast, repeatable hooks that run on every container start to repair ephemeral state, verify prerequisites, and keep lightweight services running.

.devcontainer/lifecycle/post-start.d/ 4
Orchestration Build & Delivery

Static Site Delivery

make deploy is the whole deployment model: build the site, initialise and apply its Terraform root, upload public/, and invalidate the CDN.

scripts/deploy.sh 5
Lifecycle Environment & Tooling

Update-Content Phase

Hooks driven by repository content — lockfiles, manifests, checked-in configuration — that restore dependencies once the workspace is synchronised.

.devcontainer/lifecycle/update-content.d/ 5