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

Omniverse Usd Performance Tuning

OpenAIOfficialCreated by NVIDIA OmniverseDistributed by OpenAI

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

From the author

Top-level workflow skill for USD performance diagnosis and optimization. Use for slow loading, high memory, low FPS, or 'optimize my scene' requests; delegates auth/runtime setup to Phase 0 owners.
— the description by NVIDIA Omniverse

AutoGineer summary

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

The omniverse-usd-performance-tuning skill provides a structured, end-to-end procedure for addressing performance bottlenecks in USD assets. It manages the lifecycle of performance tuning, from initial runtime context setup and baseline profiling to composition auditing, validation, and targeted scene optimization. The skill enforces a rigorous milestone-based approach, ensuring that all destructive operations are planned and approved, and that performance improvements are verified through comparative profiling and standardized reporting.

What it does

  • Orchestrates the end-to-end USD performance tuning lifecycle.
  • Validates runtime environments and handles authentication for remote assets.
  • Conducts composition audits and structural assessments of USD stages.
  • Executes validated optimization operations using Scene Optimizer.
  • Generates structured optimization reports comparing baseline and post-optimization metrics.
  • Enforces safety gates for destructive operations and mutation.

When to use it

  • When a USD scene exhibits slow loading times or low frame rates.
  • When memory usage is excessively high or GPU crashes occur.
  • When you need to optimize a scene for better interactivity or performance.
  • When you need to diagnose CAD conversion quality issues.
  • When you need to validate a scene before and after applying optimizations.

Advantages

  • Ensures consistent performance diagnosis through a standardized workflow.
  • Prevents accidental data loss by requiring approval for destructive operations.
  • Provides clear, evidence-based reporting on performance improvements.
  • Integrates seamlessly with existing Omniverse validation and optimization tools.
  • Maintains strict separation between diagnosis, planning, and execution phases.

Usage examples

“This USD scene loads very slowly; please triage what I should check first.”
The agent will initiate the runtime context gate, perform a composition audit, and provide a structured plan to identify the source of the slow load time.
“Optimize my CAD scene for better performance.”
The agent will verify the runtime, assess the CAD conversion quality, and propose a milestone-based optimization plan including validation and profiling.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/openai/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

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->

<!-- SPDX-License-Identifier: Apache-2.0 -->

When to Use

Use this workflow for broad performance asks such as slow loading, high memory, low FPS, GPU crashes, conversion-quality triage, or generic requests to optimize a USD scene.

Instructions

  1. Start from the mandatory runtime context gate before producing tuning output, unless the prompt is only asking for a static classification test.

  2. Classify broad optimization requests as ready_to_plan; reserve approval_required for prompts that explicitly name a destructive operation to execute before planning.

  3. Plan the full canonical chain through optimization-report, preserving the structured milestone order and the profile-stage:baseline / profile-stage:after labels when listing milestones.

  4. Invoke downstream skill bodies only when their phase is reached, and keep raw runtime artifacts on disk while reading compact summaries.

Frontmatter keeps version and tools at top level for agentskills.io runtime compatibility. NVCARPS discoverability fields live under metadata.

Output Format

Return a plan or status summary that names the selected entry skill, uses ready_to_plan for generic optimization requests, includes the full milestone chain through optimization-report, and labels profile phases as profile-stage:baseline and profile-stage:after. For structured outputs, the broad-optimization milestone subsequence is omniverse-usd-performance-tuning -> profile-stage:baseline -> usd-structure-assessment -> usd-validation-runner -> restructure-decision -> apply-restructure -> so-run-validators -> so-interpret-validators -> so-run-operations -> profile-stage:after -> compare-profiles -> optimization-report. End-to-end execution should produce an optimized stage when mutation runs and a report conforming to the optimization-report reference's schema (scripts/optimization-report.schema.json within that reference).

Use this workflow for broad performance asks such as slow loading, low FPS, high memory, GPU crashes, conversion quality, or "optimize my scene."

Entry skill rule

This skill is the named entry point for broad performance work whenever the agent has any verified way to do that work. Runtime probing details live in setup-usd-performance-tuning; this rule only decides which skill owns the user-facing performance request.

  • If the setup probe shows any verified runtime path - Kit, standalone, or even a partial stack such as Asset Validator only - enter here. If the user's requested tool is missing, return the specific blocked_code (blocked_missing_scene_optimizer, blocked_missing_so_operation, etc.) instead of substituting another workflow.

  • Enter at setup-usd-performance-tuning only when no runtime path is verified and runtime choice/setup is the first unresolved problem.

  • For omniverse:// assets, enter at omniverse-authentication first. Authentication precedes setup and triage for remote assets.

The decision is about ownership, not order. Setup, authentication, and triage all run in their normal phase order; this rule only fixes which skill the agent names as the entry skill in its response.

Runtime context — session-start gate (mandatory)

Before any other tuning output, follow the mandatory session-start gate in skills/omniverse-usd-performance-tuning/references/setup-usd-performance-tuning/references/runtime-context-header.md. That reference owns output_path, the canonical setup-preflight.json location, Format A/Format B, and the "do not improvise a silent probe" anti-pattern.

Required outcomes:

  • Missing or unreadable preflight: invoke setup-usd-performance-tuning.

  • Present preflight: print Format A and wait for the user to choose Continue, Change Kit, Switch to standalone, or Re-run probe.

  • Confirmed runtime in the same session: use compact Format B for follow-up status.

[Kit: {runtime_context.kit.application} {runtime_context.kit.version}  |  SO: {runtime_context.sceneOptimizer.version}  |  AV: {runtime_context.assetValidator.version}]

Runtime artifact token budget

Before reading Kit logs, Asset Validator CSVs, Scene Optimizer logs, Tracy CSVs, or other runtime output, follow references/runtime-artifact-token-budget.md. Keep raw artifacts on disk, read summary JSON first, and use bounded log snapshots instead of full dumps or live streams.

Plan-time vs execution-time approval

approval_required at planning time is reserved for requests that explicitly name a destructive operation. Use the following rule when deciding between ready_to_plan and approval_required:

  • approval_required at planning time — the user's request itself names a destructive operation: "flatten this stage", "decimate the meshes", "merge prototypes", "delete unused prims", or any specific named mutation that cannot be undone within the same workflow. In this case the agent's first response must be an approval prompt that names the operation, before the agent commits to a plan that executes it.

  • ready_to_plan at planning time — the user's request is general: "optimize this scene", "make it load faster", "reduce GPU memory", "improve interactivity". The agent lays out the full plan, including any destructive operations the plan would invoke (for example so-run-operations with mergeMaterials), without withholding the plan itself. Approval for each destructive operation is requested alongside plan approval.

The distinction is between authorising a plan and authorising a destructive action. A general optimisation request authorises planning; it does not authorise execution of specific destructive operations.

For structured runtime-test responses and similar planning summaries:

  • A future restructure-decision prompt is a planned user-decision gate, not a reason to set the top-level response decision to approval_required for a generic optimization request.

  • For a generic optimization request, set decision: "ready_to_plan" and include the full intended chain in both committed_milestones and planned_phases, through optimization-report.

  • It is valid for gates_observed to include asks_user_for_restructure_decision while the top-level decision remains ready_to_plan.

  • Whenever a chain names profile phases, use the exact labels profile-stage:baseline and profile-stage:after; do not emit the ambiguous bare profile-stage token.

  • Start structured milestone lists with omniverse-usd-performance-tuning as the owning entry skill. Include setup-usd-performance-tuning only as additional Phase 0 context, not as a replacement for the entry skill milestone.

  • For broad optimization requests, preserve the milestone subsequence from Output Format above exactly, with optional extra analysis steps inserted only where they do not reorder it.

  • Do not list so-run-validators or so-interpret-validators before restructure-decision in broad optimization milestone summaries. Phase-aware validator routing still happens through usd-validation-runner; the SO validator executor/interpreter milestones appear after the restructure decision path in the structured plan contract.

Output expectation

End-to-end optimization work should produce both an optimized USD stage, when mutation is executed, and a structured optimization report conforming to the optimization-report reference's scripts/optimization-report.schema.json. The HTML report must be rendered from references/report-templates/optimization-report.html.template via render_preview.py — never hand-write HTML. Diagnosis-only work should still end with a report or summary that states no optimized stage was written.

Purpose

Route digital twin USD performance requests into the right diagnostic and optimization workflow while preserving evidence before mutation.

Prerequisites

  • Stage path or enough context to identify the target asset.

  • User goal: diagnosis only, validation, profiling, or processor execution.

  • Runtime availability status from setup-usd-performance-tuning when not already known.

  • Permission status for in-place mutation vs writing a separate optimized output.

Examples

  • "This USD loads slowly; triage what to check first."

  • "Route a low-FPS CAD scene through the performance workflow."

Triage order

  1. Runtime gate. Follow the mandatory session-start gate above before validation, profiling, or optimization. Do not scan, probe, install, or pick Kit/standalone runtimes directly in this skill; setup-usd-performance-tuning owns probe/chooser/install dispatch and writes the preflight consumed here.

  2. Identify the target problem:

    • Load time.

    • FPS or interactivity.

    • GPU or system memory.

    • Crash or device lost.

    • CAD conversion quality.

    • Validation failure.

  3. Gather minimum context:

    • Stage path and size.

    • Whether the stage is local, mounted, or omniverse:// remote. For remote assets, route through omniverse-authentication before first open.

    • Kit or USD runtime.

    • Whether the workload is CAD, VFI, AIF, Isaac, or generic OpenUSD.

    • Whether in-place mutation is allowed.

    • Whether the user wants diagnosis only or processor execution.

  4. Route:

    • USD composition questions: usd-structure-assessment (composition is now part of the SA umbrella; deeper detail in skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/composition-audit.md).

    • Validation and content issues: usd-validation-runner (master router; routes to validate-* family or so-run-validators based on intent).

    • Edit/output decisions: usd-edit-target-planner (also owns variant/payload gates).

    • Repeated copied hierarchy or high mesh count with no instancing: usd-hierarchy-dedupe-candidates.

    • Restructure decision (monolithic stage, asset boundary materialization): restructure-decision.

    • CAD converter settings: read references/cad-conversion/README.md (niche pre-USD concern; see reference for details).

    • Scene Optimizer: so-run-validators, so-interpret-validators, so-run-operations.

Optimization ordering

Follow the canonical ordering in workflow.md § Operation ordering invariants. The high-level rule: prototypes first → per-asset validation → stage-level operations last. The workflow reference owns the full invariant list (meshCleanup before decimateMeshes, deduplication before decimation, never merge if instanced, etc.) and the analysis-only ops catalogue.

Rules

  • Always run composition audit before mutation.

  • Always validate before and after processor execution.

  • Optimize prototypes before per-asset validation.

  • Do not run whole-stage mesh deduplication on very large CAD scenes before checking for hierarchy-level reuse.

  • Do not recommend a fixed optimization stack without bottleneck evidence.

  • Do not invent numeric thresholds or expected percentage wins.

  • Prefer canonical SO ops over specialty / documentary ones. The op curation in references/operations/_curation.json classifies every op as canonical, specialty, analysis, documentary, or deprecated. When more than one op could resolve the same finding, recommend the canonical one first and only reach for a specialty op when the user explicitly asks or the rationale warrants it. Specifically:

    • For vertex welding, prefer canonical meshCleanup with explicit flags over the standalone mergeVertices op. The standalone op is a legacy/specialty surface; use upstream usd-optimize for the operation mechanics and local approval policy before mutating.

    • For hierarchy dedupe, recommend usd-hierarchy-dedupe-candidates + apply-restructure (the USD-authored rewrite path).

    • For per-mesh dedupe, recommend deduplicateGeometry (canonical) over findCoincidingGeometry (analysis — produces a report, not a change).

    • Do not recommend documentary-status ops (e.g., boxClip, deletePrims, removeAttributes, removeUntypedPrims, merge outside its narrow non-instanced case) without an explicit user request. Documentary ops survive in the per-op references/operations/<key>.md routing stubs for completeness but are excluded from agent-initiated recommendations.

    • Specialty ≠ documentary. Ops classified as specialty in _curation.json either (a) have validator-finding evidence that wires them into the so-interpret-validators chain (e.g. sparseMeshes, optimizePrimvars), or (b) are load-bearing escape hatches needed for specific downstream contexts (e.g. primitivesToMeshes when output must be UsdGeomMesh, utilityFunction for instancing toggles and material rebinding, pythonScript for so-create-proxy recipes). Recommend specialty ops when their validator fires OR when their downstream context applies — the suppression above only targets documentary ops.

Limitations

  • Does not replace downstream reference instructions; load each required reference before executing it.

  • Does not install runtimes directly; follow setup or install references when requirements are missing.

  • Does not authorize mutation when the user has not allowed writes.

Troubleshooting

  • If runtime status is unclear, run setup-usd-performance-tuning before profiling or validation.

  • If the reported problem is vague, gather stage path, workload type, and whether diagnosis or execution is requested.

  • If the workflow suggests mutation before evidence, return to baseline profiling and composition audit first.

References

Before routing, read:

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/optimization-tradeoffs.md — identify which pipeline phase the scene is in (extraction, structuring, or optimization). The right action depends on the phase.

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/factory-level-structuring.md — understand the three pillars (assets, aggregation, animation) and the seven-step structuring pattern.

If you have network access, prefer the live URLs (noted in each reference file) for the most current version.

Required execution flow

Read references/workflow.md for the canonical Phase 0-7 flow, including Kit/standalone branches, validator-stack routing, operation ordering, termination conditions, duration hints, and the optional iteration pattern. The compact root map at references/skill-map.md only routes agents into this workflow.

Do not treat downstream phase names as plain checklist labels. Before executing each step, load that phase's nested README.md reference and follow its instructions. Claude Code only exposes the public catalog skill; it does not recursively inject profile-stage, usd-structure-assessment, or other nested references.

The final deliverable must come from optimization-report: save both the structured JSON report and the generated Markdown summary. Do not substitute an ad hoc SUMMARY.md or chat-only recap for the optimization report.

For deeper subtopic guidance, consult the references:

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/composition-audit.md, skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/layer-health.md - subtopic detail for SA's Phase 1 checklist.

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/instancing-readiness/references/instancing-tradeoffs.md - merge safety, decision tree for instancing choices.

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/usd-edit-target-planner/references/variants-payloads.md - deeper variant/payload trade-offs (gates are inline in usd-edit-target-planner).

  • references/cad-conversion/README.md - CAD converter settings.

  • references/upstreams/usd-optimize.md - upstream SO mechanics and prebuilt package resolution.

  • skills/omniverse-usd-performance-tuning/references/usd-validation-runner/references/so-run-validators/references/infrastructure.md - local handoff for SO validator infrastructure.

  • skills/omniverse-usd-performance-tuning/references/usd-validation-runner/references/validation-scoping.md - tier 1/2/3 plan + scene-aware adjustment.

  • skills/omniverse-usd-performance-tuning/references/optimization-report/references/optimization-report-template.md - the data contract every phase populates.

For full Kit runtime profiling (FPS, frame time, Hydra/RTX metrics), refer to the external profiling skills at NVIDIA/omniperf.

Files

references/usd-structure-assessment/references/apply-restructure/README.md

apply-restructure

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->

<!-- SPDX-License-Identifier: Apache-2.0 -->

When to Use

Use this reference when you need to tool of restructure-decision and usd-edit-target-planner. Orchestrates USD reference rewriting for Phase 2f (monolithic -> prototypes) and Phase 5 (parent assemblies -> optimized children + stage-level cleanup). Two cognate modes under one skill since both reduce to 'write USD files + rewrite references'.

Instructions

  1. Confirm the target asset, artifact, or user intent and check the prerequisites listed below.

  2. Read only the referenced files needed for the current phase, failure mode, or output contract.

  3. Follow the workflow, rules, and safety gates in this reference before invoking downstream references or shell commands.

  4. Return the result using the Output Format section and name any blocked prerequisite or unresolved user decision.

Output Format

Return a concise status or report that names the input, selected runtime or evidence source, actions planned or performed, artifacts written, blockers, and the next validation or user-decision step. When a schema or template is referenced below, conform to that contract.

Invocation. Tool of restructure-decision (Phase 2e gate, mode=restructure) and the optimize-loop (mode=ref_remap, after Phase 4 mesh ops produce optimized sub-assets). In Codex / generic shell agents, invoke by name. In Claude Code, also available as /apply-restructure.

Python invocation. Examples below use python3 (POSIX) and py -3 (Windows PowerShell) for the cross-platform helper snippets. Body USD work uses the runtime chosen in Phase 0: when Kit is selected, run pxr/Sdf code under the Kit-bundled interpreter or omni.kit.app; when standalone is selected, the project-managed usdpy (or any compatible Pixar USD Python install).

Purpose

Orchestrate USD reference rewriting in two cognate use cases that both reduce to "write USD files + rewrite references":

  • mode=restructure (Phase 2f, after restructure-decision returns extract-as-assets or decompose-for-selective-loading): materialize the asset boundaries identified by usd-structure-assessment §2.7 and the dedupe candidates from usd-hierarchy-dedupe-candidates. Hierarchy dedupe is implemented as a USD rewrite from the candidate report: write shared prototypes, replace duplicate local subtrees with references, and then validate the new assembly root.

  • mode=ref_remap (Phase 5, after Phase 4 mesh ops): given a map of original_path -> optimized_path for each sub-asset Phase 4 produced, compute the parent-assembly impact set, copy each parent to a new path, rewrite its references to point at the optimized children, then run stage-level cleanup ops.

Both modes share the same primitives (write USD, rewrite refs) so they live in one skill body.

Prerequisites

  • A USD asset path that opens cleanly under the active runtime (Phase 0 chosen).

  • A writable output_dir distinct from the input stage's directory (no in-place overwrites by default).

  • USD Python access (pxr.Usd, pxr.Sdf, and pxr.UsdUtils) from the active runtime. Scene Optimizer is optional for later stage-level cleanup ops, but is not required for hierarchy dedupe.

  • For mode=restructure: a restructure_plan packet from restructure-decision (boundary cut points + optional dedupe candidates).

  • For mode=ref_remap: an optimized_targets map (every original_path actually appears as a reference in the input stage; every optimized_path exists and opens cleanly).

Pre-flight Checklist

Before executing restructure writes, re-read and confirm:

  • [ ] references/hierarchy-dedupe-rewrite-tool-spec.md — exact rewrite semantics, reference patching, prototype extraction rules.

  • [ ] User has explicitly approved the restructure plan from Phase 2e.

  • [ ] Backup / non-destructive output path — restructure writes new layers, never overwrites the original stage in-place.

  • [ ] setup-preflight.json runtime context — confirm USD Python environment is available for authoring.

  • [ ] After restructure: re-validate (Phase 3a sweep) to confirm no composition breaks.

Limitations

  • Cannot guarantee semantic identity for restructured stages - downstream visual or numerical comparison is the user's responsibility.

  • Display-name-only grouping is not allowed for hierarchy dedupe. Candidate identity must come from usd-hierarchy-dedupe-candidates hashes and any accepted review findings.

  • Deeply nested cyclic reference graphs are out of scope. The skill detects the cycle, flags it, and asks for a manual restructure plan rather than guessing.

  • Stage-level cleanup (mode=ref_remap Step 4) is conservative: only lossless ops by default; bounded-loss residual ops require explicit user confirmation.

Troubleshooting

  • If the input plan from restructure-decision references prim paths that do not exist on the stage, return an error that names the missing paths and ask the user to refresh the SA report.

  • If the hierarchy rewrite would collapse unrelated assemblies or drop local child overrides, stop and refresh the candidate report with stricter hash settings. See references/hierarchy-dedupe-rewrite-tool-spec.md and skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/instancing-readiness/references/instancing-tradeoffs.md "Merge safety".

  • If a parent-assembly copy fails reference rewriting (e.g. the original reference uses a relative path that resolves differently in the new location), capture the resolver context and surface to the user before continuing.

  • If minimum USD validation fails on a written output, do NOT delete it; report the failure and let the user inspect the bad file.

Inputs

InputRequired forNotes
modealwaysrestructure (Phase 2f) or ref_remap (Phase 5)
input_stagealwaysPath to the source USD stage
output_diralwaysWritable directory for new USDs
restructure_planmode=restructureJSON packet from restructure-decision. Schema: `{"boundaries": [{"prim_path": "/Root/.../X", "asset_name": "X", "promote_to_reference": true}], "goal": "extract_as_assets
optimized_targetsmode=ref_remapMap of original_asset_path -> optimized_asset_path from Phase 4 outputs.
dry_runoptional, default falseWhen true, compute the plan and write a manifest; do not write USD files.
cleanupoptional, mode=ref_remap only, default ["computeExtents", "pruneLeaves", "removePrims"]Stage-level cleanup ops to run as Step 4 (Phase 5c). Limited to lossless ops by default; pass an explicit list to override.

Outputs

OutputAlwaysNotes
new_assembly_rootyesPath to the new top-level USD that downstream phases use
manifestyesList of all files written, Phase 4 optimization targets, and provenance (which input prim or original ref each output corresponds to). Schema below.
dry_run_reportonly when dry_run=trueSame shape as manifest but no files are written.

Manifest schema:

{
  "mode": "restructure | ref_remap",
  "input_stage": "<path>",
  "output_dir": "<path>",
  "new_assembly_root": "<path>",
  "outputs": [
    {
      "path": "<written file>",
      "kind": "prototype | shared_layer | loadable_subasset | parent_assembly | new_root",
      "provenance": "<source prim path or original asset path>",
      "size_bytes": 0,
      "validate_usd_minimum": "pass | fail | skipped",
      "notes": "<optional>"
    }
  ],
  "phase4_targets": [
    {
      "path": "<written file to optimize in Phase 4>",
      "target_class": "prototype | shared_layer | loadable_subasset",
      "dependency_group": "shared_first | dependent_after | independent",
      "source": "<boundary prim path, dedupe group id, or original asset path>",
      "weight_hints": {
        "size_bytes": 0,
        "mesh_count": null,
        "vertex_count": null,
        "material_count": null,
        "texture_count": null,
        "prototype_count": null,
        "instance_count": null
      },
      "notes": "<optional>"
    }
  ],
  "rewrite_steps": [
    { "step": "hierarchy_dedupe_rewrite", "result": "ok | skipped | failed", "summary_path": "<path>" }
  ],
  "material_rewrites": [
    { "source": "<source material path>", "prototype_target": "<inlined material path>", "result": "inlined | preserved_external | blocked" }
  ],
  "warnings": []
}

Preconditions

  • input_stage opens cleanly (use validate-usd-minimum to confirm before starting).

  • output_dir exists and is writable; reject if it equals the input stage's directory.

  • For mode=restructure: restructure-decision returned extract-as-assets or decompose-for-selective-loading; restructure_plan is well-formed.

  • For mode=ref_remap: every optimized_targets entry verified - both ends exist and open.

Postconditions

  • new_assembly_root opens cleanly and resolves all references (no unresolved asset paths).

  • For mode=restructure: scenegraph instancing where the original had instanceable=true is preserved or improved.

  • For mode=ref_remap: the new assembly root has the same composition shape as the input, but its reference targets are the optimized children.

  • The manifest is emitted to <output_dir>/apply-restructure-manifest.json regardless of mode.

  • For mode=restructure: every written prototype, shared layer, or loadable sub-asset that should receive Phase 4 mesh optimization appears in phase4_targets[]. Do not make downstream agents infer Phase 4 targets by scanning output folders or assuming every target lives under prototypes/.

  • For mode=restructure: every payload, prototype, or loadable sub-asset in phase4_targets[] has Def-spec ancestors from root to mesh when opened standalone. Over-spec ancestors silently block SO default-predicate traversal (see restructure-mode.md §"Authoring Requirements"). Verify with a default-predicate mesh count > 0 before emitting the manifest entry.

  • For mode=restructure: every extracted file has defaultPrim set to the root prim of the extracted sub-hierarchy. Validate with Usd.Stage.Open(path).GetDefaultPrim().IsValid().

  • For mode=restructure: the manifest documents what mesh content remains on the assembly root after extraction. If the assembly root has > 0 mesh prims, include it in phase4_targets[] with target_class: "assembly_root" so Phase 4 does not skip it.


Workflow - mode=restructure (Phase 2f)

Use this when restructure-decision returns extract-as-assets for a monolithic stage that should become references-to-prototypes. Follow references/restructure-mode.md for internal-reference scanning, boundary materialization, hierarchy-dedupe integration, authoring gotchas, output validation, and the Datasmith/Revit example shape.

High-level steps:

  1. Scan for internal references that escape candidate boundaries.

  2. Validate input paths, boundary prim paths, and output directory.

  3. Apply approved hierarchy-dedupe groups when present.

  4. Materialize each accepted boundary, shared layer, loadable sub-asset, or dedupe group as USD output.

  5. Validate every written output with the runner's minimum-openability check.

  6. Emit <output_dir>/apply-restructure-manifest.json with phase4_targets[] for downstream adaptive batching.


Workflow - mode=ref_remap (Phase 5)

Use this after Phase 4 mesh ops produce optimized sub-asset USDs at new paths. Follow references/ref-remap-mode.md for impact-set construction, parent assembly copying, reference rewriting, stage-level cleanup, instanceability re-application, and output validation.

High-level steps:

  1. Compute the parent-assembly impact set from optimized_targets.

  2. Stop on cyclic reference graphs.

  3. Copy impacted parent layers and rewrite references to optimized children.

  4. Pick the new assembly root.

  5. Run lossless stage-level cleanup through so-run-operations.

  6. Validate written outputs and emit the manifest.


Rules

  • Never overwrite the input stage in place; always write to output_dir.

  • Always write .usdc for data-heavy outputs; .usda is acceptable only for top-level assembly roots when human readability matters.

  • After writing, validate every new USD with the usd-validation-runner minimum-openability check before declaring success. If it fails, do NOT delete the bad file - surface the failure.

  • Generate a manifest entry for every output file, even when dry_run=false, so downstream phases (Phase 6 verify, optimization-report) can audit what was written.

  • Do not include bounded-loss ops in the default cleanup chain (mode=ref_remap Step 4). Lossless only; user-overridable.

  • If a step fails, do not auto-retry. Surface the failure (path + log + summary) and let the user decide.

References

  • skills/omniverse-usd-performance-tuning/references/workflow.md - canonical 7-phase flow context.

  • skills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/instancing-readiness/references/instancing-tradeoffs.md - merge safety policy (especially the "Do not recommend mesh merge when..." block).

  • references/hierarchy-dedupe-rewrite-tool-spec.md - hierarchy dedupe rewrite behavior.

  • references/restructure-mode.md - mode=restructure execution notes and internal-reference handling.

  • references/ref-remap-mode.md - mode=ref_remap parent rewrite and stage cleanup notes.

  • skills/omniverse-usd-performance-tuning/references/so-run-operations/references/pipelines.md - local handoff for Scene Optimizer operation chaining after hierarchy rewrite.

  • references/upstreams/usd-optimize.md - upstream Scene Optimizer mechanics, invocation docs, and prebuilt package resolution.

  • usd-structure-assessment/README.md §2.7 + "Tools for asset extraction" - boundary identification + USD API patterns this reference builds on.

  • usd-structure-assessment/references/usd-edit-target-planner/README.md - per-asset optimization with reference remapping pattern (mode=ref_remap is a generalization of this).

Requirements and compatibility

Written for: OpenAI Codex

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

The author says: Orchestrator skill. Downstream phases may require Kit, Scene Optimizer, Asset Validator, USD Python, writable output paths, and omniverse:// authentication selected by setup-usd-performance-tuning.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs
  • Instructions that use the network
  • 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
OpenAI (Official)
Distributed by
OpenAI
Source
openai/plugins · plugins/nvidia/skills/omniverse-usd-performance-tuning · commit d420d13
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (written by AutoGineer)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

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

Download ZIP

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