[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-meta-live-debugging-mcp":3,"mdc-6vl1mg-key":37,"related-org-meta-live-debugging-mcp":556,"related-repo-meta-live-debugging-mcp":736},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"live-debugging-mcp","debug iOS wearable applications","Use this whenever debugging an iOS DAT app with local DAT Inspector MCP tools, live device events, Meta AI app\u002Fdevice boundary issues, permissions, registration, sessions, streaming, callbacks, or user reports that the app cannot communicate with glasses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"meta","Meta Open Source","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmeta.png","facebook",[13,17,20,23],{"name":14,"slug":15,"type":16},"iOS","ios","tag",{"name":18,"slug":19,"type":16},"Mobile","mobile",{"name":21,"slug":22,"type":16},"MCP","mcp",{"name":24,"slug":25,"type":16},"Debugging","debugging",488,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios","2026-08-06T06:09:15.013902",null,112,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Meta Wearables Device Access Toolkit for iOS","https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios\u002Ftree\u002FHEAD\u002Fplugins\u002Fmwdat-ios\u002Fskills\u002Flive-debugging-mcp","---\nname: live-debugging-mcp\ndescription: Use this whenever debugging an iOS DAT app with local DAT Inspector MCP tools, live device events, Meta AI app\u002Fdevice boundary issues, permissions, registration, sessions, streaming, callbacks, or user reports that the app cannot communicate with glasses.\n---\n\n# Live DAT Debugging with MCP (iOS)\n\nUse this skill when a developer is debugging an iOS DAT app and has a local DAT\nInspector MCP server or DAT debug server available to the agent. This is the\nlive-runtime counterpart to `dat-docs-mcp`: use docs search for API lookup, and\nuse this skill for observed app\u002Fdevice behavior.\n\n## Ground rules\n\n- Stay read-only unless the user explicitly asks for an app code change.\n- Do not mutate Meta AI app, device, account, permission, registration, or app\n  state.\n- Treat companion-app\u002Fdevice results as boundary diagnosis from app-visible DAT\n  events, not as direct access to companion app internals.\n- Use live DAT evidence before guessing: registration, permissions, device\n  selection, link state, session state, stream state, typed errors, and SDK logs.\n- If the MCP tools are not configured, ask the developer to enable their local\n  DAT debug setup and fall back to logs plus `search_dat_docs`.\n\n## Normal agent loop\n\n1. Discover and connect to the running app debug server:\n   - `discover_debug_servers`\n   - `connect_to_debug_server`\n2. Establish the baseline with all three calls before diagnosing deeper:\n   - `get_connection_status`\n   - `get_sdk_state`\n   - `get_dat_readiness`\n   Do not skip `get_connection_status`; it separates MCP\u002Fdebug-server\n   connectivity from SDK, registration, permission, session, and stream state.\n3. If the issue looks like Meta AI app or device boundary behavior, inspect:\n   - `get_companion_boundary_diagnosis`\n   - `get_device_path`\n   - `get_permissions`\n   - `get_device_properties`\n4. Ask the developer to reproduce the failing iOS flow while connected.\n5. Wait for narrow evidence instead of polling everything:\n   - `wait_for_events` with `category` or `source`\n   - `get_errors`\n   - `get_event_digest`\n6. For handoff, collect a redacted bundle:\n   - `export_diagnostic_bundle`\n\n## Evidence map\n\n- Configuration: app logs around `Wearables.configure()`\n- URL callbacks: `Wearables.shared.handleUrl(_:)` return handling\n- Registration: `Wearables.shared.startRegistration()` and\n  `wearables.registrationState`\n- Device availability: device selectors, `wearables.devices`,\n  `device.compatibility`, and `device.properties`\n- Device link: `device.linkState`\n- Permissions: DAT permission APIs, `device.permission`, `check_permissions`,\n  and `get_permissions`\n- Session: `DeviceSession` creation\u002Fstart, `deviceSession.state`,\n  `session.state`, and session errors\n- Stream: stream start, `stream.state`, frame counters, and stream errors\n- DAM\u002FDWA-visible transport: `sdk.usesDam` and DAM\u002FDWA error values\n\n## Diagnosis patterns\n\n- Registration blocked: verify Info.plist DAT configuration, app URL scheme,\n  Developer Mode setup, and callback handling.\n- No eligible device: inspect discovered devices, selector behavior, device\n  compatibility, and `device.linkState` before changing stream code.\n- Permission failure: use `get_permissions` and `get_companion_boundary_diagnosis`;\n  do not assume iOS system permission is the same as DAT permission through the\n  Meta AI app\u002Fdevice boundary.\n- Session fails before stream creation: inspect session errors and selected\n  device compatibility before changing camera code.\n- Stream fails after session start: inspect stream state, camera permission, and\n  recent errors before changing frame processing.\n\n## Output expectations\n\nWhen summarizing, name the evidence plane, the blocking state, and the next\ndeveloper action. Example:\n\n```text\nDAT readiness is blocked at registration: the app-visible registration state is\nnot registered. Check the Info.plist DAT URL scheme and MetaAppID, complete the\nMeta AI callback through handleUrl(_:), then retry while the MCP connection waits\nfor registration and device-link events.\n```\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,66,73,111,117,308,314,478,484,533,539,544],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"live-dat-debugging-with-mcp-ios",[48],{"type":49,"value":50},"text","Live DAT Debugging with MCP (iOS)",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,64],{"type":49,"value":56},"Use this skill when a developer is debugging an iOS DAT app and has a local DAT\nInspector MCP server or DAT debug server available to the agent. This is the\nlive-runtime counterpart to ",{"type":43,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":49,"value":63},"dat-docs-mcp",{"type":49,"value":65},": use docs search for API lookup, and\nuse this skill for observed app\u002Fdevice behavior.",{"type":43,"tag":67,"props":68,"children":70},"h2",{"id":69},"ground-rules",[71],{"type":49,"value":72},"Ground rules",{"type":43,"tag":74,"props":75,"children":76},"ul",{},[77,83,88,93,98],{"type":43,"tag":78,"props":79,"children":80},"li",{},[81],{"type":49,"value":82},"Stay read-only unless the user explicitly asks for an app code change.",{"type":43,"tag":78,"props":84,"children":85},{},[86],{"type":49,"value":87},"Do not mutate Meta AI app, device, account, permission, registration, or app\nstate.",{"type":43,"tag":78,"props":89,"children":90},{},[91],{"type":49,"value":92},"Treat companion-app\u002Fdevice results as boundary diagnosis from app-visible DAT\nevents, not as direct access to companion app internals.",{"type":43,"tag":78,"props":94,"children":95},{},[96],{"type":49,"value":97},"Use live DAT evidence before guessing: registration, permissions, device\nselection, link state, session state, stream state, typed errors, and SDK logs.",{"type":43,"tag":78,"props":99,"children":100},{},[101,103,109],{"type":49,"value":102},"If the MCP tools are not configured, ask the developer to enable their local\nDAT debug setup and fall back to logs plus ",{"type":43,"tag":58,"props":104,"children":106},{"className":105},[],[107],{"type":49,"value":108},"search_dat_docs",{"type":49,"value":110},".",{"type":43,"tag":67,"props":112,"children":114},{"id":113},"normal-agent-loop",[115],{"type":49,"value":116},"Normal agent loop",{"type":43,"tag":118,"props":119,"children":120},"ol",{},[121,147,191,235,240,291],{"type":43,"tag":78,"props":122,"children":123},{},[124,126],{"type":49,"value":125},"Discover and connect to the running app debug server:\n",{"type":43,"tag":74,"props":127,"children":128},{},[129,138],{"type":43,"tag":78,"props":130,"children":131},{},[132],{"type":43,"tag":58,"props":133,"children":135},{"className":134},[],[136],{"type":49,"value":137},"discover_debug_servers",{"type":43,"tag":78,"props":139,"children":140},{},[141],{"type":43,"tag":58,"props":142,"children":144},{"className":143},[],[145],{"type":49,"value":146},"connect_to_debug_server",{"type":43,"tag":78,"props":148,"children":149},{},[150,152],{"type":49,"value":151},"Establish the baseline with all three calls before diagnosing deeper:\n",{"type":43,"tag":74,"props":153,"children":154},{},[155,164,173],{"type":43,"tag":78,"props":156,"children":157},{},[158],{"type":43,"tag":58,"props":159,"children":161},{"className":160},[],[162],{"type":49,"value":163},"get_connection_status",{"type":43,"tag":78,"props":165,"children":166},{},[167],{"type":43,"tag":58,"props":168,"children":170},{"className":169},[],[171],{"type":49,"value":172},"get_sdk_state",{"type":43,"tag":78,"props":174,"children":175},{},[176,182,184,189],{"type":43,"tag":58,"props":177,"children":179},{"className":178},[],[180],{"type":49,"value":181},"get_dat_readiness",{"type":49,"value":183},"\nDo not skip ",{"type":43,"tag":58,"props":185,"children":187},{"className":186},[],[188],{"type":49,"value":163},{"type":49,"value":190},"; it separates MCP\u002Fdebug-server\nconnectivity from SDK, registration, permission, session, and stream state.",{"type":43,"tag":78,"props":192,"children":193},{},[194,196],{"type":49,"value":195},"If the issue looks like Meta AI app or device boundary behavior, inspect:\n",{"type":43,"tag":74,"props":197,"children":198},{},[199,208,217,226],{"type":43,"tag":78,"props":200,"children":201},{},[202],{"type":43,"tag":58,"props":203,"children":205},{"className":204},[],[206],{"type":49,"value":207},"get_companion_boundary_diagnosis",{"type":43,"tag":78,"props":209,"children":210},{},[211],{"type":43,"tag":58,"props":212,"children":214},{"className":213},[],[215],{"type":49,"value":216},"get_device_path",{"type":43,"tag":78,"props":218,"children":219},{},[220],{"type":43,"tag":58,"props":221,"children":223},{"className":222},[],[224],{"type":49,"value":225},"get_permissions",{"type":43,"tag":78,"props":227,"children":228},{},[229],{"type":43,"tag":58,"props":230,"children":232},{"className":231},[],[233],{"type":49,"value":234},"get_device_properties",{"type":43,"tag":78,"props":236,"children":237},{},[238],{"type":49,"value":239},"Ask the developer to reproduce the failing iOS flow while connected.",{"type":43,"tag":78,"props":241,"children":242},{},[243,245],{"type":49,"value":244},"Wait for narrow evidence instead of polling everything:\n",{"type":43,"tag":74,"props":246,"children":247},{},[248,273,282],{"type":43,"tag":78,"props":249,"children":250},{},[251,257,259,265,267],{"type":43,"tag":58,"props":252,"children":254},{"className":253},[],[255],{"type":49,"value":256},"wait_for_events",{"type":49,"value":258}," with ",{"type":43,"tag":58,"props":260,"children":262},{"className":261},[],[263],{"type":49,"value":264},"category",{"type":49,"value":266}," or ",{"type":43,"tag":58,"props":268,"children":270},{"className":269},[],[271],{"type":49,"value":272},"source",{"type":43,"tag":78,"props":274,"children":275},{},[276],{"type":43,"tag":58,"props":277,"children":279},{"className":278},[],[280],{"type":49,"value":281},"get_errors",{"type":43,"tag":78,"props":283,"children":284},{},[285],{"type":43,"tag":58,"props":286,"children":288},{"className":287},[],[289],{"type":49,"value":290},"get_event_digest",{"type":43,"tag":78,"props":292,"children":293},{},[294,296],{"type":49,"value":295},"For handoff, collect a redacted bundle:\n",{"type":43,"tag":74,"props":297,"children":298},{},[299],{"type":43,"tag":78,"props":300,"children":301},{},[302],{"type":43,"tag":58,"props":303,"children":305},{"className":304},[],[306],{"type":49,"value":307},"export_diagnostic_bundle",{"type":43,"tag":67,"props":309,"children":311},{"id":310},"evidence-map",[312],{"type":49,"value":313},"Evidence map",{"type":43,"tag":74,"props":315,"children":316},{},[317,328,341,360,387,398,424,452,465],{"type":43,"tag":78,"props":318,"children":319},{},[320,322],{"type":49,"value":321},"Configuration: app logs around ",{"type":43,"tag":58,"props":323,"children":325},{"className":324},[],[326],{"type":49,"value":327},"Wearables.configure()",{"type":43,"tag":78,"props":329,"children":330},{},[331,333,339],{"type":49,"value":332},"URL callbacks: ",{"type":43,"tag":58,"props":334,"children":336},{"className":335},[],[337],{"type":49,"value":338},"Wearables.shared.handleUrl(_:)",{"type":49,"value":340}," return handling",{"type":43,"tag":78,"props":342,"children":343},{},[344,346,352,354],{"type":49,"value":345},"Registration: ",{"type":43,"tag":58,"props":347,"children":349},{"className":348},[],[350],{"type":49,"value":351},"Wearables.shared.startRegistration()",{"type":49,"value":353}," and\n",{"type":43,"tag":58,"props":355,"children":357},{"className":356},[],[358],{"type":49,"value":359},"wearables.registrationState",{"type":43,"tag":78,"props":361,"children":362},{},[363,365,371,373,379,381],{"type":49,"value":364},"Device availability: device selectors, ",{"type":43,"tag":58,"props":366,"children":368},{"className":367},[],[369],{"type":49,"value":370},"wearables.devices",{"type":49,"value":372},",\n",{"type":43,"tag":58,"props":374,"children":376},{"className":375},[],[377],{"type":49,"value":378},"device.compatibility",{"type":49,"value":380},", and ",{"type":43,"tag":58,"props":382,"children":384},{"className":383},[],[385],{"type":49,"value":386},"device.properties",{"type":43,"tag":78,"props":388,"children":389},{},[390,392],{"type":49,"value":391},"Device link: ",{"type":43,"tag":58,"props":393,"children":395},{"className":394},[],[396],{"type":49,"value":397},"device.linkState",{"type":43,"tag":78,"props":399,"children":400},{},[401,403,409,411,417,419],{"type":49,"value":402},"Permissions: DAT permission APIs, ",{"type":43,"tag":58,"props":404,"children":406},{"className":405},[],[407],{"type":49,"value":408},"device.permission",{"type":49,"value":410},", ",{"type":43,"tag":58,"props":412,"children":414},{"className":413},[],[415],{"type":49,"value":416},"check_permissions",{"type":49,"value":418},",\nand ",{"type":43,"tag":58,"props":420,"children":422},{"className":421},[],[423],{"type":49,"value":225},{"type":43,"tag":78,"props":425,"children":426},{},[427,429,435,437,443,444,450],{"type":49,"value":428},"Session: ",{"type":43,"tag":58,"props":430,"children":432},{"className":431},[],[433],{"type":49,"value":434},"DeviceSession",{"type":49,"value":436}," creation\u002Fstart, ",{"type":43,"tag":58,"props":438,"children":440},{"className":439},[],[441],{"type":49,"value":442},"deviceSession.state",{"type":49,"value":372},{"type":43,"tag":58,"props":445,"children":447},{"className":446},[],[448],{"type":49,"value":449},"session.state",{"type":49,"value":451},", and session errors",{"type":43,"tag":78,"props":453,"children":454},{},[455,457,463],{"type":49,"value":456},"Stream: stream start, ",{"type":43,"tag":58,"props":458,"children":460},{"className":459},[],[461],{"type":49,"value":462},"stream.state",{"type":49,"value":464},", frame counters, and stream errors",{"type":43,"tag":78,"props":466,"children":467},{},[468,470,476],{"type":49,"value":469},"DAM\u002FDWA-visible transport: ",{"type":43,"tag":58,"props":471,"children":473},{"className":472},[],[474],{"type":49,"value":475},"sdk.usesDam",{"type":49,"value":477}," and DAM\u002FDWA error values",{"type":43,"tag":67,"props":479,"children":481},{"id":480},"diagnosis-patterns",[482],{"type":49,"value":483},"Diagnosis patterns",{"type":43,"tag":74,"props":485,"children":486},{},[487,492,504,523,528],{"type":43,"tag":78,"props":488,"children":489},{},[490],{"type":49,"value":491},"Registration blocked: verify Info.plist DAT configuration, app URL scheme,\nDeveloper Mode setup, and callback handling.",{"type":43,"tag":78,"props":493,"children":494},{},[495,497,502],{"type":49,"value":496},"No eligible device: inspect discovered devices, selector behavior, device\ncompatibility, and ",{"type":43,"tag":58,"props":498,"children":500},{"className":499},[],[501],{"type":49,"value":397},{"type":49,"value":503}," before changing stream code.",{"type":43,"tag":78,"props":505,"children":506},{},[507,509,514,516,521],{"type":49,"value":508},"Permission failure: use ",{"type":43,"tag":58,"props":510,"children":512},{"className":511},[],[513],{"type":49,"value":225},{"type":49,"value":515}," and ",{"type":43,"tag":58,"props":517,"children":519},{"className":518},[],[520],{"type":49,"value":207},{"type":49,"value":522},";\ndo not assume iOS system permission is the same as DAT permission through the\nMeta AI app\u002Fdevice boundary.",{"type":43,"tag":78,"props":524,"children":525},{},[526],{"type":49,"value":527},"Session fails before stream creation: inspect session errors and selected\ndevice compatibility before changing camera code.",{"type":43,"tag":78,"props":529,"children":530},{},[531],{"type":49,"value":532},"Stream fails after session start: inspect stream state, camera permission, and\nrecent errors before changing frame processing.",{"type":43,"tag":67,"props":534,"children":536},{"id":535},"output-expectations",[537],{"type":49,"value":538},"Output expectations",{"type":43,"tag":52,"props":540,"children":541},{},[542],{"type":49,"value":543},"When summarizing, name the evidence plane, the blocking state, and the next\ndeveloper action. Example:",{"type":43,"tag":545,"props":546,"children":551},"pre",{"className":547,"code":549,"language":49,"meta":550},[548],"language-text","DAT readiness is blocked at registration: the app-visible registration state is\nnot registered. Check the Info.plist DAT URL scheme and MetaAppID, complete the\nMeta AI callback through handleUrl(_:), then retry while the MCP connection waits\nfor registration and device-link events.\n","",[552],{"type":43,"tag":58,"props":553,"children":554},{"__ignoreMap":550},[555],{"type":49,"value":549},{"items":557,"total":735},[558,582,596,617,634,649,658,678,691,698,713,725],{"slug":559,"name":559,"fn":560,"description":561,"org":562,"tags":563,"stars":579,"repoUrl":580,"updatedAt":581},"relay-best-practices","write idiomatic Relay code","Best practices for writing idiomatic Relay code. ALWAYS use this skill when writing or modifying React components that use Relay for data fetching. Covers fragments, queries, mutations, pagination, and common anti-patterns. Use when you see `useFragment`, `useLazyLoadQuery`, `usePreloadedQuery`, `useMutation`, `usePaginationFragment`, `graphql` template literals, `react-relay` imports, or `__generated__\u002F*.graphql` files. Also use when asked to explain Relay concepts, debug Relay issues, or review Relay code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[564,567,570,573,576],{"name":565,"slug":566,"type":16},"Engineering","engineering",{"name":568,"slug":569,"type":16},"Frontend","frontend",{"name":571,"slug":572,"type":16},"GraphQL","graphql",{"name":574,"slug":575,"type":16},"React","react",{"name":577,"slug":578,"type":16},"Relay","relay",18950,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Frelay","2026-04-22T04:58:15.370563",{"slug":583,"name":583,"fn":584,"description":585,"org":586,"tags":587,"stars":579,"repoUrl":580,"updatedAt":595},"relay-performance","optimize Relay application performance","Performance best practices for Relay applications. Use when optimizing data fetching, reducing re-renders, configuring caching, or improving time to first meaningful paint. Covers query placement, @defer, pagination, fetch policies, garbage collection, fragment granularity, and server-side filtering. Companion to the relay-best-practices skill which covers correctness and architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[588,589,590,593,594],{"name":568,"slug":569,"type":16},{"name":571,"slug":572,"type":16},{"name":591,"slug":592,"type":16},"Performance","performance",{"name":574,"slug":575,"type":16},{"name":577,"slug":578,"type":16},"2026-06-10T07:30:28.726513",{"slug":597,"name":597,"fn":598,"description":599,"org":600,"tags":601,"stars":614,"repoUrl":615,"updatedAt":616},"add-shape-types-to-torch-model","annotate PyTorch models with tensor shapes","Port a PyTorch model to use pyrefly's tensor shape type system (Tensor[[B, C, H, W]], Int[T]). Use this skill whenever the user wants to add shape annotations to a PyTorch model, type a model with tensor dimensions, port a model to use shape tracking, or annotate model forward methods with tensor shapes. Also use when the user mentions tensor shape ports, Int types for PyTorch, or pyrefly shape checking on a model file. Invoke BEFORE starting any model port — the skill's gated workflow prevents common failure modes.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[602,605,608,611],{"name":603,"slug":604,"type":16},"Data Modeling","data-modeling",{"name":606,"slug":607,"type":16},"Deep Learning","deep-learning",{"name":609,"slug":610,"type":16},"Python","python",{"name":612,"slug":613,"type":16},"PyTorch","pytorch",6833,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpyrefly","2026-07-18T05:12:08.515952",{"slug":618,"name":618,"fn":619,"description":620,"org":621,"tags":622,"stars":26,"repoUrl":27,"updatedAt":633},"camera-streaming","configure camera streaming and photo capture","Stream, video frames, photo capture, resolution\u002Fframe rate configuration",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[623,626,629,630],{"name":624,"slug":625,"type":16},"Camera","camera",{"name":627,"slug":628,"type":16},"Hardware","hardware",{"name":14,"slug":15,"type":16},{"name":631,"slug":632,"type":16},"Video","video","2026-08-06T05:38:47.523424",{"slug":635,"name":635,"fn":636,"description":637,"org":638,"tags":639,"stars":26,"repoUrl":27,"updatedAt":648},"dat-conventions","develop iOS applications with DAT SDK","Swift patterns, async\u002Fawait, naming conventions, key types for DAT SDK iOS development",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[640,641,642,645],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":643,"slug":644,"type":16},"SDK","sdk",{"name":646,"slug":647,"type":16},"Swift","swift","2026-08-06T05:38:49.536777",{"slug":25,"name":25,"fn":650,"description":651,"org":652,"tags":653,"stars":26,"repoUrl":27,"updatedAt":657},"debug wearable device software","Common issues, Developer Mode, version compatibility, state machine diagnosis",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[654,655,656],{"name":24,"slug":25,"type":16},{"name":565,"slug":566,"type":16},{"name":14,"slug":15,"type":16},"2026-08-06T05:38:50.51086",{"slug":659,"name":659,"fn":660,"description":661,"org":662,"tags":663,"stars":26,"repoUrl":27,"updatedAt":677},"display-access","manage display capabilities on wearable devices","Display capability setup, display-capable device selection, UI DSL, icons, buttons, images, and video playback",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[664,667,670,673,676],{"name":665,"slug":666,"type":16},"Design","design",{"name":668,"slug":669,"type":16},"Images","images",{"name":671,"slug":672,"type":16},"Interaction","interaction",{"name":674,"slug":675,"type":16},"UI Components","ui-components",{"name":631,"slug":632,"type":16},"2026-08-06T05:38:53.520488",{"slug":679,"name":679,"fn":680,"description":681,"org":682,"tags":683,"stars":26,"repoUrl":27,"updatedAt":690},"getting-started","set up Meta wearable SDK integration","SDK setup, Swift Package Manager integration, Info.plist configuration, and first connection to Meta glasses",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[684,687,688,689],{"name":685,"slug":686,"type":16},"Configuration","configuration",{"name":14,"slug":15,"type":16},{"name":643,"slug":644,"type":16},{"name":646,"slug":647,"type":16},"2026-08-06T05:38:48.514522",{"slug":4,"name":4,"fn":5,"description":6,"org":692,"tags":693,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[694,695,696,697],{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"slug":699,"name":699,"fn":700,"description":701,"org":702,"tags":703,"stars":26,"repoUrl":27,"updatedAt":712},"mockdevice-testing","test wearable apps with mock devices","MockDeviceKit for testing without physical glasses hardware",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[704,705,706,709],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":707,"slug":708,"type":16},"QA","qa",{"name":710,"slug":711,"type":16},"Testing","testing","2026-05-15T06:14:37.406692",{"slug":714,"name":714,"fn":715,"description":716,"org":717,"tags":718,"stars":26,"repoUrl":27,"updatedAt":724},"permissions-registration","register apps with Meta AI","App registration with Meta AI, camera permission flows",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[719,720,721],{"name":624,"slug":625,"type":16},{"name":14,"slug":15,"type":16},{"name":722,"slug":723,"type":16},"Permissions","permissions","2026-05-15T06:14:46.030253",{"slug":726,"name":726,"fn":727,"description":728,"org":729,"tags":730,"stars":26,"repoUrl":27,"updatedAt":734},"sample-app-guide","build wearable apps with camera streaming","Building a complete DAT app with camera streaming and photo capture",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[731,732,733],{"name":624,"slug":625,"type":16},{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},"2026-08-06T05:38:51.509255",21,{"items":737,"total":787},[738,745,752,758,766,773,780],{"slug":618,"name":618,"fn":619,"description":620,"org":739,"tags":740,"stars":26,"repoUrl":27,"updatedAt":633},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[741,742,743,744],{"name":624,"slug":625,"type":16},{"name":627,"slug":628,"type":16},{"name":14,"slug":15,"type":16},{"name":631,"slug":632,"type":16},{"slug":635,"name":635,"fn":636,"description":637,"org":746,"tags":747,"stars":26,"repoUrl":27,"updatedAt":648},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[748,749,750,751],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":643,"slug":644,"type":16},{"name":646,"slug":647,"type":16},{"slug":25,"name":25,"fn":650,"description":651,"org":753,"tags":754,"stars":26,"repoUrl":27,"updatedAt":657},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[755,756,757],{"name":24,"slug":25,"type":16},{"name":565,"slug":566,"type":16},{"name":14,"slug":15,"type":16},{"slug":659,"name":659,"fn":660,"description":661,"org":759,"tags":760,"stars":26,"repoUrl":27,"updatedAt":677},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[761,762,763,764,765],{"name":665,"slug":666,"type":16},{"name":668,"slug":669,"type":16},{"name":671,"slug":672,"type":16},{"name":674,"slug":675,"type":16},{"name":631,"slug":632,"type":16},{"slug":679,"name":679,"fn":680,"description":681,"org":767,"tags":768,"stars":26,"repoUrl":27,"updatedAt":690},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[769,770,771,772],{"name":685,"slug":686,"type":16},{"name":14,"slug":15,"type":16},{"name":643,"slug":644,"type":16},{"name":646,"slug":647,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":774,"tags":775,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[776,777,778,779],{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"slug":699,"name":699,"fn":700,"description":701,"org":781,"tags":782,"stars":26,"repoUrl":27,"updatedAt":712},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[783,784,785,786],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":707,"slug":708,"type":16},{"name":710,"slug":711,"type":16},10]