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 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.mdat the repo root.
Decide first
The architecture decisions before polish:
- Comfort budget. What's the longest you expect a user to wear your lens? 1 minute? 10? 60? Everything else flows from this.
- Anchor strategy. Head, body, or world lock for each content piece? See [[references/head-locked-vs-world-locked]].
- Performance target. What frame rate are you holding? 60 fps is the floor; below that, motion comfort suffers.
- 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:
- 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]].)
- 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]].)
- 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.mdat 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