IsaacTeleop / sharpa_avatar
AGENTS.md438 starsChanged 31 days agoApache-2.0View on GitHub
CRITICAL: Before editing this tree, read this file and the repo root AGENTS.md. - Keep the Avatar SDK external. install_avatar_sdk.sh installs the official package under /opt/avatar-sdk; the build consumes the selected SDK root in place (-DAVATAR_SDK_ROOT > $AVATAR_SDK_ROOT > /opt/avatar-sdk). Do not copy, patch, or package SDK files. - Install the pinned production avatar-sdk package from the signed production channel, and never substitute -dev or -beta. Do not parse or duplicate production_version: CMake calls install_avatar_sdk.sh --check, which holds the default…
1 other project uses a version of this.
Adopted by
Most recently taken up by
- NVIDIA/IsaacCaptureword for word, first seen Oct 14, 2026
Other versions1 project uses a version of this.
Word for word · 1
- NVIDIA/IsaacCapture★ 438100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- deps/cloudxr/webxr_client/AGENTS.mdAGENTS.md
- docs/AGENTS.mdAGENTS.md
- examples/camera_streamer/AGENTS.mdAGENTS.md
- examples/egocap/AGENTS.mdAGENTS.md
- examples/teleop_ros2/AGENTS.mdAGENTS.md
- src/core/AGENTS.mdAGENTS.md
- src/core/codegen/AGENTS.mdAGENTS.md
- src/core/deviceio_base/AGENTS.mdAGENTS.md
- src/core/deviceio_session/AGENTS.mdAGENTS.md
- src/core/deviceio_trackers/AGENTS.mdAGENTS.md
- src/core/live_trackers/AGENTS.mdAGENTS.md
- src/core/log_bridge/AGENTS.mdAGENTS.md
- src/core/replay_trackers/AGENTS.mdAGENTS.md
- src/core/schema/AGENTS.mdAGENTS.md
- src/plugins/sensing/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/common/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/full_body/checker/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/full_body/oracle/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/hand/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/hand/checker/AGENTS.mdAGENTS.md
- src/python/isaaccapture/logging_config/AGENTS.mdAGENTS.md
- src/viz/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- .cursor/rules/cmake-structure.mdcCursor rule
- cmake-structureSkill
- rebot-orin-setupSkill
- rebot-orin-setupSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
13 rules. About 0 are common, 2 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
CRITICAL: Before editing this tree, read this file and the repo root AGENTS.md.
- Very specific: line 25
After rebasing, verify the root option is still gated through src/plugins/CMakeLists.txt.
- Very specific: line 30
Keep installer responsibilities separate: SDK/APT in install_avatar_sdk.sh, host device permissions in install_udev_rules.sh, and plugin …
- Very specific: line 35
Do not mutate loader environment variables or SDK configuration at runtime.
- Very specific: line 41
Keep shared enum iteration tables in one scope.
- Very specific: line 43
Use plugin_utils::WristPoseSource for world-space wrist placement.
- Very specific: line 45
When that query is invalid (no headset optical pose and no controller), still inject HUMAN at identity with VALID-only flags.
- Very specific: line 50
Keep initialization non-blocking.
- Very specific: line 67
Treat a successful list_device_info() result as the handle-lifecycle authority: retain handles while their row exists (including …
- Very specific: line 71
Keep transport presence, physical-glove ingress/faults, and HUMAN/RAW/ROBOT output freshness/errors as separate health layers.
- Very specific: line 76
Keep the static HUMAN-to-OpenXR index table synchronized with the pinned production SDK's landmark order.
- Distinctive: line 81
When reconciling the maintained feature branch, use it as the baseline and retain local divergence only for an explicit API or correctness …
- Very specific: line 83
Keep this plugin tree C++-only (core/ + app/).
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
SPDX-FileCopyrightText: Copyright (c) 2025-2026 Avatar SDK contributors. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->Sharpa Avatar plugin — agent notes
CRITICAL: Before editing this tree, read this file and the repo root
AGENTS.md.
- Keep the Avatar SDK external.
install_avatar_sdk.shinstalls the official package under/opt/avatar-sdk; the build consumes the selected SDK root in place (-DAVATAR_SDK_ROOT>$AVATAR_SDK_ROOT>/opt/avatar-sdk). Do not copy, patch, or package SDK files. - Install the pinned production
avatar-sdkpackage from the signed production channel, and never substitute-devor-beta. Do not parse or duplicateproduction_version: CMake callsinstall_avatar_sdk.sh --check, which holds the default root to the full pin (layout,BUILD_TYPE=Production, dpkg package version) and layout-checks a custom root, where a non-production build only warns. Do not pinVERSION=fromshare/Version; the dpkg package version is authoritative. - Linux only.
BUILD_PLUGIN_SHARPA_AVATAR=ONwith no usable SDK under the selected root skips this plugin; it must notFATAL_ERRORthe rest of the tree. The SDK check runs only after that layout is present. - After rebasing, verify the root option is still gated through
src/plugins/CMakeLists.txt; defining the option alone does not create theavatar_hand_plugintarget. - APT signing keys: require the pinned fingerprints to be present. Do not demand exact set equality (extra fingerprints from key rotation are allowed).
- Keep installer responsibilities separate: SDK/APT in
install_avatar_sdk.sh, host device permissions ininstall_udev_rules.sh, and plugin build/install through the repository's top-level CMake workflow. - Installers must not delete files derived from a configured install prefix.
- Do not mutate loader environment variables or SDK configuration at runtime.
Runtime paths come from the selected SDK root and its
sdk_config.json. - Carry Avatar SDK enums such as
DeviceSideandDeviceDataCategorythrough plugin internals; convert only at an existing external API boundary. - Adapt this plugin to shared APIs; do not refactor other plugins or shared modules solely to change this plugin's internal representation.
- Keep shared enum iteration tables in one scope; a public
kDeviceSidesor category table must not have a same-named private duplicate. - Use
plugin_utils::WristPoseSourcefor world-space wrist placement. Do not copy the Manus/XDev/controller fallback implementation into this plugin. When that query is invalid (no headset optical pose and no controller), still inject HUMAN at identity with VALID-only flags; do not skipHandInjector::push. HandsSource/live_viewotherwise stay empty. - OpenXR setup is required for publication; initialization errors must abort construction instead of leaving an Avatar-only idle plugin.
- Keep initialization non-blocking;
update()owns retries for absent gloves. - In manual haptic freshness tests that suspend the Python producer, record its process group, resume it before cleanup, and terminate the producer/plugin group together; do not rely on repeated terminal interrupts for cleanup.
- In pinned SDK 1.7.3,
get_device()returns an initialized handle; do not callinit()again. Use its lightweight ingress callback for liveness and keep SDK work off the callback thread. Scope callback signals to one device generation; callbacks must not retain aGloveStateaddress across reset or destruction. - USB transport health combines physical enumeration with
AvatarSDK::get_usb_connection_state(): the production SDK can retainCONNECTEDwhile its serial listener is reconnecting, so neither signal is sufficient alone. Before stopping a glove handle, best-effort clear manual haptics. Isolate dynamic output setup failures to that side and retry without terminating the plugin. - Bound pending haptic commands by source observation freshness and discard them while a glove is unready. Delivery retries may retain only commands the source keeps refreshing; a cached command must never replay after reconnection.
- Treat a successful
list_device_info()result as the handle-lifecycle authority: retain handles while their row exists (includingonline=false), and release them only when a successful snapshot drops the row. A failed refresh makes inventory health unknown and must not reconcile cached rows. - Keep transport presence, physical-glove ingress/faults, and HUMAN/RAW/ROBOT output freshness/errors as separate health layers. One advancing dataset must not keep another dataset healthy.
- Validate every emitted health state/reason pair through the Python status reducer; producer-only tests do not protect the cross-language monitoring contract.
- Keep the static HUMAN-to-OpenXR index table synchronized with the pinned
production SDK's landmark order. Do not read joint names from
sdk_config.jsonat runtime or fill unsupported OpenXR slots with neighbouring poses. Refresh that table and the example's RAW/ROBOT name snapshots together with the package pin. - When reconciling the maintained feature branch, use it as the baseline and retain local divergence only for an explicit API or correctness requirement.
- Keep this plugin tree C++-only (
core/+app/). The TeleopSession sample lives atexamples/sharpa_avatar/(live_view.py) and runs aspython -m isaaccapture_examples.sharpa_avatar. Do not put Python samples undersrc/plugins/sharpa_avatar/, and do not add SDK-only diagnostic printers that bypass Isaac Capture.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

