New to Claude Skills? Learn how to install them →

Mposthog on GitHub

Manage Dashboard Widgets

Free

Streamline the creation and management of dashboard widgets.

Get this skill

Free · Opens the source repo

What Manage Dashboard Widgets does

The Manage Dashboard Widgets skill is designed for PostHog engineers who are involved in the development and management of dashboard widget tiles. This skill provides a structured approach to shipping new widget types or updating existing ones within the PostHog dashboard framework. It serves as a comprehensive guide, ensuring that engineers follow the necessary protocols for widget creation and modification, which are crucial for maintaining consistency and functionality in the dashboard environment.

With this skill, engineers can easily navigate the process of introducing new widget types by following the mandatory intake process outlined in the skill. This includes understanding the product UI, applying defaults, resolving ambiguities, and confirming specifications before proceeding with development. For updates to existing widget types, the skill provides a clear path that bypasses the intake process, allowing for efficient modifications while ensuring backward compatibility.

The skill also emphasizes the importance of adhering to platform invariants and provides references to essential documents that outline the architecture and configuration contracts. This ensures that any changes made are in line with the overall structure of the PostHog platform, maintaining the integrity of the dashboard's functionality. Additionally, the skill includes verification steps to ensure that new widgets are thoroughly tested before they are shipped, reinforcing the quality of the dashboard experience.

Ultimately, this skill is an essential tool for PostHog engineers looking to enhance the dashboard widget platform, providing them with the guidance and resources needed to effectively manage widget types and contribute to the overall user experience.

When to use it

Use this skill when you need to ship new widget types or update existing ones in the PostHog dashboard.

When not to use it

This skill is not suitable for adding existing widget types to a dashboard or for managing insight tiles and text cards.

What you can build with it

Creating a New Widget Type

When you need to introduce a new widget type to the PostHog dashboard, follow the intake process outlined in this skill.

Updating an Existing Widget

If you need to modify the configuration or layout of an existing widget type, this skill provides a clear path to do so without requiring intake.

Ensuring Quality in Widget Development

Use the verification steps in this skill to conduct thorough testing of new widgets before they are deployed to the dashboard.

How to install Manage Dashboard Widgets

View source

1. Install with the skills CLI

npx skills add posthog/posthog/manage-dashboard-widgets --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by posthog

Managing dashboard widgets

For PostHog engineers working on dashboard widget tiles in the repo.

Human overview: products/dashboards/CONTRIBUTING.md

In scope: widget tiles (widget_id on DashboardTile) — ship new types or change shipped types.

Out of scope: adding an existing type to a dashboard (MCP dashboard-widget-catalog-listdashboard-widgets-batch-add); insight tiles, text cards, button tiles.

1. Route first

RequestPathStart here
New widget_type that does not existShip§2 Ship a new type — intake mandatory
Change a shipped type (config, query, UI, layout, RBAC, deprecate)Update§3 Update a shipped type — skip intake
Add existing type to a dashboardMCP only — not this skill
Chart / trend / graph for product metrics on a dashboardInsight tilearchitecture.md § Charts

Shipped types (code truth): architecture.md § Shipped types.

2. Ship a new widget_type

Intake — ask before coding

Mandatory for new types only. Read widget-intake.md and:

  1. Discover product UI in the repo — concrete components/scenes before generic tile-body questions.
  2. Apply defaults and inference (groupId, copy spine, list UX) — never AskQuestion banned topics.
  3. Resolve ambiguity — one batched follow-up for gaps, max 6 questions (open fields).
  4. Post the spec table; get confirmation before checklist §1.

Execute

After spec confirmation → checklist-new-widget-type.md §1 → §8. §5b (dedicated stories — required before the PR, not a follow-up) is sequenced once MVP tests are green.

Self-updating / real-time tile? Read live-widgets.md first — the live contract (is_live, creation_flag, generatedAt seeds) and the widgets/live/ toolkit.

3. Update a shipped type

Skip intake. Identify the type from the request or EXPECTED_WIDGET_TYPES in widget_registry.py.

  1. Read managing-existing-widgets.md"What kind of change?" routing table for primary files.
  2. Confirm: which type, what changes, backward-compatible config migration?
  3. Follow linked references from that table — do not re-read the new-type checklist.

Cannot change in place: widget_type string on existing rows; stored w/h when catalog defaults change.

New visualization kind = ship (§2). Chart-primary = insight tile (architecture.md § Charts).

4. Platform invariants

Both paths:

  1. RBAC registry-driven — no widget_type branches in dashboard.py. permissions-and-sharing.md § Product RBAC
  2. One widget_type everywhere — registries + both catalogs + FE registry; variants share groupId only.
  3. Per-type code in product paths — not platform shells. architecture.md § Platform files
  4. WidgetCard compound patterncomposition.md
  5. Config contract = Pydantic SSOTwidget_specs/configs.py + WidgetSpec in registry.py; hogli build:openapi for OpenAPI/FE Zod/MCP. Runtime PATCH stays JSONField. See config-and-codegen.md.
  6. No chart-primary widgetsarchitecture.md § Charts

New widget_type strings need no migration — register registries + catalogs only.

5. Companion skills

SkillWhen
improving-drf-endpointsdashboard @extend_schema (config serializers auto-derive from WIDGET_SPECS)
writing-kea-logicsedit*WidgetModalLogic.ts or dashboardLogic.tsx
django-migrationsDashboardWidget / DashboardTile schema only
adopting-generated-api-typesTile PATCH in frontend/utils.ts

6. Verify

MVP smoke (renders + core tests — not a ship point):

hogli test products/dashboards/backend/api/test/test_run_widgets.py
hogli test products/dashboards/backend/api/test/test_dashboard_widgets.py
hogli test products/dashboards/frontend/widgets/registry.test.tsx

Ship gate (required before the PR): checklist §8 + hogli build:openapi + dedicated Storybook stories per checklist §5b (component + edit modal — required, not just the catalog overview).

Config SSOT changes (also run after widget_specs/ edits):

hogli test products/dashboards/backend/api/test/test_widget_config_schema_parity.py
hogli test products/dashboards/frontend/widgets/widgetConfigSchemaParity.test.ts
hogli test products/dashboards/backend/api/test/test_widget_openapi_enums.py   # new widget_type only

Update: tests for layers touched — at minimum test_run_widgets.py if BE changed, products/dashboards/frontend/widgets/ if FE changed, hogli build:openapi if config OpenAPI changed. See managing-existing-widgets.md routing table Also check column.

Reference appendix

TopicDoc
Intake (new types only)widget-intake.md — canonical defaults + spec recap
New type checklistchecklist-new-widget-type.md
Update shipped typemanaging-existing-widgets.md
Architecturearchitecture.md — file map, invariants
Config + codegenconfig-and-codegen.md
WidgetCard / edit modalcomposition.md
List footer / tile filterslist-widget-patterns.md
Live / self-updating tileslive-widgets.md — contract + widgets/live/ toolkit
Tile min/maxlayout-and-ux.md
RBAC / sharingpermissions-and-sharing.md
Setup gatesavailability-and-gating.md
MCP after shipmcp.md
Skill doc maintenanceskill-maintenance.md

Frequently asked questions about Manage Dashboard Widgets

Similar skills