npx skills add ...
npx skills add nvidia/nemo-fabric --skill update-project-version
Update the NVIDIA NeMo Fabric release version across Cargo, Python, and TypeScript package metadata, internal Python dependency pins, integration metadata, and lockfiles. Use when bumping, synchronizing, or auditing NeMo Fabric package versions for a release.
npx skills add nvidia/nemo-fabric --skill update-project-version
Use karpathy-guidelines alongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.
Use this skill when changing the NeMo Fabric version, including pre-release or build-metadata variants used during packaging.
Cargo.toml [workspace.package].version is the source of truth for the Rust
workspace and the release version stamped into Python and TypeScript package
metadata.Cargo.toml [workspace.dependencies] self-references aligned when the
workspace version changes.sdk/python/nemo-fabric-runtime/pyproject.toml is the exception among the
Python projects: do not add a literal project.version. Keep
project.dynamic = ["version"] because Maturin derives
nemo-fabric-runtime's version from
crates/fabric-python/Cargo.toml, which inherits the workspace version.project.version in every one of these files:
sdk/python/nemo-fabric/pyproject.tomladapter-contract/python/pyproject.tomladapters/python/*/pyproject.tomlnemo-fabric-runtime == <version> dependency in the
published sdk/python/nemo-fabric/pyproject.toml.nemo-fabric-* == <version> requirements in its optional dependencies.nemo-fabric-adapters-common == <version> dependency.adapter-contract/typescript/package.json and the root package entries in
its package-lock.json aligned with the Cargo SemVer release version.For a normal release, use the same X.Y.Z string everywhere. For a prerelease
or build-metadata version, use valid Cargo SemVer in Cargo.toml and the
equivalent PEP 440 version in explicit Python metadata. Confirm that the
Maturin-built runtime and setuptools-built packages resolve to equivalent
versions rather than blindly copying incompatible syntax.
Cargo.toml and decide the exact Cargo,
Python, and TypeScript target version strings.just set-version <cargo-version>. The recipe preserves the normalized
SemVer for Cargo and TypeScript, converts it to PEP 440 for Python, and
updates:
Cargo.toml [workspace.package].versionCargo.toml workspace.dependencies.nemo-fabric-core.versionproject.version in the published SDK metapackage,
Python adapter contract, and every adapter pyproject.tomlnemo-fabric-* exact-version requirementpackage.json and package-lock.jsonCargo.lock through Cargo metadata resolutionuv.lock files through just lock-pythonsdk/python/nemo-fabric-runtime/pyproject.toml remains dynamic
and unchanged.If editing the helper code, keep these contracts aligned:
set_project_version must call the Cargo, Python, and TypeScript project
version helpers.set_cargo_workspace_version must update the workspace version and the
nemo-fabric-core workspace dependency, then verify every nemo-fabric-* workspace
package through Cargo metadata.set_python_project_versions must update the published SDK metapackage,
Python adapter contract, every adapter pyproject.toml discovered under
adapters/python/, and all internal exact-version pins while
rejecting a static version in
sdk/python/nemo-fabric-runtime/pyproject.toml.set_typescript_project_version must update the package manifest and both
root version entries in the npm lockfile without changing dependency versions.set-version recipe must run just lock-python after source metadata is
updated.rg -n '^version =|nemo-fabric-core = \{ path = .*version =' Cargo.tomlrg -n '^version =|nemo-fabric-[a-z-]+(?:\[[^]]+\])? == ' pyproject.toml sdk adapter-contract/python adapters/python --glob 'pyproject.toml'rg -n 'dynamic = \["version"\]' sdk/python/nemo-fabric-runtime/pyproject.tomlrg -n '"version":' adapter-contract/typescript/package{,-lock}.jsoncargo check --workspace --locked.just build-python to verify all Python package metadata resolves.just test-python when the integration version or Python packaging
behavior changes materially.just wheels for release-facing validation of every Python wheel.just pack-typescript to verify the stamped TypeScript package metadata.git diff --check.Cargo.toml and leaving the setuptools packages stale.sdk/python/nemo-fabric-runtime/pyproject.toml;
Maturin owns that version.Cargo.lock, the root uv.lock, or per-project uv.lock files.Cargo.tomlCargo.lockpyproject.tomluv.locksdk/python/nemo-fabric/pyproject.tomlsdk/python/nemo-fabric/uv.locksdk/python/nemo-fabric-runtime/pyproject.tomlsdk/python/nemo-fabric-runtime/uv.lockadapter-contract/python/pyproject.tomladapter-contract/python/uv.lockadapters/python/*/pyproject.tomladapters/python/*/uv.lockadapter-contract/typescript/package.jsonadapter-contract/typescript/package-lock.jsonjustfile