Omnibus
Skill 115 of 200
Give the current user a personal, ranked shortlist of the PostHog Inbox reports they are most likely to care about right now.
4 minutes · 937 words · 5 sections
Install
npx skills add PostHog/skills --skill prioritizing-my-inboxnpx skills add PostHog/skills/plugin marketplace add PostHog/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
The inbox on an active project holds hundreds or thousands of open reports.
PostHog builds a personal ranking for each person on a schedule, from their activity summary, the ranking model’s scores, and what waits on them.
inbox-reports-list with sort=personal serves that stored ranking in one call.
Start there.
Build a ranking yourself only when the stored one does not apply, or the person asks for something it cannot give.
source_product, priority, search, created_after) in the same call.created_after only when the person names a window. A generic “what should I look at” request takes no window, because older reports can still need attention.inbox-reports-list
{
"view": "for_you",
"sort": "personal",
"limit": 10
}Never pass ordering with this call: an explicit ordering replaces sort, and you lose the stored ranking.
Filters narrow the rows, and the rows that are left keep the stored order.
This read never builds a ranking, never calls a language model, and never gathers candidates, so it is fast.
Read three things in the response:
ranker. personal means the stored ranking ordered the page.
Any other value (priority, open, action, fix, or null) means no stored ranking applied, and the page is in the recommended order.
Do not call that page personal. See Other routes.ranking_id. Keep it from the first page.
For the next page, pass the same view, sort, filters, and limit, with offset and this ranking_id, so a rebuild between calls does not reorder the pages.
The response’s next link does not carry ranking_id, so do not follow it as it is.personal_tier and personal_reason.
They are set on each report the language model ranked: top, worth_a_look, or later, with a short reason.
After the ranked reports come the reports the ranking folded in, then every other report in the recommended order.
A row the language model did not rank has null tier and reason, even when the stored ranking placed it.
inbox_merge_key is the row’s position in that combined order, from 0.The stored ranking is only as new as its last build. A report created after the build sits after the ranked reports until the next scheduled build.
Keep the returned order.
You can point out a row that looks done, such as an already merged pull request or already_addressed: true, but do not move it without saying so.
Do not replace the order with your own score.
Lead with one line on the source: “From your personal ranking” when ranker is personal, else say that no personal ranking applied and the list is in the recommended order.
Then the list, in order.
For each report:
1. [<title>](<_posthogUrl>) · P2 · 1d · ready, PR #123 open (approved)
Why you: <personal_reason>
Model: action 9.1x · fix 4.7x
Next: review and merge the PR_posthogUrl. Always include it.updated_at, or created_at for new ones), state (status, work_state, the PR and its review state, who owns it if someone else does).personal_reason, shortened if it is long. When it is null, say why the row is there instead: suggested reviewer, claimed by them, or waiting on their input. If none applies, say “no personal reason”.action and fix (or open when the others are missing). Say “unscored” or “stale score” rather than showing a blank. The lifts are model estimates, so present them as relative likelihood, not odds.Keep each entry to three or four short lines. Use a table instead of the list when the person asks for one or N is small and they want a scan. After the list, add at most three lines:
inbox-exploration for drilling in, acting, or resolving.Each of these costs more than the list read. Use one only when the request or the response calls for it, and say which one you used.
| Situation | Do |
|---|---|
ranker is not personal | Show the recommended order and say that no personal ranking exists yet. Offer inbox-reports-for-me with wait_seconds to start a build, or the hand-built ranking in references/pool-and-score.md (opens in a new tab). |
| The person needs a list newer than the last build (“anything new since this morning?”) | inbox-reports-for-me with max_age_minutes, or refresh: true with wait_seconds. It can take up to 30 seconds. |
| A soft focus (“focus on anomaly scoring”) | inbox-reports-for-me with focus and wait_seconds. For a hard filter (“only error tracking”), add the filter to the list call instead. |
| Next steps for the top entries | inbox-reports-for-me returns them with each entry. |
| Custom weights (“ignore the model”, “weight fix chances higher”) or ranking by activity-summary themes | references/pool-and-score.md (opens in a new tab). Say that you built the order yourself. |
| “What’s waiting on me” | inbox-reports-list with view: "needs_input" and scope: "for_me", plus assignee: "mine" for their claims. |
| The list is empty | Run the setup check in inbox-exploration before you say the inbox is empty. |
inbox-exploration for those steps.fix probability does not mean the report is fixed. Read status and the PR fields for that.ranker is personal, or you built it with the hand-built flow and said so.Give the current user a personal, ranked shortlist of the PostHog Inbox reports they are most likely to care about right now. Reads their stored personal ranking first, with one `inbox-reports-list` call (`view=for_you`, `sort=personal`), and keeps its order and reasons. Uses `inbox-reports-for-me` for a fresh or focused list, and builds a ranking by hand from the activity summary and the ranking model's lifts only when no stored ranking applies or the user asks for custom weights. Use when the user says "let's look at my inbox", "what's in my inbox for me?", "my top 10 inbox reports", "what should I look at today?", or asks to re-rank, focus, or filter that list. For browsing, filtering, drilling into, or acting on a single report, use `inbox-exploration`.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 8 November 2026.SKILL.md, not by matching a directory convention. 2 distinct layouts observed: skills/omnibus/*/SKILL.md, skills/posthog/all/skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by PostHog, declaring 6 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./PostHog/skills.md, and each skill at its own .md URL.2 files · 14 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of skill 115.
Documentation the agent loads on demand, rather than up front.