Bump the pinned toolchain release
SkillFiles & storageBump the pinned bb/noir toolchain release (BB_VERSION/NOIR_VERSION in labs-aztec-toolchain) and every file that copies those pins. Use when asked to bump the toolchain, move to a newer nightly, or update the pinned bb/noir/aztec-packages release.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Bump the pinned toolchain release skill
What this skill tells your AI
The instructions your AI receives, as published by aztec-labs-eng/aztec-node in .claude/skills/bump-toolchain/SKILL.md and read by ahel’s review.
labs-aztec-toolchain/bootstrap.sh pins BB_VERSION (an aztec-packages release: the bb
binaries and all @aztec/* npm packages) and NOIR_VERSION (the noir release that bb
release was built against). labs-aztec-toolchain/pins.mjs owns every file carrying a
copy of those pins; set-pins rewrites them all mechanically. This skill is the judgment
around that: pick a complete release, derive the paired noir version, run the rewrite,
refresh lockfiles, and prove the result builds.
Steps
1. Resolve the target version
If given a version, strip any leading v. If asked for "latest nightly", list tags, not
GitHub releases — nightly tags have no release object on aztec-packages, and the releases
list interleaves older release lines. Filter to the currently pinned major; within one
release line the fixed-width date suffix makes lexicographic ref order chronological (with
two lines in the same major, tail -1 picks the higher version, not the newer date —
confirm that is what you want):
current=$(sed -n 's/^BB_VERSION=//p' labs-aztec-toolchain/bootstrap.sh)
gh api --paginate "repos/AztecProtocol/aztec-packages/git/matching-refs/tags/v${current%%.*}." \
--jq '.[].ref' | grep nightly | tail -1 | sed 's|refs/tags/v||'
A cross-major bump is a deliberate decision: only do it when the user names the version.
2. Verify the release is complete
Nightlies can partially publish: the tag can exist while an npm package or release artifact is missing. Check all of the following before touching anything; on any miss, fall back to the previous nightly rather than pinning a broken release.
-
Every
@aztec-foundation/*entry inyarn-project/package.json'sresolutionsexists on npm at the target version:jq -r '.resolutions | keys[] | select(startswith("@aztec-foundation/"))' yarn-project/package.json \ | xargs -I{} sh -c 'npm view {}@<version> version >/dev/null || echo "MISSING: {}"' -
The per-platform binary packages the toolchain curls exist at the target version:
@aztec-foundation/bb-{linux,darwin}-{x64,arm64}and@aztec-foundation/bb-avm-linux-{x64,arm64}(bb-avm is published for linux only). Check the tarball URLsbootstrap.shbuilds, since a package can exist without the pinned version being published:for p in bb-linux-x64 bb-linux-arm64 bb-darwin-x64 bb-darwin-arm64 bb-avm-linux-x64 bb-avm-linux-arm64; do curl -sfI "https://registry.npmjs.org/@aztec-foundation/$p/-/$p-<version>.tgz" >/dev/null || echo "MISSING: $p" done
3. Derive the paired NOIR_VERSION
NOIR_VERSION must be the noir release the target aztec-packages release was built
against — its noir/noir-repo submodule. Never guess it and never keep the old value
without checking:
sha=$(gh api "repos/AztecProtocol/aztec-packages/contents/noir/noir-repo?ref=v<version>" --jq .sha)
[ -n "$sha" ] && git ls-remote --tags https://github.com/noir-lang/noir | grep "$sha"
- An empty
$shameans the lookup itself failed (wrong tag?): fix that before going on — an unguardedgrep ""would list every noir tag and invite picking an arbitrary one. - Multiple tags may point at the commit (e.g.
nightly-2026-07-31andv1.0.0-beta.26): prefer thev*release tag, stripped of itsv. - Only a
nightly-*tag: use it verbatim (NOIR_VERSIONsupports that form). - No tag at all: stop and ask. A bare commit is not installable via noirup, and choosing a nearby release is a human call.
4. Rewrite the pins
./labs-aztec-toolchain/bootstrap.sh set-pins <bb-version> <noir-version>
Omit the noir version only if step 3 showed it unchanged. The command rewrites
bootstrap.sh plus every tracked copy, printing one line per updated file, then re-runs
the drift check — success is those update lines followed by no drift errors.
5. Refresh lockfiles
set-pins edits manifests only. Run plain yarn in both projects — after a resolutions
edit it re-resolves only the changed entries, which is the targeted update the repo's
lockfile discipline requires (yarn up is the wrong tool here: it edits dependency
declarations, not resolutions):
(cd yarn-project && yarn)
(cd docs && yarn)
Then confirm the diff is scoped to the bump: git diff --stat should show the files
set-pins reported rewriting plus the two lockfiles, and the lockfile changes only
@aztec/* entries. Anything beyond that means something else was stale — stop and
investigate rather than committing it. (The step-6 rebuild may additionally update
tracked generated artifacts, e.g. under noir-contracts.js; report those, and never run
pin-standard-build in response — see the root CLAUDE.md.)
6. Verify
./labs-aztec-toolchain/bootstrap.sh— provisions the new binaries (runs the drift check first in pinned mode).- Build in dependency order:
./bootstrap.shinnoir-projects/, then./bootstrap.shinyarn-project/. Notyarn build: it recompiles TypeScript without rerunning the code generation, soconstants/src/constants.gen.tsand the other generated inputs stay on the old release and the bump looks like missing enum members and struct fields. The noir-projects build also proves the newv<version>tag is fetchable by nargo for the aztec-nr git deps.
7. Finish
Leave everything uncommitted and report what changed (both pins, the rewritten files,
the lockfiles) plus the verification results. If asked to commit, use
chore: bump toolchain pins to <version> and determine the base branch per the root
CLAUDE.md <git_workflow> — never assume.
Signals
- GitHub stars
- 23
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
bump-toolchain- Source
- github.com/aztec-labs-eng/aztec-node