Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# 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.
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
33 changes: 28 additions & 5 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# 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.
Expand Down Expand Up @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand Down
40 changes: 37 additions & 3 deletions docs/_components/BadgeLinks.tsx
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -15,10 +22,37 @@ export function BadgeLinks({ badges = [] }: { badges?: BadgeItem[] }) {
return null;
}
return (
<div className="badge-links">
<div
className="badge-links"
style={{
alignItems: "center",
display: "flex",
flexWrap: "wrap",
gap: "8px",
lineHeight: 0,
margin: "0.25rem 0 0.75rem",
}}
>
{badges.map((b) => (
<a key={b.href} href={b.href} target="_blank" rel="noreferrer">
<img src={b.src} alt={b.alt} />
<a
key={b.href}
href={b.href}
target="_blank"
rel="noreferrer"
style={{
alignItems: "center",
display: "inline-flex",
width: "auto",
}}
>
<img
src={b.src}
alt={b.alt}
style={{
display: "block",
margin: 0,
}}
/>
</a>
))}
</div>
Expand Down
59 changes: 59 additions & 0 deletions docs/_components/CommandTerminal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*/

declare const React: unknown;

export function CommandTerminal({ command }: { command: string }) {
return (
<div
style={{
background: "#1a1a2e",
borderRadius: "8px",
boxShadow: "0 4px 16px rgb(0 0 0 / 25%)",
fontFamily:
'"SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace',
fontSize: "0.875rem",
lineHeight: 1.8,
margin: "1.5rem 0",
overflow: "hidden",
}}
>
<div
style={{
alignItems: "center",
background: "#252545",
display: "flex",
gap: "7px",
padding: "10px 14px",
}}
>
<span style={dotStyle("#ff5f56")} />
<span style={dotStyle("#ffbd2e")} />
<span style={dotStyle("#27c93f")} />
</div>
<div
style={{
color: "#d4d4d8",
overflowX: "auto",
padding: "16px 20px",
whiteSpace: "nowrap",
}}
>
<span style={{ color: "#76B900", userSelect: "none" }}>$ </span>
<span>{command}</span>
</div>
</div>
);
}

function dotStyle(background: string) {
return {
background,
borderRadius: "50%",
display: "inline-block",
height: "12px",
width: "12px",
};
}
21 changes: 7 additions & 14 deletions docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ position: 1
---

import { BadgeLinks } from "./_components/BadgeLinks";
import { CommandTerminal } from "./_components/CommandTerminal";

<BadgeLinks
badges={[
Expand Down Expand Up @@ -45,19 +46,7 @@ Install NemoClaw and run your first sandboxed agent.

<llms-ignore>

<div className="nc-term">
<div className="nc-term-bar">
<span className="nc-term-dot nc-term-dot-r" />
<span className="nc-term-dot nc-term-dot-y" />
<span className="nc-term-dot nc-term-dot-g" />
</div>
<div className="nc-term-body">
<div>
<span className="nc-ps">$ </span>
<span>curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash</span>
</div>
</div>
</div>
<CommandTerminal command="curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash" />

</llms-ignore>

Expand All @@ -69,7 +58,11 @@ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash

</llms-only>

The Fern migration is starting with the About section while the remaining MyST pages stay in place as the legacy source for generated user skills and parity checks.
For getting started guidance, see [Quickstart](/get-started/quickstart).

Learn about the NemoClaw architecture in [Architecture Overview](/about/how-it-works), [Ecosystem](/about/ecosystem), and [Architecture Details](/reference/architecture).

Find NemoClaw user skills for your host AI coding assistant in [Agent Skills](/resources/agent-skills).

---

Expand Down
17 changes: 17 additions & 0 deletions fern/components/CurrentRelease.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*/

/**
* Inline component that renders the current docs version (e.g. "26.02").
* Parses the version from the URL path (/v26.02/...) at runtime.
* Use in headers or prose: # NeMo Curator <CurrentRelease /> Release Notes
*/
export function CurrentRelease() {
Comment thread
coderabbitai[bot] marked this conversation as resolved.
if (typeof window !== "undefined") {
const match = window.location.pathname.match(/\/v(\d+\.\d+)(?:\/|$)/);
if (match) return <span>{match[1]}</span>;
}
return <span>26.02</span>;
}
Loading
Loading