- Editor & Workspace Configs: Standardize on VS Code or compatible forks (e.g., Cursor). Always commit a
.vscode/settings.json configuring the language servers and formatters defined in Chapter 3 (e.g., vtsls for TypeScript, ruff for Python formatting). This ensures format-on-save behaves identically for everyone.
- Dev Containers vs Local: For standard Python or TypeScript projects, rely on
uv and Bun for blisteringly fast local setups. Reserve Dev Containers strictly for projects with complex system-level dependencies (e.g., geospatial libraries, heavy C++ bindings) where local environment parity is difficult to maintain.
- Pre-commit Hooks: Enforce formatting, fast linting, and secret scanning locally via pre-commit.
- Bake the configuration into the repository template so developers only need to run
pre-commit install.
- Include hooks for Ruff, Biome, and Gitleaks.
- Keep hooks fast — don't run heavy tests or full type checks on commit; leave those for CI.
- CI/CD & Release Management: Every repository must have a standard GitHub Actions (or equivalent) CI pipeline running on PRs and merges to main. A default CI template must include:
- Static Analysis: Fast linting and formatting (Ruff, Biome).
- Type Checking: Strict type checking (ty, Pyright,
tsc).
- Testing: Automated test suites (pytest, Vitest).
- Artifacts: Auto-generate
requirements.txt from uv.lock for downstream Docker builds.
- Automated Releases: Generate changelogs and bump versions automatically on merge using Commitizen (for monorepos) or Release-Please (for single packages).