Generated banner for Omniverse Usd Performance Tuning
Generated logo for Omniverse Usd Performance Tuning

Omniverse Usd Performance Tuning

NVIDIAOfficialCreated by NVIDIA Omniverse

  • Skill
  • Workflow
  • Software development
  • Apache-2.0
  • Medium risk
  • Has scripts

From the author

Diagnose and optimize USD stages for slow loading, high memory, low FPS or validation; preserve asset boundaries and reuse shared definitions.
— the description by NVIDIA Omniverse

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured workflow for diagnosing and optimizing USD stages. It focuses on improving performance metrics like load times, memory footprint, and frame rates by identifying and optimizing unique asset definitions, reusing shared definitions, and pruning unnecessary data. The process emphasizes preserving original asset boundaries, animation, and interface requirements, ensuring that downstream applications remain functional after optimization.

What it does

  • Inspects USD stages to identify performance bottlenecks and structural inefficiencies.
  • Classifies assets into atomic, package, or aggregate structures to guide optimization.
  • Performs native USD optimization operations on disjoint scopes.
  • Publishes semantic libraries to enable efficient asset reuse.
  • Validates composition, ownership, and interface accessibility of the optimized output.
  • Profiles the final output against the original baseline to report measured improvements.

When to use it

  • When a USD stage suffers from slow loading times or high memory consumption.
  • When rendering performance (FPS) needs improvement in a production environment.
  • Before finalizing a USD assembly for downstream consumption.
  • When you need to standardize asset structures according to factory-level guidelines.

Advantages

  • Maintains asset boundaries and critical metadata during optimization.
  • Reduces scene complexity through intelligent reuse of shared definitions.
  • Provides verifiable reports on performance gains and composition integrity.
  • Supports large-scale scene optimization by processing independent definition scopes.

Usage examples

“Inspect the USD stage at /data/factory.usdc for performance issues and prepare a review workspace.”
The agent initializes the workspace, runs the inspection script, and provides a summary of candidates for optimization.
“Submit the optimization decisions for the factory stage based on the generated JSON.”
The agent processes the boundary decisions, executes the optimization operations, and generates the final optimized USD assembly.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/omniverse-usd-performance-tuning/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip omniverse-usd-performance-tuning.zip -d .agents/skills

Documentation by NVIDIA Omniverse

Omniverse USD Performance Tuning

Purpose

Improve loading, memory use or rendering for the requested workload. Preserve the prim paths, appearance, placement and behavior required by downstream applications. Follow the component/subcomponent model in NVIDIA's Factory-Level USD Structuring guide. Apply the relevant parts of that model; a static asset does not need new animation or physics.

Inputs

Required: the source USD stage. When no workload is specified, use factory layout planning and visualization and record that assumption in the request/report. Explicit workload and preservation requirements take precedence. Optional: an output workspace, preservation requirements, physical error budget, existing library indexes and recorded runtime evidence. Use values from the current user request; reuse recorded values only while they remain applicable. Follow setup when no output path is supplied.

Prerequisites

Verify the selected runtime and required capabilities using setup. Keep its preflight record with the run; installation and remote access are conditional steps described there.

Instructions

  1. Inspect. Establish the workload, preservation requirements and output workspace. Set up progress and dashboard access before assessment. Verify setup and inspect the selected source configuration.

  2. Judge boundaries. Review equipment, service-system sections and architectural elements in the selected configuration, including animation and interiors. Record owners, editable interfaces, equipment categories and optional families using boundary guidance.

  3. Classify and author. Classify accepted assets children before parents. Capture or reuse the original profile before authoring. Prepare reusable definitions, materials and occurrence opinions using asset authoring.

  4. Optimize unique definitions. Run supported native operations concurrently on disjoint scopes with the recorded physical budget.

  5. Publish semantic libraries. Use one writer per category layer and remap consumer references.

  6. Check composition. Check authored ownership, references, bindings, placement, animation and interface accessibility through the written-output checks.

  7. Profile and report. Compare the final consumer with the original baseline under comparable conditions and report measured benefits, completion and operations by asset definition.

sequenceDiagram
    participant A as Agent
    participant T as USD tools
    participant W as Definition workers
    participant L as Library publisher
    participant D as Read-only progress dashboard
    Note over A,L: One compact progress state also renders text progress
    T-->>D: Recorded phase, assessment rounds, counters and decision reasons
    A->>T: Inspect original selected configuration
    T->>T: Collect cached child-to-parent summaries and repetition nominations
    T->>T: Load supplied indexes once and batch authored product clues
    T-->>A: Product review groups, member context, animation and reuse evidence
    loop Until boundaries and interiors are reviewed
        A->>A: Select asset boundaries, then identify required internal prims and properties
        A->>T: Submit boundary decisions with reviewed scope, required edits, category and optional family
        T->>T: Reuse unchanged source evidence, recompute boundary-dependent results
        opt Geometry ownership requires reconstruction
            T->>T: Regroup or native split, remap paths and reassess affected regions
        end
        T-->>A: Remaining candidates and member exceptions
    end
    T->>T: Classify selected child assets before parent assets, confirm reuse
    T->>T: Capture or reuse original baseline profile
    T->>T: Confirm accepted product identities from source and supplied indexes; reconcile complete parent-child groups
    T->>T: Skip worker inputs for confirmed groups; author remaining materials, editable prims and occurrence overrides
    T->>T: Determine merge groups on prepared interiors; preserve selected child assets and required prims
    T->>W: Read-only input USD layers for existing-library matching
    par Independent preparation jobs
        W->>W: Confirm remaining product, exact source or authorized normalized reuse; preserve occurrence placement
        W->>W: Consolidate accepted product or compatible exact/normalized leaf inputs; retain every occurrence
    end
    W-->>T: Confirmed library hits and definitions requiring optimization
    T->>W: Owned geometry prim paths in read-only input layers
    par Independent definition scopes
        W->>W: Remove small meshes when authorized; apply asset representation: reserve merge inputs or fit analytic prims; reduce, merge (native clustering if required), prune, flatten, prune
    end
    W->>L: Geometry outputs and assembly authoring outcomes
    L->>L: Share eligible static whole definitions within current category publication
    L->>L: Share remaining whole meshes; write USD reuse metadata and compact index
    L->>T: Output USD stage with rewritten references and dependencies
    T->>T: Check authored composition, ownership, animation and interfaces
    T->>T: Profile final output USD stage and report results by asset definition
    T-->>A: Measured changes, coverage and unresolved work
    T-->>D: Final verdict and report/library paths

Use the provided tools for traversal, native operations, authoring and checks; the agent supplies engineering judgments. Preserve current variant selections, authored animation, required materials and interfaces. Trust supported USD Optimize operations with valid settings and scopes. Deep geometric comparisons and whole-scene edit trials belong in development tests, not ordinary execution.

Complete when every unique definition has an executed or evidenced unchanged outcome, every asset has justified ownership and structure, and the written consumer passes composition checks. Retain native failures, unresolved judgments and missing required capabilities as incomplete work. Repeat only affected work when evidence changes.

Scope and authorization

  • Diagnosis and validation requests remain read-only. An optimization request authorizes work in a separate output workspace within its stated preservation limits.

  • Never overwrite source layers or inherited libraries without explicit authorization.

  • Reuse authorization already given. Ask only for a missing decision that changes identity, required appearance or a loss budget; explain the affected component and consequence.

  • Report only observed changes. Measure rendering before claiming higher FPS or lower GPU use.

Load only the relevant guidance

RequestRead
Validation onlySetup, then the validation section of operations
Approved operation chainSetup, operations, verification
Existing or persistent asset libraryAdd the library index requirements to the assessment
Missing standalone runtimeInstallation
Remote stageRemote access before the first open
Report from completed evidenceVerification

Use upstream package guidance for selected operation mechanics and proxy workflows. Keep large logs on disk as specified in setup.

Limitations

Convert CAD input with the source converter's workflow and NVIDIA's CAD conversion guidance. Render profiling requires NVIDIA/omniperf or the user's available profiler; USD open and traversal timings alone do not establish rendering improvements.

Troubleshooting

For unavailable imports, operations or remote assets, follow setup. For incomplete execution or failed composition checks, follow verification; retain the failed artifacts and report the missing capability or failed check.

Examples

After runtime preflight, use the verified Python interpreter from setup to inspect a stage:

python scripts/successor_assessment.py inspect --source /data/factory.usdc --workspace /data/factory-review

Review the generated candidates using boundary guidance, fill the generated decision template, then submit it:

python scripts/successor_assessment.py decide --workspace /data/factory-review --decisions /data/factory-review/decisions.json

These commands perform assessment; continue through the instructions above only when review is complete. Run from the skill directory; generated data stays in the workspace.

Output Format

Maintain live progress and editable steering throughout execution.

For end-to-end optimization, provide the written USD assembly, validated report JSON, and generated Markdown and HTML reports. State the runtime, operations actually executed, preservation and coverage results, measured changes, source-write status, and artifact paths. Diagnosis-only work may return a findings summary stating that no optimized stage was written.

Files

references/operations/operations.json

{
  "$comment": "SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\nSPDX-License-Identifier: Apache-2.0",
  "schema": "scene_optimizer_operation_catalog",
  "source": "Usd Optimize operation catalog; single source of truth for op existence, routing metadata (manifest fields), and this-repo curation (status/rationale/wired_into). Replaces the former manifest.json + _curation.json + per-op <key>.md split.",
  "operations": [
    {
      "key": "boxClip",
      "title": "Box Clip",
      "category": "transform",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 13,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "clip",
        "bounding-box",
        "aabb",
        "trim",
        "crop"
      ],
      "source": "scene-optimizer-core/source/operations/boxClip/BoxClip.cpp",
      "summary": "Box Clip removes or retains geometry based on an axis-aligned bounding box (AABB) region.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "computeExtents",
      "title": "Compute Extents",
      "category": "metadata",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 1,
      "requires_mesh": true,
      "pipelines": [
        "safe-cleanup",
        "load-time-reduction",
        "data-quality-baseline"
      ],
      "keywords": [
        "extent",
        "bounding-box",
        "metadata",
        "culling"
      ],
      "source": "scene-optimizer-core/source/operations/computeExtents/ComputeExtentsPlugin.cpp",
      "summary": "Compute Extents calculates and authors the `extent` attribute for meshes.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "countVertices",
      "title": "Count Vertices",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 3,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "count",
        "vertices",
        "stats",
        "analysis"
      ],
      "source": "scene-optimizer-core/source/operations/countVertices/CountVertices.cpp",
      "summary": "Count Vertices is a hidden analysis utility that categorizes meshes by vertex count into high, very high, and extreme buckets.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "analysis",
        "wired_into": []
      }
    },
    {
      "key": "decimateMeshes",
      "title": "Decimate Meshes",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "auto-within-tolerance",
      "args_count": 8,
      "requires_mesh": true,
      "pipelines": [
        "mesh-count-reduction"
      ],
      "keywords": [
        "decimate",
        "polygon-count",
        "lod",
        "qem",
        "silhouette"
      ],
      "source": "scene-optimizer-core/source/operations/decimateMeshes/OmniMeshDecimate.cpp",
      "summary": "Decimate Meshes reduces polygon count while preserving mesh shape as much as possible.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "parameter_prerequisites": [
        {
          "field": "asset_physical_context.metersPerUnit",
          "source": "sa_report.json",
          "required": true
        },
        {
          "elicit_from_user": "mm_tolerance",
          "canonical_question": "What's the smallest surface detail (in mm) you need to preserve?",
          "defaults": [
            0.1,
            0.5,
            1.0,
            2.0,
            5.0
          ],
          "skip_option": "skip decimation",
          "conversion": "maxMeanError = mm_tolerance / (metersPerUnit * 1000)"
        }
      ],
      "recommendation_signals": [
        {
          "source": "SceneOptimizerMeshDensityChecker",
          "signal": "High-density outlier meshes detected \u2014 meshes with triangle density disproportionate to their physical extent are strong candidates for decimation. This scoped validator reads actual geometry and is the canonical over-tessellation signal (SA does not flag density; it reads no geometry arrays)."
        },
        {
          "note": "maxMeanError is inherently scale-aware: over-tessellated meshes (e.g. a 1M-poly screw at 20mm) lose most triangles because nearly all vertices fall within the error budget. Under-tessellated meshes barely change. No per-mesh targeting is needed \u2014 apply uniformly to all meshes."
        }
      ],
      "anti_patterns": [
        "Do not frame as 'reduce by X%'. Rate-mode bypasses the silhouette-preserving error budget.",
        "Do not ask which meshes to target. maxMeanError handles density differences automatically.",
        "Do not offer triangle-count or percentage options unless the user explicitly provides a rate-based constraint."
      ]
    },
    {
      "key": "deduplicateGeometry",
      "title": "De-duplicate Geometry",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 12,
      "requires_mesh": true,
      "pipelines": [
        "safe-cleanup",
        "memory-reduction",
        "mesh-count-reduction"
      ],
      "keywords": [
        "dedup",
        "instancing",
        "memory",
        "mesh"
      ],
      "source": "scene-optimizer-core/source/operations/deduplicateGeometry/DeduplicateGeometry.cpp",
      "summary": "De-duplicate Geometry finds meshes that are geometrically identical (or near-identical) and replaces duplicates with instances of a single prototype.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "anti_patterns": [
        "Do not set `tolerance: 0` to force exact matching. The argument is documented as \"use 0 to require exact matches\", but measured on a 41,900-mesh library it finds zero duplicate sets and emits a file byte-identical to its input. Leave the 0.001 default, or pass a small non-zero value and constrain matching with `considerDeepTransforms` instead.",
        "Do not pass boolean literals to this operation. The CLI parses these arguments as integers and rejects `considerDeepTransforms=false` with `failed to set argument: stoi`, aborting the run; use `0` or `1`.",
        "Do not read a large prototype count as evidence that sharing is finished. Measured on an already-instanced Revit MEP export with 37,435 prototypes, the default run still replaced 25,909 of 41,900 authored meshes (61.8%) losslessly."
      ]
    },
    {
      "key": "deduplicateHierarchies",
      "title": "De-duplicate Hierarchies",
      "category": "hierarchy",
      "loss_class": "lossless",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 4,
      "requires_mesh": false,
      "pipelines": [
        "memory-reduction",
        "mesh-count-reduction",
        "instancing"
      ],
      "keywords": [
        "dedup",
        "instancing",
        "hierarchy",
        "prototype",
        "reference"
      ],
      "source": "scene-optimizer-core/source/operations/deduplicateHierarchies/DeduplicateHierarchies.cpp",
      "summary": "De-duplicate Hierarchies identifies structurally-identical sub-hierarchies and collapses them into shared prototypes with instanceable references at each original site.",
      "since_version": "2026-04-17T00:00:00Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "notes": "Replaces matching subtrees with instanceable references while preserving each occurrence transform. paths starts at the children of each listed boundary; maxDepth counts those children as level 1, and 0 is unbounded. Choose paths and maxDepth per region so the operation shares the selected components or subcomponents. An unbounded walk can share anonymous leaves below the required asset boundary. tolerance is property-value slack in stage units (0 means bitwise-exact); ignoreShaderOutputs controls shader-output comparison. Use the same boundary manifest for internal and external references, retain kept_inline_for_merge fragments and record the reuse rescan. Verify occurrence placement and appearance in the written consumer assembly. deduplicateGeometry handles per-mesh duplicates separately."
    },
    {
      "key": "deleteHiddenPrims",
      "title": "Delete Hidden Prims",
      "category": "hierarchy",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 0,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "delete",
        "hidden",
        "visibility",
        "prune"
      ],
      "source": "scene-optimizer-core/source/operations/deleteHiddenPrims/__init__.py",
      "summary": "Delete Hidden Prims finds and deletes all prims that have their visibility set to `invisible`.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "deletePrims",
      "title": "Delete Prims",
      "category": "hierarchy",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 1,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "delete",
        "prim",
        "prune"
      ],
      "source": "scene-optimizer-core/source/operations/deletePrims/DeletePrimsPlugin.cpp",
      "summary": "Delete Prims is a hidden utility operation that permanently removes specified prims from the stage's edit target layer.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "diceMeshes",
      "title": "Dice Meshes",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 22,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "dice",
        "subdivide",
        "chunk",
        "tile",
        "streaming"
      ],
      "source": "scene-optimizer-core/source/operations/diceMeshes/DiceMeshes.cpp",
      "summary": "Dice Meshes cuts meshes into smaller pieces along a 3D grid \u2014 like slicing a block of cheese with a wire grid.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "editStageMetrics",
      "title": "Edit Stage Metrics",
      "category": "metadata",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 5,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "stage",
        "metrics",
        "metersPerUnit",
        "upAxis",
        "metadata"
      ],
      "source": "scene-optimizer-core/source/operations/editStageMetrics/EditStageMetrics.cpp",
      "summary": "Edit Stage Metrics modifies a stage's global metrics \u2014 up axis and linear units.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "findCoincidingGeometry",
      "title": "Find Coinciding Geometry",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 4,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "find",
        "coinciding",
        "overlap",
        "analysis"
      ],
      "source": "scene-optimizer-core/source/operations/findCoincidingGeometry/FindCoincidingGeometry.cpp",
      "summary": "Find Coinciding Geometry detects meshes that occupy the same space \u2014 overlapping or near-identical geometry that causes z-fighting and wasted rendering.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "analysis",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "findFlatHierarchies",
      "title": "Find Flat Hierarchies",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 3,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "find",
        "hierarchy",
        "flat",
        "analysis"
      ],
      "source": "scene-optimizer-core/source/operations/findFlatHierarchies/FindFlatHierarchiesOperation.cpp",
      "summary": "Find Flat Hierarchies identifies prims with an excessively large number of children \u2014 \"flat\" hierarchy patterns where a single prim has hundreds or thousands of direct children.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "analysis",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "findOccludedMeshes",
      "title": "Find Occluded Meshes",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 7,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "find",
        "occluded",
        "interior",
        "hidden",
        "analysis",
        "internal",
        "enclosed"
      ],
      "source": "scene-optimizer-core/source/operations/findOccludedMeshes/FindOccludedMeshes.cpp",
      "summary": "Find Occluded Meshes detects geometry that is completely hidden inside other geometry and therefore never visible.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "analysis",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "parameter_prerequisites": {
        "ordering": {
          "position": "first",
          "rationale": "Perform authorized removal before optimizing geometry that will be deleted.",
          "invariants": [
            "findOccludedMeshes + removePrims BEFORE meshCleanup",
            "findOccludedMeshes + removePrims BEFORE deduplicateGeometry",
            "findOccludedMeshes + removePrims BEFORE decimateMeshes",
            "findOccludedMeshes + removePrims BEFORE removeSmallGeometry"
          ]
        },
        "scoping": {
          "trigger": "SA validation_scope.cross_component_pairs not explicitly transparent (enclosure_opaque true or unset)",
          "exclude": "Pairs where the enclosing geometry has a transparent/translucent material (opacity < 1.0, transmission shader, glass MDL, alpha-blend mode). Objects visible through transparent enclosures must NOT be removed.",
          "asset_types": "Equipment, machines, vehicles, cabinets, housings, enclosures, pumps, motors, compressors, sealed assemblies \u2014 anything with an opaque shell/casing that could hide internal parts."
        },
        "fields": [
          {
            "field": "containment_pairs",
            "source": "SA validation_scope.cross_component_pairs not explicitly transparent (enclosure_opaque true or unset)",
            "required": true,
            "description": "Enclosing/enclosed boundary-ID pairs from SA \u00a72.1, derived from boundary nomination (candidate_source hash OR semantics) and resolved to prim paths via asset_boundary_suggestions.boundaries[]. Pairs explicitly marked transparent (enclosure_opaque: false) are excluded; true or unset qualify (unknown opacity is resolved by the probe). Without scoped pairs, findOccludedMeshes has no scope and must not run on the full stage."
          }
        ],
        "elicit_from_user": [
          {
            "id": "confirm_removal",
            "canonical_question": "These enclosed assets contain internal geometry invisible from outside. Remove the occluded prims found by the scoped probe? (you lose the internals)",
            "context": "Use the measured occluded-prim count and affected components. Ask only if the user has not already authorized removing those internals.",
            "skip_option": "Keep internal geometry"
          }
        ],
        "action_chain": {
          "analysis_op": "findOccludedMeshes",
          "action_op": "removePrims",
          "pattern": "Run the scoped probe without an additional approval, then pass its selected paths to removePrims only within the authorized deletion scope."
        },
        "apply_approval": {
          "detection": "Run nominated pairs within the recorded time budget.",
          "deletion": "Requires the purpose and affected internal geometry to be authorized; reuse authorization already supplied."
        }
      }
    },
    {
      "key": "findOverlappingMeshes",
      "title": "Find Overlapping Meshes",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 5,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "find",
        "overlap",
        "intersect",
        "analysis"
      ],
      "source": "scene-optimizer-core/source/operations/findOverlappingMeshes/FindOverlappingMeshesOperation.cpp",
      "summary": "Find Overlapping Meshes detects interfering geometry \u2014 meshes whose surfaces intersect or penetrate each other.",
      "since_version": "2026-05-08T22:40:32Z",
      "curation": {
        "status": "analysis",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "fitPrimitives",
      "title": "Fit Primitives",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "auto-within-tolerance",
      "args_count": 22,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "fit",
        "primitive",
        "cube",
        "sphere",
        "cylinder",
        "approximate"
      ],
      "source": "scene-optimizer-core/source/operations/fitPrimitives/Primitive.cpp",
      "summary": "Fit Primitives analyzes meshes and replaces them with simpler geometric primitives (spheres, cylinders, cones, cubes) when the mesh closely matches one of those shapes.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "recommendation_signals": [
        {
          "source": "phase4_targets[].archetype (apply-restructure manifest)",
          "signal": "Archetype decides the posture, and it is already tagged on each selected target. On `piping` and `large-spatial` targets \u2014 pipe runs, conduit, duct, structural runs, architectural shells \u2014 a cylinder or a box IS the correct representation of the part: run at default args, say so in a one-line notice, and do not prompt. That is the expected win on this content, and skipping it is the failure. On `encapsulated-product` prompt instead: a serviceable machine's parts carry part numbers, and a maintenance twin needs them addressable, so fitting can erase something real. On `generic` use judgement and lean toward fitting when the geometry is prismatic."
        },
        {
          "source": "UsdOptimizePrimitiveFitChecker (validator concept `primitive_fit`)",
          "signal": "Fittable-mesh counts size the win and belong in the notice. They are not a precondition on a `piping` or `large-spatial` target: the SO validators go unregistered in some runtimes, and the archetype tag alone is enough to run at defaults."
        },
        {
          "note": "Default args are the expected configuration. `ignoreNonConstPrimvars` and `ignoreSubsets` both default to `true` (fit more); set either to `false` only when validator analysis reports non-constant non-`Normal` primvars AND the user asked to preserve UVs, displayColors, or subsets. `Normal` primvars are allow-listed upstream and never block a fit at any setting. The tolerance comes from the `fitPrimitives` column of the scale-band table in operations.md, which runs about 10x looser than the decimateMeshes column."
        },
        {
          "note": "Bias toward fitting. An unwanted refit is visible and reversible from the source asset; a fit never attempted is an invisible loss that surfaces later as a stage nobody wants to open."
        }
      ],
      "anti_patterns": [
        "Do not ask for a tolerance ladder. fitPrimitives carries no parameter_prerequisites block by design (issue #207) \u2014 the number comes from the fitPrimitives scale band in operations.md, and an invented option set is the improvised-option-set anti-pattern.",
        "Identity is not a reason to skip the fit on a `piping` or `large-spatial` target. The fit preserves identity there: the prim keeps its path, its name, and its place in the hierarchy, which is why the restructure manifest classifies reduction_route `fit_primitive` as identity-preserving bounded-loss.",
        "Do not make an analysis pass a precondition for running at defaults on piping or large-spatial content. Analysis sizes the win; the archetype has already settled the decision.",
        "Do not reflexively set `ignoreNonConstPrimvars: false` on a CAD/BIM scene. That is the restrictive setting, and it suppresses fits the default would take."
      ]
    },
    {
      "key": "flattenHierarchy",
      "title": "Flatten Hierarchy",
      "category": "hierarchy",
      "loss_class": "lossless",
      "risk_class": "medium",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 2,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "flatten",
        "hierarchy",
        "scenegraph"
      ],
      "source": "scene-optimizer-core/source/operations/flattenHierarchy/FlattenHierarchy.cpp",
      "summary": "Flatten Hierarchy removes redundant Xform prims from a stage's hierarchy, reducing prim count.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "generateAtlasUVs",
      "title": "generateAtlasUVs",
      "category": "uv",
      "loss_class": "lossless",
      "risk_class": "medium",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 7,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "uv",
        "atlas",
        "unwrap",
        "texture"
      ],
      "source": "scene-optimizer-core/source/operations/generateAtlasUVs/GenerateAtlasUVs.cpp",
      "summary": "Auto UV Unwrap generates texture coordinates (UVs) by unfolding mesh surfaces into 2D.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "generateNormals",
      "title": "Generate Normals",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 6,
      "requires_mesh": true,
      "pipelines": [
        "data-quality-baseline"
      ],
      "keywords": [
        "normals",
        "shading",
        "smooth",
        "regenerate"
      ],
      "source": "scene-optimizer-core/source/operations/generateNormals/GenerateNormals.cpp",
      "summary": "Generate Normals computes and authors vertex normals for meshes.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "generateProjectionUVs",
      "title": "Generate Projection UVs",
      "category": "uv",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 7,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "uv",
        "projection",
        "planar",
        "texture"
      ],
      "source": "scene-optimizer-core/source/operations/generateProjectionUVs/GenerateProjectionUVs.cpp",
      "summary": "Generate Projection UVs creates texture coordinates by projecting them onto meshes using one of several projection methods (planar, cylindrical, spherical, cubic, or triplanar).",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "generateScene",
      "title": "Generate Scene",
      "category": "utility",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 12,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "generate",
        "scene",
        "synthetic",
        "test",
        "demo"
      ],
      "source": "scene-optimizer-core/source/operations/generateScene/GenerateScene.cpp",
      "summary": "Generate Scene creates synthetic test scenes by procedurally placing meshes in a layout.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "manifoldMeshes",
      "title": "Manifold Meshes",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 1,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "manifold",
        "watertight",
        "close-holes",
        "topology"
      ],
      "source": "scene-optimizer-core/source/operations/manifoldMeshes/Manifold.cpp",
      "summary": "**Legacy command \u2014 use `meshCleanup` with `makeManifold: true` instead.** This operation exists for backward compatibility.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "deprecated",
        "status_override": "deprecated",
        "rationale": "deprecated: meshCleanup: legacy hole-closing command superseded by meshCleanup with makeManifold:true.",
        "wired_into": []
      }
    },
    {
      "key": "merge",
      "title": "Merge Static Meshes",
      "category": "transform",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 16,
      "requires_mesh": true,
      "pipelines": [
        "mesh-count-reduction"
      ],
      "keywords": [
        "merge",
        "combine",
        "consolidate",
        "instancing-conflict"
      ],
      "source": "scene-optimizer-core/source/operations/merge/Merge.cpp",
      "summary": "Merge Static Meshes combines multiple meshes that share common properties into single merged meshes.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "notes": "Merge eligible interior meshes within one retained component. Follow references/operations.md for scope, authorization, operation order and native spatial settings. Measure render performance before claiming a render improvement. Attribute storage savings to measured changes.",
      "anti_patterns": [
        "Do not leave the destination unset or outside the retained boundary or population mask. Keep the absolute destination in operation_scope.output_path and use the scoped merge helper described in references/operations.md to construct the native mergePoint and rootPath settings.",
        "Do not treat meshPrimPaths as the output scope; it selects input meshes. Resolve the native output against the recorded destination before remapping source paths.",
        "After the scoped merge calls, inspect empty ancestor prims and apply assembly cleanup while preserving protected prims and unloaded payloads. Follow references/operations.md; do not delete a prim merely because its meshes moved."
      ]
    },
    {
      "key": "mergeVertices",
      "title": "Merge Vertices",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 5,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "weld",
        "merge",
        "vertices",
        "tolerance"
      ],
      "source": "scene-optimizer-core/source/operations/mergeVertices/MergeVertices.cpp",
      "summary": "**Legacy command \u2014 use `meshCleanup` instead.** This operation exists for backward compatibility.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "deprecated",
        "status_override": "deprecated",
        "rationale": "deprecated: meshCleanup: legacy standalone vertex welder superseded by meshCleanup.",
        "wired_into": []
      }
    },
    {
      "key": "meshCleanup",
      "title": "Mesh Cleanup",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 11,
      "requires_mesh": true,
      "pipelines": [
        "mesh-count-reduction",
        "data-quality-baseline"
      ],
      "keywords": [
        "cleanup",
        "degenerate",
        "isolated",
        "topology",
        "fix"
      ],
      "source": "scene-optimizer-core/source/operations/meshCleanup/MeshCleanup.cpp",
      "summary": "Mesh Cleanup performs a suite of mesh repair operations to fix common topological defects.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "moveMaterials",
      "title": "Move Materials",
      "category": "materials",
      "loss_class": "lossless",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 2,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "materials",
        "looks",
        "namespace",
        "defaultPrim",
        "move"
      ],
      "source": "usd-optimize/lib/operations/moveMaterials/__init__.py",
      "summary": "Move Materials moves every material under one prim path, such as /World/Looks, and can make that path's root prim the default prim when the stage has none.",
      "since_version": "2026-08-03T00:00:00Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "optimizeMaterials",
      "title": "Optimize Materials",
      "category": "materials",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 4,
      "requires_mesh": false,
      "pipelines": [
        "safe-cleanup",
        "memory-reduction",
        "load-time-reduction"
      ],
      "keywords": [
        "materials",
        "shader",
        "dedup",
        "consolidate"
      ],
      "source": "scene-optimizer-core/source/operations/optimizeMaterials/OptimizeMaterials.cpp",
      "summary": "Optimize Materials reduces the number of materials in a scene by deduplicating identical materials and consolidating similar ones.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "optimizePrimvars",
      "title": "Optimize Primvars",
      "category": "metadata",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 6,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "primvars",
        "interpolation",
        "constant",
        "compress"
      ],
      "source": "scene-optimizer-core/source/operations/optimizePrimvars/OptimizePrimvars.cpp",
      "summary": "Optimize Primvars reduces memory usage by optimizing how primvar (per-vertex/per-face attributes like UVs, colors) data is stored.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "optimizeSkelRoots",
      "title": "Optimize Skeleton Roots",
      "category": "hierarchy",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 0,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "skeleton",
        "skelroot",
        "rigging",
        "animation"
      ],
      "source": "scene-optimizer-core/source/operations/optimizeSkelRoots/OptimizeSkelRoots.cpp",
      "summary": "Optimize Skeleton Roots merges all skinned meshes within each UsdSkelRoot to improve GPU skinning performance.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "optimizeTimeSamples",
      "title": "Optimize Time Samples",
      "category": "metadata",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 6,
      "requires_mesh": false,
      "pipelines": [
        "safe-cleanup",
        "load-time-reduction"
      ],
      "keywords": [
        "time-samples",
        "animation",
        "compress",
        "constant"
      ],
      "source": "scene-optimizer-core/source/operations/optimizeTimeSamples/OptimizeTimeSamples.cpp",
      "summary": "Optimize Time Samples removes redundant time samples from animated attributes.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "organizePrototypes",
      "title": "Organize Prototypes",
      "category": "hierarchy",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 2,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "prototypes",
        "instanceable",
        "organize",
        "scenegraph"
      ],
      "source": "scene-optimizer-core/source/operations/organizePrototypes/OrganizePrototypes.cpp",
      "summary": "Organize Prototypes moves internal scene-graph instance prototypes under a user-specified namespace (class prim).",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "pivot",
      "title": "Compute Pivot",
      "category": "transform",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 4,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "pivot",
        "transform",
        "origin",
        "xform"
      ],
      "source": "scene-optimizer-core/source/operations/pivot/Pivot.cpp",
      "summary": "Compute Pivot recalculates and sets pivot points (transform origins) for meshes or transforms.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "primitivesToMeshes",
      "title": "Primitives to Meshes",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 13,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "primitive",
        "convert",
        "tessellate",
        "mesh"
      ],
      "source": "scene-optimizer-core/source/operations/primitivesToMeshes/PrimitiveToMesh.cpp",
      "summary": "Primitives to Meshes converts USD geometric primitives (UsdGeomSphere, UsdGeomCylinder, UsdGeomCone, UsdGeomCube) into polygon mesh representations.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "specialty",
        "status_override": "specialty",
        "rationale": "specialty: escape-hatch \u2014 the only path to convert analytic primitives back to UsdGeomMesh for downstream tools that reject primitives (some renderers, physics, exporters). Recommend only when the downstream context explicitly requires mesh output.",
        "wired_into": []
      }
    },
    {
      "key": "printStats",
      "title": "Print Stats",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 3,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "stats",
        "print",
        "report",
        "analysis"
      ],
      "source": "scene-optimizer-core/source/operations/printStats/PrintStats.cpp",
      "summary": "Print Stats is a hidden diagnostic operation that outputs scene statistics including prim counts, mesh counts, vertex/face totals, and optionally primvar and timing information.",
      "since_version": "2026-05-08T22:40:32Z",
      "curation": {
        "status": "analysis",
        "wired_into": []
      }
    },
    {
      "key": "pruneLeaves",
      "title": "Prune Leaves",
      "category": "hierarchy",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 4,
      "requires_mesh": false,
      "pipelines": [
        "safe-cleanup",
        "memory-reduction",
        "load-time-reduction"
      ],
      "keywords": [
        "prune",
        "empty",
        "leaves",
        "cleanup"
      ],
      "source": "scene-optimizer-core/source/operations/pruneLeaves/PruneLeaves.cpp",
      "summary": "Prune Leaves finds and removes leaf grouping primitives \u2014 Xforms and Scopes that contain no meaningful children (or only other empty groups).",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "anti_patterns": [
        "Do not treat this as optional cleanup after a merge or a decimation pass. Those operations delete geometry prims and leave their parent Xforms standing, so the scene graph stays as deep and as wide as before while carrying nothing. On a merged CAD station it removed 97.8% of the Xforms and 93.5% of all prims with zero triangle change.",
        "Do not run it expecting named units to be removed. It removes grouping prims with no meaningful children; a named unit that still holds merged geometry survives. Verify the units you promised the user are still addressable rather than assuming."
      ]
    },
    {
      "key": "pythonScript",
      "title": "Python Script",
      "category": "utility",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 1,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "python",
        "script",
        "custom",
        "user-code"
      ],
      "source": "scene-optimizer-core/source/operations/pythonScript/__init__.py",
      "summary": "Python Script executes a user-defined Python script as a Usd Optimize operation.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "specialty",
        "status_override": "specialty",
        "rationale": "specialty: executes a supplied or reviewed Python script for an explicitly requested operation outside the general workflow.",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      },
      "notes": "SECURITY: executes arbitrary user-supplied Python code with the privileges of the running process. Never agent-initiated (specialty escape-hatch, see CLASSIFICATION.md); require a user-supplied or reviewed script and explicit confirmation before execution (operations.md). Omitted from probe-snapshot operations_available captures (documented, not granted)."
    },
    {
      "key": "remeshMeshes",
      "title": "Remesh Meshes",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 4,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "remesh",
        "retopology",
        "uniform",
        "regenerate"
      ],
      "source": "scene-optimizer-core/source/operations/remeshMeshes/Remesh.cpp",
      "summary": "Remesh Meshes regenerates mesh topology to create a more uniform triangle distribution while preserving the original shape.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "removeAttributes",
      "title": "Remove Attributes",
      "category": "metadata",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 3,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "remove",
        "attribute",
        "metadata",
        "cleanup"
      ],
      "source": "scene-optimizer-core/source/operations/removeAttributes/RemoveAttributes.cpp",
      "summary": "Remove Attributes removes or blocks specified attributes from prims.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "removePrims",
      "title": "Remove Prims",
      "category": "hierarchy",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 8,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "remove",
        "prim",
        "filter",
        "delete"
      ],
      "source": "scene-optimizer-core/source/operations/removePrims/RemovePrimsPlugin.cpp",
      "summary": "Remove Prims identifies and removes invisible prims and orphaned overs from a USD stage.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "removeSmallGeometry",
      "title": "Remove Small Geometry",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 4,
      "requires_mesh": true,
      "pipelines": [
        "mesh-count-reduction"
      ],
      "keywords": [
        "remove",
        "small",
        "screen-space",
        "lod",
        "cleanup"
      ],
      "source": "scene-optimizer-core/source/operations/removeSmallGeometry/RemoveSmallGeometry.cpp",
      "summary": "Remove Small Geometry finds and removes meshes that are below a size threshold.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "removeUntypedPrims",
      "title": "Remove Untyped Prims",
      "category": "hierarchy",
      "loss_class": "bounded-loss",
      "risk_class": "low",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 0,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "remove",
        "untyped",
        "scope",
        "cleanup"
      ],
      "source": "scene-optimizer-core/source/operations/removeUntypedPrims/__init__.py",
      "summary": "Remove Untyped Prims deletes prims that have no USD schema type.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "removeUnusedUVs",
      "title": "Remove Unused UVs",
      "category": "uv",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 3,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "uv",
        "unused",
        "remove",
        "cleanup"
      ],
      "source": "scene-optimizer-core/source/operations/removeUnusedUVs/RemoveUnusedUVs.cpp",
      "summary": "Remove Unused UVs finds and removes texture coordinate (UV) attributes that are not referenced by any bound material.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "canonical",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "rtxMeshCount",
      "title": "RTX Mesh Count",
      "category": "analysis",
      "loss_class": "analysis-only",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 1,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "rtx",
        "mesh-count",
        "raytracing",
        "stats"
      ],
      "source": "scene-optimizer-core/source/operations/rtxMeshCount/RtxMeshCount.cpp",
      "summary": "RTX Mesh Count is a hidden analysis operation that counts the number of RTX acceleration structures, RTX meshes, and unique RTX meshes in the scene.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "analysis",
        "wired_into": []
      }
    },
    {
      "key": "shrinkwrap",
      "title": "Shrinkwrap",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "high",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 13,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "shrinkwrap",
        "wrap",
        "proxy",
        "lod"
      ],
      "source": "scene-optimizer-core/source/operations/shrinkwrap/Shrinkwrap.cpp",
      "summary": "Shrinkwrap converts a polygon soup into a bounding watertight mesh, with controllable mechanisms to generate loose and tight surface proxies.",
      "since_version": "2026-03-05T22:02:49Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "sparseMeshes",
      "title": "Sparse Meshes",
      "category": "geometry",
      "loss_class": "bounded-loss",
      "risk_class": "medium",
      "requires_confirmation": true,
      "apply_authority": "intent-gated",
      "args_count": 0,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "sparse",
        "decimate",
        "reduce",
        "geometry"
      ],
      "source": "scene-optimizer-core/source/operations/sparseMeshes/SparseMeshes.cpp",
      "summary": "Sparse Meshes reduces meshes with poor spatial density \u2014 geometry that occupies a large bounding box relative to its actual surface area.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "specialty",
        "status_override": "specialty",
        "rationale": "specialty: bespoke triage \u2014 surfaced from usd-validation-runner Tier 2 sparse-mesh findings; reach for it on user request, not from a named pipeline.",
        "wired_into": [
          "skills/omniverse-usd-performance-tuning/references/operations.md"
        ]
      }
    },
    {
      "key": "splitMeshes",
      "title": "Split Meshes",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 16,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "split",
        "partition",
        "chunk",
        "geometry"
      ],
      "source": "scene-optimizer-core/source/operations/splitMeshes/SplitMeshes.cpp",
      "summary": "Split Meshes breaks meshes into smaller pieces based on geometric connectivity or spatial clustering.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "subdivideMeshes",
      "title": "Subdivide Meshes",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 5,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "subdivide",
        "tessellate",
        "smooth",
        "geometry"
      ],
      "source": "scene-optimizer-core/source/operations/subdivideMeshes/Subdivide.cpp",
      "summary": "Subdivide Meshes increases mesh polygon density by subdividing faces.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "triangulateMeshes",
      "title": "Triangulate Meshes",
      "category": "geometry",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 2,
      "requires_mesh": true,
      "pipelines": [],
      "keywords": [
        "triangulate",
        "quad",
        "topology",
        "geometry"
      ],
      "source": "scene-optimizer-core/source/operations/triangulateMeshes/Triangulate.cpp",
      "summary": "Triangulate Meshes converts all polygon faces to triangles.",
      "since_version": "2026-02-11T07:51:19Z",
      "curation": {
        "status": "documentary",
        "wired_into": []
      }
    },
    {
      "key": "utilityFunction",
      "title": "Utility Function",
      "category": "utility",
      "loss_class": "lossless",
      "risk_class": "low",
      "requires_confirmation": false,
      "apply_authority": "auto",
      "args_count": 2,
      "requires_mesh": false,
      "pipelines": [],
      "keywords": [
        "utility",
        "helper",
        "internal"
      ],
      "source": "scene-optimizer-core/source/operations/utilityFunction/UtilityFunction.cpp",
      "summary": "Utility Function is a container for small one-off operations that don't merit their own plugin.",
      "since_version": "2026-05-08T22:40:32Z",
      "curation": {
        "status": "specialty",
        "status_override": "specialty",
        "rationale": "specialty: bespoke ad-hoc SO scripting (Deinstance / Unbind Materials / Set Instanceable / Flatten Instances); recommend only when a recipe needs one of those structural sub-functions.",
        "wired_into": []
      }
    }
  ]
}

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python, Needs Node.js

The author says: Requires a verified standalone Usd Optimize/OpenUSD runtime for operations, usd-validation-nvidia for supported checks, and a writable output workspace. Remote assets require a working resolver. Render profiling is an external handoff.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs
  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA Omniverse
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/omniverse-usd-performance-tuning · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA Omniverse or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download omniverse-usd-performance-tuning.zip