[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-meta-debug-webhooks":3,"mdc-nlejlx-key":33,"related-org-meta-debug-webhooks":703,"related-repo-meta-debug-webhooks":895},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":23,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"debug-webhooks","troubleshoot Meta app webhooks","Troubleshoot webhook issues for a Meta app — inspect active subscriptions, identify misconfiguration, and send test payloads to verify delivery. Use when webhooks aren't working as expected.",{"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},"API Development","api-development","tag",{"name":18,"slug":19,"type":16},"Webhooks","webhooks",{"name":21,"slug":22,"type":16},"Debugging","debugging",0,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fagentic-tools","2026-07-21T05:38:38.458938","MIT",[],{"repoUrl":24,"stars":23,"forks":23,"topics":29,"description":30},[],"Agentic tools plugin and skills","https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fagentic-tools\u002Ftree\u002FHEAD\u002Fplugins\u002Fdevtools\u002Fskills\u002Fdebug-webhooks","---\nname: debug-webhooks\ndescription: \"Troubleshoot webhook issues for a Meta app — inspect active subscriptions, identify misconfiguration, and send test payloads to verify delivery. Use when webhooks aren't working as expected.\"\nallowed-tools: mcp__devtools__devtools_webhook_list, mcp__devtools__devtools_webhook_manage, mcp__devtools__devtools_webhook_test, mcp__devtools__devtools_app_list\nlicense: MIT\n---\n\n# Debug Webhooks\n\nDiagnose and fix webhook delivery issues for a Meta app.\n\n## Workflow\n\n1. **Get context.** Ask the user for:\n   - The app **name or ID** — if they give a name (or aren't sure of the ID), resolve it to an `app_id` via `devtools_app_list` (action `list`); if several apps match or it's ambiguous, show the candidates (name, ID, viewer role) and ask the user to pick\n   - What's going wrong (not receiving events? wrong data? specific topic?)\n\n2. **Inspect current state.** Run in parallel:\n   - `devtools_webhook_list` with action `list_subscriptions` — all active subscriptions\n   - `devtools_webhook_list` with action `list_topics` — all available topics (for comparison)\n\n3. **Diagnose.** Check for common issues:\n\n   **No subscriptions found**\n   - The topic the user expects events from has no active subscription\n   - Suggest using `\u002Fwebhook-setup` to create one\n\n   **Subscription exists but no events received**\n   - Send a test payload: `devtools_webhook_test` with action `test_send` for the relevant topic and field\n   - If test fails: callback URL may be down, unreachable, or not returning 200\n   - If test succeeds but real events don't arrive: the issue is likely on the app side (permissions, page subscriptions, etc.)\n\n   **Wrong fields subscribed**\n   - Compare subscribed fields against what the user expects to receive\n   - If fields are missing: use `devtools_webhook_manage` with action `update_fields`, passing the missing fields via `add_fields`\n   - If extra fields cause noise: use `devtools_webhook_manage` with action `update_fields`, passing unwanted fields via `remove_fields`\n\n   **Multiple subscriptions on same topic**\n   - Flag potential conflicts or duplicate delivery\n\n4. **Test delivery.** For each relevant subscription:\n   - Call `devtools_webhook_test` with action `test_send`\n   - Report whether the test payload was accepted by the callback endpoint\n\n5. **Report findings:**\n\n   ### Report Format\n\n   **Active Subscriptions**\n   - Topic, fields, callback URL for each\n\n   **Issues Found**\n   - Each issue with severity (critical \u002F warning \u002F info)\n   - Root cause analysis\n   - Suggested fix\n\n   **Test Results**\n   - Topic\u002Ffield tested → success or failure\n   - Response details if available\n\n   **Recommended Actions**\n   - Ordered list of fixes to apply\n\n6. **Apply fixes** if the user agrees:\n   - Add missing fields via `update_fields`\n   - Remove unwanted fields via `update_fields`\n   - **Callback URL changes: `update_fields` cannot change the callback URL — it has no `callback_url` parameter and silently ignores one. To change the URL, re-run `subscribe` for the topic with the new URL and verify token: `subscribe` is an upsert (create-or-update), so it overwrites the URL in place. You do NOT need to `unsubscribe` first.**\n\n## Common Issues Reference\n\n| Symptom | Likely Cause | Fix |\n|---------|-------------|-----|\n| No events received | No subscription exists | Subscribe to the topic |\n| No events received | Callback URL returns non-200 | Fix server endpoint |\n| No events received | App lacks page\u002Faccount subscription | Subscribe the page to the app |\n| Partial events | Missing fields in subscription | Add fields via update_fields |\n| Duplicate events | Multiple subscriptions on same topic | Unsubscribe duplicates |\n| Test works, real events don't | Permission or page-level issue | Check app permissions and page subscriptions |\n| Need to change callback URL | update_fields has no callback_url param (silently ignored) | Re-run subscribe for the topic with the new URL + verify token — it upserts and overwrites the URL in place; no unsubscribe needed |\n",{"data":34,"body":36},{"name":4,"description":6,"allowed-tools":35,"license":26},"mcp__devtools__devtools_webhook_list, mcp__devtools__devtools_webhook_manage, mcp__devtools__devtools_webhook_test, mcp__devtools__devtools_app_list",{"type":37,"children":38},"root",[39,47,53,60,541,547],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","Debug Webhooks",{"type":40,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"Diagnose and fix webhook delivery issues for a Meta app.",{"type":40,"tag":54,"props":55,"children":57},"h2",{"id":56},"workflow",[58],{"type":45,"value":59},"Workflow",{"type":40,"tag":61,"props":62,"children":63},"ol",{},[64,122,171,334,368,462],{"type":40,"tag":65,"props":66,"children":67},"li",{},[68,74,76],{"type":40,"tag":69,"props":70,"children":71},"strong",{},[72],{"type":45,"value":73},"Get context.",{"type":45,"value":75}," Ask the user for:",{"type":40,"tag":77,"props":78,"children":79},"ul",{},[80,117],{"type":40,"tag":65,"props":81,"children":82},{},[83,85,90,92,99,101,107,109,115],{"type":45,"value":84},"The app ",{"type":40,"tag":69,"props":86,"children":87},{},[88],{"type":45,"value":89},"name or ID",{"type":45,"value":91}," — if they give a name (or aren't sure of the ID), resolve it to an ",{"type":40,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":45,"value":98},"app_id",{"type":45,"value":100}," via ",{"type":40,"tag":93,"props":102,"children":104},{"className":103},[],[105],{"type":45,"value":106},"devtools_app_list",{"type":45,"value":108}," (action ",{"type":40,"tag":93,"props":110,"children":112},{"className":111},[],[113],{"type":45,"value":114},"list",{"type":45,"value":116},"); if several apps match or it's ambiguous, show the candidates (name, ID, viewer role) and ask the user to pick",{"type":40,"tag":65,"props":118,"children":119},{},[120],{"type":45,"value":121},"What's going wrong (not receiving events? wrong data? specific topic?)",{"type":40,"tag":65,"props":123,"children":124},{},[125,130,132],{"type":40,"tag":69,"props":126,"children":127},{},[128],{"type":45,"value":129},"Inspect current state.",{"type":45,"value":131}," Run in parallel:",{"type":40,"tag":77,"props":133,"children":134},{},[135,154],{"type":40,"tag":65,"props":136,"children":137},{},[138,144,146,152],{"type":40,"tag":93,"props":139,"children":141},{"className":140},[],[142],{"type":45,"value":143},"devtools_webhook_list",{"type":45,"value":145}," with action ",{"type":40,"tag":93,"props":147,"children":149},{"className":148},[],[150],{"type":45,"value":151},"list_subscriptions",{"type":45,"value":153}," — all active subscriptions",{"type":40,"tag":65,"props":155,"children":156},{},[157,162,163,169],{"type":40,"tag":93,"props":158,"children":160},{"className":159},[],[161],{"type":45,"value":143},{"type":45,"value":145},{"type":40,"tag":93,"props":164,"children":166},{"className":165},[],[167],{"type":45,"value":168},"list_topics",{"type":45,"value":170}," — all available topics (for comparison)",{"type":40,"tag":65,"props":172,"children":173},{},[174,179,181,185,190,211,214,219,252,255,260,318,321,326],{"type":40,"tag":69,"props":175,"children":176},{},[177],{"type":45,"value":178},"Diagnose.",{"type":45,"value":180}," Check for common issues:",{"type":40,"tag":182,"props":183,"children":184},"br",{},[],{"type":40,"tag":69,"props":186,"children":187},{},[188],{"type":45,"value":189},"No subscriptions found",{"type":40,"tag":77,"props":191,"children":192},{},[193,198],{"type":40,"tag":65,"props":194,"children":195},{},[196],{"type":45,"value":197},"The topic the user expects events from has no active subscription",{"type":40,"tag":65,"props":199,"children":200},{},[201,203,209],{"type":45,"value":202},"Suggest using ",{"type":40,"tag":93,"props":204,"children":206},{"className":205},[],[207],{"type":45,"value":208},"\u002Fwebhook-setup",{"type":45,"value":210}," to create one",{"type":40,"tag":182,"props":212,"children":213},{},[],{"type":40,"tag":69,"props":215,"children":216},{},[217],{"type":45,"value":218},"Subscription exists but no events received",{"type":40,"tag":77,"props":220,"children":221},{},[222,242,247],{"type":40,"tag":65,"props":223,"children":224},{},[225,227,233,234,240],{"type":45,"value":226},"Send a test payload: ",{"type":40,"tag":93,"props":228,"children":230},{"className":229},[],[231],{"type":45,"value":232},"devtools_webhook_test",{"type":45,"value":145},{"type":40,"tag":93,"props":235,"children":237},{"className":236},[],[238],{"type":45,"value":239},"test_send",{"type":45,"value":241}," for the relevant topic and field",{"type":40,"tag":65,"props":243,"children":244},{},[245],{"type":45,"value":246},"If test fails: callback URL may be down, unreachable, or not returning 200",{"type":40,"tag":65,"props":248,"children":249},{},[250],{"type":45,"value":251},"If test succeeds but real events don't arrive: the issue is likely on the app side (permissions, page subscriptions, etc.)",{"type":40,"tag":182,"props":253,"children":254},{},[],{"type":40,"tag":69,"props":256,"children":257},{},[258],{"type":45,"value":259},"Wrong fields subscribed",{"type":40,"tag":77,"props":261,"children":262},{},[263,268,294],{"type":40,"tag":65,"props":264,"children":265},{},[266],{"type":45,"value":267},"Compare subscribed fields against what the user expects to receive",{"type":40,"tag":65,"props":269,"children":270},{},[271,273,279,280,286,288],{"type":45,"value":272},"If fields are missing: use ",{"type":40,"tag":93,"props":274,"children":276},{"className":275},[],[277],{"type":45,"value":278},"devtools_webhook_manage",{"type":45,"value":145},{"type":40,"tag":93,"props":281,"children":283},{"className":282},[],[284],{"type":45,"value":285},"update_fields",{"type":45,"value":287},", passing the missing fields via ",{"type":40,"tag":93,"props":289,"children":291},{"className":290},[],[292],{"type":45,"value":293},"add_fields",{"type":40,"tag":65,"props":295,"children":296},{},[297,299,304,305,310,312],{"type":45,"value":298},"If extra fields cause noise: use ",{"type":40,"tag":93,"props":300,"children":302},{"className":301},[],[303],{"type":45,"value":278},{"type":45,"value":145},{"type":40,"tag":93,"props":306,"children":308},{"className":307},[],[309],{"type":45,"value":285},{"type":45,"value":311},", passing unwanted fields via ",{"type":40,"tag":93,"props":313,"children":315},{"className":314},[],[316],{"type":45,"value":317},"remove_fields",{"type":40,"tag":182,"props":319,"children":320},{},[],{"type":40,"tag":69,"props":322,"children":323},{},[324],{"type":45,"value":325},"Multiple subscriptions on same topic",{"type":40,"tag":77,"props":327,"children":328},{},[329],{"type":40,"tag":65,"props":330,"children":331},{},[332],{"type":45,"value":333},"Flag potential conflicts or duplicate delivery",{"type":40,"tag":65,"props":335,"children":336},{},[337,342,344],{"type":40,"tag":69,"props":338,"children":339},{},[340],{"type":45,"value":341},"Test delivery.",{"type":45,"value":343}," For each relevant subscription:",{"type":40,"tag":77,"props":345,"children":346},{},[347,363],{"type":40,"tag":65,"props":348,"children":349},{},[350,352,357,358],{"type":45,"value":351},"Call ",{"type":40,"tag":93,"props":353,"children":355},{"className":354},[],[356],{"type":45,"value":232},{"type":45,"value":145},{"type":40,"tag":93,"props":359,"children":361},{"className":360},[],[362],{"type":45,"value":239},{"type":40,"tag":65,"props":364,"children":365},{},[366],{"type":45,"value":367},"Report whether the test payload was accepted by the callback endpoint",{"type":40,"tag":65,"props":369,"children":370},{},[371,376,383,386,391,399,402,407,425,428,433,446,449,454],{"type":40,"tag":69,"props":372,"children":373},{},[374],{"type":45,"value":375},"Report findings:",{"type":40,"tag":377,"props":378,"children":380},"h3",{"id":379},"report-format",[381],{"type":45,"value":382},"Report Format",{"type":40,"tag":182,"props":384,"children":385},{},[],{"type":40,"tag":69,"props":387,"children":388},{},[389],{"type":45,"value":390},"Active Subscriptions",{"type":40,"tag":77,"props":392,"children":393},{},[394],{"type":40,"tag":65,"props":395,"children":396},{},[397],{"type":45,"value":398},"Topic, fields, callback URL for each",{"type":40,"tag":182,"props":400,"children":401},{},[],{"type":40,"tag":69,"props":403,"children":404},{},[405],{"type":45,"value":406},"Issues Found",{"type":40,"tag":77,"props":408,"children":409},{},[410,415,420],{"type":40,"tag":65,"props":411,"children":412},{},[413],{"type":45,"value":414},"Each issue with severity (critical \u002F warning \u002F info)",{"type":40,"tag":65,"props":416,"children":417},{},[418],{"type":45,"value":419},"Root cause analysis",{"type":40,"tag":65,"props":421,"children":422},{},[423],{"type":45,"value":424},"Suggested fix",{"type":40,"tag":182,"props":426,"children":427},{},[],{"type":40,"tag":69,"props":429,"children":430},{},[431],{"type":45,"value":432},"Test Results",{"type":40,"tag":77,"props":434,"children":435},{},[436,441],{"type":40,"tag":65,"props":437,"children":438},{},[439],{"type":45,"value":440},"Topic\u002Ffield tested → success or failure",{"type":40,"tag":65,"props":442,"children":443},{},[444],{"type":45,"value":445},"Response details if available",{"type":40,"tag":182,"props":447,"children":448},{},[],{"type":40,"tag":69,"props":450,"children":451},{},[452],{"type":45,"value":453},"Recommended Actions",{"type":40,"tag":77,"props":455,"children":456},{},[457],{"type":40,"tag":65,"props":458,"children":459},{},[460],{"type":45,"value":461},"Ordered list of fixes to apply",{"type":40,"tag":65,"props":463,"children":464},{},[465,470,472],{"type":40,"tag":69,"props":466,"children":467},{},[468],{"type":45,"value":469},"Apply fixes",{"type":45,"value":471}," if the user agrees:",{"type":40,"tag":77,"props":473,"children":474},{},[475,485,495],{"type":40,"tag":65,"props":476,"children":477},{},[478,480],{"type":45,"value":479},"Add missing fields via ",{"type":40,"tag":93,"props":481,"children":483},{"className":482},[],[484],{"type":45,"value":285},{"type":40,"tag":65,"props":486,"children":487},{},[488,490],{"type":45,"value":489},"Remove unwanted fields via ",{"type":40,"tag":93,"props":491,"children":493},{"className":492},[],[494],{"type":45,"value":285},{"type":40,"tag":65,"props":496,"children":497},{},[498],{"type":40,"tag":69,"props":499,"children":500},{},[501,503,508,510,516,518,524,526,531,533,539],{"type":45,"value":502},"Callback URL changes: ",{"type":40,"tag":93,"props":504,"children":506},{"className":505},[],[507],{"type":45,"value":285},{"type":45,"value":509}," cannot change the callback URL — it has no ",{"type":40,"tag":93,"props":511,"children":513},{"className":512},[],[514],{"type":45,"value":515},"callback_url",{"type":45,"value":517}," parameter and silently ignores one. To change the URL, re-run ",{"type":40,"tag":93,"props":519,"children":521},{"className":520},[],[522],{"type":45,"value":523},"subscribe",{"type":45,"value":525}," for the topic with the new URL and verify token: ",{"type":40,"tag":93,"props":527,"children":529},{"className":528},[],[530],{"type":45,"value":523},{"type":45,"value":532}," is an upsert (create-or-update), so it overwrites the URL in place. You do NOT need to ",{"type":40,"tag":93,"props":534,"children":536},{"className":535},[],[537],{"type":45,"value":538},"unsubscribe",{"type":45,"value":540}," first.",{"type":40,"tag":54,"props":542,"children":544},{"id":543},"common-issues-reference",[545],{"type":45,"value":546},"Common Issues Reference",{"type":40,"tag":548,"props":549,"children":550},"table",{},[551,575],{"type":40,"tag":552,"props":553,"children":554},"thead",{},[555],{"type":40,"tag":556,"props":557,"children":558},"tr",{},[559,565,570],{"type":40,"tag":560,"props":561,"children":562},"th",{},[563],{"type":45,"value":564},"Symptom",{"type":40,"tag":560,"props":566,"children":567},{},[568],{"type":45,"value":569},"Likely Cause",{"type":40,"tag":560,"props":571,"children":572},{},[573],{"type":45,"value":574},"Fix",{"type":40,"tag":576,"props":577,"children":578},"tbody",{},[579,598,615,632,650,667,685],{"type":40,"tag":556,"props":580,"children":581},{},[582,588,593],{"type":40,"tag":583,"props":584,"children":585},"td",{},[586],{"type":45,"value":587},"No events received",{"type":40,"tag":583,"props":589,"children":590},{},[591],{"type":45,"value":592},"No subscription exists",{"type":40,"tag":583,"props":594,"children":595},{},[596],{"type":45,"value":597},"Subscribe to the topic",{"type":40,"tag":556,"props":599,"children":600},{},[601,605,610],{"type":40,"tag":583,"props":602,"children":603},{},[604],{"type":45,"value":587},{"type":40,"tag":583,"props":606,"children":607},{},[608],{"type":45,"value":609},"Callback URL returns non-200",{"type":40,"tag":583,"props":611,"children":612},{},[613],{"type":45,"value":614},"Fix server endpoint",{"type":40,"tag":556,"props":616,"children":617},{},[618,622,627],{"type":40,"tag":583,"props":619,"children":620},{},[621],{"type":45,"value":587},{"type":40,"tag":583,"props":623,"children":624},{},[625],{"type":45,"value":626},"App lacks page\u002Faccount subscription",{"type":40,"tag":583,"props":628,"children":629},{},[630],{"type":45,"value":631},"Subscribe the page to the app",{"type":40,"tag":556,"props":633,"children":634},{},[635,640,645],{"type":40,"tag":583,"props":636,"children":637},{},[638],{"type":45,"value":639},"Partial events",{"type":40,"tag":583,"props":641,"children":642},{},[643],{"type":45,"value":644},"Missing fields in subscription",{"type":40,"tag":583,"props":646,"children":647},{},[648],{"type":45,"value":649},"Add fields via update_fields",{"type":40,"tag":556,"props":651,"children":652},{},[653,658,662],{"type":40,"tag":583,"props":654,"children":655},{},[656],{"type":45,"value":657},"Duplicate events",{"type":40,"tag":583,"props":659,"children":660},{},[661],{"type":45,"value":325},{"type":40,"tag":583,"props":663,"children":664},{},[665],{"type":45,"value":666},"Unsubscribe duplicates",{"type":40,"tag":556,"props":668,"children":669},{},[670,675,680],{"type":40,"tag":583,"props":671,"children":672},{},[673],{"type":45,"value":674},"Test works, real events don't",{"type":40,"tag":583,"props":676,"children":677},{},[678],{"type":45,"value":679},"Permission or page-level issue",{"type":40,"tag":583,"props":681,"children":682},{},[683],{"type":45,"value":684},"Check app permissions and page subscriptions",{"type":40,"tag":556,"props":686,"children":687},{},[688,693,698],{"type":40,"tag":583,"props":689,"children":690},{},[691],{"type":45,"value":692},"Need to change callback URL",{"type":40,"tag":583,"props":694,"children":695},{},[696],{"type":45,"value":697},"update_fields has no callback_url param (silently ignored)",{"type":40,"tag":583,"props":699,"children":700},{},[701],{"type":45,"value":702},"Re-run subscribe for the topic with the new URL + verify token — it upserts and overwrites the URL in place; no unsubscribe needed",{"items":704,"total":894},[705,729,743,764,785,802,811,831,844,859,871,881],{"slug":706,"name":706,"fn":707,"description":708,"org":709,"tags":710,"stars":726,"repoUrl":727,"updatedAt":728},"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},[711,714,717,720,723],{"name":712,"slug":713,"type":16},"Engineering","engineering",{"name":715,"slug":716,"type":16},"Frontend","frontend",{"name":718,"slug":719,"type":16},"GraphQL","graphql",{"name":721,"slug":722,"type":16},"React","react",{"name":724,"slug":725,"type":16},"Relay","relay",18950,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Frelay","2026-04-22T04:58:15.370563",{"slug":730,"name":730,"fn":731,"description":732,"org":733,"tags":734,"stars":726,"repoUrl":727,"updatedAt":742},"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},[735,736,737,740,741],{"name":715,"slug":716,"type":16},{"name":718,"slug":719,"type":16},{"name":738,"slug":739,"type":16},"Performance","performance",{"name":721,"slug":722,"type":16},{"name":724,"slug":725,"type":16},"2026-06-10T07:30:28.726513",{"slug":744,"name":744,"fn":745,"description":746,"org":747,"tags":748,"stars":761,"repoUrl":762,"updatedAt":763},"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},[749,752,755,758],{"name":750,"slug":751,"type":16},"Data Modeling","data-modeling",{"name":753,"slug":754,"type":16},"Deep Learning","deep-learning",{"name":756,"slug":757,"type":16},"Python","python",{"name":759,"slug":760,"type":16},"PyTorch","pytorch",6833,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpyrefly","2026-07-18T05:12:08.515952",{"slug":765,"name":765,"fn":766,"description":767,"org":768,"tags":769,"stars":782,"repoUrl":783,"updatedAt":784},"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},[770,773,776,779],{"name":771,"slug":772,"type":16},"Camera","camera",{"name":774,"slug":775,"type":16},"Hardware","hardware",{"name":777,"slug":778,"type":16},"iOS","ios",{"name":780,"slug":781,"type":16},"Video","video",488,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios","2026-05-15T06:14:43.555881",{"slug":786,"name":786,"fn":787,"description":788,"org":789,"tags":790,"stars":782,"repoUrl":783,"updatedAt":801},"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},[791,792,795,798],{"name":777,"slug":778,"type":16},{"name":793,"slug":794,"type":16},"Mobile","mobile",{"name":796,"slug":797,"type":16},"SDK","sdk",{"name":799,"slug":800,"type":16},"Swift","swift","2026-05-15T06:14:42.334435",{"slug":22,"name":22,"fn":803,"description":804,"org":805,"tags":806,"stars":782,"repoUrl":783,"updatedAt":810},"debug wearable device software","Common issues, Developer Mode, version compatibility, state machine diagnosis",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[807,808,809],{"name":21,"slug":22,"type":16},{"name":712,"slug":713,"type":16},{"name":777,"slug":778,"type":16},"2026-05-15T06:14:38.626606",{"slug":812,"name":812,"fn":813,"description":814,"org":815,"tags":816,"stars":782,"repoUrl":783,"updatedAt":830},"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},[817,820,823,826,829],{"name":818,"slug":819,"type":16},"Design","design",{"name":821,"slug":822,"type":16},"Images","images",{"name":824,"slug":825,"type":16},"Interaction","interaction",{"name":827,"slug":828,"type":16},"UI Components","ui-components",{"name":780,"slug":781,"type":16},"2026-05-15T06:14:39.844502",{"slug":832,"name":832,"fn":833,"description":834,"org":835,"tags":836,"stars":782,"repoUrl":783,"updatedAt":843},"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},[837,840,841,842],{"name":838,"slug":839,"type":16},"Configuration","configuration",{"name":777,"slug":778,"type":16},{"name":796,"slug":797,"type":16},{"name":799,"slug":800,"type":16},"2026-05-15T06:14:41.086639",{"slug":845,"name":845,"fn":846,"description":847,"org":848,"tags":849,"stars":782,"repoUrl":783,"updatedAt":858},"mockdevice-testing","test wearable apps with mock devices","MockDeviceKit for testing without physical glasses hardware",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[850,851,852,855],{"name":777,"slug":778,"type":16},{"name":793,"slug":794,"type":16},{"name":853,"slug":854,"type":16},"QA","qa",{"name":856,"slug":857,"type":16},"Testing","testing","2026-05-15T06:14:37.406692",{"slug":860,"name":860,"fn":861,"description":862,"org":863,"tags":864,"stars":782,"repoUrl":783,"updatedAt":870},"permissions-registration","register apps with Meta AI","App registration with Meta AI, camera permission flows",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[865,866,867],{"name":771,"slug":772,"type":16},{"name":777,"slug":778,"type":16},{"name":868,"slug":869,"type":16},"Permissions","permissions","2026-05-15T06:14:46.030253",{"slug":872,"name":872,"fn":873,"description":874,"org":875,"tags":876,"stars":782,"repoUrl":783,"updatedAt":880},"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},[877,878,879],{"name":771,"slug":772,"type":16},{"name":777,"slug":778,"type":16},{"name":793,"slug":794,"type":16},"2026-05-15T06:14:36.185947",{"slug":882,"name":882,"fn":883,"description":884,"org":885,"tags":886,"stars":782,"repoUrl":783,"updatedAt":893},"session-lifecycle","monitor device session lifecycle states","Device session states, pause\u002Fresume, availability monitoring",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[887,888,889,892],{"name":777,"slug":778,"type":16},{"name":793,"slug":794,"type":16},{"name":890,"slug":891,"type":16},"Monitoring","monitoring",{"name":738,"slug":739,"type":16},"2026-05-15T06:14:44.790925",27,{"items":896,"total":987},[897,909,923,940,954,967,973],{"slug":898,"name":898,"fn":899,"description":900,"org":901,"tags":902,"stars":23,"repoUrl":24,"updatedAt":908},"api-health","monitor API health for Meta apps","Monitor API health for a Meta app — check rate limits, call volume, and API deprecations. Use whenever a user asks whether their app is being throttled, is near its rate limits, how much of its call volume or quota is being used, or about deprecated Graph API versions. Prefer this skill over calling devtools_api_usage directly — it resolves the app, pulls rate limits, call volume, and deprecations together, and applies the warning\u002Fthrottle thresholds and standard report format that ad-hoc tool calls miss.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[903,904,905],{"name":14,"slug":15,"type":16},{"name":890,"slug":891,"type":16},{"name":906,"slug":907,"type":16},"Observability","observability","2026-07-31T05:52:25.572894",{"slug":910,"name":910,"fn":911,"description":912,"org":913,"tags":914,"stars":23,"repoUrl":24,"updatedAt":922},"api-integration","set up Meta API integrations","Guide a developer through setting up a Meta API integration from scratch — discovers the right APIs, fetches setup guides, authentication requirements, permissions, and code examples. Use when the user wants to build with a specific Meta product (WhatsApp, Instagram, Messenger, Pages, Ads, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[915,916,919],{"name":14,"slug":15,"type":16},{"name":917,"slug":918,"type":16},"Documentation","documentation",{"name":920,"slug":921,"type":16},"Integrations","integrations","2026-07-14T05:52:01.492409",{"slug":924,"name":924,"fn":925,"description":926,"org":927,"tags":928,"stars":23,"repoUrl":24,"updatedAt":939},"app-health-check","audit Meta app health and compliance","Run a comprehensive health check on a Meta app — audits settings, security, compliance, app review status, rate limits, and API deprecations in one pass. Use when you want a full picture of an app's current state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[929,932,935,936],{"name":930,"slug":931,"type":16},"Audit","audit",{"name":933,"slug":934,"type":16},"Compliance","compliance",{"name":906,"slug":907,"type":16},{"name":937,"slug":938,"type":16},"Security","security","2026-07-14T05:52:02.758097",{"slug":941,"name":941,"fn":942,"description":943,"org":944,"tags":945,"stars":23,"repoUrl":24,"updatedAt":953},"app-review-prep","prepare Meta apps for App Review","Prepare a Meta app for App Review — checks current status, outstanding requirements, granted privileges, and submission history. Use before submitting an app for review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[946,947,950],{"name":933,"slug":934,"type":16},{"name":948,"slug":949,"type":16},"Deployment","deployment",{"name":951,"slug":952,"type":16},"Operations","operations","2026-07-14T05:52:00.233172",{"slug":955,"name":955,"fn":956,"description":957,"org":958,"tags":959,"stars":23,"repoUrl":24,"updatedAt":966},"compliance-check","check compliance status for Meta apps","Check compliance status for a Meta app — surfaces open required actions, active violations, and recommendations with remediation guidance. Use to audit compliance posture or resolve compliance blockers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[960,961,962,965],{"name":930,"slug":931,"type":16},{"name":933,"slug":934,"type":16},{"name":963,"slug":964,"type":16},"Regulatory Compliance","regulatory-compliance",{"name":937,"slug":938,"type":16},"2026-07-14T05:52:04.015719",{"slug":4,"name":4,"fn":5,"description":6,"org":968,"tags":969,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[970,971,972],{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"slug":974,"name":974,"fn":975,"description":976,"org":977,"tags":978,"stars":23,"repoUrl":24,"updatedAt":986},"search-docs","search Meta developer documentation","Search Meta developer documentation for API guides, references, and tutorials. Use when looking up how a Meta API works, finding integration guides, or exploring platform capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[979,980,983],{"name":917,"slug":918,"type":16},{"name":981,"slug":982,"type":16},"Reference","reference",{"name":984,"slug":985,"type":16},"Search","search","2026-07-14T05:51:56.473063",8]