tapwithus/tap-web-sdk/tap-vision-models

Claude Code and agent skill by tapwithus/tap-web-sdk

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Switch the TapSDKWeb2 vision model between TAPPING and AIR_GESTURE, set the op mode, and decode UnifiedAirGestures (swipes, pinches, holds, fist). Use for air gestures, pinch, swipe, fist, model switching, or AirGestures on TapSDKWeb.

Install

npx vskill@latest install tapwithus/tap-web-sdk/tap-vision-models

SKILL.md

Vision models and air gestures

This SDK delivers raw gesture detections. Python, Web, iOS, and Android all receive those codes. iOS and Android add a processed click / drag / drop layer. This Web SDK does not. Never say swipes or pinches are iOS/Android-only.

TapXR developer firmware and TapBand use the same BLE API and the full set: taps, thumb swipes up/down/left/right, thumb-to-finger pinches with hold, fist with hold. TapBand is coming soon (waitlist). Do not invent a firmware version number.

`TapSDKWeb2` (framed firmware) for model switching. TapSDKWeb air gestures are at the end of this page.

The framed-firmware device runs one vision model at a time:

ModelTypesOutputCallback
TAPPINGfinger tapsregisterTapEvents: cb(id, [tapcode])
AIR_GESTUREswipes, pinches, holds, fistregisterAirGestureEvents: cb(id, [code])
VisionSensorOpModesMeaningUse with
TRIGGERRun the model when a tap-like trigger occursTAPPING
STREAMRun the model all the timeAIR_GESTURE
STREAM_ON_TRIGGERStart streaming after a triggerexperiments

Enable and switch

typescript
import {
DeviceFeatures,
ModelTypes,
TapSDKWeb2,
UnifiedAirGestures,
VisionSensorOpModes,
} from '@tapwithus/tapsdk';
async function useAirGestures(sdk: TapSDKWeb2): Promise<void> {
await sdk.setFeature(DeviceFeatures.MODEL_DETECTION, true);
await sdk.setVisionSensorModel(ModelTypes.AIR_GESTURE);
await sdk.setVisionSensorOpMode(VisionSensorOpModes.STREAM);
}
async function useTapping(sdk: TapSDKWeb2): Promise<void> {
await sdk.setFeature(DeviceFeatures.MODEL_DETECTION, true);
await sdk.setVisionSensorModel(ModelTypes.TAPPING);
await sdk.setVisionSensorOpMode(VisionSensorOpModes.TRIGGER);
}

Call these after connect() returns and after you register callbacks. connect() already started notifications. There is no start(). You can switch at runtime, as often as needed. Read the current state with await sdk.getVisionSensorModel() and await sdk.getVisionSensorOpMode(). Each call times out after 2 s if the device does not answer.

To start from a clean state, turn each feature off. Do not loop Object.values(DeviceFeatures) — a numeric enum also lists names.

typescript
await sdk.setFeature(DeviceFeatures.RAW_IMU_DATA, false);
await sdk.setFeature(DeviceFeatures.MODEL_DETECTION, false);
await sdk.setFeature(DeviceFeatures.IMU_MOTION_DATA, false);
await sdk.setFeature(DeviceFeatures.TRIGGER_DETECTIONS, false);
await sdk.setFeature(DeviceFeatures.STANDBY_GESTURE_DETECTION, false);

UnifiedAirGestures codes

Letters: A = thumb, B = index, C = middle, D = ring, E = pinky. "AB" = thumb touches index (pinch).

Verified: tapIncMsg parses MODEL_DETECTION + AIR_GESTURE into { type: 'air_gesture', data: [code] }. TapSDKWeb2 calls registerAirGestureEvents with that array.

CodeNameMeaning
100COMBINED_GESTURE_NONENo gesture / hand relaxed. Use it as "release" after a hold.
101COMBINED_GESTURE_LEFTThumb swipe left
102COMBINED_GESTURE_RIGHTThumb swipe right
103COMBINED_GESTURE_UPThumb swipe up
104COMBINED_GESTURE_DOWNThumb swipe down
105-108COMBINED_GESTURE_AB / AC / AD / AEShort pinch: thumb + index / middle / ring / pinky
109COMBINED_GESTURE_FISTFist
110-113COMBINED_GESTURE_AB_HOLD ... AE_HOLDPinch held
114COMBINED_GESTURE_FIST_HOLDFist held
typescript
function onAirGesture(_identifier: string, data: number[]): void {
if (data[0] === UnifiedAirGestures.COMBINED_GESTURE_LEFT) {
goBack();
}
}

The device sends gesture packets continuously in STREAM mode, so the same code repeats. To act once per gesture, act when the code changes, or ignore repeats within about 40 ms. Holds repeat until the hand relaxes and NONE (100) arrives. Wait for a few NONE packets in a row before you treat a hold as released (see tap-dpad).

tap-knob and tap-dpad are app recipes that build click / drag / drop in the page from these raw codes. That is not an SDK layer.

Example: switch models with a gesture

Fist-hold switches to tapping; all-five-finger tap (31) switches back:

typescript
function onAirGesture(_identifier: string, data: number[]): void {
if (data[0] === UnifiedAirGestures.COMBINED_GESTURE_FIST_HOLD) {
void useTapping(sdk);
}
}
function onTap(_identifier: string, data: number[]): void {
if (data[0] === 31) {
void useAirGestures(sdk);
}
}

Standby

DeviceFeatures.STANDBY_GESTURE_DETECTION lets the user put the device in standby with a gesture. registerStandbyStateEvents(cb(id, isStandby)) reports changes. await sdk.setStandbyState(false) wakes it. await sdk.getStandbyState() reads it.

TapSDKWeb air gestures (classic firmware)

TapSDKWeb has no model switching. In InputModeController(), registerAirGestureEvents gives cb(id, gesture: number) that matches AirGestures (for example UP_ONE_FINGER, LEFT_TWO_FINGERS, PINCH, THUMB_FINGER, STATE_FIST). registerAirGestureStateEvents gives cb(id, MouseModes) when the air-mouse state changes.

Docs

  • Enumerations: src/enumerations.ts in this repository
  • Demo: https://tapwithus.github.io/tap-web-sdk/

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/tapwithus/tap-web-sdk/tap-vision-models/badge)](https://verified-skill.com/skills/tapwithus/tap-web-sdk/tap-vision-models)

Something wrong with this skill or its page? Tell us.