specs-custom-locations

Anchor AR content to real-world places on Specs using Custom Locations and LocatedAtComponent.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Building location-locked AR experiences on Specs requires wiring LocationAssets, LocatedAtComponent lifecycle events, scan meshes, and activation logic in Lens Studio — a multi-step process where small mistakes (like gating content on onFound, which never fires in the editor) silently break the experience. ## Core Features & Use Cases - Location Asset Setup: Create LocationAsset, LocationMesh, and Location Material via asset-graphql or the Editor API, wire a published Location ID, and build the Custom Location scene node with LocatedAtComponent and RenderMeshVisual. - Activation Framework: Drop-in TypeScript scripts (LocationActivator, ScaleInLocatedObject, AudioLocatedObject, LocationStatusLogger) that gate content on localization events with proximity hysteresis and an editor-testing branch. - Location Groups & Incremental Scans: Link up to 5 nearby locations with CustomLocationGroupComponent, and add viewpoints to existing scans without repositioning content. - Use Case: Build a site-specific AR tour where content appears only when visitors physically arrive at a scanned location, with the scan mesh hidden on device but visible in the editor for placement. ## Quick Start Ask the agent to create a Custom Location node in Lens Studio wired to a published Location ID with content parented under it and the scan mesh hidden on device.

Frequently Asked Questions about specs-custom-locations

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

FAQPage Schema
How do I anchor AR content to a real-world location on Specs?

Create a LocationAsset with a published Location ID, add a LocatedAtComponent to a scene node referencing that asset, and parent your content under that node. The device localizes against the scanned space and fires onFound when content becomes anchored.

How do I scan a Custom Location for Lens Studio?

Use the Custom Locations Lens on Specs: select Scan New, move laterally through the space in a sweeping figure-8, then Finish Scan and Publish to receive a Location ID. Paste that ID into the LocationAsset's locationId property in Lens Studio.

Why doesn't my location content appear in the Lens Studio editor?

The device never localizes inside Lens Studio, so onFound never fires in the editor. Branch on global.deviceInfoSystem.isEditor() and treat the editor as already localized so content shows during editor testing.

Can I develop a Custom Location Lens without scanning a space myself?

Yes. Any published Location ID localizes in the editor, including the stock public example ZDB3WPGEL6BA shipped with Lens Studio. Official sample templates also include ready-made location assets with meshes that localize out of the box.

What are the limitations of Custom Location Groups?

Groups support a maximum of 5 locations, each within roughly 20 meters of each other. Groups are not supported in Connected Lenses, which allow only a single location on the Colocated World SceneObject.

Why does my Custom Location fail to localize on device?

Attach LocationStatusLogger to diagnose: if you only see onReady without onCanTrack or onFound, the user is out of range or the scan lacks viewpoints from that angle. An onError event indicates a bad or expired Location ID or missing internet connectivity.