Step-by-step diagram of what bootstrap.sh actually does, with the DF_DO_* skip flag for each phase. Steps run in order — failures in any phase abort the rest (except VS Code/Cursor extension installs and a few other clearly-flagged log-warn-but-continue cases).
Install rustup (Homebrew on macOS, sh.rustup.rs on Linux); install/update stable toolchain; cargo binstall every entry in cargo.txt.
rustup self-update is --no-self-update except in upgrade mode.
6c
install/python.sh
Install uv to $ARCH_BIN; uv tool install every entry in pip.txt (each gets isolated venv).
# macos-only and # python=X.Y markers parsed from comments.
6d
install/claude.sh
Download Claude Code binary to $ARCH_BIN/claude if version differs; install plugins; register MCP servers (with auth=gh resolution); deploy overlay skills.
Atomic write via temp file + mv -f.
6e
install/codex.sh upgrade
Sync managed Codex config (config.toml, hooks.json, df-chezmoi-guard) + healthcheck (binary comes from the pinned @openai/codex in npm.txt).
Healthcheck dies on config drift.
6f
install/cursor.sh
Symlink Cursor settings; install extensions from cursor-extensions.txt.
Extension failures are warnings, not fatal.
6g
install/vscode.sh
Install extensions from vscode-extensions.txt.
Same warning-not-fatal pattern.
6h
install/cmake.sh
Copy toolchain files (llvm-21/22.cmake, gcc-13/15.cmake, _brew.cmake) from repo to $LOCAL_PLAT/cmake/toolchains/.
Always overwrites — keeps deployed copies in sync with repo.
The canonical source is bootstrap.sh itself — header comment block has the full flag table, then numbered ### N. ### step markers. To trace what a single step actually does, jump to install/<step>.sh. Each install script sources _lib.sh for path variables and logging helpers.