npx skills add ...
npx skills add nvidia/nemo-fabric --skill maintain-packaging
Maintain NVIDIA NeMo Fabric Rust, Python, and TypeScript dependencies, package metadata, module paths, native artifacts, lockfiles, license evidence, and release-facing build surfaces
npx skills add nvidia/nemo-fabric --skill maintain-packaging
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 a change affects how NeMo Fabric is built, packaged, named, or consumed outside the source tree.
Cargo.toml package names and workspace metadatapyproject.tomlsdk/python/ and
adapter-contract/python/sdk/python/nemo-fabric-runtime/src/nemo_fabricCargo.lock and uv.lockadapter-contract/typescript/package.json and package-lock.jsondocs/package.json and
docs/package-lock.json.github/workflows/publish_typescript.yml and
the protected npmjs environmentjustfile build, test, clean, and documentation recipesRELEASING.mdTreat every direct dependency as a long-lived API, supply-chain, and licensing commitment.
Keep nemo-fabric as a metapackage that unconditionally installs the
exact-version nemo-fabric-runtime distribution. Its harness extras delegate
to version-matched leaf adapter harness extras. Hermes Agent is the sole
exception: its root extra delegates to the bare adapter because Hermes Agent
0.20 and later is not installable from PyPI. Do not add other adapter-only
aliases.
Keep the runtime streaming extra pinned to the version-matched
nemo-fabric-collector distribution. The metapackage streaming extra must
delegate to the version-matched runtime extra. Do not expose a separate
metapackage collector extra.
Keep leaf adapters adapter-only by default. Every leaf provides full, and
every package-installable harness provides harness. The Hermes adapter omits
harness because users install Hermes Agent separately from source. Provide
relay only when the adapter imports the NeMo Relay Python package. For
adapters that launch the Relay CLI, both harness and full install the
version-matched nemo-relay-cli-bin package and remain equivalent.
First prefer the standard library, an existing dependency, or a small local implementation when it keeps the behavior clear and maintainable.
When multiple dependencies satisfy the technical requirement, prefer the maintained OSS option with clear SPDX metadata, a smaller transitive graph, and permissive terms such as Apache-2.0, MIT, BSD, or ISC.
Inspect the resolved transitive graph, not only the direct package license.
Treat UNKNOWN, non-SPDX/custom, proprietary or source-available terms, and
copyleft or network-copyleft terms as explicit review points. Do not silently
accept or reject them; route them to the dependency approvers with the
distribution and linkage context.
Record the functional need, viable alternatives considered, why the selected dependency is the narrowest fit, and any unresolved licensing question.
Run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/main
after updating manifests and lockfiles, then review added packages and license
changes.
For adapter-contract/typescript/package-lock.json, inspect the resolved
package entries and their license fields. The adapter-contract package must
keep an empty production dependency graph; build-only dependencies still
require permissive, recorded license evidence.
Regenerate the attribution files with the named pre-commit hooks instead of editing generated output:
The license diff is evidence for reviewers. Dependency approvers make compatibility decisions using the distribution and linkage context.
nemo_fabric._nativepyproject.tomlRELEASING.mdsdk/python/nemo-fabric/pyproject.tomlsdk/python/nemo-fabric-runtime/pyproject.tomladapter-contract/python/pyproject.tomlCargo.tomlCargo.lockuv.lockdocs/package.jsondocs/package-lock.jsonadapter-contract/typescript/package.jsonadapter-contract/typescript/package-lock.json.github/workflows/ci_typescript.yml.github/workflows/publish_typescript.ymlscripts/ci/publish_typescript_package.py.github/workflows/ci_python.yml.github/workflows/ci_rust.yml.pre-commit-config.yamlscripts/licensing/license_diff.pyjustfile