Ready-to-build Bazel starter projects, wired up with the Aspect CLI and Aspect Workflows. Pick a language, click Use this template, and start shipping — no Bazel boilerplate, no toolchain yak-shaving.
1. Use a template repo (this org)
Each repo below is a GitHub template repository. Click the green Use this template button (or Fork), or just:
git clone https://github.com/aspect-starters/<language>2. Scaffold with the Aspect CLI
Already have the Aspect CLI? Generate a project — choose a preset interactively, or pass one:
aspect init my-project --preset goaspect init renders the same templates these repos are built from. No external
tools required.
| Repo | Stack | Status |
|---|---|---|
| minimal | An empty, correctly-configured Bazel workspace | |
| go | Go | |
| py | Python | |
| js | JavaScript & TypeScript | |
| java | Java | |
| kotlin | Kotlin | |
| scala | Scala | |
| cpp | C & C++ | |
| rust | Rust | |
| ruby | Ruby | |
| shell | Bash / shell | |
| kitchen-sink | Everything — all languages + OCI, protobuf, release stamping, codegen |
- 🧱 Latest Bazel (bzlmod) with curated flags via
bazelrc-preset.bzl - 🧰 Hermetic dev environment via
bazel_env.bzl+rules_multitool - 🎨 Formatting & linting built in with
rules_lint, plus pre-commit hooks - 📦 Native package-manager integration for the language (pip/uv, pnpm, go.mod, Cargo, Maven, Bundler, …)
- ⚙️ Working GitHub Actions CI that runs
aspect build/test/lint/formaton ephemeral runners — green out of the box - 🐳 OCI containers via
rules_oci(where applicable) - 📌 A pinned Aspect CLI version (
.aspect/version.axl) so your whole team and CI use the same tooling
Start from kitchen-sink —
every language and feature wired together — or run aspect init --preset kitchen-sink.
These repos are generated artifacts. The source of truth is
aspect-build/aspect-workflows-template:
a single shared renderer produces both aspect init output and these starter
repos, and CI republishes them on every release. File issues and PRs there.
Built with ❤️ by Aspect — making Bazel Just Work™️.