simready-foundation-conform-fet-023-robot-materials

oleh nvidia

Use for repairing SimReady robot material organization under the top-level Looks scope.

npx skills add https://github.com/nvidia/simready-foundation --skill simready-foundation-conform-fet-023-robot-materials

SimReady Conform FET-023 Robot Materials

Purpose

Use this workflow skill when the selected profile, validation report, or user request targets FET023_ROBOT_MATERIALS. FET023 repairs robot material organization for Isaac Sim by centralizing material definitions as direct children of the top-level Looks scope and eliminating nested material prims.

This is a material-organization repair skill, not a material-authoring skill. It should preserve existing materials, shader networks, texture paths, and visual appearance while changing where material prims live and what geometry bindings target.

FET023 is not currently used by the default Robot-Body profiles in profiles.toml. When a profile does not include FET023, run this skill only when the user explicitly asks for robot material organization conformance or supplies a profile/workflow that includes FET023_ROBOT_MATERIALS.

Prerequisites

Read the source-of-truth files named below before editing. Work on staged outputs where the skill requires them, and keep validation evidence with the result.

Source of Truth

Before changing an asset, load the selected FET023 manifest and requirement docs:

  • nv_core/sr_specs/docs/features/FET_023-robot_materials-0.1.0.json
  • nv_core/sr_specs/docs/features/FET_023-robot_materials.md
  • nv_core/sr_specs/docs/capabilities/isaac_sim/robot_materials/requirements.md
  • nv_core/sr_specs/docs/capabilities/isaac_sim/robot_materials/validation.py

Treat the selected JSON manifest as authoritative for the required IDs. If the markdown, manifest, validator, or report disagree on behavior, follow the validation report for the current gate and call out the mismatch in the stage summary.

For per-requirement repair details, read references/fet023-requirements.md when a FET023 validation report or inspection identifies matching failures.

Inputs

Collect these before editing:

InputRequirement
usd_assetRequired robot .usd, .usda, .usdc, or unpacked USD-family asset to repair.
output_rootRequired or inferred folder for staged assets and reports.
simready_profileProfile being validated, if one includes FET023.
profile_versionProfile version, if supplied by the user or validation command.
validation_reportPreferred JSON or markdown report from the failing profile or feature validation gate.
fet023_variantSelected feature ID and version, currently FET023_ROBOT_MATERIALS@0.1.0.
material_move_policyWhether material prims may be moved within the staged asset, copied with redirects, or blocked for user review.

Instructions

Use this checklist when changing the repository:

  1. Confirm the input asset exists and determine whether FET023 is selected by the profile or explicitly requested by the user.
  2. Parse the validation report and filter to FET023/RM failures. Do not repair shader schema, texture properties, material semantics, robot core, or physics issues in this skill.
  3. Load the selected FET023 manifest version and the requirement repair map.
  4. Create a staged output folder under output_root; do not mutate the source unless the user explicitly asks for in-place repair.
  5. Inspect the stage before editing:
    • default prim and expected top-level /<defaultPrim>/Looks scope
    • all composed UsdShade.Material prim paths under the default prim
    • material prims that are children or descendants of other material prims
    • material prims outside /<defaultPrim>/Looks
    • direct children of /<defaultPrim>/Looks
    • all material binding relationships, collection bindings, and shader connections that target material or shader paths inside material subtrees
    • layer stack and authored layer for each material prim, binding, and connection that may need rewriting
  6. Plan moves before editing:
    • Choose one canonical target path per material under /<defaultPrim>/Looks/<MaterialName>.
    • Preserve the whole material subtree, including child shaders and supporting scopes.
    • Resolve name collisions deterministically, for example by appending _01, _02, or a sanitized source-scope suffix.
    • Build an old-path to new-path map for every moved material and every descendant prim.
  7. Apply repairs in this order:
    • Create /<defaultPrim>/Looks as a Scope if it does not exist.
    • Move or copy material subtrees into direct children of Looks.
    • Flatten nested materials by moving each nested material subtree to its own direct child of Looks.
    • Update material binding relationships to target the moved material paths.
    • Update shader connections and relationship targets that point inside moved material subtrees.
    • Remove old local material prims only after all references to them are updated and the new material paths compose correctly.
  8. Rerun the same validation gate when a profile includes FET023, or the narrowest available RobotMaterials validator. If no executable FET023 gate is available, report the deterministic USD inspection results and the validation gap.
  9. Summarize the stage as passed, failed, skipped, or blocked. Stop when FET023 passes or the next FET023 failure requires cross-layer material moves, referenced asset edits, or material identity decisions outside this skill.

Examples

Example request:

Repair FET023 robot material organization failures by flattening materials under Looks.

Expected result summary:

staged_asset: repaired copy or output directory
validation: selected feature/profile gate and report path
remaining_failures: next failing requirement IDs, if any

Repair Policy

Make automatic repairs only when the intended result is mechanical and locally verifiable:

  • Create the top-level Looks scope under the default prim.
  • Move locally-authored material prim subtrees under /<defaultPrim>/Looks.
  • Flatten nested material prims by preserving each nested material as a separate direct child of Looks.
  • Update direct and collection material bindings that target moved materials.
  • Update connection targets inside moved material subtrees when absolute paths changed.
  • Preserve existing shader attributes, texture asset paths, non-visual material attributes, physics material data, and custom metadata.

Block and report instead of guessing when:

  • A material prim is authored in a referenced or payloaded asset that should not be edited from the current package.
  • Moving a material would cross composition boundaries, variants, or layers in a way that changes strength or asset ownership.
  • Two materials collide by name and there is no stable way to preserve both without changing external bindings.
  • The material subtree contains authored relationships or connections whose target rewrite is ambiguous.
  • A material binding points to a missing material or an invalid path; hand off to FET006 or material assignment if material creation is needed.

Validation Handoff

Preserve reports under the staged output directory. If a selected profile includes FET023 and the Physical AI Skill Hub validation commands are available, use the same profile gate that exposed the failure:

uv run --python 3.12 validate-simready-profile <staged-usd> \
  --profile <profile> \
  --profile-version <version> \
  --foundation-root <simready-foundation-root> \
  --foundation-spec-root <simready-foundation-root>/nv_core/sr_specs/docs \
  --report <output-root>/simready-profile-after-fet023.json

If no selected profile includes FET023, do not mutate profiles.toml just to test the skill. Run the available RobotMaterials capability validator directly if the local environment exposes it; otherwise report the USD inspection results and note that profile validation cannot exercise FET023 until a profile selects it.

Count this skill as successful when FET023_ROBOT_MATERIALS passes or when inspection proves there are no nested materials and every local material under the default prim is a direct child of /<defaultPrim>/Looks.

Limitations

  • Do not silently mutate the source asset; work on the requested staged output.
  • Do not hide later profile failures after the selected feature gate passes or fails.
  • Do not invent geometry, metadata, or runtime behavior that conflicts with the asset intent.

Troubleshooting

  • Error: validation tooling is unavailable. Solution: run the narrowest available USD or static check and report the gap.
  • Error: a repair would change asset intent. Solution: stop and ask for direction or stage the smallest reversible edit.
  • Error: later profile gates still fail. Solution: report the next failing feature and hand off to the matching conformance skill.

Resources

  • assets/openai.yaml preserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.
  • references/ contains detailed requirement notes; load only the files needed for the active validation failure.

Summary Format

Report:

FieldMeaning
input_usd_pathOriginal USD path.
output_usd_pathLatest staged/repaired USD path.
profile and profile_versionValidation target, if any.
fet023_variantSelected FET023 feature ID and version.
looks_scopeTop-level Looks scope path.
materials_movedOld material paths mapped to new material paths.
bindings_updatedMaterial binding relationships retargeted.
connections_updatedShader connections or relationships retargeted.
requirements_repairedRequirement IDs changed by this skill.
requirements_blockedRequirement IDs that need cross-layer edits, external asset ownership, or material creation.
validation_reportPath to the rerun validation or inspection report.
next_stepUsually run FET023-capable validation or hand off to FET006/material assignment if material definitions are missing.

Keep the user-facing summary short: which material paths moved, how bindings were preserved, what validation could run, and what remains blocked.