application-flow
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Error checking patterns for both C and Python. Use when user asks about error handling, checking errors, debugging ovrtx failures, or troubleshooting.
$ npx -y skills add nvidia-omniverse/ovrtx --skill error-handling --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/error-handlingContext preview
The summary Claude sees to decide when to auto-load this skill.
Error checking patterns for both C and Python. Use when user asks about error handling, checking errors, debugging ovrtx failures, or troubleshooting.
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: LicenseRef-NvidiaProprietary # # NVIDIA CORPORATION, its affiliates and licensors retain all intellectual # property and proprietary rights in and to this material, related # documentation and any modifications thereto. Any use, reproduction, # disclosure or distribution of this material and related documentation # without an express license agreement from NVIDIA CORPORATION or # its affiliates is strictly prohibited. name: error-handling description: > Error checking patterns for both C and Python. Use when user asks about error handling, checking errors, debugging ovrtx failures, or troubleshooting. license: LicenseRef-NvidiaProprietary author: NVIDIA ovrtx tags: - ovrtx - errors - debugging tools: - Read - Grep
Use this skill when the user asks about error handling, checking errors, debugging ovrtx failures, or troubleshooting.
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
1. Identify whether the failure path is Python synchronous, Python async, C enqueue, C wait, C fetch, or C map/unmap. 2. In Python, catch `RuntimeError` around the API call or around `wait()` for async operations, depending on where the operation surfaces errors. 3. In C, check every returned `ovrtx_result_t.status` or enqueue status before using output values. 4. After C wait calls, inspect operation errors before fetching results, and call `ovrtx_get_last_error()` immediately when a status indicates failure. 5. When changing code, run the narrow example or docs test that exercises the failing operation whenever practical.
This skill has no scripts.
In Python, ovrtx raises `RuntimeError` with descriptive messages on failure. In C, every API call returns a status code that must be checked, and error details are retrieved with `ovrtx_get_last_error()`.
All Python API methods raise `RuntimeError` on failure. The minimal step example shows the synchronous call shape to wrap in user code:
> **Source:** `tests/docs/python/test_error_handling.py` snippet `doc-python-sync-runtime-error` > > The test demonstrates the synchronous Python error surface pattern.
Errors from async operations surface when you call `wait()`:
> **Source:** `tests/docs/python/test_error_handling.py` snippet `doc-python-async-operation-error`
> **Source:** `examples/python/minimal/main.py` snippet `step` > > Wrap in `try/except RuntimeError` to handle step failures.
> **Source:** `examples/c/minimal/main.cpp` snippet `create-renderer` > > **Source (continued):** `examples/c/minimal/main.cpp` snippet `load-usd-and-wait` > > Every API call returns a status code. Check with the `check-error-helper` snippet pattern.
From the minimal C example -- a template helper that checks the status, prints to `std::cerr`, and returns whether an error occurred. Works with both `ovrtx_result_t` and `ovrtx_enqueue_result_t`:
> **Source:** `examples/c/minimal/main.cpp` snippet `check-error-helper`
Asynchronous errors (e.g., file not found during USD load) are reported through `ovrtx_wait_op`:
> **Source:** `examples/c/minimal/main.cpp` snippet `load-usd-and-wait` > > Check `wait_result.num_error_ops` and iterate `wait_result.error_op_ids` after `ovrtx_wait_op`.
Set a process-global callback to receive log messages, with severity filtering and per-channel rules:
> **Source:** `tests/docs/c/test_logging.cpp` snippet `doc-log-callback-prefix-filter-c`
Log severity levels follow carb's numeric ordering: `OVX_LOG_VERBOSE` (-2), `OVX_LOG_INFO` (-1), `OVX_LOG_WARNING` (0), `OVX_LOG_ERROR` (1), `OVX_LOG_FATAL` (2). The callback is process-global: its lifetime is `ovrtx_initialize` to `ovrtx_shutdown`, so it observes messages emitted before the first renderer is created and after the last one is destroyed (e.g. plugin-load and asset-eviction messages). The callback may be invoked from any thread. Message strings are only valid during the callback. Note that if multiple OV libraries are used in an app, multiple logging callbacks may be registered, one from each OV library. In this case, it is the host app's responsibility to ensure that the callback's access to the host app's logging system is thread-safe.
`channel_filter` is a comma-separated list of `<channel_prefix>=<level>` entries (RUST_LOG-style). The channel prefix is matched against carb's dotted source name; longest matching prefi
ovrtx is a C and Python library for embedding Omniverse RTX sensor simulation and visualization directly into applications.
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Asynchronous operation patterns including polling, timeouts, and non-blocking workflows. Use when user asks about async…
Replacing persistent ovrtx attribute bindings with reusable ovstage queries for repeated writes or maps. Use when user asks about…
Binding materials to prims at runtime. Use when user asks to assign a material, change a material, set material binding, or swap…
Available camera render outputs for Real-Time Path-Tracing (RT2) mode. Use when user asks what AOVs/render vars are available,…
Cloning USD subtrees to create copies at new paths. Use when user asks to clone, duplicate, copy a prim, or create instances of…