nvidia/validate-change
Choose and run the right NeMo Relay validation matrix for a change instead of using one fixed test list
npx skills add https://github.com/NVIDIA/NeMo-Relay --skill validate-change
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 to choose the smallest validation set that still covers the
surfaces touched by a change.
lint/test pass.
just test-rust.cargo fmt --all.cargo clippy --workspace --all-targets -- -D warnings.crates/core or crates/adaptive changed, run the full matrix across Rust,Python, Go, and Node.js.
Rust core did not change.
maintain-dynamic-plugins and includethe native SDK, worker protocol, Python SDK, docs, packaging, and Codecov
surfaces in the validation plan.
observability/adaptive semantics, or documented best practices, update any
dependent maintainer or consumer skills in the same branch.
uv run pre-commit run --files <changed files...>.uv run pre-commit run --all-files.Use test-rust-core. This always includes just test-rust,
cargo fmt --all, cargo clippy --workspace --all-targets -- -D warnings,
and the full matrix across Rust, Python, Go, and Node.js.
Use test-python-binding.
Use test-go-binding.
Use test-node-binding.
Use test-ffi-surface.
Run the relevant language test target and focused integration tests or smoke
path.
Use maintain-dynamic-plugins. Run the targeted plugin crates and
just test-python-plugin first, then escalate to the core validation matrix
when runtime behavior or crates/core changed.
Run targeted checks only if commands, package names, or examples changed.
Use just docs for docs-site builds and just docs-linkcheck when links
changed. The ./scripts/build-docs.sh wrapper remains available for
compatibility.
just test-rust
just test-python
just test-go
just test-node
# Rust only
just build-rust
just test-rust
just ci=true test-rust
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
# Python
just build-python
just build-python-plugin
just test-python
just test-python-plugin
uv run ruff format python
uv run pytest -k "<pattern>"
# Go
just build-go
just test-go
cd go/nemo_relay && go fmt ./...
# Node
just build-node
just test-node
npm run format --workspace=nemo-relay-node
# Docs site
just docs
just docs-linkcheck
test-rust-coretest-python-bindingtest-go-bindingtest-node-bindingtest-ffi-surfacemaintain-dynamic-pluginsUse pre-commit in two modes:
uv run pre-commit run --files <changed files...>.uv run pre-commit run --all-files.Important: --files still triggers any matching hook whose files or types
selectors match the provided paths. Some hooks then ignore filenames and run a
whole-language or workspace-wide command because they are configured with
pass_filenames: false.
Examples from this repo:
ty check . ... for the Python project.
cargo fmt --all --, cargo clippy --workspace --all-targets -- -D warnings,and cargo check --workspace --all-targets.
gofmt on the selected files and go vet ./....README.md, CONTRIBUTING.md, or docs/trigger the docs link checker.
Cargo.toml, Cargo.lock, or deny.toml triggers cargo deny check.Cargo.lock, uv.lock, or package-lock.json triggersthe attributions generators.
checks, while matching Node.js JS/TS files trigger the prettier wrapper.
Run these whenever the change is headed for review. Rust changes should still
run cargo fmt --all and cargo clippy --workspace --all-targets -- -D warnings
even if you also plan to rely on pre-commit.
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
uv run pre-commit run --all-files
If the change is large or public-facing, also verify:
compat.relay = ">=0.5,<1.0" unless deliberatelynarrower.
docs/contribute/testing-and-docs.mdxCONTRIBUTING.mdjustfileTake nvidia/validate-change from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.