Skip to main content
Clone the lab repository and start at the beginning:
Every section of this course starts with a git checkout. You are not going to type AXL from a tutorial — you’ll check out the code, read the diff that brought it, run it, and change one thing. If you fall behind at any point, check out the next step and carry on.Leave your main alone. Every step branch is an ancestor of main, and the commands you’ll run default to --base=main, so git merge-base HEAD main resolves to the step you’re standing on and a clean tree reports nothing changed. Reset or move main and those defaults start diffing against the wrong commit — which looks like a broken task rather than a moved branch.
Look at what’s here:
One file. That’s the whole project.
.aspect/version.axl

The pin works

No download this time, and no “latest” — the launcher read the repository’s pin and ran that exact CLI. Everyone who clones this repository gets the same one.

What’s available

The same thing, for machines

Thirty-three commands:

Notice what isn’t here

There is no MODULE.bazel. No BUILD.bazel. No workspace, no targets, nothing to build — and bazel has never run in this directory. Yet the CLI has a task surface, that surface has help text, and it will hand you the whole thing as JSON on request. The thing you’re about to extend is programmable before your build exists. Hold onto describe. By the end of this course the commands you write will show up in that JSON — with their flags, their types and their defaults — and the last section is about who reads it. Next: a repository with an actual build in it.