# Snap Spectacles Design

> Load when the user is polishing a Snap Spectacles lens for shipping — FOV / safe zone, head vs body vs world lock, comfort and motion-sickness rules, performance and thermal budgets, lens publishing and review. Don't load for early build mechanics — use snap-spectacles-build.

- Skill: `hktitan/snap-spectacles-design` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx skillmds@latest add hktitan/snap-spectacles-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hktitan/snap-spectacles-design/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-design

---


# Spectacles Design — Comfort, Performance, Publishing

Shipping a Spectacles lens is more than getting it to work in the editor. It has to be comfortable for 10+ minutes of wear, fit Snap's perf budget, survive thermal / battery constraints, and pass review. This skill is the polish layer — what separates a tech demo from a shipped lens. Pair with [`GUIDELINES.md`](../../../GUIDELINES.md) at the repo root, which is the bible for display-glasses design across vendors.

## When to load

Triggers:
- "Spectacles lens performance"
- "Lens won't pass review"
- "FOV safe zone Spectacles"
- "Motion sickness in my lens"
- "Lens approval Snap"
- "Performance budget Spectacles"
- "How to publish a Spectacles lens"

Don't load for:
- Early build mechanics — [[../snap-spectacles-build/SKILL]].
- Interaction wiring — [[../snap-spectacles-sik/SKILL]].
- Cross-vendor design principles — read [`GUIDELINES.md`](../../../GUIDELINES.md) at the repo root.

## Decide first

The architecture decisions before polish:

1. **Comfort budget.** What's the longest you expect a user to wear your lens? 1 minute? 10? 60? Everything else flows from this.
2. **Anchor strategy.** Head, body, or world lock for each content piece? See [[references/head-locked-vs-world-locked]].
3. **Performance target.** What frame rate are you holding? 60 fps is the floor; below that, motion comfort suffers.
4. **Publishing path.** Personal lens, unlisted, or public via lens review? Each has its own requirements.

## Map of content

### Visual comfort

- [[references/fov-safe-zone]] — where content reads comfortably; where it doesn't.
- [[references/head-locked-vs-world-locked]] — anchor choice and its comfort impact.
- [[references/body-locked-ui]] — the underused middle option.
- [[references/text-legibility]] — readable type on Spectacles' display.

### Physical comfort

- [[references/comfort-rules]] — vergence-accommodation, IPD, eye fatigue.
- [[references/motion-comfort]] — avoiding motion sickness in dynamic lenses.

### Performance

- [[references/performance-budget]] — frame rate, draw calls, polycount.
- [[references/profiling]] — measuring what your lens actually costs.
- [[references/draw-call-budget]] — the per-frame draw count.
- [[references/thermal-budget]] — thermal throttling under load.
- [[references/battery-budget]] — what drains battery and how to slow it.

### Shipping

- [[references/permissions-privacy]] — designing for permission flows; Snap's privacy rules.
- [[references/publishing-checklist]] — pre-submission audit.
- [[references/lens-approval]] — what Snap reviews look for.

## Verify

Before submitting a lens for review:

- [ ] Sustained 60 fps on device for the typical scene; no drops below 45 fps even at peak.
- [ ] FOV safe zone respected — primary content lives within the comfortable region.
- [ ] No head-locked content longer than 2 seconds at a time.
- [ ] Body-locked UI smoothed (no jitter from user motion).
- [ ] Comfort budget: tested with at least one 10-minute wear; eye fatigue or discomfort flagged.
- [ ] Thermal: lens runs 20+ minutes without throttling.
- [ ] Battery: lens drains battery at a rate compatible with intended session length.
- [ ] All requested permissions justified in the lens description.
- [ ] Privacy considerations documented for any user data leaving the device.
- [ ] Lens metadata in My Lenses portal: title, description, preview imagery, category — all set.

## Smoke test

If this skill loaded correctly, the agent should answer:

1. What's the floor frame rate for a Spectacles lens to feel comfortable? (Expected: 60 fps sustained; below 45 fps motion comfort degrades sharply; cites [[references/performance-budget]] and [[references/motion-comfort]].)
2. The user has a UI panel that follows their head. What's wrong? (Expected: head-locked UI longer than a few seconds disorients; switch to body-locked or world-locked; cites [[references/head-locked-vs-world-locked]] and [[references/body-locked-ui]].)
3. Lens rejected during review for "performance issues." What's the diagnostic order? (Expected: profile on device, check draw calls / poly / texture, audit thermal / battery, verify smooth at 60 fps; cites [[references/profiling]] and [[references/performance-budget]].)

## Sibling skills

- [[../snap-spectacles-build/SKILL]] — build basics.
- [[../snap-spectacles-sik/SKILL]] — interaction polish.
- [[../snap-spectacles-sync/SKILL]] — multiplayer-specific polish.

## Cross-vendor reference

- **[`GUIDELINES.md`](../../../GUIDELINES.md)** at the repo root is the bible for display-glasses design across vendors. This skill is Snap-specific polish; the guidelines are universal.

## Sources

- Spectacles best practices — <https://developers.snap.com/spectacles/best-practices>
- Performance optimization — <https://developers.snap.com/spectacles/best-practices/performance-optimization/overview>
- Spectacles permissions & privacy — <https://developers.snap.com/spectacles/permissions-privacy>
- My Lenses portal — <https://my-lenses.snapchat.com>

