[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-posthog-downloading-batch-export-files":3,"mdc-6lprjl-key":45,"related-org-posthog-downloading-batch-export-files":1121,"related-repo-posthog-downloading-batch-export-files":1291},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":40,"sourceUrl":43,"mdContent":44},"downloading-batch-export-files","export and download PostHog data","Export PostHog events, persons, or sessions on demand and download the resulting files. Use when the user asks to download\u002Fexport raw PostHog data, create a one-off file export, fetch a Parquet or JSONLines export, or use the file_download_batch_exports API. Covers starting the export with MCP, polling completion, and downloading via the existing REST redirect endpoint.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"posthog","PostHog","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fposthog.png",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Data Engineering","data-engineering",{"name":18,"slug":19,"type":13},"Analytics","analytics",35568,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fposthog","2026-05-27T07:15:56.423472",null,2977,[26,27,19,28,29,30,31,32,33,34,35,36,37,38,39],"ab-testing","ai-analytics","cdp","data-warehouse","experiments","feature-flags","javascript","product-analytics","python","react","session-replay","surveys","typescript","web-analytics",{"repoUrl":21,"stars":20,"forks":24,"topics":41,"description":42},[26,27,19,28,29,30,31,32,33,34,35,36,37,38,39],"🦔 PostHog is an all-in-one developer platform for building successful products. We offer product analytics, web analytics, session replay, error tracking, feature flags, experimentation, surveys, data warehouse, a CDP, and an AI product assistant to help debug your code, ship features faster, and keep all your usage and customer data in one stack.","https:\u002F\u002Fgithub.com\u002FPostHog\u002Fposthog\u002Ftree\u002FHEAD\u002Fproducts\u002Fbatch_exports\u002Fskills\u002Fdownloading-batch-export-files","---\nname: downloading-batch-export-files\ndescription: >\n  Export PostHog events, persons, or sessions on demand and download the resulting files. Use when the user asks to\n  download\u002Fexport raw PostHog data, create a one-off file export, fetch a Parquet or JSONLines export, or use the\n  file_download_batch_exports API. Covers starting the export with MCP, polling completion, and downloading via the\n  existing REST redirect endpoint.\n---\n\n# Downloading batch export files\n\nUse this skill when a user wants a one-off downloadable export of PostHog data.\nThe export is started and monitored through MCP, but the final file download uses the existing REST endpoint directly.\n\n## Available MCP tools\n\n| Tool                                           | Purpose                                                  |\n| ---------------------------------------------- | -------------------------------------------------------- |\n| `posthog:file-download-batch-exports-create`   | Start an on-demand export and return the run ID          |\n| `posthog:file-download-batch-exports-retrieve` | Poll the run status and return file IDs after completion |\n\nDo not rely on a generated MCP tool for the `\u002Fdownload\u002F` endpoint.\nThat endpoint is a redirecting file download endpoint, so raw HTTP\u002Fdownload handling is the right interface until MCP has explicit redirect support.\n\n## Workflow\n\n### 1. Choose the export shape\n\nAsk a short clarifying question if the user did not specify the required inputs:\n\n- `model`: one of `events`, `persons`, or `sessions`\n- `data_interval_start` and `data_interval_end`: ISO 8601 datetimes; the range must be at most one week\n- `file.format`: `Parquet` or `JSONLines`; prefer `Parquet` for compact analytics exports and `JSONLines` for line-oriented text processing\n- `file.compression`: optional, one of `zstd`, `gzip`, `brotli`, `lz4`, or `snappy`. If `JSONLines` was chosen as format, only `gzip` and `brotli` are supported.\n- `file.max_size_mb`: optional maximum part size in MB; set this when the user wants multiple smaller files instead of a single (potentially large) file.\n\nFor `events`, `include` and `exclude` are optional event-name filters.\nUse them only when the user asks for specific events or wants to omit specific events.\n\n### 2. Start the export\n\nCall `posthog:file-download-batch-exports-create` with the selected shape.\nThe response contains an `id` for the export run.\n\nExample request:\n\n```json\n{\n  \"model\": \"events\",\n  \"file\": {\n    \"format\": \"JSONLines\",\n    \"compression\": \"gzip\"\n  },\n  \"include\": [\"$pageview\"],\n  \"data_interval_start\": \"2026-05-25T00:00:00Z\",\n  \"data_interval_end\": \"2026-05-26T00:00:00Z\"\n}\n```\n\n### 3. Poll until completion\n\nCall `posthog:file-download-batch-exports-retrieve` with the returned `id`.\n\nStatus handling:\n\n| Status                                                                    | Action                                        |\n| ------------------------------------------------------------------------- | --------------------------------------------- |\n| `Starting` or `Running`                                                   | Wait briefly and poll again                   |\n| `Completed`                                                               | Read the `files` array and download each file |\n| `Cancelled`                                                               | Stop and report that the run was cancelled    |\n| `Failed`, `FailedRetryable`, `FailedBilling`, `Terminated`, or `TimedOut` | Stop and report the `error` field             |\n\nWhen `Completed`, the `files` array contains file UUIDs.\nFor single-file exports it usually contains one UUID.\nFor split exports, download every UUID unless the user asked for a specific part.\n\n### 4. Optionally, cancel a running export\n\nIf required by the user, a running export can be cancelled by calling `posthog:file-download-batch-exports-cancel-create` with the returned `id`.\n\nAn export that has already finished or has already failed may not be cancelled.\n\nAfter cancelling an export, the `id` may not be used anymore and the export must start again from the beginning. However, you may still use the `id` to retrieve the export status (which will always be `Cancelled`).\n\n### 5. Download files through REST\n\nUse a direct authenticated HTTP request to the existing endpoint:\n\n```text\nGET \u002Fapi\u002Fprojects\u002F{project_id}\u002Ffile_download_batch_exports\u002F{run_id}\u002Fdownload\u002F{part}\u002F\n```\n\n`part` can be either:\n\n- a file UUID from the `files` array returned by `file-download-batch-exports-retrieve`\n- a zero-based file index, ordered by key\n\nIf there is only one file, this also works without `part`:\n\n```text\nGET \u002Fapi\u002Fprojects\u002F{project_id}\u002Ffile_download_batch_exports\u002F{run_id}\u002Fdownload\u002F\n```\n\nLet the HTTP client follow the redirect, or inspect the `Location` header if you need the temporary signed URL.\nUse the same PostHog authentication context as other API calls.\n\n### 6. Save, do not print, file contents\n\nTreat the result as a file download, not a chat response.\nParquet is binary and must be written as bytes.\nJSONLines may still be large; save it to a file rather than pasting the contents unless the user explicitly asks for a tiny sample.\n\nUse a filename that includes the model, run ID, and part identifier when possible, for example:\n\n```text\nposthog-events-\u003Crun_id>-\u003Cpart>.jsonl.gz\nposthog-persons-\u003Crun_id>-\u003Cpart>.parquet\n```\n\n## Watch-outs\n\n- The maximum export interval is one week. Split longer user requests into separate export runs or ask which week to export.\n- A run can briefly report `Running` after completion while file records are being created. Poll again instead of failing immediately.\n- Download URLs are temporary. If a URL expires, call the REST download endpoint again for a fresh redirect.\n- Do not send the signed URL to unrelated services unless the user explicitly asks; it grants temporary access to the exported file.\n- If the user wants all parts of a split export, iterate over every UUID in `files`; do not assume part `0` is enough.\n- Large batch exports may take a few minutes or even longer to complete. Suggest to the user that they can speed-up their download by including only certain events or narrowing the date range.\n",{"data":46,"body":47},{"name":4,"description":6},{"type":48,"children":49},"root",[50,58,64,71,134,147,153,160,165,341,367,373,393,398,694,700,718,723,864,883,889,907,912,938,944,949,959,970,996,1007,1016,1029,1035,1040,1045,1054,1060,1115],{"type":51,"tag":52,"props":53,"children":54},"element","h1",{"id":4},[55],{"type":56,"value":57},"text","Downloading batch export files",{"type":51,"tag":59,"props":60,"children":61},"p",{},[62],{"type":56,"value":63},"Use this skill when a user wants a one-off downloadable export of PostHog data.\nThe export is started and monitored through MCP, but the final file download uses the existing REST endpoint directly.",{"type":51,"tag":65,"props":66,"children":68},"h2",{"id":67},"available-mcp-tools",[69],{"type":56,"value":70},"Available MCP tools",{"type":51,"tag":72,"props":73,"children":74},"table",{},[75,94],{"type":51,"tag":76,"props":77,"children":78},"thead",{},[79],{"type":51,"tag":80,"props":81,"children":82},"tr",{},[83,89],{"type":51,"tag":84,"props":85,"children":86},"th",{},[87],{"type":56,"value":88},"Tool",{"type":51,"tag":84,"props":90,"children":91},{},[92],{"type":56,"value":93},"Purpose",{"type":51,"tag":95,"props":96,"children":97},"tbody",{},[98,117],{"type":51,"tag":80,"props":99,"children":100},{},[101,112],{"type":51,"tag":102,"props":103,"children":104},"td",{},[105],{"type":51,"tag":106,"props":107,"children":109},"code",{"className":108},[],[110],{"type":56,"value":111},"posthog:file-download-batch-exports-create",{"type":51,"tag":102,"props":113,"children":114},{},[115],{"type":56,"value":116},"Start an on-demand export and return the run ID",{"type":51,"tag":80,"props":118,"children":119},{},[120,129],{"type":51,"tag":102,"props":121,"children":122},{},[123],{"type":51,"tag":106,"props":124,"children":126},{"className":125},[],[127],{"type":56,"value":128},"posthog:file-download-batch-exports-retrieve",{"type":51,"tag":102,"props":130,"children":131},{},[132],{"type":56,"value":133},"Poll the run status and return file IDs after completion",{"type":51,"tag":59,"props":135,"children":136},{},[137,139,145],{"type":56,"value":138},"Do not rely on a generated MCP tool for the ",{"type":51,"tag":106,"props":140,"children":142},{"className":141},[],[143],{"type":56,"value":144},"\u002Fdownload\u002F",{"type":56,"value":146}," endpoint.\nThat endpoint is a redirecting file download endpoint, so raw HTTP\u002Fdownload handling is the right interface until MCP has explicit redirect support.",{"type":51,"tag":65,"props":148,"children":150},{"id":149},"workflow",[151],{"type":56,"value":152},"Workflow",{"type":51,"tag":154,"props":155,"children":157},"h3",{"id":156},"_1-choose-the-export-shape",[158],{"type":56,"value":159},"1. Choose the export shape",{"type":51,"tag":59,"props":161,"children":162},{},[163],{"type":56,"value":164},"Ask a short clarifying question if the user did not specify the required inputs:",{"type":51,"tag":166,"props":167,"children":168},"ul",{},[169,203,222,263,330],{"type":51,"tag":170,"props":171,"children":172},"li",{},[173,179,181,187,189,195,197],{"type":51,"tag":106,"props":174,"children":176},{"className":175},[],[177],{"type":56,"value":178},"model",{"type":56,"value":180},": one of ",{"type":51,"tag":106,"props":182,"children":184},{"className":183},[],[185],{"type":56,"value":186},"events",{"type":56,"value":188},", ",{"type":51,"tag":106,"props":190,"children":192},{"className":191},[],[193],{"type":56,"value":194},"persons",{"type":56,"value":196},", or ",{"type":51,"tag":106,"props":198,"children":200},{"className":199},[],[201],{"type":56,"value":202},"sessions",{"type":51,"tag":170,"props":204,"children":205},{},[206,212,214,220],{"type":51,"tag":106,"props":207,"children":209},{"className":208},[],[210],{"type":56,"value":211},"data_interval_start",{"type":56,"value":213}," and ",{"type":51,"tag":106,"props":215,"children":217},{"className":216},[],[218],{"type":56,"value":219},"data_interval_end",{"type":56,"value":221},": ISO 8601 datetimes; the range must be at most one week",{"type":51,"tag":170,"props":223,"children":224},{},[225,231,233,239,241,247,249,254,256,261],{"type":51,"tag":106,"props":226,"children":228},{"className":227},[],[229],{"type":56,"value":230},"file.format",{"type":56,"value":232},": ",{"type":51,"tag":106,"props":234,"children":236},{"className":235},[],[237],{"type":56,"value":238},"Parquet",{"type":56,"value":240}," or ",{"type":51,"tag":106,"props":242,"children":244},{"className":243},[],[245],{"type":56,"value":246},"JSONLines",{"type":56,"value":248},"; prefer ",{"type":51,"tag":106,"props":250,"children":252},{"className":251},[],[253],{"type":56,"value":238},{"type":56,"value":255}," for compact analytics exports and ",{"type":51,"tag":106,"props":257,"children":259},{"className":258},[],[260],{"type":56,"value":246},{"type":56,"value":262}," for line-oriented text processing",{"type":51,"tag":170,"props":264,"children":265},{},[266,272,274,280,281,287,288,294,295,301,302,308,310,315,317,322,323,328],{"type":51,"tag":106,"props":267,"children":269},{"className":268},[],[270],{"type":56,"value":271},"file.compression",{"type":56,"value":273},": optional, one of ",{"type":51,"tag":106,"props":275,"children":277},{"className":276},[],[278],{"type":56,"value":279},"zstd",{"type":56,"value":188},{"type":51,"tag":106,"props":282,"children":284},{"className":283},[],[285],{"type":56,"value":286},"gzip",{"type":56,"value":188},{"type":51,"tag":106,"props":289,"children":291},{"className":290},[],[292],{"type":56,"value":293},"brotli",{"type":56,"value":188},{"type":51,"tag":106,"props":296,"children":298},{"className":297},[],[299],{"type":56,"value":300},"lz4",{"type":56,"value":196},{"type":51,"tag":106,"props":303,"children":305},{"className":304},[],[306],{"type":56,"value":307},"snappy",{"type":56,"value":309},". If ",{"type":51,"tag":106,"props":311,"children":313},{"className":312},[],[314],{"type":56,"value":246},{"type":56,"value":316}," was chosen as format, only ",{"type":51,"tag":106,"props":318,"children":320},{"className":319},[],[321],{"type":56,"value":286},{"type":56,"value":213},{"type":51,"tag":106,"props":324,"children":326},{"className":325},[],[327],{"type":56,"value":293},{"type":56,"value":329}," are supported.",{"type":51,"tag":170,"props":331,"children":332},{},[333,339],{"type":51,"tag":106,"props":334,"children":336},{"className":335},[],[337],{"type":56,"value":338},"file.max_size_mb",{"type":56,"value":340},": optional maximum part size in MB; set this when the user wants multiple smaller files instead of a single (potentially large) file.",{"type":51,"tag":59,"props":342,"children":343},{},[344,346,351,352,358,359,365],{"type":56,"value":345},"For ",{"type":51,"tag":106,"props":347,"children":349},{"className":348},[],[350],{"type":56,"value":186},{"type":56,"value":188},{"type":51,"tag":106,"props":353,"children":355},{"className":354},[],[356],{"type":56,"value":357},"include",{"type":56,"value":213},{"type":51,"tag":106,"props":360,"children":362},{"className":361},[],[363],{"type":56,"value":364},"exclude",{"type":56,"value":366}," are optional event-name filters.\nUse them only when the user asks for specific events or wants to omit specific events.",{"type":51,"tag":154,"props":368,"children":370},{"id":369},"_2-start-the-export",[371],{"type":56,"value":372},"2. Start the export",{"type":51,"tag":59,"props":374,"children":375},{},[376,378,383,385,391],{"type":56,"value":377},"Call ",{"type":51,"tag":106,"props":379,"children":381},{"className":380},[],[382],{"type":56,"value":111},{"type":56,"value":384}," with the selected shape.\nThe response contains an ",{"type":51,"tag":106,"props":386,"children":388},{"className":387},[],[389],{"type":56,"value":390},"id",{"type":56,"value":392}," for the export run.",{"type":51,"tag":59,"props":394,"children":395},{},[396],{"type":56,"value":397},"Example request:",{"type":51,"tag":399,"props":400,"children":405},"pre",{"className":401,"code":402,"language":403,"meta":404,"style":404},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"model\": \"events\",\n  \"file\": {\n    \"format\": \"JSONLines\",\n    \"compression\": \"gzip\"\n  },\n  \"include\": [\"$pageview\"],\n  \"data_interval_start\": \"2026-05-25T00:00:00Z\",\n  \"data_interval_end\": \"2026-05-26T00:00:00Z\"\n}\n","json","",[406],{"type":51,"tag":106,"props":407,"children":408},{"__ignoreMap":404},[409,421,464,490,529,563,572,615,652,685],{"type":51,"tag":410,"props":411,"children":414},"span",{"class":412,"line":413},"line",1,[415],{"type":51,"tag":410,"props":416,"children":418},{"style":417},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[419],{"type":56,"value":420},"{\n",{"type":51,"tag":410,"props":422,"children":424},{"class":412,"line":423},2,[425,430,435,440,445,450,455,459],{"type":51,"tag":410,"props":426,"children":427},{"style":417},[428],{"type":56,"value":429},"  \"",{"type":51,"tag":410,"props":431,"children":433},{"style":432},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[434],{"type":56,"value":178},{"type":51,"tag":410,"props":436,"children":437},{"style":417},[438],{"type":56,"value":439},"\"",{"type":51,"tag":410,"props":441,"children":442},{"style":417},[443],{"type":56,"value":444},":",{"type":51,"tag":410,"props":446,"children":447},{"style":417},[448],{"type":56,"value":449}," \"",{"type":51,"tag":410,"props":451,"children":453},{"style":452},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[454],{"type":56,"value":186},{"type":51,"tag":410,"props":456,"children":457},{"style":417},[458],{"type":56,"value":439},{"type":51,"tag":410,"props":460,"children":461},{"style":417},[462],{"type":56,"value":463},",\n",{"type":51,"tag":410,"props":465,"children":467},{"class":412,"line":466},3,[468,472,477,481,485],{"type":51,"tag":410,"props":469,"children":470},{"style":417},[471],{"type":56,"value":429},{"type":51,"tag":410,"props":473,"children":474},{"style":432},[475],{"type":56,"value":476},"file",{"type":51,"tag":410,"props":478,"children":479},{"style":417},[480],{"type":56,"value":439},{"type":51,"tag":410,"props":482,"children":483},{"style":417},[484],{"type":56,"value":444},{"type":51,"tag":410,"props":486,"children":487},{"style":417},[488],{"type":56,"value":489}," {\n",{"type":51,"tag":410,"props":491,"children":493},{"class":412,"line":492},4,[494,499,505,509,513,517,521,525],{"type":51,"tag":410,"props":495,"children":496},{"style":417},[497],{"type":56,"value":498},"    \"",{"type":51,"tag":410,"props":500,"children":502},{"style":501},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[503],{"type":56,"value":504},"format",{"type":51,"tag":410,"props":506,"children":507},{"style":417},[508],{"type":56,"value":439},{"type":51,"tag":410,"props":510,"children":511},{"style":417},[512],{"type":56,"value":444},{"type":51,"tag":410,"props":514,"children":515},{"style":417},[516],{"type":56,"value":449},{"type":51,"tag":410,"props":518,"children":519},{"style":452},[520],{"type":56,"value":246},{"type":51,"tag":410,"props":522,"children":523},{"style":417},[524],{"type":56,"value":439},{"type":51,"tag":410,"props":526,"children":527},{"style":417},[528],{"type":56,"value":463},{"type":51,"tag":410,"props":530,"children":532},{"class":412,"line":531},5,[533,537,542,546,550,554,558],{"type":51,"tag":410,"props":534,"children":535},{"style":417},[536],{"type":56,"value":498},{"type":51,"tag":410,"props":538,"children":539},{"style":501},[540],{"type":56,"value":541},"compression",{"type":51,"tag":410,"props":543,"children":544},{"style":417},[545],{"type":56,"value":439},{"type":51,"tag":410,"props":547,"children":548},{"style":417},[549],{"type":56,"value":444},{"type":51,"tag":410,"props":551,"children":552},{"style":417},[553],{"type":56,"value":449},{"type":51,"tag":410,"props":555,"children":556},{"style":452},[557],{"type":56,"value":286},{"type":51,"tag":410,"props":559,"children":560},{"style":417},[561],{"type":56,"value":562},"\"\n",{"type":51,"tag":410,"props":564,"children":566},{"class":412,"line":565},6,[567],{"type":51,"tag":410,"props":568,"children":569},{"style":417},[570],{"type":56,"value":571},"  },\n",{"type":51,"tag":410,"props":573,"children":575},{"class":412,"line":574},7,[576,580,584,588,592,597,601,606,610],{"type":51,"tag":410,"props":577,"children":578},{"style":417},[579],{"type":56,"value":429},{"type":51,"tag":410,"props":581,"children":582},{"style":432},[583],{"type":56,"value":357},{"type":51,"tag":410,"props":585,"children":586},{"style":417},[587],{"type":56,"value":439},{"type":51,"tag":410,"props":589,"children":590},{"style":417},[591],{"type":56,"value":444},{"type":51,"tag":410,"props":593,"children":594},{"style":417},[595],{"type":56,"value":596}," [",{"type":51,"tag":410,"props":598,"children":599},{"style":417},[600],{"type":56,"value":439},{"type":51,"tag":410,"props":602,"children":603},{"style":452},[604],{"type":56,"value":605},"$pageview",{"type":51,"tag":410,"props":607,"children":608},{"style":417},[609],{"type":56,"value":439},{"type":51,"tag":410,"props":611,"children":612},{"style":417},[613],{"type":56,"value":614},"],\n",{"type":51,"tag":410,"props":616,"children":618},{"class":412,"line":617},8,[619,623,627,631,635,639,644,648],{"type":51,"tag":410,"props":620,"children":621},{"style":417},[622],{"type":56,"value":429},{"type":51,"tag":410,"props":624,"children":625},{"style":432},[626],{"type":56,"value":211},{"type":51,"tag":410,"props":628,"children":629},{"style":417},[630],{"type":56,"value":439},{"type":51,"tag":410,"props":632,"children":633},{"style":417},[634],{"type":56,"value":444},{"type":51,"tag":410,"props":636,"children":637},{"style":417},[638],{"type":56,"value":449},{"type":51,"tag":410,"props":640,"children":641},{"style":452},[642],{"type":56,"value":643},"2026-05-25T00:00:00Z",{"type":51,"tag":410,"props":645,"children":646},{"style":417},[647],{"type":56,"value":439},{"type":51,"tag":410,"props":649,"children":650},{"style":417},[651],{"type":56,"value":463},{"type":51,"tag":410,"props":653,"children":655},{"class":412,"line":654},9,[656,660,664,668,672,676,681],{"type":51,"tag":410,"props":657,"children":658},{"style":417},[659],{"type":56,"value":429},{"type":51,"tag":410,"props":661,"children":662},{"style":432},[663],{"type":56,"value":219},{"type":51,"tag":410,"props":665,"children":666},{"style":417},[667],{"type":56,"value":439},{"type":51,"tag":410,"props":669,"children":670},{"style":417},[671],{"type":56,"value":444},{"type":51,"tag":410,"props":673,"children":674},{"style":417},[675],{"type":56,"value":449},{"type":51,"tag":410,"props":677,"children":678},{"style":452},[679],{"type":56,"value":680},"2026-05-26T00:00:00Z",{"type":51,"tag":410,"props":682,"children":683},{"style":417},[684],{"type":56,"value":562},{"type":51,"tag":410,"props":686,"children":688},{"class":412,"line":687},10,[689],{"type":51,"tag":410,"props":690,"children":691},{"style":417},[692],{"type":56,"value":693},"}\n",{"type":51,"tag":154,"props":695,"children":697},{"id":696},"_3-poll-until-completion",[698],{"type":56,"value":699},"3. Poll until completion",{"type":51,"tag":59,"props":701,"children":702},{},[703,704,709,711,716],{"type":56,"value":377},{"type":51,"tag":106,"props":705,"children":707},{"className":706},[],[708],{"type":56,"value":128},{"type":56,"value":710}," with the returned ",{"type":51,"tag":106,"props":712,"children":714},{"className":713},[],[715],{"type":56,"value":390},{"type":56,"value":717},".",{"type":51,"tag":59,"props":719,"children":720},{},[721],{"type":56,"value":722},"Status handling:",{"type":51,"tag":72,"props":724,"children":725},{},[726,742],{"type":51,"tag":76,"props":727,"children":728},{},[729],{"type":51,"tag":80,"props":730,"children":731},{},[732,737],{"type":51,"tag":84,"props":733,"children":734},{},[735],{"type":56,"value":736},"Status",{"type":51,"tag":84,"props":738,"children":739},{},[740],{"type":56,"value":741},"Action",{"type":51,"tag":95,"props":743,"children":744},{},[745,769,794,811],{"type":51,"tag":80,"props":746,"children":747},{},[748,764],{"type":51,"tag":102,"props":749,"children":750},{},[751,757,758],{"type":51,"tag":106,"props":752,"children":754},{"className":753},[],[755],{"type":56,"value":756},"Starting",{"type":56,"value":240},{"type":51,"tag":106,"props":759,"children":761},{"className":760},[],[762],{"type":56,"value":763},"Running",{"type":51,"tag":102,"props":765,"children":766},{},[767],{"type":56,"value":768},"Wait briefly and poll again",{"type":51,"tag":80,"props":770,"children":771},{},[772,781],{"type":51,"tag":102,"props":773,"children":774},{},[775],{"type":51,"tag":106,"props":776,"children":778},{"className":777},[],[779],{"type":56,"value":780},"Completed",{"type":51,"tag":102,"props":782,"children":783},{},[784,786,792],{"type":56,"value":785},"Read the ",{"type":51,"tag":106,"props":787,"children":789},{"className":788},[],[790],{"type":56,"value":791},"files",{"type":56,"value":793}," array and download each file",{"type":51,"tag":80,"props":795,"children":796},{},[797,806],{"type":51,"tag":102,"props":798,"children":799},{},[800],{"type":51,"tag":106,"props":801,"children":803},{"className":802},[],[804],{"type":56,"value":805},"Cancelled",{"type":51,"tag":102,"props":807,"children":808},{},[809],{"type":56,"value":810},"Stop and report that the run was cancelled",{"type":51,"tag":80,"props":812,"children":813},{},[814,851],{"type":51,"tag":102,"props":815,"children":816},{},[817,823,824,830,831,837,838,844,845],{"type":51,"tag":106,"props":818,"children":820},{"className":819},[],[821],{"type":56,"value":822},"Failed",{"type":56,"value":188},{"type":51,"tag":106,"props":825,"children":827},{"className":826},[],[828],{"type":56,"value":829},"FailedRetryable",{"type":56,"value":188},{"type":51,"tag":106,"props":832,"children":834},{"className":833},[],[835],{"type":56,"value":836},"FailedBilling",{"type":56,"value":188},{"type":51,"tag":106,"props":839,"children":841},{"className":840},[],[842],{"type":56,"value":843},"Terminated",{"type":56,"value":196},{"type":51,"tag":106,"props":846,"children":848},{"className":847},[],[849],{"type":56,"value":850},"TimedOut",{"type":51,"tag":102,"props":852,"children":853},{},[854,856,862],{"type":56,"value":855},"Stop and report the ",{"type":51,"tag":106,"props":857,"children":859},{"className":858},[],[860],{"type":56,"value":861},"error",{"type":56,"value":863}," field",{"type":51,"tag":59,"props":865,"children":866},{},[867,869,874,876,881],{"type":56,"value":868},"When ",{"type":51,"tag":106,"props":870,"children":872},{"className":871},[],[873],{"type":56,"value":780},{"type":56,"value":875},", the ",{"type":51,"tag":106,"props":877,"children":879},{"className":878},[],[880],{"type":56,"value":791},{"type":56,"value":882}," array contains file UUIDs.\nFor single-file exports it usually contains one UUID.\nFor split exports, download every UUID unless the user asked for a specific part.",{"type":51,"tag":154,"props":884,"children":886},{"id":885},"_4-optionally-cancel-a-running-export",[887],{"type":56,"value":888},"4. Optionally, cancel a running export",{"type":51,"tag":59,"props":890,"children":891},{},[892,894,900,901,906],{"type":56,"value":893},"If required by the user, a running export can be cancelled by calling ",{"type":51,"tag":106,"props":895,"children":897},{"className":896},[],[898],{"type":56,"value":899},"posthog:file-download-batch-exports-cancel-create",{"type":56,"value":710},{"type":51,"tag":106,"props":902,"children":904},{"className":903},[],[905],{"type":56,"value":390},{"type":56,"value":717},{"type":51,"tag":59,"props":908,"children":909},{},[910],{"type":56,"value":911},"An export that has already finished or has already failed may not be cancelled.",{"type":51,"tag":59,"props":913,"children":914},{},[915,917,922,924,929,931,936],{"type":56,"value":916},"After cancelling an export, the ",{"type":51,"tag":106,"props":918,"children":920},{"className":919},[],[921],{"type":56,"value":390},{"type":56,"value":923}," may not be used anymore and the export must start again from the beginning. However, you may still use the ",{"type":51,"tag":106,"props":925,"children":927},{"className":926},[],[928],{"type":56,"value":390},{"type":56,"value":930}," to retrieve the export status (which will always be ",{"type":51,"tag":106,"props":932,"children":934},{"className":933},[],[935],{"type":56,"value":805},{"type":56,"value":937},").",{"type":51,"tag":154,"props":939,"children":941},{"id":940},"_5-download-files-through-rest",[942],{"type":56,"value":943},"5. Download files through REST",{"type":51,"tag":59,"props":945,"children":946},{},[947],{"type":56,"value":948},"Use a direct authenticated HTTP request to the existing endpoint:",{"type":51,"tag":399,"props":950,"children":954},{"className":951,"code":953,"language":56,"meta":404},[952],"language-text","GET \u002Fapi\u002Fprojects\u002F{project_id}\u002Ffile_download_batch_exports\u002F{run_id}\u002Fdownload\u002F{part}\u002F\n",[955],{"type":51,"tag":106,"props":956,"children":957},{"__ignoreMap":404},[958],{"type":56,"value":953},{"type":51,"tag":59,"props":960,"children":961},{},[962,968],{"type":51,"tag":106,"props":963,"children":965},{"className":964},[],[966],{"type":56,"value":967},"part",{"type":56,"value":969}," can be either:",{"type":51,"tag":166,"props":971,"children":972},{},[973,991],{"type":51,"tag":170,"props":974,"children":975},{},[976,978,983,985],{"type":56,"value":977},"a file UUID from the ",{"type":51,"tag":106,"props":979,"children":981},{"className":980},[],[982],{"type":56,"value":791},{"type":56,"value":984}," array returned by ",{"type":51,"tag":106,"props":986,"children":988},{"className":987},[],[989],{"type":56,"value":990},"file-download-batch-exports-retrieve",{"type":51,"tag":170,"props":992,"children":993},{},[994],{"type":56,"value":995},"a zero-based file index, ordered by key",{"type":51,"tag":59,"props":997,"children":998},{},[999,1001,1006],{"type":56,"value":1000},"If there is only one file, this also works without ",{"type":51,"tag":106,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":56,"value":967},{"type":56,"value":444},{"type":51,"tag":399,"props":1008,"children":1011},{"className":1009,"code":1010,"language":56,"meta":404},[952],"GET \u002Fapi\u002Fprojects\u002F{project_id}\u002Ffile_download_batch_exports\u002F{run_id}\u002Fdownload\u002F\n",[1012],{"type":51,"tag":106,"props":1013,"children":1014},{"__ignoreMap":404},[1015],{"type":56,"value":1010},{"type":51,"tag":59,"props":1017,"children":1018},{},[1019,1021,1027],{"type":56,"value":1020},"Let the HTTP client follow the redirect, or inspect the ",{"type":51,"tag":106,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":56,"value":1026},"Location",{"type":56,"value":1028}," header if you need the temporary signed URL.\nUse the same PostHog authentication context as other API calls.",{"type":51,"tag":154,"props":1030,"children":1032},{"id":1031},"_6-save-do-not-print-file-contents",[1033],{"type":56,"value":1034},"6. Save, do not print, file contents",{"type":51,"tag":59,"props":1036,"children":1037},{},[1038],{"type":56,"value":1039},"Treat the result as a file download, not a chat response.\nParquet is binary and must be written as bytes.\nJSONLines may still be large; save it to a file rather than pasting the contents unless the user explicitly asks for a tiny sample.",{"type":51,"tag":59,"props":1041,"children":1042},{},[1043],{"type":56,"value":1044},"Use a filename that includes the model, run ID, and part identifier when possible, for example:",{"type":51,"tag":399,"props":1046,"children":1049},{"className":1047,"code":1048,"language":56,"meta":404},[952],"posthog-events-\u003Crun_id>-\u003Cpart>.jsonl.gz\nposthog-persons-\u003Crun_id>-\u003Cpart>.parquet\n",[1050],{"type":51,"tag":106,"props":1051,"children":1052},{"__ignoreMap":404},[1053],{"type":56,"value":1048},{"type":51,"tag":65,"props":1055,"children":1057},{"id":1056},"watch-outs",[1058],{"type":56,"value":1059},"Watch-outs",{"type":51,"tag":166,"props":1061,"children":1062},{},[1063,1068,1080,1085,1090,1110],{"type":51,"tag":170,"props":1064,"children":1065},{},[1066],{"type":56,"value":1067},"The maximum export interval is one week. Split longer user requests into separate export runs or ask which week to export.",{"type":51,"tag":170,"props":1069,"children":1070},{},[1071,1073,1078],{"type":56,"value":1072},"A run can briefly report ",{"type":51,"tag":106,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":56,"value":763},{"type":56,"value":1079}," after completion while file records are being created. Poll again instead of failing immediately.",{"type":51,"tag":170,"props":1081,"children":1082},{},[1083],{"type":56,"value":1084},"Download URLs are temporary. If a URL expires, call the REST download endpoint again for a fresh redirect.",{"type":51,"tag":170,"props":1086,"children":1087},{},[1088],{"type":56,"value":1089},"Do not send the signed URL to unrelated services unless the user explicitly asks; it grants temporary access to the exported file.",{"type":51,"tag":170,"props":1091,"children":1092},{},[1093,1095,1100,1102,1108],{"type":56,"value":1094},"If the user wants all parts of a split export, iterate over every UUID in ",{"type":51,"tag":106,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":56,"value":791},{"type":56,"value":1101},"; do not assume part ",{"type":51,"tag":106,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":56,"value":1107},"0",{"type":56,"value":1109}," is enough.",{"type":51,"tag":170,"props":1111,"children":1112},{},[1113],{"type":56,"value":1114},"Large batch exports may take a few minutes or even longer to complete. Suggest to the user that they can speed-up their download by including only certain events or narrowing the date range.",{"type":51,"tag":1116,"props":1117,"children":1118},"style",{},[1119],{"type":56,"value":1120},"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":1122,"total":1290},[1123,1138,1150,1162,1175,1190,1206,1223,1237,1252,1262,1280],{"slug":1124,"name":1124,"fn":1125,"description":1126,"org":1127,"tags":1128,"stars":20,"repoUrl":21,"updatedAt":1137},"analyzing-expensive-users","analyze expensive users in AI observability","Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top spenders, expensive users, per-user LLM cost, user-level cost drivers, or patterns behind high AI observability spend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1129,1130,1133,1136],{"name":18,"slug":19,"type":13},{"name":1131,"slug":1132,"type":13},"Cost Optimization","cost-optimization",{"name":1134,"slug":1135,"type":13},"Observability","observability",{"name":9,"slug":8,"type":13},"2026-07-28T05:34:11.117757",{"slug":1139,"name":1139,"fn":1140,"description":1141,"org":1142,"tags":1143,"stars":20,"repoUrl":21,"updatedAt":1149},"auditing-endpoints","audit PostHog project endpoints","Audit every endpoint in a PostHog project for staleness, failed materialisations, and unused materialised versions. Use when the user asks \"what endpoints can I clean up?\", \"are any of my endpoints broken?\", \"which materialised versions are still being called?\", or wants a one-shot cleanup pass over the Endpoints product. Produces a prioritised report grouped by issue type, with recommended actions but does not modify anything without explicit confirmation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1144,1145,1148],{"name":18,"slug":19,"type":13},{"name":1146,"slug":1147,"type":13},"Audit","audit",{"name":9,"slug":8,"type":13},"2026-06-08T08:08:33.693989",{"slug":1151,"name":1151,"fn":1152,"description":1153,"org":1154,"tags":1155,"stars":20,"repoUrl":21,"updatedAt":1161},"auditing-warehouse-source-health","audit PostHog data warehouse source health","Audit the health of a PostHog project's data warehouse sources and syncs — find every broken or degraded source connection, sync schema, and webhook channel. Use when the user asks \"why are my imports failing?\", \"what's broken with my sources?\", \"why is my warehouse data stale?\", or wants a one-shot triage of source\u002Fsync health before deciding where to dig in. Produces a prioritized report grouped by severity, with recommended next steps. For materialized-view health use `auditing-warehouse-view-health`; for a single failing sync use `diagnosing-failed-warehouse-syncs`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1156,1157,1159,1160],{"name":1146,"slug":1147,"type":13},{"name":1158,"slug":29,"type":13},"Data Warehouse",{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:22:57.67984",{"slug":1163,"name":1163,"fn":1164,"description":1165,"org":1166,"tags":1167,"stars":20,"repoUrl":21,"updatedAt":1174},"auditing-warehouse-view-health","audit PostHog materialized view health","Audit the health of a PostHog project's materialized views (saved queries) — find every failed materialization and flag unused or stale materialized views that cost storage and compute. Use when the user asks \"which of my views are broken?\", \"why is this materialized view failing?\", \"are any of my views wasting compute?\", or wants a one-shot triage of view health. For source\u002Fsync health use `auditing-warehouse-source-health`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1168,1169,1170,1173],{"name":1146,"slug":1147,"type":13},{"name":1158,"slug":29,"type":13},{"name":1171,"slug":1172,"type":13},"Performance","performance",{"name":9,"slug":8,"type":13},"2026-06-18T08:25:10.936787",{"slug":1176,"name":1176,"fn":1177,"description":1178,"org":1179,"tags":1180,"stars":20,"repoUrl":21,"updatedAt":1189},"authoring-error-tracking-alerts","author PostHog error tracking alerts","Author error tracking alerts that fire when an issue is created, reopened, or starts spiking. Use when the user asks to set up error notifications, route exceptions to Slack\u002Fwebhook\u002FLinear, or evaluate which error events are worth alerting on. Covers trigger-event selection, integration choice, dedup against existing alerts, and shipping with the canonical message body shape.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1181,1184,1187,1188],{"name":1182,"slug":1183,"type":13},"Alerting","alerting",{"name":1185,"slug":1186,"type":13},"Debugging","debugging",{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:24:40.318583",{"slug":1191,"name":1191,"fn":1192,"description":1193,"org":1194,"tags":1195,"stars":20,"repoUrl":21,"updatedAt":1205},"authoring-log-alerts","author log alerts in PostHog","Author useful, low-noise log alerts on services in a PostHog project. Use when the user asks to set up alerts for their logs, suggest alerts they should add, or evaluate whether a service is worth monitoring. Covers service triage, baseline characterisation, threshold drafting, back-testing via simulate, and shipping with a notification destination.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1196,1197,1200,1201,1204],{"name":18,"slug":19,"type":13},{"name":1198,"slug":1199,"type":13},"Monitoring","monitoring",{"name":1134,"slug":1135,"type":13},{"name":1202,"slug":1203,"type":13},"Operations","operations",{"name":9,"slug":8,"type":13},"2026-07-18T05:10:54.430898",{"slug":1207,"name":1207,"fn":1208,"description":1209,"org":1210,"tags":1211,"stars":20,"repoUrl":21,"updatedAt":1222},"building-workflows","build and edit PostHog workflows","Build, edit, test, enable, and monitor PostHog workflows over MCP. Author the action\u002Fedge graph so it runs and opens cleanly in the visual editor, then change drafts surgically with patch operations. Use when asked to build, set up, automate, change, fix, or debug a workflow, campaign, broadcast, drip sequence, or event-triggered automation in the workflows product.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1212,1215,1218,1219],{"name":1213,"slug":1214,"type":13},"Automation","automation",{"name":1216,"slug":1217,"type":13},"MCP","mcp",{"name":9,"slug":8,"type":13},{"name":1220,"slug":1221,"type":13},"Workflow Automation","workflow-automation","2026-07-28T05:34:12.167015",{"slug":1224,"name":1224,"fn":1225,"description":1226,"org":1227,"tags":1228,"stars":20,"repoUrl":21,"updatedAt":1236},"check-posthog-loading","inspect PostHog SDK loading across URLs","Inspect how the PostHog JavaScript SDK is loaded across a list of URLs. Use to confirm consistent installation across pages, find pages missing the snippet, detect mismatched API keys or hosts between pages, and verify the load method (head snippet vs deferred vs array.js).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1229,1230,1231,1234,1235],{"name":18,"slug":19,"type":13},{"name":1185,"slug":1186,"type":13},{"name":1232,"slug":1233,"type":13},"Frontend","frontend",{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},"2026-05-07T05:56:19.828048",{"slug":1238,"name":1238,"fn":1239,"description":1240,"org":1241,"tags":1242,"stars":20,"repoUrl":21,"updatedAt":1251},"consuming-endpoints-from-client-code","integrate PostHog endpoints into client applications","Wire a PostHog endpoint into a client app or SDK. Covers fetching the OpenAPI spec, generating a typed client with openapi-generator or @hey-api\u002Fopenapi-ts, sending the right auth header, shaping the variables payload (HogQL code_name vs insight breakdown property), handling rate-limit and materialised-endpoint error responses. Use when the user says \"how do I call my endpoint\", \"generate a client for this\", or \"what auth header do I use\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1243,1246,1247,1248],{"name":1244,"slug":1245,"type":13},"API Development","api-development",{"name":1232,"slug":1233,"type":13},{"name":9,"slug":8,"type":13},{"name":1249,"slug":1250,"type":13},"SDK","sdk","2026-06-08T08:08:34.929454",{"slug":1253,"name":1253,"fn":1254,"description":1255,"org":1256,"tags":1257,"stars":20,"repoUrl":21,"updatedAt":1261},"copying-endpoints-across-projects","copy PostHog endpoints across projects","Copy a PostHog endpoint (a saved HogQL\u002Finsight query exposed as an API route) to another project in the same organization, or duplicate it under a new name in the same project. Use when the user wants to duplicate an endpoint, promote an endpoint from staging to production, replicate an endpoint's query\u002Fvariables\u002Ffreshness config in another workspace, or clone an endpoint to iterate on it. Unlike feature flags and experiments, endpoints have NO native cross-project copy tool — this skill covers the read-then-recreate flow (endpoint-get then endpoint-create), the active-project switching it requires, name-collision checks, and the safe defaults (land unmaterialised in the target, verify with endpoint-run). Does not cover editing endpoint versions (see managing-endpoint-versions) or authoring a brand-new endpoint from scratch (see creating-an-endpoint).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1258,1259,1260],{"name":1244,"slug":1245,"type":13},{"name":1202,"slug":1203,"type":13},{"name":9,"slug":8,"type":13},"2026-07-15T05:29:58.442727",{"slug":1263,"name":1263,"fn":1264,"description":1265,"org":1266,"tags":1267,"stars":20,"repoUrl":21,"updatedAt":1279},"creating-ai-subscription","schedule recurring AI-generated PostHog reports","Create a recurring AI-generated PostHog report — schedule a free-text prompt to run on a cron, with the LLM-synthesized markdown delivered to email or Slack on each tick. Use when the user wants a recurring AI summary of X on any cadence (daily, weekly, monthly, yearly) rather than a one-off report. (To attach an AI summary to an existing insight\u002Fdashboard subscription instead of a free-text prompt, see `managing-subscriptions` and its `summary_enabled` option.)\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1268,1269,1272,1273,1276],{"name":1213,"slug":1214,"type":13},{"name":1270,"slug":1271,"type":13},"Email","email",{"name":9,"slug":8,"type":13},{"name":1274,"slug":1275,"type":13},"Reporting","reporting",{"name":1277,"slug":1278,"type":13},"Slack","slack","2026-06-09T07:32:27.935712",{"slug":1281,"name":1281,"fn":1282,"description":1283,"org":1284,"tags":1285,"stars":20,"repoUrl":21,"updatedAt":1289},"creating-an-endpoint","create PostHog API endpoints","Create a PostHog endpoint with the right shape on the first try — covers query kind choice, name conventions, what to expose as variables (HogQL code_name vs insight breakdown), data_freshness_seconds, and whether to materialise on day one. Use when the user says \"create an endpoint\", \"expose this query as an API\", \"turn this insight into an endpoint\", or asks for help structuring a new endpoint. Steers away from common mistakes: materialising a query with cohort breakdowns or compare mode, inline-only variables on a materialised endpoint, unbounded date ranges, ambiguous names.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1286,1287,1288],{"name":18,"slug":19,"type":13},{"name":1244,"slug":1245,"type":13},{"name":9,"slug":8,"type":13},"2026-06-08T08:08:29.624498",231,{"items":1292,"total":1342},[1293,1300,1306,1313,1320,1327,1335],{"slug":1124,"name":1124,"fn":1125,"description":1126,"org":1294,"tags":1295,"stars":20,"repoUrl":21,"updatedAt":1137},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1296,1297,1298,1299],{"name":18,"slug":19,"type":13},{"name":1131,"slug":1132,"type":13},{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},{"slug":1139,"name":1139,"fn":1140,"description":1141,"org":1301,"tags":1302,"stars":20,"repoUrl":21,"updatedAt":1149},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1303,1304,1305],{"name":18,"slug":19,"type":13},{"name":1146,"slug":1147,"type":13},{"name":9,"slug":8,"type":13},{"slug":1151,"name":1151,"fn":1152,"description":1153,"org":1307,"tags":1308,"stars":20,"repoUrl":21,"updatedAt":1161},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1309,1310,1311,1312],{"name":1146,"slug":1147,"type":13},{"name":1158,"slug":29,"type":13},{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},{"slug":1163,"name":1163,"fn":1164,"description":1165,"org":1314,"tags":1315,"stars":20,"repoUrl":21,"updatedAt":1174},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1316,1317,1318,1319],{"name":1146,"slug":1147,"type":13},{"name":1158,"slug":29,"type":13},{"name":1171,"slug":1172,"type":13},{"name":9,"slug":8,"type":13},{"slug":1176,"name":1176,"fn":1177,"description":1178,"org":1321,"tags":1322,"stars":20,"repoUrl":21,"updatedAt":1189},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1323,1324,1325,1326],{"name":1182,"slug":1183,"type":13},{"name":1185,"slug":1186,"type":13},{"name":1134,"slug":1135,"type":13},{"name":9,"slug":8,"type":13},{"slug":1191,"name":1191,"fn":1192,"description":1193,"org":1328,"tags":1329,"stars":20,"repoUrl":21,"updatedAt":1205},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1330,1331,1332,1333,1334],{"name":18,"slug":19,"type":13},{"name":1198,"slug":1199,"type":13},{"name":1134,"slug":1135,"type":13},{"name":1202,"slug":1203,"type":13},{"name":9,"slug":8,"type":13},{"slug":1207,"name":1207,"fn":1208,"description":1209,"org":1336,"tags":1337,"stars":20,"repoUrl":21,"updatedAt":1222},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1338,1339,1340,1341],{"name":1213,"slug":1214,"type":13},{"name":1216,"slug":1217,"type":13},{"name":9,"slug":8,"type":13},{"name":1220,"slug":1221,"type":13},61]