[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-posthog-inbox-exploration":3,"mdc-u50ond-key":34,"related-org-posthog-inbox-exploration":2124,"related-repo-posthog-inbox-exploration":2295},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"inbox-exploration","explore and triage PostHog inbox signals","Explore PostHog's Inbox — the surface where signal reports surface as actionable issues and trends. Use when the user asks \"what's in my inbox?\", \"what should I look at?\", \"which reports are actionable?\", \"what's PostHog flagged recently?\", asks about a specific report by ID or title, or wants to see which signal sources are configured. Covers listing, filtering, and drilling into reports, plus pointers to the deeper `signals` skill when raw signals or semantic search are needed.\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,16,17,20],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Triage","triage",{"name":21,"slug":22,"type":15},"Analytics","analytics",56,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fskills","2026-05-02T05:34:47.016707",null,4,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"PostHog skills (under construction)","https:\u002F\u002Fgithub.com\u002FPostHog\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fomnibus\u002Finbox-exploration","---\nname: inbox-exploration\ndescription: >\n  Explore PostHog's Inbox — the surface where signal reports surface as actionable issues and trends.\n  Use when the user asks \"what's in my inbox?\", \"what should I look at?\", \"which reports are actionable?\",\n  \"what's PostHog flagged recently?\", asks about a specific report by ID or title, or wants to see\n  which signal sources are configured. Covers listing, filtering, and drilling into reports, plus\n  pointers to the deeper `signals` skill when raw signals or semantic search are needed.\n---\n\n# Exploring the Inbox\n\nThe **Inbox** is where PostHog surfaces signal reports — clusters of related observations\n(signals) that have been aggregated into a single issue or trend (e.g. \"Error rate spiked 3× on\n\u002Fcheckout\"). Reports come from multiple source products: error tracking, session replay, web\nanalytics, experiments, and integrations like Linear, GitHub, and Zendesk.\n\nInbox is part of [PostHog Code](https:\u002F\u002Fposthog.com\u002Fcode), PostHog's agentic surface for\nengineering teams.\n\nDon't assume the user's project has reports, or that any signal sources are configured — plenty\nof projects don't have Inbox set up. Always run the setup-check workflow below before answering\nthe user's actual question.\n\n## When to use this skill\n\n- \"What's in my inbox?\" \u002F \"What should I look at first?\"\n- \"Show me actionable reports\" \u002F \"What's PostHog flagged recently?\"\n- \"Are there any reports about \u003Ctopic \u002F product area>?\"\n- \"What signal sources are configured for this project?\"\n- The user pastes a report ID or URL and wants context\n\nFor deeper investigation, hand off to other skills and tools:\n\n- **`signals` skill** — query `document_embeddings` via HogQL for raw signal text, semantic\n  search across signals, or to inspect every signal that contributed to a report.\n- **PostHog's product-specific MCP tools** — when a report points at a specific error, log line,\n  session, person, or time range, reach for the matching domain tool to pull richer context:\n  - Error tracking: `query-error-tracking-issues-list`, `query-error-tracking-issue`,\n    `query-error-tracking-issue-events` for error-tracking-sourced reports\n  - Logs: `query-logs`, `logs-count-ranges` to find log activity around the issue\n  - Session replays: `query-session-recordings-list`, `session-recording-get` to find\n    recordings of affected users\n  - Persons \u002F activity: `persons-retrieve`, `activity-log-list` to inspect a specific user's\n    behavior\n  - Trends \u002F SQL: `query-trends`, `execute-sql` for ad-hoc verification queries\n\nA signal report tells you _what_ PostHog clustered. The product-specific tools tell you the\n_underlying detail_ — pair them when the user wants to dig in.\n\n## Available tools\n\n| Tool                                  | Purpose                                                             |\n| ------------------------------------- | ------------------------------------------------------------------- |\n| `inbox-reports-list`                  | Paginated list of reports with filters (status, search, etc.)       |\n| `inbox-reports-retrieve`              | Full detail for a single report                                     |\n| `inbox-source-configs-list`           | Configured signal sources (which products feed the inbox)           |\n| `inbox-source-configs-retrieve`       | Full record for a single source config                              |\n| `posthog:execute-sql` (signals skill) | HogQL access to underlying signals (read the `signals` skill first) |\n\nAll four `inbox-*` tools are read-only. Writes (pause processing, change source configs, manage\nper-user autonomy) are intentionally not exposed via MCP today.\n\n## Terminology\n\nWhat each report status means (in roughly the order a triage agent should care about):\n\n- `ready` — judgment finished, actionable assessment available\n- `pending_input` — waiting on user input to proceed\n- `in_progress` — actively being summarized \u002F judged\n- `candidate` \u002F `potential` — accumulated signals but not yet promoted to a real report\n- `failed` — processing errored\n- `suppressed` — manually hidden; not surfaced by default\n\nBy default `inbox-reports-list` excludes `suppressed` reports and orders results by\n`-is_suggested_reviewer,status,-updated_at` — the user's own suggested reports first, then by\nstatus, then most recently updated. Refer to the tool's input schema for filter mechanics.\n\n## What \"suggested reviewer\" means\n\n`is_suggested_reviewer: true` on a report means **the current PostHog user is one of up to\nthree people the report-research flow flagged as best-placed to act on this report**. It is\nthe strongest signal you have that a report matters to the user _personally_, and you should\nlean on it when triaging.\n\nHow the flag is produced (see `report_generation\u002Fresolve_reviewers.py`):\n\n1. While researching a report, the agent identifies the GitHub commits most relevant to the\n   underlying signals (e.g. commits that touched the failing code path).\n2. It fetches the authors of those commits, weights earlier\u002Fmore-relevant commits more\n   heavily, and keeps the top three GitHub logins. These get persisted as a\n   `SUGGESTED_REVIEWERS` artefact on the report.\n3. At read time, those GitHub logins are mapped back to PostHog users via each org member's\n   linked GitHub identity (social auth or GitHub integration). If the _current_ viewer's\n   linked GitHub login is one of them, `is_suggested_reviewer` flips to `true` for that\n   report.\n\nPractical implications for triage:\n\n- A `true` value means \"you wrote (or recently touched) the code this report is about\" — not\n  \"you were assigned this.\" It's heuristic, not authoritative.\n- A `false` value doesn't mean the report is irrelevant — it can mean (a) someone else owns\n  the code, (b) no one in the org has a linked GitHub account matching the suggested logins,\n  or (c) the source material wasn't tied to a specific repo \u002F commits.\n- If the user asks \"what should _I_ look at?\", lead with `is_suggested_reviewer: true`\n  reports — these are the ones where the user's name is on the relevant code. Mention the\n  rest as a secondary group rather than mixing them in.\n- If the user has _no_ suggested reports but the inbox isn't empty, say so explicitly\n  (\"nothing in the inbox is tied to code you've authored recently\") rather than pretending\n  the top of the list is personalized.\n\n## Workflow: handling an empty or unconfigured inbox (read first)\n\nRun this check whenever a user asks about the inbox for the first time in a session, **or** any\ntime `inbox-reports-list` returns `count: 0`. The diagnosis decides what to say next.\n\n### Step 1 — Look at source configs\n\n```json\ninbox-source-configs-list\n{ \"limit\": 50 }\n```\n\nThree meaningful cases:\n\n**Case A — no source configs at all (`count: 0`)**\n\nThe user hasn't onboarded to Inbox \u002F signals. **Don't pretend the inbox has data.** Tell the user\nplainly that Inbox needs signal sources to be set up first, and that the recommended way to do\nthis is to install **PostHog Code** at \u003Chttps:\u002F\u002Fposthog.com\u002Fcode>. Example response:\n\n> Your project doesn't have any signal sources configured yet, so the Inbox is empty. Inbox surfaces\n> issues and trends that PostHog automatically clusters from sources like error tracking, session\n> replay, GitHub, Linear, and Zendesk. The fastest way to set this up is to install\n> [PostHog Code](https:\u002F\u002Fposthog.com\u002Fcode) — once it's connected, signals will start flowing in\n> and reports will appear in your inbox over the next day or so.\n\nStop here unless the user wants to discuss setup. Don't run further inbox tools — they'll all be\nempty.\n\n**Case B — source configs exist but all are `enabled: false`**\n\nSources have been set up at some point but are currently turned off. Tell the user no signals are\nflowing right now and point them at the project's signals settings to re-enable. Don't go fishing\nfor reports — anything still there is stale.\n\n**Case C — at least one source config is `enabled: true`**\n\nSetup looks healthy. If `inbox-reports-list` still returns nothing, it's most likely \"give it time\"\n— signals are flowing but nothing has clustered into a report yet. Tell the user that, briefly\nlist which sources are active (e.g. \"you have GitHub and error tracking enabled\"), and offer to\ncheck back later or to drop into the `signals` skill to look at raw signal volume.\n\nIf any source config has `status: \"failed\"`, surface that as part of your reply — that source\nisn't producing signals right now, which may explain a thin inbox.\n\n### Step 2 — Only then proceed to the user's actual question\n\nIf Step 1 found a healthy setup and at least one report exists, continue with the triage \u002F drill \u002F\nfilter workflows below.\n\n## Workflow: triage what's actionable\n\nWhen the user asks \"what should I look at?\" or \"what's actionable?\":\n\n### Step 1 — Pull the ready\u002Fin-progress queue\n\n```json\ninbox-reports-list\n{\n  \"status\": \"ready,in_progress,pending_input\",\n  \"limit\": 20\n}\n```\n\nIf `count: 0` comes back, jump to the empty\u002Funconfigured workflow above before saying \"your\ninbox is empty\" — the right reply depends on whether sources are configured.\n\n### Step 2 — Summarize by source and actionability\n\nFor each report, the response includes:\n\n- `id`, `title`, `summary`\n- `status`, `priority`, `actionability` (note: `null` for reports still in `pending_input` \u002F\n  `candidate` — judgment hasn't run yet)\n- `signal_count`, `total_weight` — how much underlying evidence drove the report\n- `source_products` — which product(s) the underlying signals came from\n- `is_suggested_reviewer` — whether the current user is a suggested reviewer for this\n  report (see \"What 'suggested reviewer' means\" above — it's based on GitHub commit\n  authorship of the relevant code, mapped to PostHog users via linked GitHub identity)\n- `implementation_pr_url` — if a PR has been opened against this report\n- `_posthogUrl` — clickable deep-link to the report; **always include this in your response**\n\nGroup the results so the user can scan quickly. **Lead with reports where\n`is_suggested_reviewer: true`** — those are the ones tied to code the current user has\nauthored — and only then fall back to priority groupings for the rest:\n\n```text\n## Inbox — 8 actionable reports\n\n⭐ Suggested for you (1)\n- Checkout error rate spiked 3× — error_tracking, 47 signals (you're a suggested reviewer)\n  \u003C_posthogUrl>\n\n🔴 High priority (2 more)\n- Session replays on \u002Fpricing show repeated rage clicks — session_replay, 12 signals\n  \u003C_posthogUrl>\n…\n\n🟠 Medium priority (4)\n…\n```\n\nIf no reports come back with `is_suggested_reviewer: true`, say so explicitly before listing\nthe rest — don't silently drop the section.\n\n### Step 3 — Offer the drill-down\n\nEnd with a clear hand-off: \"Want me to dig into the checkout errors?\" → call\n`inbox-reports-retrieve` for the full report, then optionally hop to the `signals` skill to look\nat the underlying signal text.\n\n## Workflow: drill into a specific report\n\nWhen the user pastes an Inbox URL or report ID:\n\n```json\ninbox-reports-retrieve\n{ \"id\": \"\u003Creport_uuid>\" }\n```\n\nReturns the full record including `signals_at_run` and `artefact_count`. Combine this with the\n`signals` skill if the user wants to see the actual signal contents:\n\n1. Use `inbox-reports-retrieve` to get the report metadata + `id`\n2. Use the `signals` skill's Example 2 (fetch all signals for a specific report) — pass the\n   report ID as `metadata.report_id` in the HogQL query\n\nThe two layers complement each other: the `inbox-*` tools give you the curated\u002Fjudged view, and\nthe `signals` skill lets you inspect the raw observations that produced it.\n\n## Workflow: filter by topic or source\n\n\"Are there any reports about \u003Ctopic>?\" — start with `search`:\n\n```json\ninbox-reports-list\n{\n  \"search\": \"checkout\",\n  \"status\": \"ready,in_progress,pending_input\",\n  \"limit\": 20\n}\n```\n\n`search` matches title and summary. If the user is asking about a product area rather than a\nkeyword, use `source_product`:\n\n```json\ninbox-reports-list\n{\n  \"source_product\": \"session_replay,error_tracking\",\n  \"limit\": 20\n}\n```\n\nIf the keyword search returns nothing meaningful, hand off to the `signals` skill — semantic\nsearch over signal text via `embedText()` will catch reports the keyword filter missed.\n\n## Workflow: review configured sources\n\nWhen the user asks \"which signal sources are set up?\" or \"is \u003Cproduct> hooked up?\":\n\n```json\ninbox-source-configs-list\n{ \"limit\": 50 }\n```\n\nEach entry returns `id`, `source_product`, `source_type`, `enabled`, `status`, plus timestamps.\nFor full details (including the per-source `config` JSON — recording filters, evaluation IDs,\netc.):\n\n```json\ninbox-source-configs-retrieve\n{ \"id\": \"\u003Csource_config_uuid>\" }\n```\n\nIntegration credentials live in a separate `Integration` model — they are **not** in the\n`config` blob, so it's safe to summarize the contents back to the user.\n\nThe `status` field reflects the underlying data import or workflow:\n\n- `running` \u002F `completed` — feeding signals normally\n- `failed` — the source isn't currently producing signals; flag this to the user\n\n## Tips\n\n- **Check setup before assuming the inbox is empty.** If `inbox-reports-list` returns `count: 0`,\n  call `inbox-source-configs-list` first — no sources means the user needs to install\n  [PostHog Code](https:\u002F\u002Fposthog.com\u002Fcode) to start receiving signals; sources-but-no-reports\n  means signals are flowing but nothing has clustered yet\n- **Always surface `_posthogUrl`** so the user can click through to the report\n- The default ordering already prioritizes the user's suggested reports — don't reorder unless\n  asked\n- `priority` and `actionability` are `null` for reports still in `pending_input` or `candidate`\n  status; this is expected, not a bug — judgment hasn't run yet\n- `suppressed` reports are excluded by default; pass `status: \"suppressed\"` explicitly if the\n  user wants to see hidden items\n- Don't try to write to the inbox via MCP — destroy \u002F state changes \u002F reingest endpoints are\n  intentionally not exposed. If the user wants to act on a report, point them at the\n  `_posthogUrl` deep-link\n- For \"what kinds of signals exist?\" or \"what's been happening recently across all sources?\",\n  drop into the `signals` skill — the report layer hides individual observations; you need\n  HogQL on `document_embeddings` to see them\n- Source configs don't have per-record deep-links — they live behind project settings, so\n  `inbox-source-configs-retrieve` returns no `_posthogUrl`. Don't confuse them with reports\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,62,78,83,90,120,125,275,295,301,423,436,442,447,524,551,557,582,595,645,650,708,714,741,748,813,818,833,858,874,879,893,898,912,931,944,950,955,961,966,972,1068,1080,1086,1091,1229,1246,1256,1268,1274,1293,1299,1304,1359,1387,1427,1446,1452,1470,1593,1610,1697,1717,1723,1734,1778,1824,1879,1906,1917,1948,1954,2118],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"exploring-the-inbox",[45],{"type":46,"value":47},"text","Exploring the Inbox",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,60],{"type":46,"value":53},"The ",{"type":40,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":46,"value":59},"Inbox",{"type":46,"value":61}," is where PostHog surfaces signal reports — clusters of related observations\n(signals) that have been aggregated into a single issue or trend (e.g. \"Error rate spiked 3× on\n\u002Fcheckout\"). Reports come from multiple source products: error tracking, session replay, web\nanalytics, experiments, and integrations like Linear, GitHub, and Zendesk.",{"type":40,"tag":49,"props":63,"children":64},{},[65,67,76],{"type":46,"value":66},"Inbox is part of ",{"type":40,"tag":68,"props":69,"children":73},"a",{"href":70,"rel":71},"https:\u002F\u002Fposthog.com\u002Fcode",[72],"nofollow",[74],{"type":46,"value":75},"PostHog Code",{"type":46,"value":77},", PostHog's agentic surface for\nengineering teams.",{"type":40,"tag":49,"props":79,"children":80},{},[81],{"type":46,"value":82},"Don't assume the user's project has reports, or that any signal sources are configured — plenty\nof projects don't have Inbox set up. Always run the setup-check workflow below before answering\nthe user's actual question.",{"type":40,"tag":84,"props":85,"children":87},"h2",{"id":86},"when-to-use-this-skill",[88],{"type":46,"value":89},"When to use this skill",{"type":40,"tag":91,"props":92,"children":93},"ul",{},[94,100,105,110,115],{"type":40,"tag":95,"props":96,"children":97},"li",{},[98],{"type":46,"value":99},"\"What's in my inbox?\" \u002F \"What should I look at first?\"",{"type":40,"tag":95,"props":101,"children":102},{},[103],{"type":46,"value":104},"\"Show me actionable reports\" \u002F \"What's PostHog flagged recently?\"",{"type":40,"tag":95,"props":106,"children":107},{},[108],{"type":46,"value":109},"\"Are there any reports about \u003Ctopic \u002F product area>?\"",{"type":40,"tag":95,"props":111,"children":112},{},[113],{"type":46,"value":114},"\"What signal sources are configured for this project?\"",{"type":40,"tag":95,"props":116,"children":117},{},[118],{"type":46,"value":119},"The user pastes a report ID or URL and wants context",{"type":40,"tag":49,"props":121,"children":122},{},[123],{"type":46,"value":124},"For deeper investigation, hand off to other skills and tools:",{"type":40,"tag":91,"props":126,"children":127},{},[128,153],{"type":40,"tag":95,"props":129,"children":130},{},[131,143,145,151],{"type":40,"tag":55,"props":132,"children":133},{},[134,141],{"type":40,"tag":135,"props":136,"children":138},"code",{"className":137},[],[139],{"type":46,"value":140},"signals",{"type":46,"value":142}," skill",{"type":46,"value":144}," — query ",{"type":40,"tag":135,"props":146,"children":148},{"className":147},[],[149],{"type":46,"value":150},"document_embeddings",{"type":46,"value":152}," via HogQL for raw signal text, semantic\nsearch across signals, or to inspect every signal that contributed to a report.",{"type":40,"tag":95,"props":154,"children":155},{},[156,161,163],{"type":40,"tag":55,"props":157,"children":158},{},[159],{"type":46,"value":160},"PostHog's product-specific MCP tools",{"type":46,"value":162}," — when a report points at a specific error, log line,\nsession, person, or time range, reach for the matching domain tool to pull richer context:\n",{"type":40,"tag":91,"props":164,"children":165},{},[166,195,215,235,255],{"type":40,"tag":95,"props":167,"children":168},{},[169,171,177,179,185,187,193],{"type":46,"value":170},"Error tracking: ",{"type":40,"tag":135,"props":172,"children":174},{"className":173},[],[175],{"type":46,"value":176},"query-error-tracking-issues-list",{"type":46,"value":178},", ",{"type":40,"tag":135,"props":180,"children":182},{"className":181},[],[183],{"type":46,"value":184},"query-error-tracking-issue",{"type":46,"value":186},",\n",{"type":40,"tag":135,"props":188,"children":190},{"className":189},[],[191],{"type":46,"value":192},"query-error-tracking-issue-events",{"type":46,"value":194}," for error-tracking-sourced reports",{"type":40,"tag":95,"props":196,"children":197},{},[198,200,206,207,213],{"type":46,"value":199},"Logs: ",{"type":40,"tag":135,"props":201,"children":203},{"className":202},[],[204],{"type":46,"value":205},"query-logs",{"type":46,"value":178},{"type":40,"tag":135,"props":208,"children":210},{"className":209},[],[211],{"type":46,"value":212},"logs-count-ranges",{"type":46,"value":214}," to find log activity around the issue",{"type":40,"tag":95,"props":216,"children":217},{},[218,220,226,227,233],{"type":46,"value":219},"Session replays: ",{"type":40,"tag":135,"props":221,"children":223},{"className":222},[],[224],{"type":46,"value":225},"query-session-recordings-list",{"type":46,"value":178},{"type":40,"tag":135,"props":228,"children":230},{"className":229},[],[231],{"type":46,"value":232},"session-recording-get",{"type":46,"value":234}," to find\nrecordings of affected users",{"type":40,"tag":95,"props":236,"children":237},{},[238,240,246,247,253],{"type":46,"value":239},"Persons \u002F activity: ",{"type":40,"tag":135,"props":241,"children":243},{"className":242},[],[244],{"type":46,"value":245},"persons-retrieve",{"type":46,"value":178},{"type":40,"tag":135,"props":248,"children":250},{"className":249},[],[251],{"type":46,"value":252},"activity-log-list",{"type":46,"value":254}," to inspect a specific user's\nbehavior",{"type":40,"tag":95,"props":256,"children":257},{},[258,260,266,267,273],{"type":46,"value":259},"Trends \u002F SQL: ",{"type":40,"tag":135,"props":261,"children":263},{"className":262},[],[264],{"type":46,"value":265},"query-trends",{"type":46,"value":178},{"type":40,"tag":135,"props":268,"children":270},{"className":269},[],[271],{"type":46,"value":272},"execute-sql",{"type":46,"value":274}," for ad-hoc verification queries",{"type":40,"tag":49,"props":276,"children":277},{},[278,280,286,288,293],{"type":46,"value":279},"A signal report tells you ",{"type":40,"tag":281,"props":282,"children":283},"em",{},[284],{"type":46,"value":285},"what",{"type":46,"value":287}," PostHog clustered. The product-specific tools tell you the\n",{"type":40,"tag":281,"props":289,"children":290},{},[291],{"type":46,"value":292},"underlying detail",{"type":46,"value":294}," — pair them when the user wants to dig in.",{"type":40,"tag":84,"props":296,"children":298},{"id":297},"available-tools",[299],{"type":46,"value":300},"Available tools",{"type":40,"tag":302,"props":303,"children":304},"table",{},[305,324],{"type":40,"tag":306,"props":307,"children":308},"thead",{},[309],{"type":40,"tag":310,"props":311,"children":312},"tr",{},[313,319],{"type":40,"tag":314,"props":315,"children":316},"th",{},[317],{"type":46,"value":318},"Tool",{"type":40,"tag":314,"props":320,"children":321},{},[322],{"type":46,"value":323},"Purpose",{"type":40,"tag":325,"props":326,"children":327},"tbody",{},[328,346,363,380,397],{"type":40,"tag":310,"props":329,"children":330},{},[331,341],{"type":40,"tag":332,"props":333,"children":334},"td",{},[335],{"type":40,"tag":135,"props":336,"children":338},{"className":337},[],[339],{"type":46,"value":340},"inbox-reports-list",{"type":40,"tag":332,"props":342,"children":343},{},[344],{"type":46,"value":345},"Paginated list of reports with filters (status, search, etc.)",{"type":40,"tag":310,"props":347,"children":348},{},[349,358],{"type":40,"tag":332,"props":350,"children":351},{},[352],{"type":40,"tag":135,"props":353,"children":355},{"className":354},[],[356],{"type":46,"value":357},"inbox-reports-retrieve",{"type":40,"tag":332,"props":359,"children":360},{},[361],{"type":46,"value":362},"Full detail for a single report",{"type":40,"tag":310,"props":364,"children":365},{},[366,375],{"type":40,"tag":332,"props":367,"children":368},{},[369],{"type":40,"tag":135,"props":370,"children":372},{"className":371},[],[373],{"type":46,"value":374},"inbox-source-configs-list",{"type":40,"tag":332,"props":376,"children":377},{},[378],{"type":46,"value":379},"Configured signal sources (which products feed the inbox)",{"type":40,"tag":310,"props":381,"children":382},{},[383,392],{"type":40,"tag":332,"props":384,"children":385},{},[386],{"type":40,"tag":135,"props":387,"children":389},{"className":388},[],[390],{"type":46,"value":391},"inbox-source-configs-retrieve",{"type":40,"tag":332,"props":393,"children":394},{},[395],{"type":46,"value":396},"Full record for a single source config",{"type":40,"tag":310,"props":398,"children":399},{},[400,411],{"type":40,"tag":332,"props":401,"children":402},{},[403,409],{"type":40,"tag":135,"props":404,"children":406},{"className":405},[],[407],{"type":46,"value":408},"posthog:execute-sql",{"type":46,"value":410}," (signals skill)",{"type":40,"tag":332,"props":412,"children":413},{},[414,416,421],{"type":46,"value":415},"HogQL access to underlying signals (read the ",{"type":40,"tag":135,"props":417,"children":419},{"className":418},[],[420],{"type":46,"value":140},{"type":46,"value":422}," skill first)",{"type":40,"tag":49,"props":424,"children":425},{},[426,428,434],{"type":46,"value":427},"All four ",{"type":40,"tag":135,"props":429,"children":431},{"className":430},[],[432],{"type":46,"value":433},"inbox-*",{"type":46,"value":435}," tools are read-only. Writes (pause processing, change source configs, manage\nper-user autonomy) are intentionally not exposed via MCP today.",{"type":40,"tag":84,"props":437,"children":439},{"id":438},"terminology",[440],{"type":46,"value":441},"Terminology",{"type":40,"tag":49,"props":443,"children":444},{},[445],{"type":46,"value":446},"What each report status means (in roughly the order a triage agent should care about):",{"type":40,"tag":91,"props":448,"children":449},{},[450,461,472,483,502,513],{"type":40,"tag":95,"props":451,"children":452},{},[453,459],{"type":40,"tag":135,"props":454,"children":456},{"className":455},[],[457],{"type":46,"value":458},"ready",{"type":46,"value":460}," — judgment finished, actionable assessment available",{"type":40,"tag":95,"props":462,"children":463},{},[464,470],{"type":40,"tag":135,"props":465,"children":467},{"className":466},[],[468],{"type":46,"value":469},"pending_input",{"type":46,"value":471}," — waiting on user input to proceed",{"type":40,"tag":95,"props":473,"children":474},{},[475,481],{"type":40,"tag":135,"props":476,"children":478},{"className":477},[],[479],{"type":46,"value":480},"in_progress",{"type":46,"value":482}," — actively being summarized \u002F judged",{"type":40,"tag":95,"props":484,"children":485},{},[486,492,494,500],{"type":40,"tag":135,"props":487,"children":489},{"className":488},[],[490],{"type":46,"value":491},"candidate",{"type":46,"value":493}," \u002F ",{"type":40,"tag":135,"props":495,"children":497},{"className":496},[],[498],{"type":46,"value":499},"potential",{"type":46,"value":501}," — accumulated signals but not yet promoted to a real report",{"type":40,"tag":95,"props":503,"children":504},{},[505,511],{"type":40,"tag":135,"props":506,"children":508},{"className":507},[],[509],{"type":46,"value":510},"failed",{"type":46,"value":512}," — processing errored",{"type":40,"tag":95,"props":514,"children":515},{},[516,522],{"type":40,"tag":135,"props":517,"children":519},{"className":518},[],[520],{"type":46,"value":521},"suppressed",{"type":46,"value":523}," — manually hidden; not surfaced by default",{"type":40,"tag":49,"props":525,"children":526},{},[527,529,534,536,541,543,549],{"type":46,"value":528},"By default ",{"type":40,"tag":135,"props":530,"children":532},{"className":531},[],[533],{"type":46,"value":340},{"type":46,"value":535}," excludes ",{"type":40,"tag":135,"props":537,"children":539},{"className":538},[],[540],{"type":46,"value":521},{"type":46,"value":542}," reports and orders results by\n",{"type":40,"tag":135,"props":544,"children":546},{"className":545},[],[547],{"type":46,"value":548},"-is_suggested_reviewer,status,-updated_at",{"type":46,"value":550}," — the user's own suggested reports first, then by\nstatus, then most recently updated. Refer to the tool's input schema for filter mechanics.",{"type":40,"tag":84,"props":552,"children":554},{"id":553},"what-suggested-reviewer-means",[555],{"type":46,"value":556},"What \"suggested reviewer\" means",{"type":40,"tag":49,"props":558,"children":559},{},[560,566,568,573,575,580],{"type":40,"tag":135,"props":561,"children":563},{"className":562},[],[564],{"type":46,"value":565},"is_suggested_reviewer: true",{"type":46,"value":567}," on a report means ",{"type":40,"tag":55,"props":569,"children":570},{},[571],{"type":46,"value":572},"the current PostHog user is one of up to\nthree people the report-research flow flagged as best-placed to act on this report",{"type":46,"value":574},". It is\nthe strongest signal you have that a report matters to the user ",{"type":40,"tag":281,"props":576,"children":577},{},[578],{"type":46,"value":579},"personally",{"type":46,"value":581},", and you should\nlean on it when triaging.",{"type":40,"tag":49,"props":583,"children":584},{},[585,587,593],{"type":46,"value":586},"How the flag is produced (see ",{"type":40,"tag":135,"props":588,"children":590},{"className":589},[],[591],{"type":46,"value":592},"report_generation\u002Fresolve_reviewers.py",{"type":46,"value":594},"):",{"type":40,"tag":596,"props":597,"children":598},"ol",{},[599,604,617],{"type":40,"tag":95,"props":600,"children":601},{},[602],{"type":46,"value":603},"While researching a report, the agent identifies the GitHub commits most relevant to the\nunderlying signals (e.g. commits that touched the failing code path).",{"type":40,"tag":95,"props":605,"children":606},{},[607,609,615],{"type":46,"value":608},"It fetches the authors of those commits, weights earlier\u002Fmore-relevant commits more\nheavily, and keeps the top three GitHub logins. These get persisted as a\n",{"type":40,"tag":135,"props":610,"children":612},{"className":611},[],[613],{"type":46,"value":614},"SUGGESTED_REVIEWERS",{"type":46,"value":616}," artefact on the report.",{"type":40,"tag":95,"props":618,"children":619},{},[620,622,627,629,635,637,643],{"type":46,"value":621},"At read time, those GitHub logins are mapped back to PostHog users via each org member's\nlinked GitHub identity (social auth or GitHub integration). If the ",{"type":40,"tag":281,"props":623,"children":624},{},[625],{"type":46,"value":626},"current",{"type":46,"value":628}," viewer's\nlinked GitHub login is one of them, ",{"type":40,"tag":135,"props":630,"children":632},{"className":631},[],[633],{"type":46,"value":634},"is_suggested_reviewer",{"type":46,"value":636}," flips to ",{"type":40,"tag":135,"props":638,"children":640},{"className":639},[],[641],{"type":46,"value":642},"true",{"type":46,"value":644}," for that\nreport.",{"type":40,"tag":49,"props":646,"children":647},{},[648],{"type":46,"value":649},"Practical implications for triage:",{"type":40,"tag":91,"props":651,"children":652},{},[653,665,677,696],{"type":40,"tag":95,"props":654,"children":655},{},[656,658,663],{"type":46,"value":657},"A ",{"type":40,"tag":135,"props":659,"children":661},{"className":660},[],[662],{"type":46,"value":642},{"type":46,"value":664}," value means \"you wrote (or recently touched) the code this report is about\" — not\n\"you were assigned this.\" It's heuristic, not authoritative.",{"type":40,"tag":95,"props":666,"children":667},{},[668,669,675],{"type":46,"value":657},{"type":40,"tag":135,"props":670,"children":672},{"className":671},[],[673],{"type":46,"value":674},"false",{"type":46,"value":676}," value doesn't mean the report is irrelevant — it can mean (a) someone else owns\nthe code, (b) no one in the org has a linked GitHub account matching the suggested logins,\nor (c) the source material wasn't tied to a specific repo \u002F commits.",{"type":40,"tag":95,"props":678,"children":679},{},[680,682,687,689,694],{"type":46,"value":681},"If the user asks \"what should ",{"type":40,"tag":281,"props":683,"children":684},{},[685],{"type":46,"value":686},"I",{"type":46,"value":688}," look at?\", lead with ",{"type":40,"tag":135,"props":690,"children":692},{"className":691},[],[693],{"type":46,"value":565},{"type":46,"value":695},"\nreports — these are the ones where the user's name is on the relevant code. Mention the\nrest as a secondary group rather than mixing them in.",{"type":40,"tag":95,"props":697,"children":698},{},[699,701,706],{"type":46,"value":700},"If the user has ",{"type":40,"tag":281,"props":702,"children":703},{},[704],{"type":46,"value":705},"no",{"type":46,"value":707}," suggested reports but the inbox isn't empty, say so explicitly\n(\"nothing in the inbox is tied to code you've authored recently\") rather than pretending\nthe top of the list is personalized.",{"type":40,"tag":84,"props":709,"children":711},{"id":710},"workflow-handling-an-empty-or-unconfigured-inbox-read-first",[712],{"type":46,"value":713},"Workflow: handling an empty or unconfigured inbox (read first)",{"type":40,"tag":49,"props":715,"children":716},{},[717,719,724,726,731,733,739],{"type":46,"value":718},"Run this check whenever a user asks about the inbox for the first time in a session, ",{"type":40,"tag":55,"props":720,"children":721},{},[722],{"type":46,"value":723},"or",{"type":46,"value":725}," any\ntime ",{"type":40,"tag":135,"props":727,"children":729},{"className":728},[],[730],{"type":46,"value":340},{"type":46,"value":732}," returns ",{"type":40,"tag":135,"props":734,"children":736},{"className":735},[],[737],{"type":46,"value":738},"count: 0",{"type":46,"value":740},". The diagnosis decides what to say next.",{"type":40,"tag":742,"props":743,"children":745},"h3",{"id":744},"step-1-look-at-source-configs",[746],{"type":46,"value":747},"Step 1 — Look at source configs",{"type":40,"tag":749,"props":750,"children":755},"pre",{"className":751,"code":752,"language":753,"meta":754,"style":754},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","inbox-source-configs-list\n{ \"limit\": 50 }\n","json","",[756],{"type":40,"tag":135,"props":757,"children":758},{"__ignoreMap":754},[759,771],{"type":40,"tag":760,"props":761,"children":764},"span",{"class":762,"line":763},"line",1,[765],{"type":40,"tag":760,"props":766,"children":768},{"style":767},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[769],{"type":46,"value":770},"inbox-source-configs-list\n",{"type":40,"tag":760,"props":772,"children":774},{"class":762,"line":773},2,[775,781,786,792,797,802,808],{"type":40,"tag":760,"props":776,"children":778},{"style":777},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[779],{"type":46,"value":780},"{",{"type":40,"tag":760,"props":782,"children":783},{"style":777},[784],{"type":46,"value":785}," \"",{"type":40,"tag":760,"props":787,"children":789},{"style":788},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[790],{"type":46,"value":791},"limit",{"type":40,"tag":760,"props":793,"children":794},{"style":777},[795],{"type":46,"value":796},"\"",{"type":40,"tag":760,"props":798,"children":799},{"style":777},[800],{"type":46,"value":801},":",{"type":40,"tag":760,"props":803,"children":805},{"style":804},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[806],{"type":46,"value":807}," 50",{"type":40,"tag":760,"props":809,"children":810},{"style":777},[811],{"type":46,"value":812}," }\n",{"type":40,"tag":49,"props":814,"children":815},{},[816],{"type":46,"value":817},"Three meaningful cases:",{"type":40,"tag":49,"props":819,"children":820},{},[821],{"type":40,"tag":55,"props":822,"children":823},{},[824,826,831],{"type":46,"value":825},"Case A — no source configs at all (",{"type":40,"tag":135,"props":827,"children":829},{"className":828},[],[830],{"type":46,"value":738},{"type":46,"value":832},")",{"type":40,"tag":49,"props":834,"children":835},{},[836,838,843,845,849,851,856],{"type":46,"value":837},"The user hasn't onboarded to Inbox \u002F signals. ",{"type":40,"tag":55,"props":839,"children":840},{},[841],{"type":46,"value":842},"Don't pretend the inbox has data.",{"type":46,"value":844}," Tell the user\nplainly that Inbox needs signal sources to be set up first, and that the recommended way to do\nthis is to install ",{"type":40,"tag":55,"props":846,"children":847},{},[848],{"type":46,"value":75},{"type":46,"value":850}," at ",{"type":40,"tag":68,"props":852,"children":854},{"href":70,"rel":853},[72],[855],{"type":46,"value":70},{"type":46,"value":857},". Example response:",{"type":40,"tag":859,"props":860,"children":861},"blockquote",{},[862],{"type":40,"tag":49,"props":863,"children":864},{},[865,867,872],{"type":46,"value":866},"Your project doesn't have any signal sources configured yet, so the Inbox is empty. Inbox surfaces\nissues and trends that PostHog automatically clusters from sources like error tracking, session\nreplay, GitHub, Linear, and Zendesk. The fastest way to set this up is to install\n",{"type":40,"tag":68,"props":868,"children":870},{"href":70,"rel":869},[72],[871],{"type":46,"value":75},{"type":46,"value":873}," — once it's connected, signals will start flowing in\nand reports will appear in your inbox over the next day or so.",{"type":40,"tag":49,"props":875,"children":876},{},[877],{"type":46,"value":878},"Stop here unless the user wants to discuss setup. Don't run further inbox tools — they'll all be\nempty.",{"type":40,"tag":49,"props":880,"children":881},{},[882],{"type":40,"tag":55,"props":883,"children":884},{},[885,887],{"type":46,"value":886},"Case B — source configs exist but all are ",{"type":40,"tag":135,"props":888,"children":890},{"className":889},[],[891],{"type":46,"value":892},"enabled: false",{"type":40,"tag":49,"props":894,"children":895},{},[896],{"type":46,"value":897},"Sources have been set up at some point but are currently turned off. Tell the user no signals are\nflowing right now and point them at the project's signals settings to re-enable. Don't go fishing\nfor reports — anything still there is stale.",{"type":40,"tag":49,"props":899,"children":900},{},[901],{"type":40,"tag":55,"props":902,"children":903},{},[904,906],{"type":46,"value":905},"Case C — at least one source config is ",{"type":40,"tag":135,"props":907,"children":909},{"className":908},[],[910],{"type":46,"value":911},"enabled: true",{"type":40,"tag":49,"props":913,"children":914},{},[915,917,922,924,929],{"type":46,"value":916},"Setup looks healthy. If ",{"type":40,"tag":135,"props":918,"children":920},{"className":919},[],[921],{"type":46,"value":340},{"type":46,"value":923}," still returns nothing, it's most likely \"give it time\"\n— signals are flowing but nothing has clustered into a report yet. Tell the user that, briefly\nlist which sources are active (e.g. \"you have GitHub and error tracking enabled\"), and offer to\ncheck back later or to drop into the ",{"type":40,"tag":135,"props":925,"children":927},{"className":926},[],[928],{"type":46,"value":140},{"type":46,"value":930}," skill to look at raw signal volume.",{"type":40,"tag":49,"props":932,"children":933},{},[934,936,942],{"type":46,"value":935},"If any source config has ",{"type":40,"tag":135,"props":937,"children":939},{"className":938},[],[940],{"type":46,"value":941},"status: \"failed\"",{"type":46,"value":943},", surface that as part of your reply — that source\nisn't producing signals right now, which may explain a thin inbox.",{"type":40,"tag":742,"props":945,"children":947},{"id":946},"step-2-only-then-proceed-to-the-users-actual-question",[948],{"type":46,"value":949},"Step 2 — Only then proceed to the user's actual question",{"type":40,"tag":49,"props":951,"children":952},{},[953],{"type":46,"value":954},"If Step 1 found a healthy setup and at least one report exists, continue with the triage \u002F drill \u002F\nfilter workflows below.",{"type":40,"tag":84,"props":956,"children":958},{"id":957},"workflow-triage-whats-actionable",[959],{"type":46,"value":960},"Workflow: triage what's actionable",{"type":40,"tag":49,"props":962,"children":963},{},[964],{"type":46,"value":965},"When the user asks \"what should I look at?\" or \"what's actionable?\":",{"type":40,"tag":742,"props":967,"children":969},{"id":968},"step-1-pull-the-readyin-progress-queue",[970],{"type":46,"value":971},"Step 1 — Pull the ready\u002Fin-progress queue",{"type":40,"tag":749,"props":973,"children":975},{"className":751,"code":974,"language":753,"meta":754,"style":754},"inbox-reports-list\n{\n  \"status\": \"ready,in_progress,pending_input\",\n  \"limit\": 20\n}\n",[976],{"type":40,"tag":135,"props":977,"children":978},{"__ignoreMap":754},[979,987,995,1035,1059],{"type":40,"tag":760,"props":980,"children":981},{"class":762,"line":763},[982],{"type":40,"tag":760,"props":983,"children":984},{"style":767},[985],{"type":46,"value":986},"inbox-reports-list\n",{"type":40,"tag":760,"props":988,"children":989},{"class":762,"line":773},[990],{"type":40,"tag":760,"props":991,"children":992},{"style":777},[993],{"type":46,"value":994},"{\n",{"type":40,"tag":760,"props":996,"children":998},{"class":762,"line":997},3,[999,1004,1009,1013,1017,1021,1027,1031],{"type":40,"tag":760,"props":1000,"children":1001},{"style":777},[1002],{"type":46,"value":1003},"  \"",{"type":40,"tag":760,"props":1005,"children":1006},{"style":788},[1007],{"type":46,"value":1008},"status",{"type":40,"tag":760,"props":1010,"children":1011},{"style":777},[1012],{"type":46,"value":796},{"type":40,"tag":760,"props":1014,"children":1015},{"style":777},[1016],{"type":46,"value":801},{"type":40,"tag":760,"props":1018,"children":1019},{"style":777},[1020],{"type":46,"value":785},{"type":40,"tag":760,"props":1022,"children":1024},{"style":1023},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1025],{"type":46,"value":1026},"ready,in_progress,pending_input",{"type":40,"tag":760,"props":1028,"children":1029},{"style":777},[1030],{"type":46,"value":796},{"type":40,"tag":760,"props":1032,"children":1033},{"style":777},[1034],{"type":46,"value":186},{"type":40,"tag":760,"props":1036,"children":1037},{"class":762,"line":27},[1038,1042,1046,1050,1054],{"type":40,"tag":760,"props":1039,"children":1040},{"style":777},[1041],{"type":46,"value":1003},{"type":40,"tag":760,"props":1043,"children":1044},{"style":788},[1045],{"type":46,"value":791},{"type":40,"tag":760,"props":1047,"children":1048},{"style":777},[1049],{"type":46,"value":796},{"type":40,"tag":760,"props":1051,"children":1052},{"style":777},[1053],{"type":46,"value":801},{"type":40,"tag":760,"props":1055,"children":1056},{"style":804},[1057],{"type":46,"value":1058}," 20\n",{"type":40,"tag":760,"props":1060,"children":1062},{"class":762,"line":1061},5,[1063],{"type":40,"tag":760,"props":1064,"children":1065},{"style":777},[1066],{"type":46,"value":1067},"}\n",{"type":40,"tag":49,"props":1069,"children":1070},{},[1071,1073,1078],{"type":46,"value":1072},"If ",{"type":40,"tag":135,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":46,"value":738},{"type":46,"value":1079}," comes back, jump to the empty\u002Funconfigured workflow above before saying \"your\ninbox is empty\" — the right reply depends on whether sources are configured.",{"type":40,"tag":742,"props":1081,"children":1083},{"id":1082},"step-2-summarize-by-source-and-actionability",[1084],{"type":46,"value":1085},"Step 2 — Summarize by source and actionability",{"type":40,"tag":49,"props":1087,"children":1088},{},[1089],{"type":46,"value":1090},"For each report, the response includes:",{"type":40,"tag":91,"props":1092,"children":1093},{},[1094,1117,1163,1181,1192,1202,1213],{"type":40,"tag":95,"props":1095,"children":1096},{},[1097,1103,1104,1110,1111],{"type":40,"tag":135,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":46,"value":1102},"id",{"type":46,"value":178},{"type":40,"tag":135,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":46,"value":1109},"title",{"type":46,"value":178},{"type":40,"tag":135,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":46,"value":1116},"summary",{"type":40,"tag":95,"props":1118,"children":1119},{},[1120,1125,1126,1132,1133,1139,1141,1147,1149,1154,1156,1161],{"type":40,"tag":135,"props":1121,"children":1123},{"className":1122},[],[1124],{"type":46,"value":1008},{"type":46,"value":178},{"type":40,"tag":135,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":46,"value":1131},"priority",{"type":46,"value":178},{"type":40,"tag":135,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":46,"value":1138},"actionability",{"type":46,"value":1140}," (note: ",{"type":40,"tag":135,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":46,"value":1146},"null",{"type":46,"value":1148}," for reports still in ",{"type":40,"tag":135,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":46,"value":469},{"type":46,"value":1155}," \u002F\n",{"type":40,"tag":135,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":46,"value":491},{"type":46,"value":1162}," — judgment hasn't run yet)",{"type":40,"tag":95,"props":1164,"children":1165},{},[1166,1172,1173,1179],{"type":40,"tag":135,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":46,"value":1171},"signal_count",{"type":46,"value":178},{"type":40,"tag":135,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":46,"value":1178},"total_weight",{"type":46,"value":1180}," — how much underlying evidence drove the report",{"type":40,"tag":95,"props":1182,"children":1183},{},[1184,1190],{"type":40,"tag":135,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":46,"value":1189},"source_products",{"type":46,"value":1191}," — which product(s) the underlying signals came from",{"type":40,"tag":95,"props":1193,"children":1194},{},[1195,1200],{"type":40,"tag":135,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":46,"value":634},{"type":46,"value":1201}," — whether the current user is a suggested reviewer for this\nreport (see \"What 'suggested reviewer' means\" above — it's based on GitHub commit\nauthorship of the relevant code, mapped to PostHog users via linked GitHub identity)",{"type":40,"tag":95,"props":1203,"children":1204},{},[1205,1211],{"type":40,"tag":135,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":46,"value":1210},"implementation_pr_url",{"type":46,"value":1212}," — if a PR has been opened against this report",{"type":40,"tag":95,"props":1214,"children":1215},{},[1216,1222,1224],{"type":40,"tag":135,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":46,"value":1221},"_posthogUrl",{"type":46,"value":1223}," — clickable deep-link to the report; ",{"type":40,"tag":55,"props":1225,"children":1226},{},[1227],{"type":46,"value":1228},"always include this in your response",{"type":40,"tag":49,"props":1230,"children":1231},{},[1232,1234,1244],{"type":46,"value":1233},"Group the results so the user can scan quickly. ",{"type":40,"tag":55,"props":1235,"children":1236},{},[1237,1239],{"type":46,"value":1238},"Lead with reports where\n",{"type":40,"tag":135,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":46,"value":565},{"type":46,"value":1245}," — those are the ones tied to code the current user has\nauthored — and only then fall back to priority groupings for the rest:",{"type":40,"tag":749,"props":1247,"children":1251},{"className":1248,"code":1250,"language":46,"meta":754},[1249],"language-text","## Inbox — 8 actionable reports\n\n⭐ Suggested for you (1)\n- Checkout error rate spiked 3× — error_tracking, 47 signals (you're a suggested reviewer)\n  \u003C_posthogUrl>\n\n🔴 High priority (2 more)\n- Session replays on \u002Fpricing show repeated rage clicks — session_replay, 12 signals\n  \u003C_posthogUrl>\n…\n\n🟠 Medium priority (4)\n…\n",[1252],{"type":40,"tag":135,"props":1253,"children":1254},{"__ignoreMap":754},[1255],{"type":46,"value":1250},{"type":40,"tag":49,"props":1257,"children":1258},{},[1259,1261,1266],{"type":46,"value":1260},"If no reports come back with ",{"type":40,"tag":135,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":46,"value":565},{"type":46,"value":1267},", say so explicitly before listing\nthe rest — don't silently drop the section.",{"type":40,"tag":742,"props":1269,"children":1271},{"id":1270},"step-3-offer-the-drill-down",[1272],{"type":46,"value":1273},"Step 3 — Offer the drill-down",{"type":40,"tag":49,"props":1275,"children":1276},{},[1277,1279,1284,1286,1291],{"type":46,"value":1278},"End with a clear hand-off: \"Want me to dig into the checkout errors?\" → call\n",{"type":40,"tag":135,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":46,"value":357},{"type":46,"value":1285}," for the full report, then optionally hop to the ",{"type":40,"tag":135,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":46,"value":140},{"type":46,"value":1292}," skill to look\nat the underlying signal text.",{"type":40,"tag":84,"props":1294,"children":1296},{"id":1295},"workflow-drill-into-a-specific-report",[1297],{"type":46,"value":1298},"Workflow: drill into a specific report",{"type":40,"tag":49,"props":1300,"children":1301},{},[1302],{"type":46,"value":1303},"When the user pastes an Inbox URL or report ID:",{"type":40,"tag":749,"props":1305,"children":1307},{"className":751,"code":1306,"language":753,"meta":754,"style":754},"inbox-reports-retrieve\n{ \"id\": \"\u003Creport_uuid>\" }\n",[1308],{"type":40,"tag":135,"props":1309,"children":1310},{"__ignoreMap":754},[1311,1319],{"type":40,"tag":760,"props":1312,"children":1313},{"class":762,"line":763},[1314],{"type":40,"tag":760,"props":1315,"children":1316},{"style":767},[1317],{"type":46,"value":1318},"inbox-reports-retrieve\n",{"type":40,"tag":760,"props":1320,"children":1321},{"class":762,"line":773},[1322,1326,1330,1334,1338,1342,1346,1351,1355],{"type":40,"tag":760,"props":1323,"children":1324},{"style":777},[1325],{"type":46,"value":780},{"type":40,"tag":760,"props":1327,"children":1328},{"style":777},[1329],{"type":46,"value":785},{"type":40,"tag":760,"props":1331,"children":1332},{"style":788},[1333],{"type":46,"value":1102},{"type":40,"tag":760,"props":1335,"children":1336},{"style":777},[1337],{"type":46,"value":796},{"type":40,"tag":760,"props":1339,"children":1340},{"style":777},[1341],{"type":46,"value":801},{"type":40,"tag":760,"props":1343,"children":1344},{"style":777},[1345],{"type":46,"value":785},{"type":40,"tag":760,"props":1347,"children":1348},{"style":1023},[1349],{"type":46,"value":1350},"\u003Creport_uuid>",{"type":40,"tag":760,"props":1352,"children":1353},{"style":777},[1354],{"type":46,"value":796},{"type":40,"tag":760,"props":1356,"children":1357},{"style":777},[1358],{"type":46,"value":812},{"type":40,"tag":49,"props":1360,"children":1361},{},[1362,1364,1370,1372,1378,1380,1385],{"type":46,"value":1363},"Returns the full record including ",{"type":40,"tag":135,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":46,"value":1369},"signals_at_run",{"type":46,"value":1371}," and ",{"type":40,"tag":135,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":46,"value":1377},"artefact_count",{"type":46,"value":1379},". Combine this with the\n",{"type":40,"tag":135,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":46,"value":140},{"type":46,"value":1386}," skill if the user wants to see the actual signal contents:",{"type":40,"tag":596,"props":1388,"children":1389},{},[1390,1407],{"type":40,"tag":95,"props":1391,"children":1392},{},[1393,1395,1400,1402],{"type":46,"value":1394},"Use ",{"type":40,"tag":135,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":46,"value":357},{"type":46,"value":1401}," to get the report metadata + ",{"type":40,"tag":135,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":46,"value":1102},{"type":40,"tag":95,"props":1408,"children":1409},{},[1410,1412,1417,1419,1425],{"type":46,"value":1411},"Use the ",{"type":40,"tag":135,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":46,"value":140},{"type":46,"value":1418}," skill's Example 2 (fetch all signals for a specific report) — pass the\nreport ID as ",{"type":40,"tag":135,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":46,"value":1424},"metadata.report_id",{"type":46,"value":1426}," in the HogQL query",{"type":40,"tag":49,"props":1428,"children":1429},{},[1430,1432,1437,1439,1444],{"type":46,"value":1431},"The two layers complement each other: the ",{"type":40,"tag":135,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":46,"value":433},{"type":46,"value":1438}," tools give you the curated\u002Fjudged view, and\nthe ",{"type":40,"tag":135,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":46,"value":140},{"type":46,"value":1445}," skill lets you inspect the raw observations that produced it.",{"type":40,"tag":84,"props":1447,"children":1449},{"id":1448},"workflow-filter-by-topic-or-source",[1450],{"type":46,"value":1451},"Workflow: filter by topic or source",{"type":40,"tag":49,"props":1453,"children":1454},{},[1455,1457],{"type":46,"value":1456},"\"Are there any reports about ",{"type":40,"tag":1458,"props":1459,"children":1460},"topic",{},[1461,1463,1469],{"type":46,"value":1462},"?\" — start with ",{"type":40,"tag":135,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":46,"value":1468},"search",{"type":46,"value":801},{"type":40,"tag":749,"props":1471,"children":1473},{"className":751,"code":1472,"language":753,"meta":754,"style":754},"inbox-reports-list\n{\n  \"search\": \"checkout\",\n  \"status\": \"ready,in_progress,pending_input\",\n  \"limit\": 20\n}\n",[1474],{"type":40,"tag":135,"props":1475,"children":1476},{"__ignoreMap":754},[1477,1484,1491,1527,1562,1585],{"type":40,"tag":760,"props":1478,"children":1479},{"class":762,"line":763},[1480],{"type":40,"tag":760,"props":1481,"children":1482},{"style":767},[1483],{"type":46,"value":986},{"type":40,"tag":760,"props":1485,"children":1486},{"class":762,"line":773},[1487],{"type":40,"tag":760,"props":1488,"children":1489},{"style":777},[1490],{"type":46,"value":994},{"type":40,"tag":760,"props":1492,"children":1493},{"class":762,"line":997},[1494,1498,1502,1506,1510,1514,1519,1523],{"type":40,"tag":760,"props":1495,"children":1496},{"style":777},[1497],{"type":46,"value":1003},{"type":40,"tag":760,"props":1499,"children":1500},{"style":788},[1501],{"type":46,"value":1468},{"type":40,"tag":760,"props":1503,"children":1504},{"style":777},[1505],{"type":46,"value":796},{"type":40,"tag":760,"props":1507,"children":1508},{"style":777},[1509],{"type":46,"value":801},{"type":40,"tag":760,"props":1511,"children":1512},{"style":777},[1513],{"type":46,"value":785},{"type":40,"tag":760,"props":1515,"children":1516},{"style":1023},[1517],{"type":46,"value":1518},"checkout",{"type":40,"tag":760,"props":1520,"children":1521},{"style":777},[1522],{"type":46,"value":796},{"type":40,"tag":760,"props":1524,"children":1525},{"style":777},[1526],{"type":46,"value":186},{"type":40,"tag":760,"props":1528,"children":1529},{"class":762,"line":27},[1530,1534,1538,1542,1546,1550,1554,1558],{"type":40,"tag":760,"props":1531,"children":1532},{"style":777},[1533],{"type":46,"value":1003},{"type":40,"tag":760,"props":1535,"children":1536},{"style":788},[1537],{"type":46,"value":1008},{"type":40,"tag":760,"props":1539,"children":1540},{"style":777},[1541],{"type":46,"value":796},{"type":40,"tag":760,"props":1543,"children":1544},{"style":777},[1545],{"type":46,"value":801},{"type":40,"tag":760,"props":1547,"children":1548},{"style":777},[1549],{"type":46,"value":785},{"type":40,"tag":760,"props":1551,"children":1552},{"style":1023},[1553],{"type":46,"value":1026},{"type":40,"tag":760,"props":1555,"children":1556},{"style":777},[1557],{"type":46,"value":796},{"type":40,"tag":760,"props":1559,"children":1560},{"style":777},[1561],{"type":46,"value":186},{"type":40,"tag":760,"props":1563,"children":1564},{"class":762,"line":1061},[1565,1569,1573,1577,1581],{"type":40,"tag":760,"props":1566,"children":1567},{"style":777},[1568],{"type":46,"value":1003},{"type":40,"tag":760,"props":1570,"children":1571},{"style":788},[1572],{"type":46,"value":791},{"type":40,"tag":760,"props":1574,"children":1575},{"style":777},[1576],{"type":46,"value":796},{"type":40,"tag":760,"props":1578,"children":1579},{"style":777},[1580],{"type":46,"value":801},{"type":40,"tag":760,"props":1582,"children":1583},{"style":804},[1584],{"type":46,"value":1058},{"type":40,"tag":760,"props":1586,"children":1588},{"class":762,"line":1587},6,[1589],{"type":40,"tag":760,"props":1590,"children":1591},{"style":777},[1592],{"type":46,"value":1067},{"type":40,"tag":49,"props":1594,"children":1595},{},[1596,1601,1603,1609],{"type":40,"tag":135,"props":1597,"children":1599},{"className":1598},[],[1600],{"type":46,"value":1468},{"type":46,"value":1602}," matches title and summary. If the user is asking about a product area rather than a\nkeyword, use ",{"type":40,"tag":135,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":46,"value":1608},"source_product",{"type":46,"value":801},{"type":40,"tag":749,"props":1611,"children":1613},{"className":751,"code":1612,"language":753,"meta":754,"style":754},"inbox-reports-list\n{\n  \"source_product\": \"session_replay,error_tracking\",\n  \"limit\": 20\n}\n",[1614],{"type":40,"tag":135,"props":1615,"children":1616},{"__ignoreMap":754},[1617,1624,1631,1667,1690],{"type":40,"tag":760,"props":1618,"children":1619},{"class":762,"line":763},[1620],{"type":40,"tag":760,"props":1621,"children":1622},{"style":767},[1623],{"type":46,"value":986},{"type":40,"tag":760,"props":1625,"children":1626},{"class":762,"line":773},[1627],{"type":40,"tag":760,"props":1628,"children":1629},{"style":777},[1630],{"type":46,"value":994},{"type":40,"tag":760,"props":1632,"children":1633},{"class":762,"line":997},[1634,1638,1642,1646,1650,1654,1659,1663],{"type":40,"tag":760,"props":1635,"children":1636},{"style":777},[1637],{"type":46,"value":1003},{"type":40,"tag":760,"props":1639,"children":1640},{"style":788},[1641],{"type":46,"value":1608},{"type":40,"tag":760,"props":1643,"children":1644},{"style":777},[1645],{"type":46,"value":796},{"type":40,"tag":760,"props":1647,"children":1648},{"style":777},[1649],{"type":46,"value":801},{"type":40,"tag":760,"props":1651,"children":1652},{"style":777},[1653],{"type":46,"value":785},{"type":40,"tag":760,"props":1655,"children":1656},{"style":1023},[1657],{"type":46,"value":1658},"session_replay,error_tracking",{"type":40,"tag":760,"props":1660,"children":1661},{"style":777},[1662],{"type":46,"value":796},{"type":40,"tag":760,"props":1664,"children":1665},{"style":777},[1666],{"type":46,"value":186},{"type":40,"tag":760,"props":1668,"children":1669},{"class":762,"line":27},[1670,1674,1678,1682,1686],{"type":40,"tag":760,"props":1671,"children":1672},{"style":777},[1673],{"type":46,"value":1003},{"type":40,"tag":760,"props":1675,"children":1676},{"style":788},[1677],{"type":46,"value":791},{"type":40,"tag":760,"props":1679,"children":1680},{"style":777},[1681],{"type":46,"value":796},{"type":40,"tag":760,"props":1683,"children":1684},{"style":777},[1685],{"type":46,"value":801},{"type":40,"tag":760,"props":1687,"children":1688},{"style":804},[1689],{"type":46,"value":1058},{"type":40,"tag":760,"props":1691,"children":1692},{"class":762,"line":1061},[1693],{"type":40,"tag":760,"props":1694,"children":1695},{"style":777},[1696],{"type":46,"value":1067},{"type":40,"tag":49,"props":1698,"children":1699},{},[1700,1702,1707,1709,1715],{"type":46,"value":1701},"If the keyword search returns nothing meaningful, hand off to the ",{"type":40,"tag":135,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":46,"value":140},{"type":46,"value":1708}," skill — semantic\nsearch over signal text via ",{"type":40,"tag":135,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":46,"value":1714},"embedText()",{"type":46,"value":1716}," will catch reports the keyword filter missed.",{"type":40,"tag":84,"props":1718,"children":1720},{"id":1719},"workflow-review-configured-sources",[1721],{"type":46,"value":1722},"Workflow: review configured sources",{"type":40,"tag":49,"props":1724,"children":1725},{},[1726,1728],{"type":46,"value":1727},"When the user asks \"which signal sources are set up?\" or \"is ",{"type":40,"tag":1729,"props":1730,"children":1731},"product",{},[1732],{"type":46,"value":1733}," hooked up?\":",{"type":40,"tag":749,"props":1735,"children":1736},{"className":751,"code":752,"language":753,"meta":754,"style":754},[1737],{"type":40,"tag":135,"props":1738,"children":1739},{"__ignoreMap":754},[1740,1747],{"type":40,"tag":760,"props":1741,"children":1742},{"class":762,"line":763},[1743],{"type":40,"tag":760,"props":1744,"children":1745},{"style":767},[1746],{"type":46,"value":770},{"type":40,"tag":760,"props":1748,"children":1749},{"class":762,"line":773},[1750,1754,1758,1762,1766,1770,1774],{"type":40,"tag":760,"props":1751,"children":1752},{"style":777},[1753],{"type":46,"value":780},{"type":40,"tag":760,"props":1755,"children":1756},{"style":777},[1757],{"type":46,"value":785},{"type":40,"tag":760,"props":1759,"children":1760},{"style":788},[1761],{"type":46,"value":791},{"type":40,"tag":760,"props":1763,"children":1764},{"style":777},[1765],{"type":46,"value":796},{"type":40,"tag":760,"props":1767,"children":1768},{"style":777},[1769],{"type":46,"value":801},{"type":40,"tag":760,"props":1771,"children":1772},{"style":804},[1773],{"type":46,"value":807},{"type":40,"tag":760,"props":1775,"children":1776},{"style":777},[1777],{"type":46,"value":812},{"type":40,"tag":49,"props":1779,"children":1780},{},[1781,1783,1788,1789,1794,1795,1801,1802,1808,1809,1814,1816,1822],{"type":46,"value":1782},"Each entry returns ",{"type":40,"tag":135,"props":1784,"children":1786},{"className":1785},[],[1787],{"type":46,"value":1102},{"type":46,"value":178},{"type":40,"tag":135,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":46,"value":1608},{"type":46,"value":178},{"type":40,"tag":135,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":46,"value":1800},"source_type",{"type":46,"value":178},{"type":40,"tag":135,"props":1803,"children":1805},{"className":1804},[],[1806],{"type":46,"value":1807},"enabled",{"type":46,"value":178},{"type":40,"tag":135,"props":1810,"children":1812},{"className":1811},[],[1813],{"type":46,"value":1008},{"type":46,"value":1815},", plus timestamps.\nFor full details (including the per-source ",{"type":40,"tag":135,"props":1817,"children":1819},{"className":1818},[],[1820],{"type":46,"value":1821},"config",{"type":46,"value":1823}," JSON — recording filters, evaluation IDs,\netc.):",{"type":40,"tag":749,"props":1825,"children":1827},{"className":751,"code":1826,"language":753,"meta":754,"style":754},"inbox-source-configs-retrieve\n{ \"id\": \"\u003Csource_config_uuid>\" }\n",[1828],{"type":40,"tag":135,"props":1829,"children":1830},{"__ignoreMap":754},[1831,1839],{"type":40,"tag":760,"props":1832,"children":1833},{"class":762,"line":763},[1834],{"type":40,"tag":760,"props":1835,"children":1836},{"style":767},[1837],{"type":46,"value":1838},"inbox-source-configs-retrieve\n",{"type":40,"tag":760,"props":1840,"children":1841},{"class":762,"line":773},[1842,1846,1850,1854,1858,1862,1866,1871,1875],{"type":40,"tag":760,"props":1843,"children":1844},{"style":777},[1845],{"type":46,"value":780},{"type":40,"tag":760,"props":1847,"children":1848},{"style":777},[1849],{"type":46,"value":785},{"type":40,"tag":760,"props":1851,"children":1852},{"style":788},[1853],{"type":46,"value":1102},{"type":40,"tag":760,"props":1855,"children":1856},{"style":777},[1857],{"type":46,"value":796},{"type":40,"tag":760,"props":1859,"children":1860},{"style":777},[1861],{"type":46,"value":801},{"type":40,"tag":760,"props":1863,"children":1864},{"style":777},[1865],{"type":46,"value":785},{"type":40,"tag":760,"props":1867,"children":1868},{"style":1023},[1869],{"type":46,"value":1870},"\u003Csource_config_uuid>",{"type":40,"tag":760,"props":1872,"children":1873},{"style":777},[1874],{"type":46,"value":796},{"type":40,"tag":760,"props":1876,"children":1877},{"style":777},[1878],{"type":46,"value":812},{"type":40,"tag":49,"props":1880,"children":1881},{},[1882,1884,1890,1892,1897,1899,1904],{"type":46,"value":1883},"Integration credentials live in a separate ",{"type":40,"tag":135,"props":1885,"children":1887},{"className":1886},[],[1888],{"type":46,"value":1889},"Integration",{"type":46,"value":1891}," model — they are ",{"type":40,"tag":55,"props":1893,"children":1894},{},[1895],{"type":46,"value":1896},"not",{"type":46,"value":1898}," in the\n",{"type":40,"tag":135,"props":1900,"children":1902},{"className":1901},[],[1903],{"type":46,"value":1821},{"type":46,"value":1905}," blob, so it's safe to summarize the contents back to the user.",{"type":40,"tag":49,"props":1907,"children":1908},{},[1909,1910,1915],{"type":46,"value":53},{"type":40,"tag":135,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":46,"value":1008},{"type":46,"value":1916}," field reflects the underlying data import or workflow:",{"type":40,"tag":91,"props":1918,"children":1919},{},[1920,1938],{"type":40,"tag":95,"props":1921,"children":1922},{},[1923,1929,1930,1936],{"type":40,"tag":135,"props":1924,"children":1926},{"className":1925},[],[1927],{"type":46,"value":1928},"running",{"type":46,"value":493},{"type":40,"tag":135,"props":1931,"children":1933},{"className":1932},[],[1934],{"type":46,"value":1935},"completed",{"type":46,"value":1937}," — feeding signals normally",{"type":40,"tag":95,"props":1939,"children":1940},{},[1941,1946],{"type":40,"tag":135,"props":1942,"children":1944},{"className":1943},[],[1945],{"type":46,"value":510},{"type":46,"value":1947}," — the source isn't currently producing signals; flag this to the user",{"type":40,"tag":84,"props":1949,"children":1951},{"id":1950},"tips",[1952],{"type":46,"value":1953},"Tips",{"type":40,"tag":91,"props":1955,"children":1956},{},[1957,1994,2009,2014,2050,2068,2080,2099],{"type":40,"tag":95,"props":1958,"children":1959},{},[1960,1965,1967,1972,1973,1978,1980,1985,1987,1992],{"type":40,"tag":55,"props":1961,"children":1962},{},[1963],{"type":46,"value":1964},"Check setup before assuming the inbox is empty.",{"type":46,"value":1966}," If ",{"type":40,"tag":135,"props":1968,"children":1970},{"className":1969},[],[1971],{"type":46,"value":340},{"type":46,"value":732},{"type":40,"tag":135,"props":1974,"children":1976},{"className":1975},[],[1977],{"type":46,"value":738},{"type":46,"value":1979},",\ncall ",{"type":40,"tag":135,"props":1981,"children":1983},{"className":1982},[],[1984],{"type":46,"value":374},{"type":46,"value":1986}," first — no sources means the user needs to install\n",{"type":40,"tag":68,"props":1988,"children":1990},{"href":70,"rel":1989},[72],[1991],{"type":46,"value":75},{"type":46,"value":1993}," to start receiving signals; sources-but-no-reports\nmeans signals are flowing but nothing has clustered yet",{"type":40,"tag":95,"props":1995,"children":1996},{},[1997,2007],{"type":40,"tag":55,"props":1998,"children":1999},{},[2000,2002],{"type":46,"value":2001},"Always surface ",{"type":40,"tag":135,"props":2003,"children":2005},{"className":2004},[],[2006],{"type":46,"value":1221},{"type":46,"value":2008}," so the user can click through to the report",{"type":40,"tag":95,"props":2010,"children":2011},{},[2012],{"type":46,"value":2013},"The default ordering already prioritizes the user's suggested reports — don't reorder unless\nasked",{"type":40,"tag":95,"props":2015,"children":2016},{},[2017,2022,2023,2028,2030,2035,2036,2041,2043,2048],{"type":40,"tag":135,"props":2018,"children":2020},{"className":2019},[],[2021],{"type":46,"value":1131},{"type":46,"value":1371},{"type":40,"tag":135,"props":2024,"children":2026},{"className":2025},[],[2027],{"type":46,"value":1138},{"type":46,"value":2029}," are ",{"type":40,"tag":135,"props":2031,"children":2033},{"className":2032},[],[2034],{"type":46,"value":1146},{"type":46,"value":1148},{"type":40,"tag":135,"props":2037,"children":2039},{"className":2038},[],[2040],{"type":46,"value":469},{"type":46,"value":2042}," or ",{"type":40,"tag":135,"props":2044,"children":2046},{"className":2045},[],[2047],{"type":46,"value":491},{"type":46,"value":2049},"\nstatus; this is expected, not a bug — judgment hasn't run yet",{"type":40,"tag":95,"props":2051,"children":2052},{},[2053,2058,2060,2066],{"type":40,"tag":135,"props":2054,"children":2056},{"className":2055},[],[2057],{"type":46,"value":521},{"type":46,"value":2059}," reports are excluded by default; pass ",{"type":40,"tag":135,"props":2061,"children":2063},{"className":2062},[],[2064],{"type":46,"value":2065},"status: \"suppressed\"",{"type":46,"value":2067}," explicitly if the\nuser wants to see hidden items",{"type":40,"tag":95,"props":2069,"children":2070},{},[2071,2073,2078],{"type":46,"value":2072},"Don't try to write to the inbox via MCP — destroy \u002F state changes \u002F reingest endpoints are\nintentionally not exposed. If the user wants to act on a report, point them at the\n",{"type":40,"tag":135,"props":2074,"children":2076},{"className":2075},[],[2077],{"type":46,"value":1221},{"type":46,"value":2079}," deep-link",{"type":40,"tag":95,"props":2081,"children":2082},{},[2083,2085,2090,2092,2097],{"type":46,"value":2084},"For \"what kinds of signals exist?\" or \"what's been happening recently across all sources?\",\ndrop into the ",{"type":40,"tag":135,"props":2086,"children":2088},{"className":2087},[],[2089],{"type":46,"value":140},{"type":46,"value":2091}," skill — the report layer hides individual observations; you need\nHogQL on ",{"type":40,"tag":135,"props":2093,"children":2095},{"className":2094},[],[2096],{"type":46,"value":150},{"type":46,"value":2098}," to see them",{"type":40,"tag":95,"props":2100,"children":2101},{},[2102,2104,2109,2111,2116],{"type":46,"value":2103},"Source configs don't have per-record deep-links — they live behind project settings, so\n",{"type":40,"tag":135,"props":2105,"children":2107},{"className":2106},[],[2108],{"type":46,"value":391},{"type":46,"value":2110}," returns no ",{"type":40,"tag":135,"props":2112,"children":2114},{"className":2113},[],[2115],{"type":46,"value":1221},{"type":46,"value":2117},". Don't confuse them with reports",{"type":40,"tag":2119,"props":2120,"children":2121},"style",{},[2122],{"type":46,"value":2123},"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":2125,"total":2294},[2126,2141,2153,2166,2179,2194,2210,2227,2241,2256,2266,2284],{"slug":2127,"name":2127,"fn":2128,"description":2129,"org":2130,"tags":2131,"stars":2138,"repoUrl":2139,"updatedAt":2140},"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},[2132,2133,2136,2137],{"name":21,"slug":22,"type":15},{"name":2134,"slug":2135,"type":15},"Cost Optimization","cost-optimization",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},35568,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fposthog","2026-07-28T05:34:11.117757",{"slug":2142,"name":2142,"fn":2143,"description":2144,"org":2145,"tags":2146,"stars":2138,"repoUrl":2139,"updatedAt":2152},"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},[2147,2148,2151],{"name":21,"slug":22,"type":15},{"name":2149,"slug":2150,"type":15},"Audit","audit",{"name":9,"slug":8,"type":15},"2026-06-08T08:08:33.693989",{"slug":2154,"name":2154,"fn":2155,"description":2156,"org":2157,"tags":2158,"stars":2138,"repoUrl":2139,"updatedAt":2165},"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},[2159,2160,2163,2164],{"name":2149,"slug":2150,"type":15},{"name":2161,"slug":2162,"type":15},"Data Warehouse","data-warehouse",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-06-18T08:22:57.67984",{"slug":2167,"name":2167,"fn":2168,"description":2169,"org":2170,"tags":2171,"stars":2138,"repoUrl":2139,"updatedAt":2178},"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},[2172,2173,2174,2177],{"name":2149,"slug":2150,"type":15},{"name":2161,"slug":2162,"type":15},{"name":2175,"slug":2176,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-06-18T08:25:10.936787",{"slug":2180,"name":2180,"fn":2181,"description":2182,"org":2183,"tags":2184,"stars":2138,"repoUrl":2139,"updatedAt":2193},"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},[2185,2188,2191,2192],{"name":2186,"slug":2187,"type":15},"Alerting","alerting",{"name":2189,"slug":2190,"type":15},"Debugging","debugging",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-06-18T08:24:40.318583",{"slug":2195,"name":2195,"fn":2196,"description":2197,"org":2198,"tags":2199,"stars":2138,"repoUrl":2139,"updatedAt":2209},"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},[2200,2201,2204,2205,2208],{"name":21,"slug":22,"type":15},{"name":2202,"slug":2203,"type":15},"Monitoring","monitoring",{"name":13,"slug":14,"type":15},{"name":2206,"slug":2207,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},"2026-07-18T05:10:54.430898",{"slug":2211,"name":2211,"fn":2212,"description":2213,"org":2214,"tags":2215,"stars":2138,"repoUrl":2139,"updatedAt":2226},"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},[2216,2219,2222,2223],{"name":2217,"slug":2218,"type":15},"Automation","automation",{"name":2220,"slug":2221,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},{"name":2224,"slug":2225,"type":15},"Workflow Automation","workflow-automation","2026-07-28T05:34:12.167015",{"slug":2228,"name":2228,"fn":2229,"description":2230,"org":2231,"tags":2232,"stars":2138,"repoUrl":2139,"updatedAt":2240},"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},[2233,2234,2235,2238,2239],{"name":21,"slug":22,"type":15},{"name":2189,"slug":2190,"type":15},{"name":2236,"slug":2237,"type":15},"Frontend","frontend",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-05-07T05:56:19.828048",{"slug":2242,"name":2242,"fn":2243,"description":2244,"org":2245,"tags":2246,"stars":2138,"repoUrl":2139,"updatedAt":2255},"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},[2247,2250,2251,2252],{"name":2248,"slug":2249,"type":15},"API Development","api-development",{"name":2236,"slug":2237,"type":15},{"name":9,"slug":8,"type":15},{"name":2253,"slug":2254,"type":15},"SDK","sdk","2026-06-08T08:08:34.929454",{"slug":2257,"name":2257,"fn":2258,"description":2259,"org":2260,"tags":2261,"stars":2138,"repoUrl":2139,"updatedAt":2265},"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},[2262,2263,2264],{"name":2248,"slug":2249,"type":15},{"name":2206,"slug":2207,"type":15},{"name":9,"slug":8,"type":15},"2026-07-15T05:29:58.442727",{"slug":2267,"name":2267,"fn":2268,"description":2269,"org":2270,"tags":2271,"stars":2138,"repoUrl":2139,"updatedAt":2283},"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},[2272,2273,2276,2277,2280],{"name":2217,"slug":2218,"type":15},{"name":2274,"slug":2275,"type":15},"Email","email",{"name":9,"slug":8,"type":15},{"name":2278,"slug":2279,"type":15},"Reporting","reporting",{"name":2281,"slug":2282,"type":15},"Slack","slack","2026-06-09T07:32:27.935712",{"slug":2285,"name":2285,"fn":2286,"description":2287,"org":2288,"tags":2289,"stars":2138,"repoUrl":2139,"updatedAt":2293},"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},[2290,2291,2292],{"name":21,"slug":22,"type":15},{"name":2248,"slug":2249,"type":15},{"name":9,"slug":8,"type":15},"2026-06-08T08:08:29.624498",231,{"items":2296,"total":2399},[2297,2314,2330,2344,2360,2372,2383],{"slug":2298,"name":2298,"fn":2299,"description":2300,"org":2301,"tags":2302,"stars":23,"repoUrl":24,"updatedAt":2313},"account-handover","draft sales account handover notes","Draft structured handover notes for transitioning a PostHog account from one TAM or CSM to another. Use this skill when a TAM needs to hand over an account, prepare a transition briefing, write handover notes, create an account summary for a new owner, or any request involving account transitions between TAMs or CSMs. Triggers on \"hand over this account\", \"transition account to\", \"draft handover notes\", \"account briefing for new TAM\", \"prepare account transition\", or when a TAM names an account and says they're leaving or reassigning it.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2303,2306,2309,2310],{"name":2304,"slug":2305,"type":15},"Communications","communications",{"name":2307,"slug":2308,"type":15},"CRM","crm",{"name":9,"slug":8,"type":15},{"name":2311,"slug":2312,"type":15},"Sales","sales","2026-04-16T05:13:00.172732",{"slug":2315,"name":2315,"fn":2316,"description":2317,"org":2318,"tags":2319,"stars":23,"repoUrl":24,"updatedAt":2329},"auditing-warehouse-data-health","audit PostHog data warehouse health","Audit the health of a PostHog project's data warehouse — find every broken or degraded pipeline item across sources, sync schemas, materialized views, batch exports, and transformations. Use when the user asks \"what's broken in my warehouse?\", \"give me a health check\", \"audit my data pipeline\", \"why are some dashboards stale?\", or wants a one-shot triage summary before deciding where to spend time. Produces a prioritized report of issues grouped by severity and type, with recommended next steps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2320,2321,2324,2327,2328],{"name":2149,"slug":2150,"type":15},{"name":2322,"slug":2323,"type":15},"Data Engineering","data-engineering",{"name":2325,"slug":2326,"type":15},"Data Quality","data-quality",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-06-21T08:19:05.85849",{"slug":2331,"name":2331,"fn":2332,"description":2333,"org":2334,"tags":2335,"stars":23,"repoUrl":24,"updatedAt":2343},"copying-flags-across-projects","copy feature flags across PostHog projects","Copy a feature flag from one PostHog project to one or more target projects in the same organization. Use when the user wants to duplicate a flag, promote a flag from staging to production, sync flags across projects, or replicate a flag configuration in a different workspace. Covers cohort remapping, scheduled-change handling, encrypted payloads, and the safe defaults (disabled in target, no scheduled changes).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2336,2339,2342],{"name":2337,"slug":2338,"type":15},"Deployment","deployment",{"name":2340,"slug":2341,"type":15},"Feature Flags","feature-flags",{"name":9,"slug":8,"type":15},"2026-05-04T05:56:44.484909",{"slug":2345,"name":2345,"fn":2346,"description":2347,"org":2348,"tags":2349,"stars":23,"repoUrl":24,"updatedAt":2359},"diagnosing-experiment-results","diagnose PostHog experiment results and anomalies","Diagnoses bias, anomalies, and strange-looking results on a specific PostHog experiment. Covers empty \u002F 0-exposure experiments, sample ratio mismatch, identity fragmentation, multi-variant exposure, uneven-split exclusion bias, significance traps (peeking, A\u002FA, Bayesian vs Frequentist), PostHog-vs-SQL discrepancies, and surprises after mid-run edits. Symptom-driven dispatch to the right diagnostic.\nTRIGGER when: user asks 'is my experiment biased?' or 'why 0 exposures?', references the bias banner, says a variant looks strange \u002F wrong \u002F off, sees significance flipping, notices PostHog numbers disagreeing with their SQL, sees an A\u002FA test showing significance, or reports surprises after mid-run edits.\nDO NOT TRIGGER when: creating a new experiment (use creating-experiments), only configuring rollout (use configuring-experiment-rollout) or metrics (use configuring-experiment-analytics), or only asking lifecycle questions (use managing-experiment-lifecycle).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2350,2353,2354,2357,2358],{"name":2351,"slug":2352,"type":15},"A\u002FB Testing","a-b-testing",{"name":21,"slug":22,"type":15},{"name":2355,"slug":2356,"type":15},"Data Analysis","data-analysis",{"name":2189,"slug":2190,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:59:58.103867",{"slug":2361,"name":2361,"fn":2362,"description":2363,"org":2364,"tags":2365,"stars":23,"repoUrl":24,"updatedAt":2371},"diagnosing-missing-recordings","diagnose missing PostHog session recordings","Diagnoses why a session recording is missing or was not captured. Use when a user asks why a session has no replay, why recordings aren't appearing, or wants to troubleshoot session replay capture issues for a specific session ID or across their project. Covers SDK diagnostic signals, project settings, sampling, triggers, ad blockers, and quota\u002Fbilling scenarios.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2366,2367,2368,2369,2370],{"name":21,"slug":22,"type":15},{"name":2189,"slug":2190,"type":15},{"name":2236,"slug":2237,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-04-22T05:06:51.989772",{"slug":2373,"name":2373,"fn":2374,"description":2375,"org":2376,"tags":2377,"stars":23,"repoUrl":24,"updatedAt":2382},"diagnosing-sdk-health","diagnose PostHog SDK health","Diagnoses the health of a project's PostHog SDK integrations — which SDKs are out of date and how to fix them. Use when a user asks about PostHog SDK versions, outdated SDKs, upgrade recommendations, \"SDK health\", \"SDK doctor\" (the former name), or when events or features seem off and it might be due to an old SDK.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2378,2379,2380,2381],{"name":21,"slug":22,"type":15},{"name":2189,"slug":2190,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-04-27T05:46:14.554016",{"slug":2384,"name":2384,"fn":2385,"description":2386,"org":2387,"tags":2388,"stars":23,"repoUrl":24,"updatedAt":2398},"error-tracking-android","track Android errors with PostHog","PostHog error tracking for Android",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2389,2392,2393,2396,2397],{"name":2390,"slug":2391,"type":15},"Android","android",{"name":2189,"slug":2190,"type":15},{"name":2394,"slug":2395,"type":15},"Mobile","mobile",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:46:26.982494",110]