Skip to content
Development
Skill

/building-a-dashboard

Build a new dashboard, or update an existing one, from a set of insights — the same job the in-app assistant does with its upsert-dashboard tool, but over MCP. Use when a user asks to create a dashboard, put several metrics/charts together on one page, assemble a dashboard for a

From plugin
posthog
81164 skills1 agent3 commands2 hooks
+1
Install
$ npx -y skills add PostHog/ai-plugin --skill building-a-dashboard --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/building-a-dashboard

Context preview

The summary Claude sees to decide when to auto-load this skill.

Build a new dashboard, or update an existing one, from a set of insights — the same job the in-app assistant does with its upsert-dashboard tool, but over MCP. Use when a user asks to create a dashboard, put several metrics/charts together on one page, assemble a dashboard for a

SKILL.md

building-a-dashboard.SKILL.md
name: building-a-dashboard
description: >
  Build a new dashboard, or update an existing one, from a set of insights — the same job the in-app
  assistant does with its upsert-dashboard tool, but over MCP. Use when a user asks to create a dashboard,
  put several metrics/charts together on one page, assemble a dashboard for a topic (product analytics,
  retention, revenue, activation, etc.), or add/remove/replace insights on a dashboard they already have.
  Covers deciding create vs update, reusing existing insights vs creating new ones, and using PostHog's
  vetted dashboard templates as reference for what a strong dashboard on a topic looks like.

Building a dashboard

A dashboard is a collection of insight tiles on one page. Your job is to figure out which insights belong on it, reuse what already exists, create what's missing, and lay them out sensibly — not to blindly generate charts.

Create vs update

First work out whether you're creating a new dashboard or changing an existing one.

  • Search existing dashboards with `dashboards-get-all` (its `search` param does fuzzy name/description matching). If the

user is clearly describing something that already exists, they probably want an update.

  • Read a candidate with `dashboard-get` to see its current tiles before you change anything.
  • If the request is ambiguous — "get my financial metrics together" could mean build new or add to an existing one —

ask a short clarifying question rather than guessing.

Use templates as reference

PostHog ships vetted dashboard templates for common topics, and orgs can share their own. Consult them before you build — they're a strong signal of which insights pair well on a topic.

1. `dashboard-templates-list` — browse templates (use `search` for a topic, `scope` to narrow to global / team / organization). This returns names, descriptions, and tags only. 2. `dashboard-templates-retrieve` — open the closest template to see its `tiles`: which insights it groups together and how each is queried.

Treat templates as **examples, not a spec**. Take inspiration from the insights and their groupings, but tailor every insight to the user's own events, properties, and intent. Don't copy a template verbatim, and don't force a template onto a request it doesn't fit — a good bespoke dashboard beats a mismatched template every time.

Select the insights

Prefer reusing existing insights over recreating them.

  • Search with `insights-list` and read promising ones with `insight-get` to check they match the user's intent and

actually have data. Full-text search misses things named differently, so list broadly before concluding an insight doesn't exist.

  • For anything missing, create it with `insight-create` (see the product-analytics insight skills for query shape).
  • Keep the set minimal — only the insights the request needs. A focused dashboard is more useful than an exhaustive one.

Assemble the dashboard

  • New dashboard: `dashboard-create` with a short (3–7 word) name and a concise description, then add the insight tiles.
  • Existing dashboard: `dashboard-update`. Adding, replacing, or removing insights means sending the full intended set of

tiles — insights you omit are removed, so include the ones you want to keep.

  • Layout: by default preserve existing tile placement. Only reflow (`dashboard-reorder-tiles`) when the user explicitly

asks to rearrange, reorder, or move tiles.

  • Verify with `dashboard-insights-run` to confirm the tiles return data, then summarize what you built and invite the

user to refine it.

When not to use this

  • Saving a single insight — just create the insight; it doesn't need a dashboard.
  • Adding non-insight widget tiles (text cards, widgets) — see the widget tools (`dashboard-widget-catalog-list`,

`dashboard-widgets-batch-add`) instead.

Related skills

  • **`managing-subscriptions`** — deliver the finished dashboard to email or Slack on a schedule
  • **`creating-ai-subscription`** — a recurring AI-written report, when prose beats a wall of charts
Read more
Ships withposthog

Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.

Get the whole plugin

Other skills on posthog.