diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e8a176e09a2..9191849322d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,3 +1,8 @@
+
+
# Contributing to NVIDIA NemoClaw
Thank you for your interest in contributing to NVIDIA NemoClaw. This guide covers how to set up your development environment, run tests, and submit changes.
@@ -76,8 +81,10 @@ These are the primary `make` and `npm` targets for day-to-day development:
| `npm run typecheck:cli` | Type-check CLI TypeScript using `tsconfig.cli.json` (`bin/`, `scripts/`, `src/`, `test/`, `nemoclaw-blueprint/scripts/`) |
| `npm test` | Run root-level tests (`test/*.test.js`) |
| `cd nemoclaw && npm test` | Run plugin unit tests (Vitest) |
-| `make docs` | Validate Fern documentation |
-| `make docs-live` | Serve Fern docs locally with auto-rebuild |
+| `npm run docs` | Validate Fern documentation with the pinned Fern CLI version |
+| `npm run docs:live` | Serve Fern docs locally with auto-rebuild |
+| `npm run docs:preview:watch` | Publish branch-based Fern previews when docs files change |
+| `npm run docs:deps` | Print the pinned Fern CLI version used by docs commands |
| `npx prek run --all-files` | Run all hooks from `.pre-commit-config.yaml` — see below |
### Git hooks (prek)
@@ -106,7 +113,7 @@ Run the docs and hook checks instead:
```bash
npx prek run --all-files
-make docs
+npm run docs
```
Leave `npm test` unchecked in the PR verification checklist unless you actually ran it.
@@ -144,10 +151,13 @@ During release prep, run that skill first, make any doc version bumps, regenerat
To build and preview docs locally:
```console
-$ make docs # validate the Fern docs
-$ make docs-live # serve Fern docs locally with auto-rebuild
+$ npm run docs # validate Fern docs with the pinned Fern CLI version
+$ npm run docs:live # serve Fern docs locally with auto-rebuild
+$ npm run docs:preview:watch # publish branch-based Fern previews on file changes
```
+Use these npm scripts when validating docs for a PR.
+
See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for the full style guide and writing conventions.
### Doc-to-Skills Pipeline
@@ -177,7 +187,7 @@ Follow these steps to submit a pull request.
1. Create a feature branch from `main`.
2. Make your changes with tests.
-3. Run the relevant checks. For code changes, run `make check` and `npm test`. For doc-only changes, run `npx prek run --all-files` and `make docs`.
+3. Run the relevant checks. For code changes, run `make check` and `npm test`. For doc-only changes, run `npx prek run --all-files` and `npm run docs`.
4. Open a PR.
### Commit Messages
diff --git a/Makefile b/Makefile
index 999a63d0abd..a7e4629b033 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-.PHONY: check lint format format-biome lint-ts format-ts check-installer-hash docs docs-deps docs-strict docs-live docs-clean
+.PHONY: check lint format format-biome lint-ts format-ts check-installer-hash docs docs-deps docs-strict docs-live docs-preview-watch docs-clean
check:
npm run check
@@ -38,5 +38,8 @@ docs-strict:
docs-live:
npm run docs:live
+docs-preview-watch:
+ npm run docs:preview:watch
+
docs-clean:
npm run docs:clean
diff --git a/README.md b/README.md
index 1fe76b97813..a17be1d085e 100644
--- a/README.md
+++ b/README.md
@@ -241,6 +241,23 @@ Refer to the following pages on the official documentation website for more info
| [CLI Commands](https://docs.nvidia.com/nemoclaw/latest/reference/commands.html) | Full NemoClaw CLI command reference. |
| [Troubleshooting](https://docs.nvidia.com/nemoclaw/latest/reference/troubleshooting.html) | Common issues and resolution steps. |
+### Build Docs Locally
+
+The public documentation site is built with Fern.
+The repo pins the Fern CLI version in `fern/fern.config.json`.
+Use the npm scripts so every docs command uses that pinned version.
+
+```bash
+npm run docs
+npm run docs:live
+```
+
+To publish a branch-based Fern preview whenever docs files change, run:
+
+```bash
+npm run docs:preview:watch
+```
+
## Project Structure
The following directories make up the NemoClaw repository.
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index 27273a99951..d49187c564c 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -1,3 +1,8 @@
+
+
# Contributing to NemoClaw Documentation
This guide covers how to write, edit, and review documentation for NemoClaw. If you change code that affects user-facing behavior, update the relevant docs in the same PR.
@@ -103,18 +108,36 @@ For full usage details and all flags, see the docstring at the top of `scripts/d
Verify the docs are built correctly by building them and checking the output.
-The public site is built with Fern. To validate the Fern configuration and migrated MDX pages, run:
+The public site is built with Fern.
+The repo pins the Fern CLI version in `fern/fern.config.json`.
+Use the npm scripts so every docs command uses that pinned version.
+
+To print the pinned Fern CLI version, run:
+
+```console
+$ npm run docs:deps
+```
+
+To validate the Fern configuration and migrated MDX pages, run:
```console
-$ make docs
+$ npm run docs
```
To serve the docs locally and automatically rebuild on changes, run:
```console
-$ make docs-live
+$ npm run docs:live
```
+To publish a branch-based Fern preview whenever docs files change, run:
+
+```console
+$ npm run docs:preview:watch
+```
+
+The preview watcher uses the current Git branch name as the Fern preview ID and watches the `docs/` and `fern/` directories.
+
Fern `.mdx` pages are the source for generated user skills. Legacy `.md` pages may remain temporarily for parity checks, but release-prep skill generation should pass `--doc-platform fern-mdx`.
## Doc-Only PR Verification
@@ -124,7 +147,7 @@ Before opening a doc-only PR, run:
```console
$ npx prek run --all-files
-$ make docs
+$ npm run docs
```
Leave `npm test` unchecked in the PR verification checklist unless you actually ran it.
@@ -264,7 +287,7 @@ Use these consistently:
1. Create a branch following the project convention.
2. Make your changes.
-3. Build locally with `make docs` and verify the output.
+3. Build locally with `npm run docs` and verify the output.
4. Open a PR with `docs:` as the conventional commit type.
```text
diff --git a/docs/_components/BadgeLinks.tsx b/docs/_components/BadgeLinks.tsx
index 8a23ff894a5..eefe8e4414c 100644
--- a/docs/_components/BadgeLinks.tsx
+++ b/docs/_components/BadgeLinks.tsx
@@ -1,9 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
/**
* Badge links for GitHub, License, project status, Discord, etc.
* Uses a flex wrapper to display badges horizontally and hides Fern's
* external-link icon that otherwise stacks under each badge image.
* Requires the `.badge-links` CSS rule from main.css.
*/
+declare const React: unknown;
+
export type BadgeItem = {
href: string;
src: string;
@@ -15,10 +22,37 @@ export function BadgeLinks({ badges = [] }: { badges?: BadgeItem[] }) {
return null;
}
return (
-