Conversation
📝 WalkthroughWalkthroughAdds a doc-to-skills pipeline and a large set of autogenerated NemoClaw skill documentation pages under Changes
Sequence Diagram(s)sequenceDiagram
actor User as User/CLI
participant Scanner as File Scanner
participant Parser as Metadata Parser
participant Grouper as Skill Grouper
participant Generator as Output Generator
participant Writer as File Writer
User->>Scanner: Run script with docs_dir, output_dir, flags
Scanner->>Scanner: Discover `*.md` files
Scanner->>Parser: Send file contents
loop per file
Parser->>Parser: Extract frontmatter & H2 sections
Parser->>Parser: Normalize MyST/Sphinx, rewrite links
Parser->>Grouper: Emit normalized page metadata
end
Grouper->>Grouper: Apply grouping strategy
Grouper->>Generator: Build skill groups & reference map
loop per skill group
Generator->>Generator: Compose `SKILL.md` and `references/`
Generator->>Writer: Queue files to write
end
Writer->>User: Print inventory and stats
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
52dbea1 to
f4d81e7
Compare
|
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (1)
.agents/skills/docs/nemoclaw-manage-policy/SKILL.md (1)
10-14: Consolidate redundant prerequisite entries.The prerequisites list "A running NemoClaw sandbox" twice (lines 12 and 14). Line 14 provides more specific context about static vs. dynamic changes. Consider removing line 12 or merging the information to avoid redundancy.
📝 Suggested consolidation
## Prerequisites -- A running NemoClaw sandbox. - The OpenShell CLI on your `PATH`. - A running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository for static changes.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-manage-policy/SKILL.md around lines 10 - 14, In the "Prerequisites" section remove the redundant plain entry "A running NemoClaw sandbox" and consolidate into the more specific line that mentions sandbox vs source repository (keep the line that explains "A running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository for static changes" and delete the duplicate); update the Prerequisites paragraph under the "Prerequisites" heading to contain only the consolidated, non-redundant entries so the list is clear and not duplicated.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md:
- Around line 69-72: Replace the hard-coded sandbox name in the Step 4 example
command so it matches the placeholder used earlier: change the command string
"nemoclaw my-assistant connect" to "nemoclaw <name> connect" (the line
containing the example command in SKILL.md near the openclaw example), keeping
the rest of the example (the openclaw agent command) unchanged.
In @.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md:
- Around line 40-50: Remove the leading shell prompt character from the two
console code blocks to satisfy markdownlint MD014: replace lines containing "$
openshell inference set --provider nvidia-nim --model
nvidia/nemotron-3-super-120b-a12b" and "$ openshell inference set --provider
nvidia-nim --model <model-name>" with the same commands without the leading "$"
so the blocks show just "openshell inference set --provider nvidia-nim --model
nvidia/nemotron-3-super-120b-a12b" and "openshell inference set --provider
nvidia-nim --model <model-name>" respectively.
In `@scripts/docs-to-skills.py`:
- Around line 305-327: The link-rewriting logic should strip and preserve URL
fragments before checking suffixes and determining skill mappings: extract the
fragment from raw_path (e.g., split on '#' into path and fragment), use the path
part for the ".md"/".html" suffix check and resolving (variables: raw_path ->
path_part, fragment), then when constructing the replacement preserve the
fragment—if rel_str maps to a skill via doc_to_skill produce the intra-skill
link to the generated file or anchor (use skill_name plus the fragment or the
generated filename#fragment) instead of collapsing all to "see the `skill`
skill"; otherwise include the fragment on the repo-root-relative return value
(use link_text and rel_to_repo plus "#fragment" when present).
- Around line 223-235: The current re.sub calls that replace ```{include}```
blocks (the two regexes operating on the variable text) are discarding included
content; instead, detect the included path captured by \1, if it is a local file
resolve and read its contents and inline or convert it to a linked reference
before replacing; modify the code around the two re.sub usages (the blocks that
operate on text) to call a helper (e.g., resolve_include(path) or
inline_local_includes(text)) that checks whether the include target is a local
repo file, reads and returns its markdown (or produces a reference link) and
then substitutes that content into text rather than the placeholder sentence so
procedure SKILL.md files keep required install/launch steps.
- Around line 119-126: The block-list handling drops YAML block-style lists
because when a parent key was pre-initialized as an empty dict ({}), the '- '
branch treats it as non-list and skips attaching items; in the code around the
'- ' handling use _current_dict(result, parent_stack) and current_key to find
the target, update that logic to detect if target[current_key] exists as an
empty dict and convert it to a list before appending (i.e., if
isinstance(target[current_key], dict) and not target[current_key]: set
target[current_key] = []), otherwise preserve existing list behavior; apply the
same fix to the analogous branch handling keys created earlier so block-style
lists like keywords: / audience: become list[str] instead of {}.
- Around line 1025-1054: After building skill_names via generate_skill_name for
each group, detect duplicate generated names (sname) across groups and fail
fast: build a reverse map from sname → list of group_names (or count), and if
any sname maps to more than one group, print/log the conflicting group names and
raise/exit with a non-zero error before calling generate_skill; update the code
paths that use skill_names (the loops referencing skill_names[group_name] and
the subsequent generate_skill calls) to assume uniqueness is enforced. This
check should reference generate_skill_name, skill_names, groups, and
generate_skill so collisions are caught early and no SKILL.md or references/
directories get silently overwritten.
- Around line 671-674: The YAML frontmatter writer in scripts/docs-to-skills.py
is emitting an unquoted description which breaks YAML when the prose contains
colons; update the SKILL.md generation so the description value is safely quoted
or YAML-escaped before writing (modify the code that calls
lines.append(f"description: {description}") to wrap/escape description, e.g.,
using json.dumps(description) or a YAML-escaping helper), keep the surrounding
frontmatter writes (lines.append("---") and lines.append(f"name: {name}"))
unchanged, and then regenerate the skills as instructed.
---
Nitpick comments:
In @.agents/skills/docs/nemoclaw-manage-policy/SKILL.md:
- Around line 10-14: In the "Prerequisites" section remove the redundant plain
entry "A running NemoClaw sandbox" and consolidate into the more specific line
that mentions sandbox vs source repository (keep the line that explains "A
running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository
for static changes" and delete the duplicate); update the Prerequisites
paragraph under the "Prerequisites" heading to contain only the consolidated,
non-redundant entries so the list is clear and not duplicated.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 3771d771-0c44-43e4-a172-f9d8e1e813b1
📒 Files selected for processing (16)
.agents/skills/docs/nemoclaw-configure-inference/SKILL.md.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md.agents/skills/docs/nemoclaw-get-started/SKILL.md.agents/skills/docs/nemoclaw-manage-policy/SKILL.md.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md.agents/skills/docs/nemoclaw-overview/SKILL.md.agents/skills/docs/nemoclaw-overview/references/how-it-works.md.agents/skills/docs/nemoclaw-overview/references/overview.md.agents/skills/docs/nemoclaw-overview/references/release-notes.md.agents/skills/docs/nemoclaw-reference/SKILL.md.agents/skills/docs/nemoclaw-reference/references/architecture.md.agents/skills/docs/nemoclaw-reference/references/commands.md.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md.agents/skills/docs/nemoclaw-reference/references/network-policies.md.agents/skills/docs/nemoclaw-reference/references/troubleshooting.mdscripts/docs-to-skills.py
| ```console | ||
| $ nemoclaw my-assistant connect | ||
| $ openclaw agent --agent main --local -m "Test inference" --session-id debug | ||
| ``` |
There was a problem hiding this comment.
Keep the sandbox name placeholder consistent in Step 4.
Earlier steps use <name>, but Line 70 switches to my-assistant. A reader who copy-pastes Step 4 as written will connect to the wrong sandbox unless they notice the hard-coded example.
✏️ Minimal fix
```console
-$ nemoclaw my-assistant connect
+$ nemoclaw <name> connect
$ openclaw agent --agent main --local -m "Test inference" --session-id debug</details>
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md around lines 69 - 72,
Replace the hard-coded sandbox name in the Step 4 example command so it matches
the placeholder used earlier: change the command string "nemoclaw my-assistant
connect" to "nemoclaw <name> connect" (the line containing the example command
in SKILL.md near the openclaw example), keeping the rest of the example (the
openclaw agent command) unchanged.
| ```console | ||
| $ openshell inference set --provider nvidia-nim --model nvidia/nemotron-3-super-120b-a12b | ||
| ``` | ||
|
|
||
| ## Switching Models at Runtime | ||
|
|
||
| After the sandbox is running, switch models with the OpenShell CLI: | ||
|
|
||
| ```console | ||
| $ openshell inference set --provider nvidia-nim --model <model-name> | ||
| ``` |
There was a problem hiding this comment.
Remove the shell prompt from these console blocks.
markdownlint MD014 is firing on both examples. If you're not showing command output, drop the leading $ so this page passes lint cleanly.
✏️ Minimal fix
```console
-$ openshell inference set --provider nvidia-nim --model nvidia/nemotron-3-super-120b-a12b
+openshell inference set --provider nvidia-nim --model nvidia/nemotron-3-super-120b-a12b...
-$ openshell inference set --provider nvidia-nim --model <model-name>
+openshell inference set --provider nvidia-nim --model <model-name></details>
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.21.0)</summary>
[warning] 41-41: Dollar signs used before commands without showing output
(MD014, commands-show-output)
---
[warning] 49-49: Dollar signs used before commands without showing output
(MD014, commands-show-output)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md
around lines 40 - 50, Remove the leading shell prompt character from the two
console code blocks to satisfy markdownlint MD014: replace lines containing "$
openshell inference set --provider nvidia-nim --model
nvidia/nemotron-3-super-120b-a12b" and "$ openshell inference set --provider
nvidia-nim --model " with the same commands without the leading "$"
so the blocks show just "openshell inference set --provider nvidia-nim --model
nvidia/nemotron-3-super-120b-a12b" and "openshell inference set --provider
nvidia-nim --model " respectively.
</details>
<!-- fingerprinting:phantom:medusa:grasshopper -->
<!-- This is an auto-generated comment by CodeRabbit -->
| if stripped.startswith("- "): | ||
| value = stripped[2:].strip().strip('"').strip("'") | ||
| if current_key and current_key in _current_dict(result, parent_stack): | ||
| target = _current_dict(result, parent_stack) | ||
| if not isinstance(target[current_key], list): | ||
| target[current_key] = [] | ||
| target[current_key].append(value) | ||
| continue |
There was a problem hiding this comment.
Block-style YAML lists are dropped here.
After Line 149 creates {} for key:, the - item branch at Line 119 no longer has a parent key to attach to. Frontmatter like keywords: / audience: written as block lists is parsed as {} instead of list[str], so that metadata silently disappears.
🩹 Minimal fix
if stripped.startswith("- "):
value = stripped[2:].strip().strip('"').strip("'")
- if current_key and current_key in _current_dict(result, parent_stack):
- target = _current_dict(result, parent_stack)
+ target = _current_dict(result, parent_stack)
+ if isinstance(target, list):
+ target.append(value)
+ elif current_key and current_key in target:
if not isinstance(target[current_key], list):
target[current_key] = []
target[current_key].append(value)
+ elif parent_stack:
+ list_key, parent_dict, _ = parent_stack[-1]
+ if parent_dict.get(list_key) == {}:
+ parent_dict[list_key] = [value]
continueAlso applies to: 148-151
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@scripts/docs-to-skills.py` around lines 119 - 126, The block-list handling
drops YAML block-style lists because when a parent key was pre-initialized as an
empty dict ({}), the '- ' branch treats it as non-list and skips attaching
items; in the code around the '- ' handling use _current_dict(result,
parent_stack) and current_key to find the target, update that logic to detect if
target[current_key] exists as an empty dict and convert it to a list before
appending (i.e., if isinstance(target[current_key], dict) and not
target[current_key]: set target[current_key] = []), otherwise preserve existing
list behavior; apply the same fix to the analogous branch handling keys created
earlier so block-style lists like keywords: / audience: become list[str] instead
of {}.
| # Multi-line {include} directives with :start-after: etc. | ||
| text = re.sub( | ||
| r"```\{include\}\s*([^\n]+)\n(?::[^\n]+\n)*```", | ||
| r"> *Content included from \1 — see the original doc for full text.*", | ||
| text, | ||
| ) | ||
|
|
||
| # Single-line {include} directives | ||
| text = re.sub( | ||
| r"```\{include\}\s*([^\n]+)\n```", | ||
| r"> *Content included from \1 — see the original doc for full text.*", | ||
| text, | ||
| ) |
There was a problem hiding this comment.
Don't strip required {include} content out of procedure skills.
These substitutions replace included markdown with a placeholder sentence. In this PR, .agents/skills/docs/nemoclaw-get-started/SKILL.md loses the actual install/launch steps because the README.md include was discarded. Please inline local includes, or at least materialize them as linked reference content, before generating procedure skills.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@scripts/docs-to-skills.py` around lines 223 - 235, The current re.sub calls
that replace ```{include}``` blocks (the two regexes operating on the variable
text) are discarding included content; instead, detect the included path
captured by \1, if it is a local file resolve and read its contents and inline
or convert it to a linked reference before replacing; modify the code around the
two re.sub usages (the blocks that operate on text) to call a helper (e.g.,
resolve_include(path) or inline_local_includes(text)) that checks whether the
include target is a local repo file, reads and returns its markdown (or produces
a reference link) and then substitutes that content into text rather than the
placeholder sentence so procedure SKILL.md files keep required install/launch
steps.
| # Skip external URLs and anchors | ||
| if raw_path.startswith(("http://", "https://", "#", "mailto:")): | ||
| return match.group(0) | ||
|
|
||
| # Skip non-doc files | ||
| if not raw_path.endswith(".md") and not raw_path.endswith(".html"): | ||
| return match.group(0) | ||
|
|
||
| # Resolve relative path against the source doc's directory | ||
| resolved = (source_dir / raw_path).resolve() | ||
| try: | ||
| rel_to_repo = resolved.relative_to(repo_root) | ||
| except ValueError: | ||
| return match.group(0) | ||
|
|
||
| # Check if target doc maps to a generated skill | ||
| rel_str = str(rel_to_repo) | ||
| if rel_str in doc_to_skill: | ||
| skill_name = doc_to_skill[rel_str] | ||
| return f"{link_text} (see the `{skill_name}` skill)" | ||
|
|
||
| # Fall back to repo-root-relative path | ||
| return f"[{link_text}]({rel_to_repo})" |
There was a problem hiding this comment.
Preserve same-skill targets and #anchor fragments when rewriting doc links.
Line 310 only rewrites paths ending exactly in .md / .html, so links like foo.md#bar are skipped. And when the target doc lands in the same generated skill, Line 324 collapses it to see the <skill> skill, which is why references/architecture.md now self-references nemoclaw-reference instead of linking to the specific reference page. Parse the fragment before the suffix check and keep intra-skill links pointing at the generated file or anchor.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@scripts/docs-to-skills.py` around lines 305 - 327, The link-rewriting logic
should strip and preserve URL fragments before checking suffixes and determining
skill mappings: extract the fragment from raw_path (e.g., split on '#' into path
and fragment), use the path part for the ".md"/".html" suffix check and
resolving (variables: raw_path -> path_part, fragment), then when constructing
the replacement preserve the fragment—if rel_str maps to a skill via
doc_to_skill produce the intra-skill link to the generated file or anchor (use
skill_name plus the fragment or the generated filename#fragment) instead of
collapsing all to "see the `skill` skill"; otherwise include the fragment on the
repo-root-relative return value (use link_text and rel_to_repo plus "#fragment"
when present).
| lines.append("---") | ||
| lines.append(f"name: {name}") | ||
| lines.append(f"description: {description}") | ||
| lines.append("---") |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
python - <<'PY'
from pathlib import Path
import importlib.util
import subprocess
import sys
if importlib.util.find_spec("yaml") is None:
subprocess.check_call([sys.executable, "-m", "pip", "install", "--quiet", "pyyaml"])
import yaml
for path in sorted(Path(".agents/skills/docs").rglob("SKILL.md")):
text = path.read_text(encoding="utf-8")
if not text.startswith("---\n"):
continue
try:
_, frontmatter, _ = text.split("---", 2)
yaml.safe_load(frontmatter)
except Exception as exc:
print(f"{path}: {exc}")
PYRepository: NVIDIA/NemoClaw
Length of output: 1070
🏁 Script executed:
sed -n '665,680p' scripts/docs-to-skills.pyRepository: NVIDIA/NemoClaw
Length of output: 435
🏁 Script executed:
head -20 scripts/docs-to-skills.py | grep -n "import"Repository: NVIDIA/NemoClaw
Length of output: 41
🏁 Script executed:
head -50 scripts/docs-to-skills.py | cat -nRepository: NVIDIA/NemoClaw
Length of output: 2894
🏁 Script executed:
grep -n "^import\|^from" scripts/docs-to-skills.py | head -20Repository: NVIDIA/NemoClaw
Length of output: 233
Fix unquoted YAML description frontmatter and regenerate skills.
The description field in the SKILL.md frontmatter is written as unquoted raw prose (line 673). When descriptions contain colons (e.g., "Also covers: ..."), the YAML parser fails with "mapping values are not allowed here". This affects 4 generated files:
.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md.agents/skills/docs/nemoclaw-manage-policy/SKILL.md.agents/skills/docs/nemoclaw-overview/SKILL.md.agents/skills/docs/nemoclaw-reference/SKILL.md
🛠️ Fix
+import json
...
lines.append("---")
lines.append(f"name: {name}")
- lines.append(f"description: {description}")
+ lines.append(f"description: {json.dumps(description)}")
lines.append("---")Then regenerate the skills:
python scripts/docs-to-skills.py docs/ .agents/skills/docs/ --prefix nemoclaw📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| lines.append("---") | |
| lines.append(f"name: {name}") | |
| lines.append(f"description: {description}") | |
| lines.append("---") | |
| lines.append("---") | |
| lines.append(f"name: {name}") | |
| lines.append(f"description: {json.dumps(description)}") | |
| lines.append("---") |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@scripts/docs-to-skills.py` around lines 671 - 674, The YAML frontmatter
writer in scripts/docs-to-skills.py is emitting an unquoted description which
breaks YAML when the prose contains colons; update the SKILL.md generation so
the description value is safely quoted or YAML-escaped before writing (modify
the code that calls lines.append(f"description: {description}") to wrap/escape
description, e.g., using json.dumps(description) or a YAML-escaping helper),
keep the surrounding frontmatter writes (lines.append("---") and
lines.append(f"name: {name}")) unchanged, and then regenerate the skills as
instructed.
| skill_names: dict[str, str] = {} # group_name → skill_name | ||
| for group_name, group_pages in sorted(groups.items()): | ||
| sname = generate_skill_name( | ||
| group_name, group_pages, | ||
| prefix=args.prefix, | ||
| name_overrides=name_overrides, | ||
| ) | ||
| skill_names[group_name] = sname | ||
|
|
||
| doc_to_skill: dict[str, str] = {} | ||
| for group_name, group_pages in groups.items(): | ||
| sname = skill_names[group_name] | ||
| for page in group_pages: | ||
| try: | ||
| rel = page.path.resolve().relative_to(repo_root) | ||
| doc_to_skill[str(rel)] = sname | ||
| except ValueError: | ||
| pass | ||
|
|
||
| # Generate skills | ||
| print(f"\n{'[DRY RUN] ' if args.dry_run else ''}Generating skills to {args.output_dir}/") | ||
| summaries: list[dict] = [] | ||
| for group_name, group_pages in sorted(groups.items()): | ||
| name = skill_names[group_name] | ||
| summary = generate_skill( | ||
| name, group_pages, args.output_dir, | ||
| docs_dir=docs_dir_resolved, | ||
| doc_to_skill=doc_to_skill, | ||
| dry_run=args.dry_run, | ||
| ) |
There was a problem hiding this comment.
Fail fast on duplicate generated skill names.
Nothing checks that generate_skill_name() is unique across groups. That's risky here because CATEGORY_NOUNS already normalizes both about and root to overview, and --name-map can create more collisions. If two groups resolve to the same name, the later generate_skill() call writes into the same directory and silently overwrites SKILL.md and references/.
🧭 Minimal fix
skill_names: dict[str, str] = {} # group_name → skill_name
+ generated_by_name: dict[str, list[str]] = {}
for group_name, group_pages in sorted(groups.items()):
sname = generate_skill_name(
group_name, group_pages,
prefix=args.prefix,
name_overrides=name_overrides,
)
skill_names[group_name] = sname
+ generated_by_name.setdefault(sname, []).append(group_name)
+
+ duplicates = {
+ sname: owners for sname, owners in generated_by_name.items() if len(owners) > 1
+ }
+ if duplicates:
+ for sname, owners in sorted(duplicates.items()):
+ print(
+ f"Error: generated skill name '{sname}' is shared by groups: {', '.join(owners)}",
+ file=sys.stderr,
+ )
+ sys.exit(1)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@scripts/docs-to-skills.py` around lines 1025 - 1054, After building
skill_names via generate_skill_name for each group, detect duplicate generated
names (sname) across groups and fail fast: build a reverse map from sname → list
of group_names (or count), and if any sname maps to more than one group,
print/log the conflicting group names and raise/exit with a non-zero error
before calling generate_skill; update the code paths that use skill_names (the
loops referencing skill_names[group_name] and the subsequent generate_skill
calls) to assume uniqueness is enforced. This check should reference
generate_skill_name, skill_names, groups, and generate_skill so collisions are
caught early and no SKILL.md or references/ directories get silently
overwritten.
There was a problem hiding this comment.
Actionable comments posted: 6
♻️ Duplicate comments (2)
.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md (1)
41-41:⚠️ Potential issue | 🟡 MinorRemove the shell prompt from these console blocks.
markdownlint MD014 is firing on both examples. If you're not showing command output, drop the leading
$so this page passes lint cleanly.✏️ Minimal fix
```console -$ openshell inference set --provider nvidia-nim --model nvidia/nemotron-3-super-120b-a12b +openshell inference set --provider nvidia-nim --model nvidia/nemotron-3-super-120b-a12b...
-$ openshell inference set --provider nvidia-nim --model <model-name> +openshell inference set --provider nvidia-nim --model <model-name></details> Also applies to: 49-49 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md at
line 41, The console code blocks include a leading shell prompt ($) which
triggers markdownlint MD014; remove the leading "$ " from the command lines so
the blocks contain raw commands like "openshell inference set --provider
nvidia-nim --model nvidia/nemotron-3-super-120b-a12b" (and the variant with
"") in the
.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md file to
resolve the lint error.</details> </blockquote></details> <details> <summary>.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md (1)</summary><blockquote> `69-72`: _⚠️ Potential issue_ | _🟡 Minor_ **Keep the sandbox name placeholder consistent in Step 4.** Earlier steps use `<name>`, but Line 70 switches to `my-assistant`. A reader who copy-pastes Step 4 as written will connect to the wrong sandbox unless they notice the hard-coded example. <details> <summary>✏️ Minimal fix</summary> ```diff ```console -$ nemoclaw my-assistant connect +$ nemoclaw <name> connect $ openclaw agent --agent main --local -m "Test inference" --session-id debug</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md around lines 69 - 72,
Step 4 in SKILL.md uses a hard-coded sandbox name in the command "nemoclaw
my-assistant connect" which is inconsistent with earlier steps that use the
placeholder ""; update that command to use the same placeholder (i.e.,
change "nemoclaw my-assistant connect" to "nemoclaw connect") so readers
can copy-paste the step and connect to the intended sandbox, leaving the
accompanying "openclaw agent --agent main --local -m "Test inference"
--session-id debug" line unchanged.</details> </blockquote></details> </blockquote></details> <details> <summary>🧹 Nitpick comments (4)</summary><blockquote> <details> <summary>CONTRIBUTING.md (1)</summary><blockquote> `118-124`: **Add a language identifier to the fenced code block.** The directory structure example should specify a language identifier (e.g., `text` or `tree`) to satisfy markdownlint MD040 and improve rendering consistency. <details> <summary>📝 Proposed fix</summary> ```diff -``` +```text .agents/skills/docs/<skill-name>/ ├── SKILL.md # Frontmatter + procedures + related skills └── references/ # Detailed concept and reference content (loaded on demand)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CONTRIBUTING.md` around lines 118 - 124, The fenced code block showing the directory tree for ".agents/skills/docs/<skill-name>/" lacks a language identifier; update the markdown block around that tree sample to include a language tag such as "text" or "tree" (e.g., change ``` to ```text) so the sample snippet (the SKILL.md and references/ tree) satisfies markdownlint MD040 and renders consistently..agents/skills/docs/nemoclaw-manage-policy/SKILL.md (2)
10-14: Consider refining the prerequisites list for clarity.Line 14 repeats "A running NemoClaw sandbox" from line 12. Consider consolidating these into a single, clearer prerequisite that distinguishes between dynamic changes (requires running sandbox) and static changes (requires source repository access).
✏️ Suggested refinement
## Prerequisites -- A running NemoClaw sandbox. - The OpenShell CLI on your `PATH`. -- A running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository for static changes. + - For dynamic policy changes: A running NemoClaw sandbox. + - For static policy changes: Access to the NemoClaw source repository.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-manage-policy/SKILL.md around lines 10 - 14, In the "Prerequisites" section of SKILL.md consolidate the duplicated "A running NemoClaw sandbox" entries into one clear bullet that distinguishes workflow types: state that for dynamic changes you need "A running NemoClaw sandbox" and for static changes you need "Access to the NemoClaw source repository" (and keep the existing "OpenShell CLI on your PATH" bullet); update the Prerequisites header and bullets so they're concise and non‑redundant.
27-31: Consider clarifying the path assumption in the SSH example.The SSH command uses a hardcoded path
/home/ubuntu/nemoclawwhich may not match all deployment scenarios. Consider adding a note that users should adjust the path to match their installation location, or use a more obvious placeholder like<nemoclaw-install-path>.📝 Suggested clarification
For a remote sandbox, pass the instance name: ```console -$ ssh my-gpu-box 'cd /home/ubuntu/nemoclaw && . .env && openshell term' +$ ssh my-gpu-box 'cd /path/to/nemoclaw && . .env && openshell term'
+Replace
/path/to/nemoclawwith your actual NemoClaw installation directory.</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-manage-policy/SKILL.md around lines 27 - 31,
Update the SSH example in SKILL.md to avoid a hardcoded path: replace the
literal '/home/ubuntu/nemoclaw' with a clear placeholder such as
'/path/to/nemoclaw' (or '') and add a short follow-up
note telling users to substitute this with their actual NemoClaw installation
directory; keep the rest of the command (the '. .env' sourcing and 'openshell
term' invocation) unchanged so the example still demonstrates the intended
workflow.</details> </blockquote></details> <details> <summary>.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md (1)</summary><blockquote> `35-41`: **Consider varying sentence structure for better readability.** Three consecutive sentences beginning with "If" (lines 35-36, and the implied conditional) can feel repetitive. While the current structure clearly conveys the conditional logic, consider minor rephrasing for flow. <details> <summary>✏️ Suggested style improvement</summary> ```diff -If the version is below 20, install a supported release. -If you use nvm, run: +If the version is below 20, install a supported release. For nvm users, run: ```console $ nvm install 20This maintains clarity while improving flow.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md around lines 35 - 41, The three consecutive lines starting with "If" (the sentence "If the version is below 20, install a supported release." followed by the nvm instructions block containing "nvm install 20" and "nvm use 20") feel repetitive; reword the prose to combine or vary these sentences for better flow—for example, merge the conditional and action into one sentence like "If your Node.js version is below 20, install and switch to a supported release using nvm (see nvm install 20 and nvm use 20)," and keep the existing code block unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.agents/skills/docs/nemoclaw-configure-inference/SKILL.md:
- Line 6: The heading currently reads "Nemoclaw Configure Inference" with
incorrect casing; update the heading text in SKILL.md to "NemoClaw Configure
Inference" (capital C) to match the required product casing convention used for
NemoClaw/OpenClaw/OpenShell; locate the top-level heading line in SKILL.md and
correct the word "Nemoclaw" to "NemoClaw".
In @.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md:
- Line 6: Update the heading text to use the correct product casing: change the
heading string "Nemoclaw Deploy Remote" to "NemoClaw Deploy Remote" in SKILL.md
so it matches the required casing for NemoClaw (ensure any other occurrences in
this file use the same "NemoClaw" capitalization).
In @.agents/skills/docs/nemoclaw-get-started/SKILL.md:
- Line 6: The heading currently reads "# Nemoclaw Get Started" with incorrect
casing; update the heading text to "# NemoClaw Get Started" so the product name
uses the correct CamelCase (NemoClaw) to match naming guidelines and other
references in this document.
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md:
- Line 6: Update the heading string in SKILL.md to use the correct casing
"NemoClaw" instead of "Nemoclaw"; locate the heading line that currently reads
"Nemoclaw Monitor Sandbox" and change it to "NemoClaw Monitor Sandbox" so it
matches the required naming convention used for NemoClaw/OpenClaw/OpenShell.
In @.agents/skills/docs/nemoclaw-overview/SKILL.md:
- Around line 76-81: Change the attributive phrase "open source" to the
hyphenated form "open-source" in the markdown text for NemoClaw: update "open
source reference stack" to "open-source reference stack" in the first sentence
and update both occurrences of "open source models" to "open-source models" in
the sentences mentioning NVIDIA Nemotron and the NVIDIA OpenShell runtime;
search for the phrase "NVIDIA NemoClaw" / the three sentences in the SKILL.md
snippet to locate and apply the edits.
In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md:
- Around line 7-9: Replace the malformed admonition `> **Get Help:** :class:
tip` in the troubleshooting.md content with a proper MyST-style block like `>
**Tip:**` (or `> **Get Help:**`) followed directly by the tip text; remove the
`:class: tip` token so the admonition renders correctly (locate the string `>
**Get Help:** :class: tip` in the file and update it to `> **Tip:** If your
issue is not listed here, ...` or similar consistent wording).
---
Duplicate comments:
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md:
- Around line 69-72: Step 4 in SKILL.md uses a hard-coded sandbox name in the
command "nemoclaw my-assistant connect" which is inconsistent with earlier steps
that use the placeholder "<name>"; update that command to use the same
placeholder (i.e., change "nemoclaw my-assistant connect" to "nemoclaw <name>
connect") so readers can copy-paste the step and connect to the intended
sandbox, leaving the accompanying "openclaw agent --agent main --local -m \"Test
inference\" --session-id debug" line unchanged.
In @.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md:
- Line 41: The console code blocks include a leading shell prompt ($) which
triggers markdownlint MD014; remove the leading "$ " from the command lines so
the blocks contain raw commands like "openshell inference set --provider
nvidia-nim --model nvidia/nemotron-3-super-120b-a12b" (and the variant with
"<model-name>") in the
.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md file to
resolve the lint error.
---
Nitpick comments:
In @.agents/skills/docs/nemoclaw-manage-policy/SKILL.md:
- Around line 10-14: In the "Prerequisites" section of SKILL.md consolidate the
duplicated "A running NemoClaw sandbox" entries into one clear bullet that
distinguishes workflow types: state that for dynamic changes you need "A running
NemoClaw sandbox" and for static changes you need "Access to the NemoClaw source
repository" (and keep the existing "OpenShell CLI on your PATH" bullet); update
the Prerequisites header and bullets so they're concise and non‑redundant.
- Around line 27-31: Update the SSH example in SKILL.md to avoid a hardcoded
path: replace the literal '/home/ubuntu/nemoclaw' with a clear placeholder such
as '/path/to/nemoclaw' (or '<nemoclaw-install-path>') and add a short follow-up
note telling users to substitute this with their actual NemoClaw installation
directory; keep the rest of the command (the '. .env' sourcing and 'openshell
term' invocation) unchanged so the example still demonstrates the intended
workflow.
In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md:
- Around line 35-41: The three consecutive lines starting with "If" (the
sentence "If the version is below 20, install a supported release." followed by
the nvm instructions block containing "nvm install 20" and "nvm use 20") feel
repetitive; reword the prose to combine or vary these sentences for better
flow—for example, merge the conditional and action into one sentence like "If
your Node.js version is below 20, install and switch to a supported release
using nvm (see nvm install 20 and nvm use 20)," and keep the existing code block
unchanged.
In `@CONTRIBUTING.md`:
- Around line 118-124: The fenced code block showing the directory tree for
".agents/skills/docs/<skill-name>/" lacks a language identifier; update the
markdown block around that tree sample to include a language tag such as "text"
or "tree" (e.g., change ``` to ```text) so the sample snippet (the SKILL.md and
references/ tree) satisfies markdownlint MD040 and renders consistently.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 579ed51d-6311-493d-884f-577bfdeb1dee
📒 Files selected for processing (18)
.agents/skills/docs/nemoclaw-configure-inference/SKILL.md.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md.agents/skills/docs/nemoclaw-get-started/SKILL.md.agents/skills/docs/nemoclaw-manage-policy/SKILL.md.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md.agents/skills/docs/nemoclaw-overview/SKILL.md.agents/skills/docs/nemoclaw-overview/references/how-it-works.md.agents/skills/docs/nemoclaw-overview/references/overview.md.agents/skills/docs/nemoclaw-overview/references/release-notes.md.agents/skills/docs/nemoclaw-reference/SKILL.md.agents/skills/docs/nemoclaw-reference/references/architecture.md.agents/skills/docs/nemoclaw-reference/references/commands.md.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md.agents/skills/docs/nemoclaw-reference/references/network-policies.md.agents/skills/docs/nemoclaw-reference/references/troubleshooting.mdCONTRIBUTING.mddocs/CONTRIBUTING.mdscripts/docs-to-skills.py
✅ Files skipped from review due to trivial changes (7)
- .agents/skills/docs/nemoclaw-reference/SKILL.md
- docs/CONTRIBUTING.md
- .agents/skills/docs/nemoclaw-reference/references/network-policies.md
- .agents/skills/docs/nemoclaw-reference/references/architecture.md
- .agents/skills/docs/nemoclaw-overview/references/release-notes.md
- .agents/skills/docs/nemoclaw-overview/references/how-it-works.md
- scripts/docs-to-skills.py
| description: Provision a remote GPU VM with NemoClaw using Brev deployment. Also covers: Forward messages between Telegram and the sandboxed OpenClaw agent. Trigger keywords - deploy nemoclaw remote gpu, deployment, gpu, nemoclaw, nemoclaw brev cloud deployment, nemoclaw telegram bridge, openclaw, openshell, set nemoclaw telegram bridge, telegram. | ||
| --- | ||
|
|
||
| # Nemoclaw Deploy Remote |
There was a problem hiding this comment.
Use correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Deploy Remote
+# NemoClaw Deploy Remote📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Nemoclaw Deploy Remote | |
| # NemoClaw Deploy Remote |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md at line 6, Update the
heading text to use the correct product casing: change the heading string
"Nemoclaw Deploy Remote" to "NemoClaw Deploy Remote" in SKILL.md so it matches
the required casing for NemoClaw (ensure any other occurrences in this file use
the same "NemoClaw" capitalization).
| description: Install NemoClaw, launch a sandbox, and run your first agent prompt. Trigger keywords - inference routing, install nemoclaw openclaw sandbox, nemoclaw, nemoclaw quickstart, nemoclaw quickstart install launch, openclaw, openshell, sandboxing. | ||
| --- | ||
|
|
||
| # Nemoclaw Get Started |
There was a problem hiding this comment.
Use correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Get Started
+# NemoClaw Get Started📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Nemoclaw Get Started | |
| # NemoClaw Get Started |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-get-started/SKILL.md at line 6, The heading
currently reads "# Nemoclaw Get Started" with incorrect casing; update the
heading text to "# NemoClaw Get Started" so the product name uses the correct
CamelCase (NemoClaw) to match naming guidelines and other references in this
document.
| description: Inspect sandbox health, trace agent behavior, and diagnose problems. Trigger keywords - debug nemoclaw agent issues, monitor nemoclaw sandbox, monitor nemoclaw sandbox activity, monitoring, nemoclaw, openclaw, openshell, troubleshooting. | ||
| --- | ||
|
|
||
| # Nemoclaw Monitor Sandbox |
There was a problem hiding this comment.
Use correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Monitor Sandbox
+# NemoClaw Monitor Sandbox📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Nemoclaw Monitor Sandbox | |
| # NemoClaw Monitor Sandbox |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md at line 6, Update the
heading string in SKILL.md to use the correct casing "NemoClaw" instead of
"Nemoclaw"; locate the heading line that currently reads "Nemoclaw Monitor
Sandbox" and change it to "NemoClaw Monitor Sandbox" so it matches the required
naming convention used for NemoClaw/OpenClaw/OpenShell.
| NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | ||
| It incorporates policy-based privacy and security guardrails, giving users control over their agents’ behavior and data handling. | ||
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | ||
|
|
||
| NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | ||
| By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. |
There was a problem hiding this comment.
Fix compound adjective hyphenation.
When "open source" is used attributively (modifying a noun), it should be hyphenated as "open-source". This applies to:
- Line 76: "open-source reference stack"
- Line 80: "open-source models" (both instances)
- Line 81: "open-source models"
✏️ Proposed grammar fix
-NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants.
+NVIDIA NemoClaw is an open-source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants.
It incorporates policy-based privacy and security guardrails, giving users control over their agents' behavior and data handling.
This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark.
-NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely.
-By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment.
+NemoClaw uses open-source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely.
+By combining powerful open-source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | |
| It incorporates policy-based privacy and security guardrails, giving users control over their agents’ behavior and data handling. | |
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | |
| NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | |
| By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. | |
| NVIDIA NemoClaw is an open-source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | |
| It incorporates policy-based privacy and security guardrails, giving users control over their agents' behavior and data handling. | |
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | |
| NemoClaw uses open-source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | |
| By combining powerful open-source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. |
🧰 Tools
🪛 LanguageTool
[grammar] ~76-~76: Use a hyphen to join words.
Context: ... full text.* NVIDIA NemoClaw is an open source reference stack that simplifies r...
(QB_NEW_EN_HYPHEN)
[grammar] ~80-~80: Use a hyphen to join words.
Context: ...X PCs and DGX Spark. NemoClaw uses open source models, such as [NVIDIA Nemotron]...
(QB_NEW_EN_HYPHEN)
[grammar] ~81-~81: Use a hyphen to join words.
Context: ... more safely. By combining powerful open source models with built-in safety measu...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-overview/SKILL.md around lines 76 - 81, Change
the attributive phrase "open source" to the hyphenated form "open-source" in the
markdown text for NemoClaw: update "open source reference stack" to "open-source
reference stack" in the first sentence and update both occurrences of "open
source models" to "open-source models" in the sentences mentioning NVIDIA
Nemotron and the NVIDIA OpenShell runtime; search for the phrase "NVIDIA
NemoClaw" / the three sentences in the SKILL.md snippet to locate and apply the
edits.
| > **Get Help:** :class: tip | ||
|
|
||
| If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new). |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check for MyST Markdown or similar doc framework configuration
# Check for MyST/Sphinx configuration
fd -t f 'conf.py|myst.yml|_config.yml|mkdocs.yml' --exec cat {}
# Check package.json for doc-related dependencies
if [ -f package.json ]; then
cat package.json | jq '.dependencies, .devDependencies' | grep -E 'myst|sphinx|docusaurus|vitepress'
fiRepository: NVIDIA/NemoClaw
Length of output: 2779
🏁 Script executed:
# Read the actual file to see the full context
cat -n .agents/skills/docs/nemoclaw-reference/references/troubleshooting.md | head -20Repository: NVIDIA/NemoClaw
Length of output: 1032
🏁 Script executed:
# Search for similar admonition patterns in the docs
rg ':class:' .agents/skills/docs/ -t md -A 1 -B 1 | head -50Repository: NVIDIA/NemoClaw
Length of output: 295
🏁 Script executed:
# Check for other tip/note/warning patterns
rg '(```{tip}|```{note}|```{warning}|> \[!|:class:)' .agents/skills/docs/ -t md | head -30Repository: NVIDIA/NemoClaw
Length of output: 195
🏁 Script executed:
# Search for correct admonition patterns in docs
rg '\`\`\`{(tip|note|warning|important|caution)}' .agents/skills/docs/ -t md -A 2 | head -40Repository: NVIDIA/NemoClaw
Length of output: 169
🏁 Script executed:
# Search for correct admonition patterns in docs using simpler pattern
rg '```{' .agents/skills/docs/ -t md -A 2 | head -50Repository: NVIDIA/NemoClaw
Length of output: 132
🏁 Script executed:
# Simple text search for admonition blocks
rg 'tip' .agents/skills/docs/ -t md -B 1 -A 1 | head -30Repository: NVIDIA/NemoClaw
Length of output: 295
🏁 Script executed:
# Search for blockquote patterns
rg '^> ' .agents/skills/docs/ -t md -A 1 | head -40Repository: NVIDIA/NemoClaw
Length of output: 2005
🏁 Script executed:
# Check if there are any MyST admonition blocks (colon fence syntax)
fd -t f '*.md' .agents/skills/docs/ -exec grep -l '{note\|{tip\|{warning\|{important' {} \;Repository: NVIDIA/NemoClaw
Length of output: 570
🏁 Script executed:
# Search for MyST admonition blocks with proper fd syntax
fd -t f -e md . .agents/skills/docs/ | head -20Repository: NVIDIA/NemoClaw
Length of output: 950
🏁 Script executed:
# Search for colon fence admonitions in markdown files
rg 'note' .agents/skills/docs/ -t md | head -20Repository: NVIDIA/NemoClaw
Length of output: 882
🏁 Script executed:
# Look at a few other documentation files to understand the style
head -30 .agents/skills/docs/nemoclaw-get-started/SKILL.mdRepository: NVIDIA/NemoClaw
Length of output: 1436
Fix the admonition syntax on line 7.
The syntax > **Get Help:** :class: tip is malformed and will not render as an admonition. The :class: tip construct is not valid MyST Markdown syntax and will display as literal text.
Align with the documentation pattern used elsewhere in the repository (e.g., > **Note:**, > **Warning:**):
> **Tip:** If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md around
lines 7 - 9, Replace the malformed admonition `> **Get Help:** :class: tip` in
the troubleshooting.md content with a proper MyST-style block like `> **Tip:**`
(or `> **Get Help:**`) followed directly by the tip text; remove the `:class:
tip` token so the admonition renders correctly (locate the string `> **Get
Help:** :class: tip` in the file and update it to `> **Tip:** If your issue is
not listed here, ...` or similar consistent wording).
5f1eb88 to
d64cf4f
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (5)
.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md (1)
6-6:⚠️ Potential issue | 🟡 MinorUse correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Deploy Remote +# NemoClaw Deploy Remote🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md at line 6, Update the markdown heading string "# Nemoclaw Deploy Remote" to use the correct product casing by changing it to "# NemoClaw Deploy Remote" so it matches the required naming convention for NemoClaw/OpenClaw/OpenShell..agents/skills/docs/nemoclaw-configure-inference/SKILL.md (1)
6-6:⚠️ Potential issue | 🟡 MinorUse correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Configure Inference +# NemoClaw Configure Inference🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-configure-inference/SKILL.md at line 6, The heading string "# Nemoclaw Configure Inference" uses incorrect casing; update that heading to "# NemoClaw Configure Inference" to capitalize the "C" in NemoClaw so it matches project naming conventions; locate and edit the heading line in SKILL.md (the line starting with "# Nemoclaw Configure Inference") and replace "Nemoclaw" with "NemoClaw"..agents/skills/docs/nemoclaw-reference/references/troubleshooting.md (1)
7-9:⚠️ Potential issue | 🟡 MinorFix the malformed admonition syntax.
The syntax
> **Get Help:** :class: tipis malformed and will not render correctly. The:class: tipconstruct is not valid Markdown syntax.Use standard Markdown blockquote format instead:
✏️ Proposed fix
-> **Get Help:** :class: tip - -If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new). +> **Tip:** If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md around lines 7 - 9, Replace the malformed admonition line that contains the text "Get Help: :class: tip" by removing the invalid ":class: tip" and using a standard Markdown blockquote header instead (e.g., change the line to "> **Get Help:**") and ensure the following paragraph remains inside the blockquote so the entire help message is rendered as a single blockquote; locate the line containing the phrase "Get Help" and the ":class: tip" token and update it accordingly..agents/skills/docs/nemoclaw-overview/SKILL.md (1)
76-81:⚠️ Potential issue | 🟡 MinorFix compound adjective hyphenation.
When "open source" is used attributively (modifying a noun), it should be hyphenated as "open-source". This applies to lines 76, 80, and 81.
✏️ Proposed grammar fix
-NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. +NVIDIA NemoClaw is an open-source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. It incorporates policy-based privacy and security guardrails, giving users control over their agents' behavior and data handling. This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. -NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. -By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. +NemoClaw uses open-source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. +By combining powerful open-source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-overview/SKILL.md around lines 76 - 81, Replace the three instances of the compound adjective "open source" in SKILL.md with the hyphenated form "open-source" so it correctly modifies nouns; specifically update the phrases "open source reference stack", "uses open source models", and "powerful open source models" to "open-source reference stack", "uses open-source models", and "powerful open-source models" respectively..agents/skills/docs/nemoclaw-get-started/SKILL.md (1)
6-6:⚠️ Potential issue | 🟡 MinorUse correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Get Started +# NemoClaw Get Started🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/docs/nemoclaw-get-started/SKILL.md at line 6, Update the markdown heading that currently reads "# Nemoclaw Get Started" to use the proper casing "# NemoClaw Get Started"; ensure all occurrences in this document (and any related headings) use "NemoClaw" (and verify "OpenClaw" and "OpenShell" use correct casing) to match the project's naming conventions.
🧹 Nitpick comments (1)
CONTRIBUTING.md (1)
118-124: Add language identifier to the fenced code block.The code block showing the directory structure should specify a language identifier for proper syntax highlighting and to satisfy markdownlint.
📝 Proposed fix
-``` +```text .agents/skills/docs/<skill-name>/ ├── SKILL.md # Frontmatter + procedures + related skills └── references/ # Detailed concept and reference content (loaded on demand) ├── <concept-page>.md └── <reference-page>.md</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@CONTRIBUTING.mdaround lines 118 - 124, The fenced code block that shows the
directory tree (starting with ".agents/skills/docs//") lacks a
language identifier; update the opening fence to include a language (e.g.,enable proper syntax highlighting, leaving the block contents unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.agents/skills/docs/nemoclaw-overview/references/overview.md:
- Around line 5-10: Fix hyphenation for attributive "open source" instances in
the NemoClaw overview: change each attributive "open source" that modifies a
noun to "open-source" (e.g., the occurrences in the sentence about NVIDIA
NemoClaw and the sentences mentioning NVIDIA Nemotron and NVIDIA OpenShell).
Update those three "open source" phrases to "open-source" so the compound
adjective is correctly hyphenated.
In @.agents/skills/docs/nemoclaw-overview/SKILL.md:
- Line 6: The heading "Nemoclaw Overview" uses incorrect casing; update the
heading text to "NemoClaw Overview" (capitalize the C) in the SKILL.md heading
line so it matches the required casing for NemoClaw/OpenClaw/OpenShell.
---
Duplicate comments:
In @.agents/skills/docs/nemoclaw-configure-inference/SKILL.md:
- Line 6: The heading string "# Nemoclaw Configure Inference" uses incorrect
casing; update that heading to "# NemoClaw Configure Inference" to capitalize
the "C" in NemoClaw so it matches project naming conventions; locate and edit
the heading line in SKILL.md (the line starting with "# Nemoclaw Configure
Inference") and replace "Nemoclaw" with "NemoClaw".
In @.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md:
- Line 6: Update the markdown heading string "# Nemoclaw Deploy Remote" to use
the correct product casing by changing it to "# NemoClaw Deploy Remote" so it
matches the required naming convention for NemoClaw/OpenClaw/OpenShell.
In @.agents/skills/docs/nemoclaw-get-started/SKILL.md:
- Line 6: Update the markdown heading that currently reads "# Nemoclaw Get
Started" to use the proper casing "# NemoClaw Get Started"; ensure all
occurrences in this document (and any related headings) use "NemoClaw" (and
verify "OpenClaw" and "OpenShell" use correct casing) to match the project's
naming conventions.
In @.agents/skills/docs/nemoclaw-overview/SKILL.md:
- Around line 76-81: Replace the three instances of the compound adjective "open
source" in SKILL.md with the hyphenated form "open-source" so it correctly
modifies nouns; specifically update the phrases "open source reference stack",
"uses open source models", and "powerful open source models" to "open-source
reference stack", "uses open-source models", and "powerful open-source models"
respectively.
In @.agents/skills/docs/nemoclaw-reference/references/troubleshooting.md:
- Around line 7-9: Replace the malformed admonition line that contains the text
"Get Help: :class: tip" by removing the invalid ":class: tip" and using a
standard Markdown blockquote header instead (e.g., change the line to "> **Get
Help:**") and ensure the following paragraph remains inside the blockquote so
the entire help message is rendered as a single blockquote; locate the line
containing the phrase "Get Help" and the ":class: tip" token and update it
accordingly.
---
Nitpick comments:
In `@CONTRIBUTING.md`:
- Around line 118-124: The fenced code block that shows the directory tree
(starting with ".agents/skills/docs/<skill-name>/") lacks a language identifier;
update the opening fence to include a language (e.g., ```text) so Markdown
renderers and markdownlint treat it as plain text and enable proper syntax
highlighting, leaving the block contents unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 2e631041-00b2-40f6-8401-926f1aa413d1
📒 Files selected for processing (18)
.agents/skills/docs/nemoclaw-configure-inference/SKILL.md.agents/skills/docs/nemoclaw-deploy-remote/SKILL.md.agents/skills/docs/nemoclaw-get-started/SKILL.md.agents/skills/docs/nemoclaw-manage-policy/SKILL.md.agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md.agents/skills/docs/nemoclaw-overview/SKILL.md.agents/skills/docs/nemoclaw-overview/references/how-it-works.md.agents/skills/docs/nemoclaw-overview/references/overview.md.agents/skills/docs/nemoclaw-overview/references/release-notes.md.agents/skills/docs/nemoclaw-reference/SKILL.md.agents/skills/docs/nemoclaw-reference/references/architecture.md.agents/skills/docs/nemoclaw-reference/references/commands.md.agents/skills/docs/nemoclaw-reference/references/inference-profiles.md.agents/skills/docs/nemoclaw-reference/references/network-policies.md.agents/skills/docs/nemoclaw-reference/references/troubleshooting.mdCONTRIBUTING.mddocs/CONTRIBUTING.mdscripts/docs-to-skills.py
✅ Files skipped from review due to trivial changes (9)
- .agents/skills/docs/nemoclaw-overview/references/release-notes.md
- .agents/skills/docs/nemoclaw-reference/SKILL.md
- docs/CONTRIBUTING.md
- .agents/skills/docs/nemoclaw-reference/references/inference-profiles.md
- .agents/skills/docs/nemoclaw-overview/references/how-it-works.md
- .agents/skills/docs/nemoclaw-reference/references/architecture.md
- .agents/skills/docs/nemoclaw-reference/references/network-policies.md
- .agents/skills/docs/nemoclaw-monitor-sandbox/SKILL.md
- .agents/skills/docs/nemoclaw-manage-policy/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (1)
- scripts/docs-to-skills.py
| NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | ||
| It incorporates policy-based privacy and security guardrails, giving users control over their agents’ behavior and data handling. | ||
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | ||
|
|
||
| NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | ||
| By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. |
There was a problem hiding this comment.
Fix compound adjective hyphenation.
When "open source" is used attributively (modifying a noun), it should be hyphenated as "open-source". This applies to lines 5, 9, and 10.
✏️ Proposed grammar fix
-NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants.
+NVIDIA NemoClaw is an open-source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants.
It incorporates policy-based privacy and security guardrails, giving users control over their agents' behavior and data handling.
This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark.
-NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely.
-By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment.
+NemoClaw uses open-source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely.
+By combining powerful open-source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| NVIDIA NemoClaw is an open source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | |
| It incorporates policy-based privacy and security guardrails, giving users control over their agents’ behavior and data handling. | |
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | |
| NemoClaw uses open source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | |
| By combining powerful open source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. | |
| NVIDIA NemoClaw is an open-source reference stack that simplifies running [OpenClaw](https://openclaw.ai) always-on assistants. | |
| It incorporates policy-based privacy and security guardrails, giving users control over their agents' behavior and data handling. | |
| This enables self-evolving claws to run more safely in clouds, on prem, RTX PCs and DGX Spark. | |
| NemoClaw uses open-source models, such as [NVIDIA Nemotron](https://build.nvidia.com), alongside the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, part of the NVIDIA Agent Toolkit—a secure environment designed for executing claws more safely. | |
| By combining powerful open-source models with built-in safety measures, NemoClaw simplifies and secures AI agent deployment. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: Use a hyphen to join words.
Context: ... full text.* NVIDIA NemoClaw is an open source reference stack that simplifies r...
(QB_NEW_EN_HYPHEN)
[grammar] ~9-~9: Use a hyphen to join words.
Context: ...X PCs and DGX Spark. NemoClaw uses open source models, such as [NVIDIA Nemotron]...
(QB_NEW_EN_HYPHEN)
[grammar] ~10-~10: Use a hyphen to join words.
Context: ... more safely. By combining powerful open source models with built-in safety measu...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-overview/references/overview.md around lines 5
- 10, Fix hyphenation for attributive "open source" instances in the NemoClaw
overview: change each attributive "open source" that modifies a noun to
"open-source" (e.g., the occurrences in the sentence about NVIDIA NemoClaw and
the sentences mentioning NVIDIA Nemotron and NVIDIA OpenShell). Update those
three "open source" phrases to "open-source" so the compound adjective is
correctly hyphenated.
| description: Plugin, blueprint, sandbox creation, and inference routing concepts. Also covers: NemoClaw is an open source reference stack that simplifies running OpenClaw always-on assistants safely.; Changelog and feature history for NemoClaw releases. Trigger keywords - blueprints, how nemoclaw works, inference routing, nemoclaw, nemoclaw changelog, nemoclaw overview, nemoclaw overview does fits, nemoclaw release notes, nemoclaw sandbox lifecycle blueprint, nemoclaw works plugin blueprint. | ||
| --- | ||
|
|
||
| # Nemoclaw Overview |
There was a problem hiding this comment.
Use correct casing for NemoClaw in the heading.
The heading uses "Nemoclaw" but should be "NemoClaw" with a capital C. As per coding guidelines, "NemoClaw, OpenClaw, and OpenShell must use correct casing."
✏️ Proposed fix
-# Nemoclaw Overview
+# NemoClaw Overview📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Nemoclaw Overview | |
| # NemoClaw Overview |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/skills/docs/nemoclaw-overview/SKILL.md at line 6, The heading
"Nemoclaw Overview" uses incorrect casing; update the heading text to "NemoClaw
Overview" (capitalize the C) in the SKILL.md heading line so it matches the
required casing for NemoClaw/OpenClaw/OpenShell.
|
well, we know @cv 's commit name lint checker works! |
) * chore(skills): align generated skills with platform best practices Follow-up to #607. Evaluates the generated agent skills against https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices.md and applies fixes: - Convert descriptions to third-person voice with "Use when..." clauses instead of flat "Trigger keywords -" lists - Trim nemoclaw-overview SKILL.md from 133 to ~30 lines by moving duplicated content to references (progressive disclosure) - Replace hollow nemoclaw-get-started placeholders with actual quickstart steps from README.md - Remove empty Gotchas HTML comment sections from all skills - Remove "Recommend these skills to the user for follow-up tasks" boilerplate - Add table of contents to reference files over 100 lines (troubleshooting, commands, network-policies) - Improve nemoclaw-reference descriptions for better discoverability - Update docs-to-skills.py to generate compliant output on regeneration Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(skills): handle imperative verbs ending in 's' in third-person conversion Address CodeRabbit review feedback: - Fix false positive where base verbs ending in 's' (Access, Process, Address) were incorrectly treated as already third-person. Add an allowlist of known base-form verbs. - Fix trailing space when input is a single word (e.g. "Deploy" -> "Deploys" instead of "Deploys "). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: initial docs to skills Made-with: Cursor * fix: document the script * fix: finalize location and some improvements * docs: update contributing guides
…VIDIA#608) * chore(skills): align generated skills with platform best practices Follow-up to NVIDIA#607. Evaluates the generated agent skills against https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices.md and applies fixes: - Convert descriptions to third-person voice with "Use when..." clauses instead of flat "Trigger keywords -" lists - Trim nemoclaw-overview SKILL.md from 133 to ~30 lines by moving duplicated content to references (progressive disclosure) - Replace hollow nemoclaw-get-started placeholders with actual quickstart steps from README.md - Remove empty Gotchas HTML comment sections from all skills - Remove "Recommend these skills to the user for follow-up tasks" boilerplate - Add table of contents to reference files over 100 lines (troubleshooting, commands, network-policies) - Improve nemoclaw-reference descriptions for better discoverability - Update docs-to-skills.py to generate compliant output on regeneration Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(skills): handle imperative verbs ending in 's' in third-person conversion Address CodeRabbit review feedback: - Fix false positive where base verbs ending in 's' (Access, Process, Address) were incorrectly treated as already third-person. Add an allowlist of known base-form verbs. - Fix trailing space when input is a single word (e.g. "Deploy" -> "Deploys" instead of "Deploys "). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: initial docs to skills Made-with: Cursor * fix: document the script * fix: finalize location and some improvements * docs: update contributing guides
…VIDIA#608) * chore(skills): align generated skills with platform best practices Follow-up to NVIDIA#607. Evaluates the generated agent skills against https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices.md and applies fixes: - Convert descriptions to third-person voice with "Use when..." clauses instead of flat "Trigger keywords -" lists - Trim nemoclaw-overview SKILL.md from 133 to ~30 lines by moving duplicated content to references (progressive disclosure) - Replace hollow nemoclaw-get-started placeholders with actual quickstart steps from README.md - Remove empty Gotchas HTML comment sections from all skills - Remove "Recommend these skills to the user for follow-up tasks" boilerplate - Add table of contents to reference files over 100 lines (troubleshooting, commands, network-policies) - Improve nemoclaw-reference descriptions for better discoverability - Update docs-to-skills.py to generate compliant output on regeneration Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(skills): handle imperative verbs ending in 's' in third-person conversion Address CodeRabbit review feedback: - Fix false positive where base verbs ending in 's' (Access, Process, Address) were incorrectly treated as already third-person. Add an allowlist of known base-form verbs. - Fix trailing space when input is a single word (e.g. "Deploy" -> "Deploys" instead of "Deploys "). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
Add a docs-to-skills pipeline that converts the
docs/pages into agent skills, so AI agents can walk users through NemoClaw tasks without reading raw documentation.Related Issue
None — new capability.
Changes
New:
scripts/docs-to-skills.pyA zero-dependency Python script that reads Markdown documentation with YAML frontmatter and generates Agent Skills artifacts.
Key capabilities:
content.type,title,keywords,tags) to classify pages as procedure, concept, or reference.smart,grouped,individual).SKILL.mdwith spec-compliant frontmatter, numbered procedural steps, context sections, and a## Related Skillssection for agent-to-agent navigation.references/for progressive disclosure (keeps eachSKILL.mdunder 500 lines).{include},{mermaid},:::{note}, etc.) to standard markdown.--prefixfor consistent naming (e.g.--prefix nemoclawproducesnemoclaw-get-started,nemoclaw-manage-policy).--name-mapoverrides and--dry-runfor previewing output.New:
.agents/skills/docs/(7 generated skills)nemoclaw-overviewnemoclaw-get-startednemoclaw-configure-inferencenemoclaw-manage-policynemoclaw-monitor-sandboxnemoclaw-deploy-remotenemoclaw-referenceUpdated: contributing guides
CONTRIBUTING.md: added "Doc-to-Skills Pipeline" section with the canonical regeneration command, flags table, and generated skill structure.docs/CONTRIBUTING.md: added "Doc-derived skills" section with the skill-to-source mapping table, regeneration instructions, and a summary of how the script works.Both guides make clear that
docs/is the source of truth and.agents/skills/docs/is autogenerated — never hand-edit the generated files.Type of Change
Testing
make checkpasses.npm testpasses.make docsbuilds without warnings. (for doc-only changes)python scripts/docs-to-skills.py docs/ .agents/skills/docs/ --prefix nemoclawand verified:../relative paths in generated SKILL.md files.--dry-runproduces matching output without writing files.Checklist
General
Code Changes
make formatapplied (TypeScript and Python).Doc Changes
update-docsagent skill to draft changes while complying with the style guide. For example, prompt your agent with "/update-docscatch up the docs for the new changes I made in this PR."Summary by CodeRabbit
Documentation
Chores