skills/ar-vr/hand-tracking/SKILL.md
Enables real-time detection and tracking of hand gestures using computer vision in AR/VR environments.
npx skillsauth add alphaonedev/openclaw-graph hand-trackingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill enables real-time detection and tracking of hand gestures in AR/VR environments using computer vision algorithms, allowing for seamless integration into applications like virtual interactions or gesture-based controls.
Use this skill when building AR/VR apps that require hand gesture input, such as gesture-controlled interfaces in gaming, remote collaboration tools, or accessibility features in virtual reality headsets. Apply it in scenarios with live camera feeds where low-latency tracking is essential, like real-time object manipulation.
Always initialize the skill with an input source and authentication. Start by setting the environment variable for API access, e.g., export OPENCLAW_API_KEY=your_api_key. For CLI usage, pipe input from a camera device. In code, import the skill as a module and call tracking functions in a loop. Handle asynchronous operations to avoid blocking the main thread. For AR/VR integration, combine with rendering loops to update virtual objects based on hand positions.
Use the CLI tool for quick prototyping or the REST API for programmatic access. Authentication requires the $OPENCLAW_API_KEY environment variable.
CLI Commands:
claw hand-track --input /dev/video0 --model mediapipe --confidence 0.7
--input specifies the camera device (e.g., /dev/video0), --model selects the tracking model (e.g., mediapipe or custom), --confidence sets the detection threshold.claw hand-track --input file.mp4 --output results.json --gestures pinch,wave
API Endpoints:
/api/hand-track: Send a JSON payload with { "input": "camera", "model": "mediapipe", "confidence": 0.7 } to start tracking.
{ "hand_landmarks": [ [x1,y1,z1], ... ], "gestures": ["pinch"] }./api/hand-track/status: Check current session status, requires header Authorization: Bearer $OPENCLAW_API_KEY.Code Snippets:
import openclaw
client = openclaw.Client(api_key=os.environ['OPENCLAW_API_KEY'])
results = client.hand_track(input_source='camera', model='mediapipe')
print(results['gestures'])
const openclaw = require('openclaw');
const client = new openclaw.Client(process.env.OPENCLAW_API_KEY);
client.handTrack({ input: 'camera', confidence: 0.7 }).then(data => console.log(data.hand_landmarks));
Config Formats:
{ "model": "mediapipe", "gestures": ["pinch", "wave"], "confidence": 0.7 }.claw hand-track --config path/to/config.json.Integrate by wrapping the skill in your AR/VR framework's event loop. For Unity, use the OpenClaw Unity plugin to subscribe to hand events. In web apps, pair with WebRTC for camera streams. Always validate input sources for compatibility (e.g., ensure camera resolution is at least 640x480). If using custom models, upload them via the API endpoint /api/hand-track/models with a multipart form. Test with mock data before production to handle varying lighting conditions.
Check for common errors like invalid API keys or camera access issues. Use try-catch blocks in code snippets. For CLI, errors return exit codes (e.g., 1 for authentication failure). Specific cases:
$OPENCLAW_API_KEY is missing, the API responds with 401 Unauthorized; set it via export OPENCLAW_API_KEY=your_key before running.InputNotFoundError and fallback to a default source.if results['confidence'] < 0.5: raise ValueError("Low confidence detection").Example 1: Real-time Gesture Control in AR App
OPENCLAW_API_KEY, run claw hand-track --input camera --gestures pinch, then in Python:
import openclaw
client = openclaw.Client(os.environ['OPENCLAW_API_KEY'])
while True: results = client.hand_track(); if 'pinch' in results['gestures']: move_object(results['hand_landmarks'])
Example 2: Video Analysis for Gesture Detection
claw hand-track --input video/sample.mp4 --output gestures.log --gestures wave./api/hand-track with { "input": "file.mp4", "gestures": ["wave"] }, then process the response to log timestamps of detected waves.
fetch('/api/hand-track', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.OPENCLAW_API_KEY}` }, body: JSON.stringify({ input: 'file.mp4' }) })
.then(res => res.json()).then(data => console.log(data.gestures));
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui