SKILL.md
Update Project Version
Companion Guidance
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 released NeMo Relay version, including pre-release or build-metadata variants used during packaging.
Source Of Truth
Cargo.toml[workspace.package].versionis the source of truth for the Rust
workspace and Python build versioning.
- Keep
Cargo.toml[workspace.dependencies]self-references aligned when the
workspace version changes.
crates/node/package.jsoncarries its own npm package version and must stay
aligned with the workspace-root package-lock.json.
integrations/openclaw/package.jsoncarries the OpenClaw npm plugin version
and must stay aligned with the workspace-root package-lock.json.
package-lock.jsonrecords Node package versions under
packages["crates/node"].version and packages["integrations/openclaw"].version. The workspace-root lockfile may not have a top-level version field.
Workflow
- Read the current version from
Cargo.tomland decide the exact target
version string.
- Run
just set-version <version>to update release-version source files:
- [workspace.package].version - workspace.dependencies.nemo-relay.version - workspace.dependencies.nemo-relay-adaptive.version - workspace.dependencies.nemo-relay-pii-redaction.version - workspace.dependencies.nemo-relay-ffi.version - workspace.dependencies.nemo-relay-cli.version - crates/node/package.json version - integrations/openclaw/package.json version - package-lock.json packages["crates/node"].version - package-lock.json packages["integrations/openclaw"].version - integrations/openclaw/package.json dependencies["nemo-relay-node"] - package-lock.json packages["integrations/openclaw"].dependencies["nemo-relay-node"]
- If editing helper code, keep helper inputs aligned with those same fields:
- setprojectversion should call the Cargo, Node, and coding-agent plugin version helpers for the same target version. - setcargoworkspaceversion should update [workspace.package].version plus workspace.dependencies.nemo-relay.version, workspace.dependencies.nemo-relay-adaptive.version, workspace.dependencies.nemo-relay-pii-redaction.version, workspace.dependencies.nemo-relay-ffi.version, and workspace.dependencies.nemo-relay-cli.version. - setnodepackageversions should update crates/node/package.json, integrations/openclaw/package.json, the corresponding package-lock.json package entries, and the OpenClaw nemo-relay-node dependency entries in both files. setnodepackageversion remains a compatibility alias. setnpmpackageversion remains the reusable npm JSON helper for Node packaging recipes.
- Refresh generated surfaces:
- Run cargo check --workspace to refresh Cargo.lock if workspace package entries changed. - If Cargo metadata changed and committed attribution files must stay fresh, regenerate ATTRIBUTIONS-Rust.md with ./scripts/generateattributions.sh rust. - If package-lock.json changed, regenerate ATTRIBUTIONS-Node.md with ./scripts/generateattributions.sh node.
- Audit remaining references to the old version with targeted search. Separate
true version pins from examples, generated attribution files, and unrelated third-party versions.
Validation
rg -n '^version =|nemo-relay = \\{ version =|nemo-relay-adaptive = \\{ version =|nemo-relay-pii-redaction = \\{ version =|nemo-relay-ffi = \\{ version =|nemo-relay-cli = \\{ version =' Cargo.tomlrg -n '\"version\"' crates/node/package.json integrations/openclaw/package.json package-lock.jsoncargo check --workspace- If Rust attribution files are expected to stay current:
./scripts/generate_attributions.sh rust
- If Node packaging changed materially: run
npm install --ignore-scriptsfrom
the repository root or stronger Node validation through just test-node
Release Notes
just package-nodeandjust package-pythonmay set
temporary non-release versions for packaging. Do not commit those temporary suffixes as the canonical project version unless the release process requires that exact string.
Avoid
- Updating only
Cargo.tomlor only Node package metadata - Forgetting
Cargo.lock,ATTRIBUTIONS-Rust.md, orATTRIBUTIONS-Node.md
after changing versioned inputs that feed them
- Doing blind repository-wide search/replace across docs and
generated attribution files
References
Cargo.tomlCargo.lockpackage.jsonpackage-lock.jsoncrates/node/package.jsonintegrations/openclaw/package.jsonjustfilescripts/licensing/attributionslockfilemd.py