[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-meta-qr-code":3,"mdc--528ooi-key":34,"related-org-meta-qr-code":457,"related-repo-meta-qr-code":647},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"qr-code","generate QR codes locally","Generate QR codes locally without third-party services or dependencies. Uses a self-contained pure Python script (stdlib only). Data never leaves the machine. Supports PNG file output.\n",{"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],{"name":14,"slug":15,"type":16},"Automation","automation","tag",{"name":18,"slug":19,"type":16},"Images","images",{"name":21,"slug":22,"type":16},"Python","python",189,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-webapp","2026-09-01T08:30:43.001106",null,33,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI-assisted development toolkit for building web applications on Meta Ray-Ban Display glasses.","https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-webapp\u002Ftree\u002FHEAD\u002Fplugins\u002Fmeta-wearables-webapp\u002Fskills\u002Fqr-code","---\nname: qr-code\ndescription: >\n  Generate QR codes locally without third-party services or dependencies.\n  Uses a self-contained pure Python script (stdlib only). Data never leaves\n  the machine. Supports PNG file output.\napply_to_user_prompt: 'qr.?code|generate.*qr|create.*qr|make.*qr|qr.*png'\n---\n\n# QR Code Generator\n\nGenerate QR codes locally using a pure Python script with zero external dependencies.\nAll data stays on the local machine — nothing is sent to any third-party service.\n\n## When This Skill Activates\n\n- User wants to generate a QR code for a URL, text, or any data\n- User asks to create a scannable QR code image (PNG)\n\n## How to Use\n\nThe QR generator script is at:\n```\nskills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py\n```\n\nRun it with `python3` (macOS\u002FLinux) or `python` (Windows).\n\n### PNG File Output\n\nSave the QR code as a PNG image file:\n\n```bash\npython3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Fqr_output.png \"https:\u002F\u002Fexample.com\"\n```\n\n### Options\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--png FILE` | Save as PNG to FILE | (required) |\n| `--scale N` | PNG pixels per QR module | `10` |\n| `--open` | Open the PNG in the OS default image viewer after saving | off |\n\n## Workflow\n\n1. Determine what the user wants to encode (URL, text, etc.)\n2. Run the script via Bash tool with `--png \u003Cpath> --open` to save as PNG and open it for scanning\n3. Inform the user of the saved file path\n\n## Limitations\n\n- Supports QR versions 1-10 (up to ~271 characters)\n- Only byte mode encoding (handles all UTF-8 text, URLs, etc.)\n\n## Examples\n\nGenerate QR for a URL:\n```bash\npython3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Flink_qr.png --open \"https:\u002F\u002Fmeta.com\"\n```\n\nGenerate QR for plain text:\n```bash\npython3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Fmessage_qr.png --open \"Thank god it's Friday!\"\n```\n",{"data":35,"body":37},{"name":4,"description":6,"apply_to_user_prompt":36},"qr.?code|generate.*qr|create.*qr|make.*qr|qr.*png",{"type":38,"children":39},"root",[40,49,55,62,77,83,88,101,121,128,133,185,191,294,300,327,333,346,352,357,402,407,451],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"qr-code-generator",[46],{"type":47,"value":48},"text","QR Code Generator",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53],{"type":47,"value":54},"Generate QR codes locally using a pure Python script with zero external dependencies.\nAll data stays on the local machine — nothing is sent to any third-party service.",{"type":41,"tag":56,"props":57,"children":59},"h2",{"id":58},"when-this-skill-activates",[60],{"type":47,"value":61},"When This Skill Activates",{"type":41,"tag":63,"props":64,"children":65},"ul",{},[66,72],{"type":41,"tag":67,"props":68,"children":69},"li",{},[70],{"type":47,"value":71},"User wants to generate a QR code for a URL, text, or any data",{"type":41,"tag":67,"props":73,"children":74},{},[75],{"type":47,"value":76},"User asks to create a scannable QR code image (PNG)",{"type":41,"tag":56,"props":78,"children":80},{"id":79},"how-to-use",[81],{"type":47,"value":82},"How to Use",{"type":41,"tag":50,"props":84,"children":85},{},[86],{"type":47,"value":87},"The QR generator script is at:",{"type":41,"tag":89,"props":90,"children":94},"pre",{"className":91,"code":93,"language":47},[92],"language-text","skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py\n",[95],{"type":41,"tag":96,"props":97,"children":99},"code",{"__ignoreMap":98},"",[100],{"type":47,"value":93},{"type":41,"tag":50,"props":102,"children":103},{},[104,106,112,114,119],{"type":47,"value":105},"Run it with ",{"type":41,"tag":96,"props":107,"children":109},{"className":108},[],[110],{"type":47,"value":111},"python3",{"type":47,"value":113}," (macOS\u002FLinux) or ",{"type":41,"tag":96,"props":115,"children":117},{"className":116},[],[118],{"type":47,"value":22},{"type":47,"value":120}," (Windows).",{"type":41,"tag":122,"props":123,"children":125},"h3",{"id":124},"png-file-output",[126],{"type":47,"value":127},"PNG File Output",{"type":41,"tag":50,"props":129,"children":130},{},[131],{"type":47,"value":132},"Save the QR code as a PNG image file:",{"type":41,"tag":89,"props":134,"children":138},{"className":135,"code":136,"language":137,"meta":98,"style":98},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Fqr_output.png \"https:\u002F\u002Fexample.com\"\n","bash",[139],{"type":41,"tag":96,"props":140,"children":141},{"__ignoreMap":98},[142],{"type":41,"tag":143,"props":144,"children":147},"span",{"class":145,"line":146},"line",1,[148,153,159,164,169,175,180],{"type":41,"tag":143,"props":149,"children":151},{"style":150},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[152],{"type":47,"value":111},{"type":41,"tag":143,"props":154,"children":156},{"style":155},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[157],{"type":47,"value":158}," skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py",{"type":41,"tag":143,"props":160,"children":161},{"style":155},[162],{"type":47,"value":163}," --png",{"type":41,"tag":143,"props":165,"children":166},{"style":155},[167],{"type":47,"value":168}," \u002Ftmp\u002Fqr_output.png",{"type":41,"tag":143,"props":170,"children":172},{"style":171},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[173],{"type":47,"value":174}," \"",{"type":41,"tag":143,"props":176,"children":177},{"style":155},[178],{"type":47,"value":179},"https:\u002F\u002Fexample.com",{"type":41,"tag":143,"props":181,"children":182},{"style":171},[183],{"type":47,"value":184},"\"\n",{"type":41,"tag":122,"props":186,"children":188},{"id":187},"options",[189],{"type":47,"value":190},"Options",{"type":41,"tag":192,"props":193,"children":194},"table",{},[195,219],{"type":41,"tag":196,"props":197,"children":198},"thead",{},[199],{"type":41,"tag":200,"props":201,"children":202},"tr",{},[203,209,214],{"type":41,"tag":204,"props":205,"children":206},"th",{},[207],{"type":47,"value":208},"Flag",{"type":41,"tag":204,"props":210,"children":211},{},[212],{"type":47,"value":213},"Description",{"type":41,"tag":204,"props":215,"children":216},{},[217],{"type":47,"value":218},"Default",{"type":41,"tag":220,"props":221,"children":222},"tbody",{},[223,246,272],{"type":41,"tag":200,"props":224,"children":225},{},[226,236,241],{"type":41,"tag":227,"props":228,"children":229},"td",{},[230],{"type":41,"tag":96,"props":231,"children":233},{"className":232},[],[234],{"type":47,"value":235},"--png FILE",{"type":41,"tag":227,"props":237,"children":238},{},[239],{"type":47,"value":240},"Save as PNG to FILE",{"type":41,"tag":227,"props":242,"children":243},{},[244],{"type":47,"value":245},"(required)",{"type":41,"tag":200,"props":247,"children":248},{},[249,258,263],{"type":41,"tag":227,"props":250,"children":251},{},[252],{"type":41,"tag":96,"props":253,"children":255},{"className":254},[],[256],{"type":47,"value":257},"--scale N",{"type":41,"tag":227,"props":259,"children":260},{},[261],{"type":47,"value":262},"PNG pixels per QR module",{"type":41,"tag":227,"props":264,"children":265},{},[266],{"type":41,"tag":96,"props":267,"children":269},{"className":268},[],[270],{"type":47,"value":271},"10",{"type":41,"tag":200,"props":273,"children":274},{},[275,284,289],{"type":41,"tag":227,"props":276,"children":277},{},[278],{"type":41,"tag":96,"props":279,"children":281},{"className":280},[],[282],{"type":47,"value":283},"--open",{"type":41,"tag":227,"props":285,"children":286},{},[287],{"type":47,"value":288},"Open the PNG in the OS default image viewer after saving",{"type":41,"tag":227,"props":290,"children":291},{},[292],{"type":47,"value":293},"off",{"type":41,"tag":56,"props":295,"children":297},{"id":296},"workflow",[298],{"type":47,"value":299},"Workflow",{"type":41,"tag":301,"props":302,"children":303},"ol",{},[304,309,322],{"type":41,"tag":67,"props":305,"children":306},{},[307],{"type":47,"value":308},"Determine what the user wants to encode (URL, text, etc.)",{"type":41,"tag":67,"props":310,"children":311},{},[312,314,320],{"type":47,"value":313},"Run the script via Bash tool with ",{"type":41,"tag":96,"props":315,"children":317},{"className":316},[],[318],{"type":47,"value":319},"--png \u003Cpath> --open",{"type":47,"value":321}," to save as PNG and open it for scanning",{"type":41,"tag":67,"props":323,"children":324},{},[325],{"type":47,"value":326},"Inform the user of the saved file path",{"type":41,"tag":56,"props":328,"children":330},{"id":329},"limitations",[331],{"type":47,"value":332},"Limitations",{"type":41,"tag":63,"props":334,"children":335},{},[336,341],{"type":41,"tag":67,"props":337,"children":338},{},[339],{"type":47,"value":340},"Supports QR versions 1-10 (up to ~271 characters)",{"type":41,"tag":67,"props":342,"children":343},{},[344],{"type":47,"value":345},"Only byte mode encoding (handles all UTF-8 text, URLs, etc.)",{"type":41,"tag":56,"props":347,"children":349},{"id":348},"examples",[350],{"type":47,"value":351},"Examples",{"type":41,"tag":50,"props":353,"children":354},{},[355],{"type":47,"value":356},"Generate QR for a URL:",{"type":41,"tag":89,"props":358,"children":360},{"className":135,"code":359,"language":137,"meta":98,"style":98},"python3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Flink_qr.png --open \"https:\u002F\u002Fmeta.com\"\n",[361],{"type":41,"tag":96,"props":362,"children":363},{"__ignoreMap":98},[364],{"type":41,"tag":143,"props":365,"children":366},{"class":145,"line":146},[367,371,375,379,384,389,393,398],{"type":41,"tag":143,"props":368,"children":369},{"style":150},[370],{"type":47,"value":111},{"type":41,"tag":143,"props":372,"children":373},{"style":155},[374],{"type":47,"value":158},{"type":41,"tag":143,"props":376,"children":377},{"style":155},[378],{"type":47,"value":163},{"type":41,"tag":143,"props":380,"children":381},{"style":155},[382],{"type":47,"value":383}," \u002Ftmp\u002Flink_qr.png",{"type":41,"tag":143,"props":385,"children":386},{"style":155},[387],{"type":47,"value":388}," --open",{"type":41,"tag":143,"props":390,"children":391},{"style":171},[392],{"type":47,"value":174},{"type":41,"tag":143,"props":394,"children":395},{"style":155},[396],{"type":47,"value":397},"https:\u002F\u002Fmeta.com",{"type":41,"tag":143,"props":399,"children":400},{"style":171},[401],{"type":47,"value":184},{"type":41,"tag":50,"props":403,"children":404},{},[405],{"type":47,"value":406},"Generate QR for plain text:",{"type":41,"tag":89,"props":408,"children":410},{"className":135,"code":409,"language":137,"meta":98,"style":98},"python3 skills\u002Fqr-code\u002Fscripts\u002Fqr_generator.py --png \u002Ftmp\u002Fmessage_qr.png --open \"Thank god it's Friday!\"\n",[411],{"type":41,"tag":96,"props":412,"children":413},{"__ignoreMap":98},[414],{"type":41,"tag":143,"props":415,"children":416},{"class":145,"line":146},[417,421,425,429,434,438,442,447],{"type":41,"tag":143,"props":418,"children":419},{"style":150},[420],{"type":47,"value":111},{"type":41,"tag":143,"props":422,"children":423},{"style":155},[424],{"type":47,"value":158},{"type":41,"tag":143,"props":426,"children":427},{"style":155},[428],{"type":47,"value":163},{"type":41,"tag":143,"props":430,"children":431},{"style":155},[432],{"type":47,"value":433}," \u002Ftmp\u002Fmessage_qr.png",{"type":41,"tag":143,"props":435,"children":436},{"style":155},[437],{"type":47,"value":388},{"type":41,"tag":143,"props":439,"children":440},{"style":171},[441],{"type":47,"value":174},{"type":41,"tag":143,"props":443,"children":444},{"style":155},[445],{"type":47,"value":446},"Thank god it's Friday!",{"type":41,"tag":143,"props":448,"children":449},{"style":171},[450],{"type":47,"value":184},{"type":41,"tag":452,"props":453,"children":454},"style",{},[455],{"type":47,"value":456},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":458,"total":646},[459,483,497,516,537,554,565,583,596,609,624,636],{"slug":460,"name":460,"fn":461,"description":462,"org":463,"tags":464,"stars":480,"repoUrl":481,"updatedAt":482},"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},[465,468,471,474,477],{"name":466,"slug":467,"type":16},"Engineering","engineering",{"name":469,"slug":470,"type":16},"Frontend","frontend",{"name":472,"slug":473,"type":16},"GraphQL","graphql",{"name":475,"slug":476,"type":16},"React","react",{"name":478,"slug":479,"type":16},"Relay","relay",18950,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Frelay","2026-04-22T04:58:15.370563",{"slug":484,"name":484,"fn":485,"description":486,"org":487,"tags":488,"stars":480,"repoUrl":481,"updatedAt":496},"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},[489,490,491,494,495],{"name":469,"slug":470,"type":16},{"name":472,"slug":473,"type":16},{"name":492,"slug":493,"type":16},"Performance","performance",{"name":475,"slug":476,"type":16},{"name":478,"slug":479,"type":16},"2026-06-10T07:30:28.726513",{"slug":498,"name":498,"fn":499,"description":500,"org":501,"tags":502,"stars":513,"repoUrl":514,"updatedAt":515},"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},[503,506,509,510],{"name":504,"slug":505,"type":16},"Data Modeling","data-modeling",{"name":507,"slug":508,"type":16},"Deep Learning","deep-learning",{"name":21,"slug":22,"type":16},{"name":511,"slug":512,"type":16},"PyTorch","pytorch",6833,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpyrefly","2026-07-18T05:12:08.515952",{"slug":517,"name":517,"fn":518,"description":519,"org":520,"tags":521,"stars":534,"repoUrl":535,"updatedAt":536},"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},[522,525,528,531],{"name":523,"slug":524,"type":16},"Camera","camera",{"name":526,"slug":527,"type":16},"Hardware","hardware",{"name":529,"slug":530,"type":16},"iOS","ios",{"name":532,"slug":533,"type":16},"Video","video",488,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios","2026-08-06T05:38:47.523424",{"slug":538,"name":538,"fn":539,"description":540,"org":541,"tags":542,"stars":534,"repoUrl":535,"updatedAt":553},"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},[543,544,547,550],{"name":529,"slug":530,"type":16},{"name":545,"slug":546,"type":16},"Mobile","mobile",{"name":548,"slug":549,"type":16},"SDK","sdk",{"name":551,"slug":552,"type":16},"Swift","swift","2026-08-06T05:38:49.536777",{"slug":555,"name":555,"fn":556,"description":557,"org":558,"tags":559,"stars":534,"repoUrl":535,"updatedAt":564},"debugging","debug wearable device software","Common issues, Developer Mode, version compatibility, state machine diagnosis",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[560,562,563],{"name":561,"slug":555,"type":16},"Debugging",{"name":466,"slug":467,"type":16},{"name":529,"slug":530,"type":16},"2026-08-06T05:38:50.51086",{"slug":566,"name":566,"fn":567,"description":568,"org":569,"tags":570,"stars":534,"repoUrl":535,"updatedAt":582},"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},[571,574,575,578,581],{"name":572,"slug":573,"type":16},"Design","design",{"name":18,"slug":19,"type":16},{"name":576,"slug":577,"type":16},"Interaction","interaction",{"name":579,"slug":580,"type":16},"UI Components","ui-components",{"name":532,"slug":533,"type":16},"2026-08-06T05:38:53.520488",{"slug":584,"name":584,"fn":585,"description":586,"org":587,"tags":588,"stars":534,"repoUrl":535,"updatedAt":595},"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},[589,592,593,594],{"name":590,"slug":591,"type":16},"Configuration","configuration",{"name":529,"slug":530,"type":16},{"name":548,"slug":549,"type":16},{"name":551,"slug":552,"type":16},"2026-08-06T05:38:48.514522",{"slug":597,"name":597,"fn":598,"description":599,"org":600,"tags":601,"stars":534,"repoUrl":535,"updatedAt":608},"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},[602,603,604,607],{"name":561,"slug":555,"type":16},{"name":529,"slug":530,"type":16},{"name":605,"slug":606,"type":16},"MCP","mcp",{"name":545,"slug":546,"type":16},"2026-08-06T06:09:15.013902",{"slug":610,"name":610,"fn":611,"description":612,"org":613,"tags":614,"stars":534,"repoUrl":535,"updatedAt":623},"mockdevice-testing","test wearable apps with mock devices","MockDeviceKit for testing without physical glasses hardware",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[615,616,617,620],{"name":529,"slug":530,"type":16},{"name":545,"slug":546,"type":16},{"name":618,"slug":619,"type":16},"QA","qa",{"name":621,"slug":622,"type":16},"Testing","testing","2026-05-15T06:14:37.406692",{"slug":625,"name":625,"fn":626,"description":627,"org":628,"tags":629,"stars":534,"repoUrl":535,"updatedAt":635},"permissions-registration","register apps with Meta AI","App registration with Meta AI, camera permission flows",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[630,631,632],{"name":523,"slug":524,"type":16},{"name":529,"slug":530,"type":16},{"name":633,"slug":634,"type":16},"Permissions","permissions","2026-05-15T06:14:46.030253",{"slug":637,"name":637,"fn":638,"description":639,"org":640,"tags":641,"stars":534,"repoUrl":535,"updatedAt":645},"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},[642,643,644],{"name":523,"slug":524,"type":16},{"name":529,"slug":530,"type":16},{"name":545,"slug":546,"type":16},"2026-08-06T05:38:51.509255",34,{"items":648,"total":739},[649,661,671,685,697,709,722],{"slug":650,"name":650,"fn":651,"description":652,"org":653,"tags":654,"stars":23,"repoUrl":24,"updatedAt":660},"add-device-sensors","integrate device sensor data","Add device sensor data to a Meta Display Glasses webapp — IMU (accelerometer, gyroscope, orientation) via DeviceMotionEvent\u002FDeviceOrientationEvent, and GPS location via navigator.geolocation. Use when the user wants motion tracking, compass, level tool, step counter, shake detection, head tracking, or location.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[655,656,657],{"name":469,"slug":470,"type":16},{"name":526,"slug":527,"type":16},{"name":658,"slug":659,"type":16},"IoT","iot","2026-09-01T08:30:33.453548",{"slug":662,"name":662,"fn":663,"description":664,"org":665,"tags":666,"stars":23,"repoUrl":24,"updatedAt":670},"add-gestures","handle gesture interactions in webapps","Handle EMG pinch (tap-to-activate) and opt into continuous pinch-and-drag in a Meta Display Glasses webapp. Use when the user wants sliders, drawing, maps, drag interactions, or game-style continuous input.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[667,668,669],{"name":572,"slug":573,"type":16},{"name":469,"slug":470,"type":16},{"name":576,"slug":577,"type":16},"2026-09-01T08:30:53.889244",{"slug":672,"name":672,"fn":673,"description":674,"org":675,"tags":676,"stars":23,"repoUrl":24,"updatedAt":684},"add-local-storage","add client-side data persistence","Add client-side data persistence to a Meta Display Glasses webapp using the W3C Web Storage API (localStorage and sessionStorage). Use when the user wants to save settings, cache data, persist state, or store user preferences.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[677,678,681],{"name":469,"slug":470,"type":16},{"name":679,"slug":680,"type":16},"Persistence","persistence",{"name":682,"slug":683,"type":16},"Storage","storage","2026-09-01T08:30:31.384362",{"slug":686,"name":686,"fn":687,"description":688,"org":689,"tags":690,"stars":23,"repoUrl":24,"updatedAt":696},"add-offline","enable offline support for webapps","Make a Meta Display Glasses webapp work offline with a Service Worker + Cache API (precache the app shell, cache-first fetch, online\u002Foffline UI). Use when the user wants offline support or resilience to flaky Wi-Fi.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[691,692,695],{"name":469,"slug":470,"type":16},{"name":693,"slug":694,"type":16},"Offline","offline",{"name":492,"slug":493,"type":16},"2026-09-01T08:30:33.83287",{"slug":698,"name":698,"fn":699,"description":700,"org":701,"tags":702,"stars":23,"repoUrl":24,"updatedAt":708},"add-text-input","add text input to webapps","Add text entry to a Meta Display Glasses webapp. Standard HTML inputs open the on-glasses composer (handwriting + voice) when focused and tapped. Use when the user wants a text field, search box, form input, or notes area.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[703,706,707],{"name":704,"slug":705,"type":16},"Forms","forms",{"name":469,"slug":470,"type":16},{"name":579,"slug":580,"type":16},"2026-09-01T08:30:30.563354",{"slug":710,"name":710,"fn":711,"description":712,"org":713,"tags":714,"stars":23,"repoUrl":24,"updatedAt":721},"add-ui","add UI components to webapps","Add UI components to a Meta Display Glasses webapp — screens, buttons, lists, cards, forms, toggles, counters, or nav bars. Works with vanilla JS and React apps. Use when the user wants to add any interactive UI element or new screen.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[715,716,719,720],{"name":469,"slug":470,"type":16},{"name":717,"slug":718,"type":16},"JavaScript","javascript",{"name":475,"slug":476,"type":16},{"name":579,"slug":580,"type":16},"2026-09-01T08:30:27.477785",{"slug":723,"name":723,"fn":724,"description":725,"org":726,"tags":727,"stars":23,"repoUrl":24,"updatedAt":738},"connect-api","connect webapps to REST APIs and WebSockets","Connect a Meta Display Glasses webapp to REST APIs or WebSockets. Use when the user wants to fetch data from an API, add real-time updates, show loading\u002Ferror states, or cache API responses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[728,731,732,735],{"name":729,"slug":730,"type":16},"API Development","api-development",{"name":469,"slug":470,"type":16},{"name":733,"slug":734,"type":16},"REST API","rest-api",{"name":736,"slug":737,"type":16},"WebSockets","websockets","2026-09-01T08:30:30.968156",12]