Omniverse Usd Performance Tuning
OpenAIOfficialCreated by NVIDIA OmniverseDistributed by OpenAI
- Skill
- Workflow
- Software development
- Apache-2.0
- Medium risk
- Has scripts
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
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/openai/omniverse-usd-performance-tuning/downloadUnzip 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
Start from the mandatory runtime context gate before producing tuning output, unless the prompt is only asking for a static classification test.
Classify broad optimization requests as
ready_to_plan; reserveapproval_requiredfor prompts that explicitly name a destructive operation to execute before planning.Plan the full canonical chain through
optimization-report, preserving the structured milestone order and theprofile-stage:baseline/profile-stage:afterlabels when listing milestones.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-tuningonly when no runtime path is verified and runtime choice/setup is the first unresolved problem.For
omniverse://assets, enter atomniverse-authenticationfirst. 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_requiredat 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_planat 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 exampleso-run-operationswithmergeMaterials), 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-decisionprompt is a planned user-decision gate, not a reason to set the top-level responsedecisiontoapproval_requiredfor a generic optimization request.For a generic optimization request, set
decision: "ready_to_plan"and include the full intended chain in bothcommitted_milestonesandplanned_phases, throughoptimization-report.It is valid for
gates_observedto includeasks_user_for_restructure_decisionwhile the top-leveldecisionremainsready_to_plan.Whenever a chain names profile phases, use the exact labels
profile-stage:baselineandprofile-stage:after; do not emit the ambiguous bareprofile-stagetoken.Start structured milestone lists with
omniverse-usd-performance-tuningas the owning entry skill. Includesetup-usd-performance-tuningonly 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-validatorsorso-interpret-validatorsbeforerestructure-decisionin broad optimization milestone summaries. Phase-aware validator routing still happens throughusd-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-tuningwhen 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
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-tuningowns probe/chooser/install dispatch and writes the preflight consumed here.Identify the target problem:
Load time.
FPS or interactivity.
GPU or system memory.
Crash or device lost.
CAD conversion quality.
Validation failure.
Gather minimum context:
Stage path and size.
Whether the stage is local, mounted, or
omniverse://remote. For remote assets, route throughomniverse-authenticationbefore 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.
Route:
USD composition questions:
usd-structure-assessment(composition is now part of the SA umbrella; deeper detail inskills/omniverse-usd-performance-tuning/references/usd-structure-assessment/references/composition-audit.md).Validation and content issues:
usd-validation-runner(master router; routes tovalidate-*family orso-run-validatorsbased 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.jsonclassifies every op ascanonical,specialty,analysis,documentary, ordeprecated. 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
meshCleanupwith explicit flags over the standalonemergeVerticesop. The standalone op is a legacy/specialty surface; use upstreamusd-optimizefor 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) overfindCoincidingGeometry(analysis — produces a report, not a change).Do not recommend
documentary-status ops (e.g.,boxClip,deletePrims,removeAttributes,removeUntypedPrims,mergeoutside its narrow non-instanced case) without an explicit user request. Documentary ops survive in the per-opreferences/operations/<key>.mdrouting stubs for completeness but are excluded from agent-initiated recommendations.Specialty ≠ documentary. Ops classified as
specialtyin_curation.jsoneither (a) have validator-finding evidence that wires them into theso-interpret-validatorschain (e.g.sparseMeshes,optimizePrimvars), or (b) are load-bearing escape hatches needed for specific downstream contexts (e.g.primitivesToMesheswhen output must beUsdGeomMesh,utilityFunctionfor instancing toggles and material rebinding,pythonScriptforso-create-proxyrecipes). Recommend specialty ops when their validator fires OR when their downstream context applies — the suppression above only targetsdocumentaryops.
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-tuningbefore 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
- ATTRIBUTION.mdAdded by AutoGineer1.0 KiB
- BENCHMARK.md22.5 KiB
- LICENSEAdded by AutoGineer10.0 KiB
- SKILL.md17.2 KiB
- agents/openai.yaml402 B
- evals/evals.json4.8 KiB
- references/cad-conversion/README.md2.5 KiB
- references/cad-conversion/scripts/conversion-report.schema.json1.3 KiB
- references/compare-profiles.md2.4 KiB
- references/compare-profiles/README.md9.7 KiB
- references/omniverse-authentication/README.md3.8 KiB
- references/operations/CLASSIFICATION.md4.5 KiB
- references/operations/EXECUTION.md4.5 KiB
- references/operations/README.md8.0 KiB
- references/operations/_curation.json14.5 KiB
- references/operations/_template.md1.5 KiB
- references/operations/boxClip.md1.0 KiB
- references/operations/computeExtents.md1.1 KiB
- references/operations/countVertices.md1.1 KiB
- references/operations/decimateMeshes.md2.6 KiB
- references/operations/deduplicateGeometry.md1.1 KiB
- references/operations/deduplicateHierarchies.md1.5 KiB
- references/operations/deleteHiddenPrims.md1.1 KiB
- references/operations/deletePrims.md1.0 KiB
- references/operations/diceMeshes.md1.1 KiB
- references/operations/editStageMetrics.md1.1 KiB
- references/operations/findCoincidingGeometry.md1.1 KiB
- references/operations/findFlatHierarchies.md1.1 KiB
- references/operations/findOccludedMeshes.md4.8 KiB
- references/operations/findOverlappingMeshes.md1.1 KiB
- references/operations/fitPrimitives.md1.1 KiB
- references/operations/flattenHierarchy.md1.1 KiB
- references/operations/generateAtlasUVs.md1.1 KiB
- references/operations/generateNormals.md1.1 KiB
- references/operations/generateProjectionUVs.md1.1 KiB
- references/operations/generateScene.md1.1 KiB
- references/operations/manifest.json38.6 KiB
- references/operations/manifoldMeshes.md1.1 KiB
- references/operations/merge.md1.1 KiB
- references/operations/mergeVertices.md1.1 KiB
- references/operations/meshCleanup.md1.1 KiB
- references/operations/optimizeMaterials.md1.1 KiB
- references/operations/optimizePrimvars.md1.1 KiB
- references/operations/optimizeSkelRoots.md1.1 KiB
- references/operations/optimizeTimeSamples.md1.1 KiB
- references/operations/organizePrototypes.md1.1 KiB
- references/operations/pivot.md1.0 KiB
- references/operations/primitivesToMeshes.md1.1 KiB
- references/operations/printStats.md1.0 KiB
- references/operations/probe-snapshots/so-110.0.4.json1.8 KiB
- references/operations/pruneLeaves.md1.1 KiB
- references/operations/pythonScript.md1.0 KiB
- references/operations/remeshMeshes.md1.1 KiB
- references/operations/removeAttributes.md1.1 KiB
- references/operations/removePrims.md1.1 KiB
- references/operations/removeSmallGeometry.md1.1 KiB
- references/operations/removeUntypedPrims.md1.1 KiB
- references/operations/removeUnusedUVs.md1.1 KiB
- references/operations/rtxMeshCount.md1.1 KiB
- references/operations/scripts/operation-curation.schema.json1.2 KiB
- references/operations/scripts/operation-manifest.schema.json1.8 KiB
- references/operations/shrinkwrap.md1.0 KiB
- references/operations/sparseMeshes.md1.1 KiB
- references/operations/splitMeshes.md1.0 KiB
- references/operations/subdivideMeshes.md1.1 KiB
- references/operations/triangulateMeshes.md1.1 KiB
- references/operations/utilityFunction.md1.1 KiB
- references/optimization-report/README.md14.6 KiB
- references/optimization-report/references/optimization-report-template.md10.4 KiB
- references/optimization-report/scripts/optimization-report.schema.json9.7 KiB
- references/output-workspace.md3.1 KiB
- references/profile-stage/README.md13.7 KiB
- references/report-templates/README.md1.4 KiB
- references/report-templates/optimization-report.design-fixture.json6.4 KiB
- references/report-templates/optimization-report.html.template8.6 KiB
- references/report-templates/optimization-report.md.template1.7 KiB
- references/report-templates/render_preview.pyScript8.2 KiB
- references/runtime-artifact-token-budget.md3.8 KiB
- references/setup-usd-performance-tuning/README.md12.2 KiB
- references/setup-usd-performance-tuning/references/install-asset-validator-standalone/README.md3.8 KiB
- references/setup-usd-performance-tuning/references/install-kit/README.md2.6 KiB
- references/setup-usd-performance-tuning/references/install-so-standalone/README.md11.0 KiB
- references/setup-usd-performance-tuning/references/install-so-via-kit/README.md3.7 KiB
- references/setup-usd-performance-tuning/references/kit-discovery.md2.9 KiB
- references/setup-usd-performance-tuning/references/runtime-context-header.md13.2 KiB
- references/setup-usd-performance-tuning/references/runtime-probe.md4.5 KiB
- references/setup-usd-performance-tuning/references/standalone-runtime.md2.7 KiB
- references/setup-usd-performance-tuning/scripts/probe-snapshot.schema.json1.7 KiB
- references/setup-usd-performance-tuning/scripts/setup-preflight.schema.json2.8 KiB
- references/skill-map.md6.3 KiB
- references/so-run-operations/README.md3.5 KiB
- references/so-run-operations/references/batch-mode.md4.5 KiB
- references/so-run-operations/references/config-from-evidence.md4.4 KiB
- references/so-run-operations/references/invocation.md4.5 KiB
- references/so-run-operations/references/operation-safety.md8.7 KiB
- references/so-run-operations/references/pipelines.md2.4 KiB
- references/so-run-operations/references/so-create-proxy/README.md1.7 KiB
- references/so-run-operations/references/so-create-proxy/references/bounding-box-proxy-modes.md1.5 KiB
- references/so-run-operations/references/so-create-proxy/references/decimate-step-recipes.md1.5 KiB
- references/so-run-operations/references/so-create-proxy/references/decimation-tuning.md1.5 KiB
- references/so-run-operations/references/so-create-proxy/references/proxy-config-recipes.md1.6 KiB
- references/so-run-operations/references/units-and-tolerances.md3.8 KiB
- references/upstreams/usd-optimize.md3.1 KiB
- references/usd-structure-assessment/README.md24.8 KiB
- references/usd-structure-assessment/references/apply-restructure/README.md14.2 KiB
- references/usd-structure-assessment/references/apply-restructure/references/hierarchy-dedupe-rewrite-tool-spec.md8.5 KiB
- references/usd-structure-assessment/references/apply-restructure/references/ref-remap-mode.md2.4 KiB
- references/usd-structure-assessment/references/apply-restructure/references/restructure-mode.md8.2 KiB
- references/usd-structure-assessment/references/asset-structure-principles.md60.1 KiB
- references/usd-structure-assessment/references/composition-audit.md4.8 KiB
- references/usd-structure-assessment/references/factory-level-structuring.md24.0 KiB
- references/usd-structure-assessment/references/instancing-readiness/README.md8.5 KiB
- references/usd-structure-assessment/references/instancing-readiness/references/instancing-guide.md45.0 KiB
- references/usd-structure-assessment/references/instancing-readiness/references/instancing-tradeoffs.md5.6 KiB
- references/usd-structure-assessment/references/layer-health.md3.1 KiB
- references/usd-structure-assessment/references/optimization-tradeoffs.md8.6 KiB
- references/usd-structure-assessment/references/restructure-decision/README.md16.5 KiB
- references/usd-structure-assessment/references/usd-edit-target-planner/README.md6.3 KiB
- references/usd-structure-assessment/references/usd-edit-target-planner/references/output-saving.md2.1 KiB
- references/usd-structure-assessment/references/usd-edit-target-planner/references/variants-payloads.md4.2 KiB
- references/usd-structure-assessment/references/usd-hierarchy-dedupe-candidates/README.md5.7 KiB
- references/usd-structure-assessment/references/usd-hierarchy-dedupe-candidates/references/instance-candidate-finder-spec.md34.2 KiB
- references/usd-structure-assessment/scripts/audit-report.schema.json1.9 KiB
- references/usd-structure-assessment/scripts/optimization-plan.schema.json1.5 KiB
- references/usd-structure-assessment/scripts/usd-structure-assessment-report.schema.json9.5 KiB
- references/usd-validation-runner/README.md13.0 KiB
- references/usd-validation-runner/references/so-interpret-validators/README.md3.6 KiB
- references/usd-validation-runner/references/so-interpret-validators/references/follow-up-queries.md4.6 KiB
- references/usd-validation-runner/references/so-interpret-validators/references/rule-reference.md8.2 KiB
- references/usd-validation-runner/references/so-run-validators/README.md2.9 KiB
- references/usd-validation-runner/references/so-run-validators/references/infrastructure.md1.6 KiB
- references/usd-validation-runner/references/validate-usd-asset-validator.md13.7 KiB
- references/usd-validation-runner/references/validation-scoping.md23.8 KiB
- references/usd-validation-runner/scripts/asset-validator-validation-report.schema.json2.7 KiB
- references/usd-validation-runner/scripts/validation-report.schema.json1009 B
- references/workflow.md24.5 KiB
- skill-card.md2.5 KiB
- skill.oms.sig39.9 KiB
references/setup-usd-performance-tuning/README.md
Setup 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 reference when runtime availability is unknown or the user explicitly asks to set up, verify, switch, or install the Kit, Scene Optimizer, or Asset Validator path.
Instructions
Check for an existing
setup-preflight.jsonand verify whether it matches the current target and runtime intent.Probe available Kit, Scene Optimizer, Asset Validator, and standalone USD Python paths without silently choosing between viable alternatives.
Ask the user before installing or switching runtimes when no verified path satisfies the request.
Write or refresh the preflight artifact with runtime versions, paths, and available Scene Optimizer operations.
Pre-flight Checklist
Before executing setup/preflight, re-read and confirm:
[ ]
references/runtime-context-header.md— runtime context block format.[ ]
references/runtime-probe.md— probe sequence and failure handling.[ ] Output workspace policy from parent
references/output-workspace.md.[ ] Write
setup-preflight.jsonconforming toscripts/setup-preflight.schema.json.
Output Format
Return the selected runtime route, any user decision needed, and the path to setup-preflight.json. The preflight artifact records Kit, Scene Optimizer, Asset Validator, USD Python, and operationsAvailable evidence.
Use this reference before running validation, profiling, or optimization from this skill package in a fresh environment. The goal is to choose and verify one runtime path before invoking the workflow skills.
When this is the entry skill
This reference is the named entry skill in an agent's response only when no runtime path is verified at all — that is, when the setup probe reports every candidate (Kit, standalone Scene Optimizer, standalone Asset Validator) as unavailable, missing, or unverified. In that case there is no way to route performance work, so resolving the runtime is the agent's first responsibility.
As soon as any runtime path is verified — even partial availability such
as kit_runtime: available, asset_validator: available, scene_optimizer: unavailable — the named entry skill is omniverse-usd-performance-tuning, not this one.
Triage then routes to the correct outcome, including blocking on a specific
missing component when needed. This reference still runs in its normal Phase 0
position; it just isn't the entry skill the agent names.
For omniverse:// assets, omniverse-authentication is the named entry skill
ahead of both setup and triage. Authentication preflight precedes runtime
probing for remote assets.
This rule is about which skill the agent names as the entry, not about execution order. Setup, authentication, and triage continue to run in their normal phase order regardless.
Purpose
Identify and verify a single Kit or standalone runtime path for profiling, validation, and Scene Optimizer execution before downstream references run.
Prerequisites
Current shell access to probe local installs.
Any user-provided Kit, USD Composer, Isaac Sim, or standalone library path.
Permission to run lightweight Python import probes from candidate runtimes.
Examples
"Set up this repo before I run validation."
"Check whether my Kit path can run Scene Optimizer and Asset Validator."
Runtime choices
Prefer standalone SO + AV when available. The standalone path is lighter
(no Kit overhead), deterministic, and sufficient for all optimization and
validation workflows. The SO package includes
omni.scene.optimizer.validators with @register_rule decorators that
auto-register 25 SO performance validators into OAV when both packages share
the same Python 3.12 environment. No manual register_all() call is needed
for rule discovery — just ensure both are importable. Category-scoped runs may
still use ValidationEngine(init_rules=False) plus enable_rule() for the
selected registered rule classes.
Standalone achieves the same validator coverage as Kit: install
omniverse-asset-validatorvia pip into the same venv where the SO package is on PYTHONPATH, and the@register_ruledecorators register SO validators at import time.
Fall back to Kit (USD Composer, Isaac Sim, or Kit SDK) when standalone packages
are not available or the user explicitly requests it. Kit runs OAV and SO in
one runtime and additionally supports render-time profiling. When taking the
Kit path, validation must use omni.asset_validator.core from that same Kit
runtime. Do not require uv or omni_asset_validate on PATH for the Kit
path.
Requirement-to-skill map
Existing Kit or USD Composer runtime: verify in this reference; do not install.
Missing Kit runtime: invoke
install-kit.Scene Optimizer inside Kit: invoke
install-so-via-kitwhen missing.Standalone Scene Optimizer operations: invoke
install-so-standalonewhen the extractedscene_optimizer_core_...release.zippackage is missing.Standalone Omni Asset Validator: invoke
install-asset-validator-standalonewhen missing. SO validators auto-register when both packages share the same Python environment.
Output workspace contract
Everything this reference writes goes under the user's output_path (see
references/runtime-context-header.md Where artifacts live):
<output_path>/setup-preflight.json— canonical name + location for the runtime config consumed by every downstream skill. Do not write it under any other filename or location (noprobe_result.json, no_work/, no temp dirs). Downstream skills check this exact path; a different name leaves the session-start gate broken.<output_path>/scripts/probe_setup.py— the generated Python probe driven through Step 3.<output_path>/scripts/probe_setup.logand<output_path>/scripts/probe_setup.stderr.log— probe stdout / stderr.
Follow skills/omniverse-usd-performance-tuning/references/runtime-artifact-token-budget.md
for all probe logs. Parse the JSON object from stdout, keep the full stdout /
stderr files on disk, and surface only bounded tails or targeted error matches
when troubleshooting Kit launch noise.
If output_path is not yet known when this reference is invoked, prompt the
user for it before proceeding. Do not pick a default and do not write
to the working directory.
Step 1 - Determine standalone runtime
The agent performs setup checks directly from the current shell. Do not rely on repo-local setup scripts or ask the user to run scripts.
Check for standalone Scene Optimizer and Asset Validator packages first —
they are the preferred runtime (lighter, no Kit overhead, deterministic).
Follow references/standalone-runtime.md for discovery and verification.
If standalone packages are found and importable, set
runtime_path: "standalone" in <output_path>/setup-preflight.json and
continue to Step 1.6.
If standalone packages are not found, fall through to Step 1.5 (Kit discovery).
Step 1.5 - Determine Kit candidates (fallback)
If standalone is unavailable, look for Kit installations. Follow
references/kit-discovery.md for discovery order, path classification,
auto-enumeration, and candidate records.
Always ask before broad filesystem scanning. If one Kit candidate exists, set
kit.chosen to it and continue. If multiple candidates exist, ask the user to
choose; never silently pick one in an interactive session. The newest candidate
is pre-selected.
Record the chosen candidate and kit.chosen_by as described in
references/kit-discovery.md.
Step 1.6 - Probe the chosen Kit for SO and AV versions
Once kit.chosen is set (or standalone is chosen), run the Python probe from
the chosen launcher and write the probe result to
<output_path>/setup-preflight.json. Follow references/runtime-probe.md for
the launcher, import-mode, version-source, and operationsAvailable contract.
The runtime_context object is the literal input to the header template in
references/runtime-context-header.md. Downstream skills read from this object,
not from the source kit / sceneOptimizer / assetValidator fields.
Downstream skills (so-run-operations, omniverse-usd-performance-tuning, every
so-interpret-validators recommendation) cross-check operationsAvailable
against the op key they intend to invoke and refuse to call any op the
runtime does not register.
Step 2 - Interpret status
ready-standalone: use standalone Scene Optimizer for operations and Omni Asset Validator from Python.ready-kit: use Kit for Scene Optimizer andomni.asset_validator.corevalidation from the same Kit runtime.needs-runtime-choice: stop and ask the user for a decision.
When status is needs-runtime-choice, ask exactly for one of these paths:
Provide the path to standalone SO / AV packages or a pip-installable environment.
Provide the path to an existing Kit or USD Composer install.
Do not continue to so-run-validators, so-run-operations, or deep validation
until this choice is resolved.
Step 3 - Verify standalone path
If standalone is chosen (Step 1 succeeded), verify each standalone requirement
with its dedicated install reference. Follow references/standalone-runtime.md for
the user-facing prompt, Python 3.12 requirement, expected standalone layout,
and handoff rules.
Step 4 - Verify Kit path (fallback)
For a Kit root (Step 1.5), verify Scene Optimizer and Omni Asset Validator core
both load, and capture the runtime versions that Step 1.6 surfaces to the user.
Use references/runtime-probe.md for the exact launcher, import, version, and
log discipline.
Do not pre-check extension folders, exts/, extscache/, or any other
filesystem layout before running the probe. If the probe fails, ask for a
different Kit path.
Step 5 - Continue workflow
After setup:
omniverse-usd-performance-tuningfor broad performance requests.usd-structure-assessmentbefore choosing optimizations.usd-validation-runnerfor validation; its references own the specificvalidate-*command details.so-run-validators,so-interpret-validators, andso-run-operationsonly after runtime setup is ready.
Record the chosen runtime path in the response so later commands use the same Kit or standalone environment.
Step 6 - Print the runtime context header before continuing
Every downstream user-facing prompt must lead with the runtime context block
defined in references/runtime-context-header.md. This reference writes the
canonical runtime_context object into
<output_path>/setup-preflight.json (see Output workspace contract);
downstream references consume it from that exact path.
The header has two formats:
Format A (full block) — required at this reference's runtime-choice prompt, at the
restructure-decisionPhase 2e prompt, at theso-run-operationsdestructive-op confirmation, and at the first user-facing message of any session that starts mid-workflow.Format B (compact one-liner) — used for routine status messages and follow-up prompts once the user has already seen Format A in the session.
When kit.chosen is set (single candidate or user has picked), print Format A
once as the conclusion of this reference's interaction with the user, before the
agent hands off to omniverse-usd-performance-tuning. The user must see exactly which Kit
application, Scene Optimizer, and Asset Validator version will be in effect
for the rest of the session.
Limitations
Does not install unless a dedicated install reference is invoked.
Does not choose optimization operations or validator scope.
Standalone SO validators auto-register via
@register_ruledecorators when bothomniverse-asset-validatorand the SO package are importable in the same Python 3.12 environment. Kit auto-registers them via its extension session.
Troubleshooting
If standalone packages are found but the probe fails (import error, version mismatch), fall through to Kit discovery.
If multiple valid Kit installs are found, ask the user to choose or record the newest unattended choice.
If the Kit probe cannot import Scene Optimizer or Asset Validator, try another Kit path.
If standalone paths are incomplete, invoke the relevant install reference instead of reusing a bundled validator environment.
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