# Snap Spectacles Sik

> Load when the user is wiring pinch, poke, gaze, or two-handed manipulation on Snap Spectacles — building AR buttons, sliders, draggable objects, scrollable lists, custom interactors, or asks "why isn't my Interactable firing." Don't load for general Lens Studio scene setup — use snap-spectacles-build.

- Skill: `hktitan/snap-spectacles-sik` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx skillmds@latest add hktitan/snap-spectacles-sik`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hktitan/snap-spectacles-sik/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: HKTITAN (https://skillmd.com/u/hktitan)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hktitan/snap-spectacles-sik

---


# Spectacles Interaction Kit (SIK)

SIK is the canonical way to wire interactions on Spectacles. The architecture is three classes — **Interactor**, **Interactable**, **InteractionManager** — and a handful of UI prefabs. Once the model clicks, everything from pinch buttons to two-handed scaling falls into the same shape.

## When to load

Triggers:
- "Why isn't my pinch button firing on Spectacles"
- "AR draggable Spectacles"
- "Two-handed scale on Spectacles"
- "Custom interactor SIK"
- "PinchButton trigger event"
- "Spectacles raycast interaction"
- "Spectacles cursor"

Don't load for:
- General Lens Studio basics — see [[../snap-spectacles-build/SKILL]].
- Multiplayer / shared interactions — see [[../snap-spectacles-sync/SKILL]].
- Mobile controller pairing for non-interaction reasons — see [[../snap-spectacles-mobile-kit/SKILL]].

## Decide first

The architecture decisions before code:

1. **Near or far?** Direct-pinch is near (~5 cm from the Interactable's collider). Far interaction needs the cursor / gaze-driven ray. See [[references/hand-interactor]] and [[references/cursor-interactor]].
2. **One hand or two?** Two-handed manipulation is supported but requires `InteractableManipulation` configured for two-handed. See [[references/manipulation]].
3. **UI element source.** Build with SIK / UI Kit prefabs (Button, Toggle, Slider, Container) or write your own Interactable? Prefer prefabs first.
4. **Bubble-or-trickle.** SIK fires events down the scene-graph tree from ancestors to targets and back up — what catches the event? See [[references/event-cascading]].

## Map of content

### Architecture

- [[references/interaction-manager]] — the central manager and the bubble/trickle event flow.
- [[references/event-cascading]] — how events propagate through ancestor Interactables.

### Interactors (input)

- [[references/hand-interactor]] — direct-pinch and direct-poke; the near-field gesture model.
- [[references/cursor-interactor]] — gaze-driven cursor for far interaction.
- [[references/mobile-interactor]] — smartphone-as-controller, calibrated with Spectacles.
- [[references/hand-visualization]] — visualising the user's hands in scene.

### Interactables (targets)

- [[references/interactables]] — Interactable component, collider requirements, states (hover, trigger).
- [[references/manipulation]] — InteractableManipulation: translate, scale, rotate, two-handed.
- [[references/anchor-dynamics]] — anchor / pinning so UI stays where the user puts it.

### UI prefabs (composition)

- [[references/ui-buttons]] — Button / PinchButton patterns and where the click really lands.
- [[references/ui-toggles]] — Toggle component, state binding, accessibility.
- [[references/ui-sliders]] — Slider and ScrollBar; the continuous-value pattern.
- [[references/ui-containers]] — Container and ContainerFrame as the scene's UI organiser.

### Custom

- [[references/custom-interactor]] — when prefabs aren't enough; writing your own.

## Verify

Before claiming an interaction works:

- [ ] Every Interactable has a Collider component sized for the target gesture.
- [ ] Exactly one InteractionManager exists in the scene.
- [ ] Hand-interactor and cursor-interactor (if both present) don't fight for the same Interactable — use raycast layers or priority.
- [ ] Direct-pinch works within the Interactable's collider (≈5 cm range).
- [ ] Event subscriptions are bound in `onAwake` / `onStart` and unbound in `onDestroy` / `onDisable`.
- [ ] Tested with the actual hand pose, not just the editor mouse.
- [ ] Two-handed manipulation (if used) is tested with both hands tracking.
- [ ] The interaction is glanceable — see [[../../meta/meta-display-design/references/glanceable-principle]].

## Smoke test

If this skill loaded correctly, the agent should answer:

1. Why does an Interactable need a Collider component to receive events? (Expected: the Interactor raycasts against collider geometry; without a collider it can never be a hit; cites [[references/interactables]].)
2. What's the difference between direct-pinch and indirect-pinch? (Expected: direct-pinch fires within ~5 cm of the Interactable's collider; indirect routes through a raycast / cursor; cites [[references/hand-interactor]] and [[references/cursor-interactor]].)
3. Three reasons a pinch event might not fire on a properly-shaped Interactable. (Expected: collider too small / offset; no InteractionManager in scene; another Interactable ancestor is consuming the event in its bubble phase. Cites [[references/interactables]], [[references/interaction-manager]], [[references/event-cascading]].)

## Sibling skills

- [[../snap-spectacles-build/SKILL]] — the Lens Studio basics this skill assumes.
- [[../snap-spectacles-sync/SKILL]] — for multi-user / networked interactions.
- [[../snap-spectacles-design/SKILL]] — the UX layer on top of these mechanics.

## Sources

- SIK getting started — <https://developers.snap.com/spectacles/spectacles-frameworks/spectacles-interaction-kit/get-started>
- SIK architecture — <https://developers.snap.com/spectacles/spectacles-frameworks/spectacles-interaction-kit/architecture>
- SIK features overview — <https://developers.snap.com/spectacles/spectacles-frameworks/spectacles-interaction-kit/features/overview>
- Interaction system — <https://developers.snap.com/spectacles/spectacles-frameworks/spectacles-interaction-kit/features/interactionsystem>
- SIK release notes — <https://developers.snap.com/spectacles/spectacles-frameworks/spectacles-interaction-kit/release-notes>
- Sample projects — <https://github.com/specs-devs/samples>

