plugins/nvidia/skills/physical-ai-neural-reconstruction/SKILL.md
Router for NVIDIA NuRec/NRE: USDZ rendering, NCore conversion, 3DGS, gRPC sensor sim, PhysicalAI HF datasets. Do NOT use for SimReady or infra setup.
npx skillsauth add openai/plugins physical-ai-neural-reconstructionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This is a thin router for NVIDIA Neural Reconstruction (NuRec)
requests. It points at the upstream nurec-index skill at
https://github.com/NVIDIA/nurec-skills and its five sibling skills
(physical-ai-datasets, ncore, nre, asset-harvester,
nurec-fixer). Use this skill to:
nurec-skills checkout.The canonical recipes (training, rendering, data conversion, dataset downloads, object harvesting, frame cleanup) live in the upstream sibling skills. Never copy or reconstruct their commands here.
Do NOT use this skill for:
omniverse-cad-to-simready.omniverse-usd-performance-tuning.physical-ai-infrastructure-setup-and-resilient-scaling.Read this skill first whenever a user mentions any of:
nurec, nurec router, nurec index, neural reconstruction,
neural reconstruction engine, NRE, 3DGUT, 3DGRT, USDZ,
NCore V4, sensor sim, novel view synthesis,
PhysicalAI-Autonomous-Vehicles-NuRec, PhysicalAI-NuRec-PPISP,
Cosmos-Drive-Dreams, asset harvester, nurec fixer,
DiffusionHarmonizer, harmonizer, difix, difix3d, serve-grpc,
render-grpc, warm serve-grpc, nre thin client, batch_render_rgb,
nurec teardown, "where do I start with NuRec", "which NuRec skill
should I use for X?".
Decide which upstream sibling skill answers the question, fetch it (see Locate and fetch the upstream skills), then follow that skill's body.
Router skill itself has no runtime prerequisites beyond git for
fetching the upstream. Downstream sibling skills require:
nre, nre-tools,
and nurec-fixer containers
(nvcr.io/nvidia/nre/nre, nvcr.io/nvidia/nre/nre-tools,
nvcr.io/nvidia/cosmos/cosmos-predict2-container:1.2).NGC_API_KEY) — for pulling NGC containers.HF_TOKEN) with the
nvidia/PhysicalAI-*, nvidia/DiffusionHarmonizer, and
nvidia/asset-harvester gated licenses accepted in advance on
Hugging Face.huggingface_hub installed.serve-grpc.Verify secrets safely (do not echo values):
hf auth whoami
[ -n "${HF_TOKEN:-}" ] && echo "HF_TOKEN length=${#HF_TOKEN}" || echo "HF_TOKEN unset"
[ -n "${NGC_API_KEY:-}" ] && echo "NGC_API_KEY length=${#NGC_API_KEY}" || echo "NGC_API_KEY unset"
See references/secrets-handling.md
for the bash anti-patterns to avoid.
NuRec (NVIDIA Omniverse Neural Reconstruction) takes camera, LiDAR, radar, or stereo recordings — typically from a self-driving car or a robot — and turns them into a 3D scene you can re-render from any viewpoint. Names that come up a lot:
nre skill.A typical NuRec project has three stages:
ncore), or download a pre-converted dataset
(physical-ai-datasets).nre).nre).Projects that just want to use an existing NVIDIA-published scene skip step 2.
Match the user's goal in the left column and open the named upstream skill on the right. Arrows mean "do these in order".
| I want to… | Upstream skill |
|------------|----------------|
| Find or download a NuRec dataset NVIDIA has published | physical-ai-datasets |
| Convert my own camera / LiDAR / radar / depth / stereo recording into NCore V4 | ncore |
| Write a new converter for an unsupported sensor setup (drone, RGB-D, ROS 2 bag, COLMAP, ScanNet++) | ncore |
| Train a 3D reconstruction from an NCore clip | ncore → nre |
| Generate the extra inputs NRE needs (segmentation masks, depth, ego mask) | nre (uses the nre-tools container) |
| Render a USDZ along the original camera positions | nre |
| Render at full resolution / highest quality | nre (see "Quality presets") |
| Render along a shifted trajectory (e.g. car moved 3 m left) | nre |
| Render through a server so CARLA / Isaac Sim / AlpaSim / a custom simulator can ask for frames | nre (serve-grpc) |
| Render the same USDZ many times back-to-back from Python with minimal per-call latency | nre (warm serve-grpc + thin Python client / batch_render_rgb) |
| Render LiDAR sweeps (point clouds) from a USDZ | nre (render-grpc --lidar) |
| Skip training and just render a NuRec scene NVIDIA already built | physical-ai-datasets → nre |
| Extract individual 3D objects (cars, pedestrians) from a driving clip | asset-harvester |
| Add, remove, or replace cars / pedestrians in a NuRec scene | asset-harvester → nre |
| Clean up or harmonize rendered frames (ghosting, floaters, flicker, lighting/shadows) | nurec-fixer, or --enable-difix inside nre for inline rendering |
| Export the scene as a PLY, mesh, depth maps, ego mask, etc. | nre |
| Upgrade an old USDZ so newer NRE versions load it faster | nre (upgrade-artifact) |
| Open a USDZ or PLY in a browser viewer | nre (viewer / ply_viewer) |
| Measure rendering quality (PSNR, SSIM, LPIPS) against ground truth | nre (eval-rendering-metrics) |
| Benchmark different reconstruction methods on the same scenes | physical-ai-datasets (PhysicalAI-NuRec-PPISP) → nre |
| Train on multiple GPUs or on SLURM | nre (Workflow D) |
Six end-to-end workflows are documented in
references/workflows.md:
Open that file when the user's task spans more than one sibling skill.
| Name | Upstream folder | What it does |
|------|-----------------|--------------|
| physical-ai-datasets | .agents/skills/physical-ai-datasets/ | Catalog and download recipes for every NVIDIA Physical AI dataset on Hugging Face (driving, robotics, manipulation, NuRec scenes, benchmarks). |
| ncore | .agents/skills/ncore/ | Converts any sensor recording to NCore V4 (the format NRE needs). Also covers writing a new converter. |
| nre | .agents/skills/nre/ | The Neural Reconstruction Engine itself. Trains, renders (locally, via warm serve-grpc + thin Python client / batch_render_rgb, or to an external simulator), exports meshes / point clouds / depth, edits actors, evaluates quality. |
| asset-harvester | .agents/skills/asset-harvester/ | Open-source Apache-2.0 pipeline that extracts individual 3D objects from sparse views in a driving clip and saves them as .ply Gaussian splats with metadata. |
| nurec-fixer | .agents/skills/nurec-fixer/ | Standalone NVIDIA DiffusionHarmonizer workflow — public successor to the older Fixer / Difix3D+ recipes — that cleans rendered frames, harmonizes inserted actors, evaluates PSNR/LPIPS, and optionally fine-tunes the model. |
For naming overlaps (NRE vs Fixer, ncore vs nre, AV-NuRec vs
Cosmos-Drive-Dreams, NuRec vs SimReady) see
references/mix-ups.md.
Quick recipe (full version in
references/upstream-fetch.md):
UPSTREAM_ROOT="${NUREC_SKILLS_UPSTREAM_ROOT:-${PHYSICAL_AI_SKILL_HUB_UPSTREAM_ROOT:-$HOME/.physical-ai-skill-hub/upstreams}}"
mkdir -p "$UPSTREAM_ROOT"
if [ -d "$UPSTREAM_ROOT/nurec-skills/.git" ]; then
git -C "$UPSTREAM_ROOT/nurec-skills" fetch --tags
git -C "$UPSTREAM_ROOT/nurec-skills" checkout main
git -C "$UPSTREAM_ROOT/nurec-skills" pull --ff-only
else
git clone --depth 1 https://github.com/NVIDIA/nurec-skills.git \
"$UPSTREAM_ROOT/nurec-skills"
fi
test -f "$UPSTREAM_ROOT/nurec-skills/.agents/skills/SKILL.md"
Then read the upstream skill before running any mutating command:
cat "$UPSTREAM_ROOT/nurec-skills/.agents/skills/SKILL.md" # router
cat "$UPSTREAM_ROOT/nurec-skills/.agents/skills/<folder>/SKILL.md" # sibling
Local lookup order (try in order before the upstream clone):
.agents/skills/<name>/SKILL.md (Cursor, Codex, NemoClaw).claude/skills/<name>/SKILL.md (Claude Code).cursor/skills/<name>/SKILL.md (project-scoped)~/.cursor/skills/<name>/SKILL.md (personal skills)name: (e.g. nre), not by repo
path. Folder layouts can change; the name is portable.https://github.com/NVIDIA/nurec-skills under the
shared upstream root
(${NUREC_SKILLS_UPSTREAM_ROOT:-${PHYSICAL_AI_SKILL_HUB_UPSTREAM_ROOT:-$HOME/.physical-ai-skill-hub/upstreams}}/nurec-skills).
Do not scan broad developer workspaces such as ~/Codes or reuse
unrelated old clones.physical-ai-datasets covers gated Hugging Face datasets. Do not
bypass dataset license terms; the user must accept the
PhysicalAI-* gated licenses on Hugging Face and provide a token
before downloading.nre's export-external-assets on hand-rolled .ply files unless
the user explicitly asks to skip Asset Harvester.--enable-difix path in
nre. Route to the standalone nurec-fixer only when the user
needs the public code/model card, paired evaluation, fine-tuning,
or fixes on previously rendered frames.release_26.04 is the current pinned tag).physical-ai-infrastructure-setup-and-resilient-scaling.https://github.com/NVIDIA/nurec-skills, which evolves outside
this repo. Stale clones can drift; always git pull the upstream
before relying on a sibling skill.nvidia/PhysicalAI-*, nvidia/DiffusionHarmonizer,
and nvidia/asset-harvester require the user to accept license
terms on Hugging Face first. The router cannot bypass this.references/teardown.md.omniverse-cad-to-simready).| Error / symptom | Likely cause | Solution |
|-----------------|--------------|----------|
| nurec-skills clone missing or empty | Upstream not fetched yet | Run the clone block in Locate and fetch the upstream skills |
| 403/401 pulling nvidia/PhysicalAI-* from HF | Gated license not accepted, or HF_TOKEN unset / wrong scope | Accept the gated license on Hugging Face, then hf auth login with a token that has read access |
| denied: requested access to the resource is denied from nvcr.io/nvidia/nre/* | Missing or expired NGC_API_KEY | docker login nvcr.io with $oauthtoken / NGC_API_KEY; rotate the key at org.ngc.nvidia.com/setup/api-key if needed |
| NRE refuses to load a clip ("not valid NCore V4") | Recording was not converted | Run the ncore skill before invoking nre |
| serve-grpc cold-start latency dominates a Python loop | One-shot Docker invocation per render | Use the nre warm serve-grpc + thin Python client (batch_render_rgb) recipe |
| Output files are owned by root after a docker run | -u $(id -u):$(id -g) was missing | sudo chown -R "$(id -u):$(id -g)" <output_dir>; add the -u flag next time |
| Frames have ghosting / floaters / flicker after rendering | Inline cleanup not enabled | Re-render with nre --enable-difix, or post-process with nurec-fixer (DiffusionHarmonizer) |
| Stale skill names (ncore-data-conversion, old nvidia/Fixer) in agent output | Out-of-date cached skill | Update references to ncore and nurec-fixer (DiffusionHarmonizer); see references/maintenance.md |
| Bash anti-pattern ${HF_TOKEN:+yes}${HF_TOKEN:-no} echoed token value | Misuse of bash parameter expansion | Rotate the token; use hf auth whoami or length-only checks (see references/secrets-handling.md) |
A complete NuRec workflow can leave 150 GB+ on disk between
container images, model weights, code clones, conda envs, and output
directories. Each sibling skill has its own dedicated Teardown
section — read them in the order documented in
references/teardown.md when the user no
longer needs the workflow.
Procedure for adding new sibling skills, renames, or upstream URL
changes lives in references/maintenance.md.
Treat the upstream nurec-index at
https://github.com/NVIDIA/nurec-skills/blob/main/.agents/skills/SKILL.md
as authoritative; this skill mirrors only the picker tables, the
workflow ordering, and the upstream fetch recipe.
development
Use when the user wants to spin up / create / launch / provision a DigitalOcean droplet (or "a remote dev box on DO") and connect to it from Codex as a remote SSH workspace.
data-ai
Search through Microsoft Teams chats or channels, triage unread or recent activity, draft follow-ups, and manage Planner tasks through connected Teams data.
tools
Motion / animation context for the `use_figma` MCP tool — animating Figma nodes via manual keyframes, animation styles, easing, and timeline duration. Load alongside figma-use whenever a task involves adding, editing, or inspecting animation on a node.
development
SwiftUI ↔ Figma translation. Use whenever the user mentions Swift, SwiftUI, iOS, iPhone, or iPad — in EITHER direction — translating a Figma design into SwiftUI (design → code), or pushing SwiftUI views / screens / tokens back into a Figma file (code → design). Triggers on phrases like 'implement this Figma design in SwiftUI', 'build this screen in Swift', 'push this SwiftUI view to Figma', 'mirror my Swift code in a Figma file', or whenever a Figma URL appears alongside `.swift` files / an `.xcodeproj`. Routes to a direction-specific reference doc; loads alongside `figma-use` for the code → design path.