specs-interaction-recipes

Implements hand-interaction recipes for Spectacles using SIK and GestureModule in Lens Studio.

16|2|Updated Apr 13, 2026
One-click install
npx skills add https://github.com/lens-studio-devs/ls-extensions --skill specs-interaction-recipes-lens-studio-devs
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: specs-interaction-recipes
Source: https://github.com/lens-studio-devs/ls-extensions/tree/main/plugins/ls-clad/skills/specs-interaction-recipes
Command: npx skills add https://github.com/lens-studio-devs/ls-extensions --skill specs-interaction-recipes-lens-studio-devs

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Building hand interactions for Snap Spectacles in Lens Studio requires navigating SIK's Interactable events, raw HandInputData, and GestureModule APIs, plus handling editor-vs-device input differences that cause double-firing or untestable gestures. ## Core Features & Use Cases - Drop-in interaction components: TapInteraction and DragInteraction wrap SIK Interactable/InteractableManipulation with named hooks, auto-collider creation, and automatic editor support via MouseInteractor. - Composite gesture recipes: SwipeInteraction (6-direction swipe detection), PinchPullReleaseInteraction (spring-return throw), and GrabPullReleaseInteraction (fist-grab with axis lock) with built-in editor touch mocking. - Init-order and mocking rules: Enforces the OnStartEvent subscription rule for SIK/GestureModule events and provides a decision table for when manual TouchEvent editor mocks are required. - Use Case: Building a mini-golf game on Spectacles where the player pinches a ball, pulls it back along the Z axis, and releases it with throw momentum — copy PinchPullReleaseInteraction.ts, set allowX/allowZ, and subscribe to its hooks. ## Quick Start Ask the agent to add a pinch-pull-release interaction with spring return to a scene object in your Lens Studio project using the specs-interaction-recipes skill.

Frequently Asked Questions about specs-interaction-recipes

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add hand pinch interactions in Lens Studio for Spectacles?

Create an Interactable component from SpectaclesInteractionKit on your scene object and subscribe to onTriggerStart inside an OnStartEvent binding. The TapInteraction recipe wraps this pattern with named onTap, onHoverStart, and onHoverEnd hooks and auto-creates a collider.

Why is my SIK event listener not firing in Lens Studio?

SIK Interactable, InteractableManipulation, HandInputData pinch, and GestureModule events must be subscribed inside createEvent("OnStartEvent"), not directly in onAwake. SIK wires its events during its own onAwake, so binding earlier races that initialization.

How do I test Spectacles hand gestures in the Lens Studio Editor without a device?

Interactable-based interactions work automatically via SIK's MouseInteractor. Gestures built on raw HandInputData or GestureModule events need a manual mock binding TouchStartEvent, TouchMoveEvent, and TouchEndEvent, with Shift switching vertical drag between Y and Z axes.

Why does my tap callback fire twice in the Lens Studio Editor preview?

Double-firing happens when you bind TapEvent or TouchStartEvent on top of an Interactable. SIK's MouseInteractor already routes editor clicks into Interactable.onTriggerStart, so the manual binding fires the same callback a second time.

When should I use GestureModule grab events instead of SIK pinch?

Use GestureModule getGrabBeginEvent for full-fist grabs on chunky objects like levers or handles, where grabbing feels more natural. SIK pinch via Interactable suits small or precise targets and gives automatic editor support through MouseInteractor.

How do I detect swipe direction from hand tracking on Spectacles?

Track wrist position in camera-local space between pinch-down and pinch-up, then classify the dominant axis with a cone-of-acceptance strictness factor of 1.3. The SwipeInteraction recipe implements this with a 5 cm threshold and 0.75 second duration cap.