Design effective KPI dashboards with metrics selection

KPI dashboard design

by wshobson · MIT license · ★ 39,857 on GitHub · updated Sep 21

KPI dashboard design cover

Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use this skill when building an executive SaaS metrics dashboard tracking MRR, churn, and LTV/CAC ratios; designing…

---
name: kpi-dashboard-design
description: Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use this skill when building an executive SaaS metrics dashboard tracking MRR, churn, and LTV/CAC ratios; designing an operations center with live service health and request throughput; creating a cohort retention analysis view for a product team; or debugging a dashboard where metrics contradict each other due to inconsistent calculation methodology.
---

# KPI Dashboard Design

Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.

## When to Use This Skill

- Designing executive dashboards
- Selecting meaningful KPIs
- Building real-time monitoring displays
- Creating department-specific metrics views
- Improving existing dashboard layouts
- Establishing metric governance

Overview

Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.

Manual install (npx, ZIP)
Claude Codenpx skills add wshobson/agents --skill kpi-dashboard-design -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/wshobson/agents/tar.gz/4236bb91f839 \ | tar -xz -C ~/.claude/skills --strip-components=4 agents-4236bb91f839/plugins/business-analytics/skills/kpi-dashboard-design
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/659a31f4835b1033aa01/kpi-dashboard-design.zip" -OutFile "$env:TEMP\kpi-dashboard-design.zip"; Expand-Archive "$env:TEMP\kpi-dashboard-design.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.4 KB
  • references/1 file · 14.6 KB
Read the files here
wshobson/4236bb92 files
SKILL.md
Show the full text148 lines

KPI Dashboard Design

Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.

When to Use This Skill

  • Designing executive dashboards
  • Selecting meaningful KPIs
  • Building real-time monitoring displays
  • Creating department-specific metrics views
  • Improving existing dashboard layouts
  • Establishing metric governance

Core Concepts

1. KPI Framework
Level Focus Update Frequency Audience
Strategic Long-term goals Monthly/Quarterly Executives
Tactical Department goals Weekly/Monthly Managers
Operational Day-to-day Real-time/Daily Teams
2. SMART KPIs
Specific: Clear definition
Measurable: Quantifiable
Achievable: Realistic targets
Relevant: Aligned to goals
Time-bound: Defined period
3. Dashboard Hierarchy
├── Executive Summary (1 page)
│   ├── 4-6 headline KPIs
│   ├── Trend indicators
│   └── Key alerts
├── Department Views
│   ├── Sales Dashboard
│   ├── Marketing Dashboard
│   ├── Operations Dashboard
│   └── Finance Dashboard
└── Detailed Drilldowns
    ├── Individual metrics
    └── Root cause analysis

Detailed worked examples and patterns

Detailed sections (starting with ## Common KPIs by Department) live in references/details.md. Read that file when the navigation summary above is insufficient.

Best Practices

Do's
  • Limit to 5-7 KPIs - Focus on what matters
  • Show context - Comparisons, trends, targets
  • Use consistent colors - Red=bad, green=good
  • Enable drilldown - From summary to detail
  • Update appropriately - Match metric frequency
Don'ts
  • Don't show vanity metrics - Focus on actionable data
  • Don't overcrowd - White space aids comprehension
  • Don't use 3D charts - They distort perception
  • Don't hide methodology - Document calculations
  • Don't ignore mobile - Ensure responsive design

Troubleshooting

MRR shown on dashboard contradicts finance's number

The most common cause is inconsistent treatment of annual plans. Finance may prorate to a daily rate while the dashboard normalizes to monthly. Align on a single formula and document it directly on the dashboard card:

-- Explicit formula shown in tooltip / data dictionary
-- Annual plans: divide total contract value by 12
-- Quarterly plans: divide by 3
-- Monthly plans: use as-is
CASE subscription_interval
    WHEN 'monthly'   THEN amount
    WHEN 'quarterly' THEN amount / 3.0
    WHEN 'yearly'    THEN amount / 12.0
END AS normalized_mrr
Dashboard shows green but product team reports users complaining

The dashboard likely tracks system uptime (a lagging indicator) but not user-facing quality metrics. Add customer-perceived metrics alongside infrastructure metrics:

Infrastructure (green) User-perceived (add these)
API uptime 99.9% P95 page load time
Error rate 0.1% Task completion rate
Queue depth normal Support ticket volume
Retention cohort looks flat — no variation between cohorts

Check whether the cohort query is partitioning by signup month correctly. A common bug is using created_at::date instead of DATE_TRUNC('month', created_at), which groups by day and produces cohorts too small to show trends:

-- Wrong: too granular, cohorts are too small
DATE_TRUNC('day', created_at) AS cohort_date

-- Correct: monthly cohorts
DATE_TRUNC('month', created_at) AS cohort_month
Real-time dashboard hammers the database

A live dashboard refreshing every 10 seconds with complex cohort SQL will degrade production query performance. Separate OLAP workloads from OLTP by writing pre-aggregated metrics to a summary table via a scheduled job, and have the dashboard read from that:

# Scheduled every 5 minutes via cron/Celery
def refresh_mrr_summary():
    conn.execute("""
        INSERT INTO kpi_snapshot (metric, value, snapshot_at)
        SELECT 'mrr', SUM(...), NOW()
        FROM subscriptions WHERE status = 'active'
        ON CONFLICT (metric) DO UPDATE SET value = EXCLUDED.value
    """)
Alert thresholds fire constantly, team ignores them

Static thresholds set once and never reviewed cause alert fatigue. Use dynamic thresholds based on rolling averages so alerts fire only when the metric deviates significantly from its own baseline:

# Alert if current value is > 2 standard deviations from 30-day rolling mean
def is_anomalous(current: float, history: list[float]) -> bool:
    mean = statistics.mean(history)
    stdev = statistics.stdev(history)
    return abs(current - mean) > 2 * stdev
  • data-storytelling - Turn dashboard findings into narratives that drive executive decisions
1---
2name: kpi-dashboard-design
3description: Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use this skill when building an executive SaaS metrics dashboard tracking MRR, churn, and LTV/CAC ratios; designing an operations center with live service health and request throughput; creating a cohort retention analysis view for a product team; or debugging a dashboard where metrics contradict each other due to inconsistent calculation methodology.
4---
5 
6# KPI Dashboard Design
7 
8Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.
9 
10## When to Use This Skill
11 
12- Designing executive dashboards
13- Selecting meaningful KPIs
14- Building real-time monitoring displays
15- Creating department-specific metrics views
16- Improving existing dashboard layouts
17- Establishing metric governance
18 
19## Core Concepts
20 
21### 1. KPI Framework
22 
23| Level | Focus | Update Frequency | Audience |
24| --------------- | ---------------- | ----------------- | ---------- |
25| **Strategic** | Long-term goals | Monthly/Quarterly | Executives |
26| **Tactical** | Department goals | Weekly/Monthly | Managers |
27| **Operational** | Day-to-day | Real-time/Daily | Teams |
28 
29### 2. SMART KPIs
30 
31```
32Specific: Clear definition
33Measurable: Quantifiable
34Achievable: Realistic targets
35Relevant: Aligned to goals
36Time-bound: Defined period
37```
38 
39### 3. Dashboard Hierarchy
40 
41```
42├── Executive Summary (1 page)
43│ ├── 4-6 headline KPIs
44│ ├── Trend indicators
45│ └── Key alerts
46├── Department Views
47│ ├── Sales Dashboard
48│ ├── Marketing Dashboard
49│ ├── Operations Dashboard
50│ └── Finance Dashboard
51└── Detailed Drilldowns
52 ├── Individual metrics
53 └── Root cause analysis
54```
55 
56## Detailed worked examples and patterns
57 
58Detailed sections (starting with `## Common KPIs by Department`) live in `references/details.md`. Read that file when the navigation summary above is insufficient.
59 
60## Best Practices
61 
62### Do's
63 
64- **Limit to 5-7 KPIs** - Focus on what matters
65- **Show context** - Comparisons, trends, targets
66- **Use consistent colors** - Red=bad, green=good
67- **Enable drilldown** - From summary to detail
68- **Update appropriately** - Match metric frequency
69 
70### Don'ts
71 
72- **Don't show vanity metrics** - Focus on actionable data
73- **Don't overcrowd** - White space aids comprehension
74- **Don't use 3D charts** - They distort perception
75- **Don't hide methodology** - Document calculations
76- **Don't ignore mobile** - Ensure responsive design
77 
78## Troubleshooting
79 
80### MRR shown on dashboard contradicts finance's number
81 
82The most common cause is inconsistent treatment of annual plans. Finance may prorate to a daily rate while the dashboard normalizes to monthly. Align on a single formula and document it directly on the dashboard card:
83 
84```sql
85-- Explicit formula shown in tooltip / data dictionary
86-- Annual plans: divide total contract value by 12
87-- Quarterly plans: divide by 3
88-- Monthly plans: use as-is
89CASE subscription_interval
90 WHEN 'monthly' THEN amount
91 WHEN 'quarterly' THEN amount / 3.0
92 WHEN 'yearly' THEN amount / 12.0
93END AS normalized_mrr
94```
95 
96### Dashboard shows green but product team reports users complaining
97 
98The dashboard likely tracks system uptime (a lagging indicator) but not user-facing quality metrics. Add customer-perceived metrics alongside infrastructure metrics:
99 
100| Infrastructure (green) | User-perceived (add these) |
101|---|---|
102| API uptime 99.9% | P95 page load time |
103| Error rate 0.1% | Task completion rate |
104| Queue depth normal | Support ticket volume |
105 
106### Retention cohort looks flat — no variation between cohorts
107 
108Check whether the cohort query is partitioning by signup month correctly. A common bug is using `created_at::date` instead of `DATE_TRUNC('month', created_at)`, which groups by day and produces cohorts too small to show trends:
109 
110```sql
111-- Wrong: too granular, cohorts are too small
112DATE_TRUNC('day', created_at) AS cohort_date
113 
114-- Correct: monthly cohorts
115DATE_TRUNC('month', created_at) AS cohort_month
116```
117 
118### Real-time dashboard hammers the database
119 
120A live dashboard refreshing every 10 seconds with complex cohort SQL will degrade production query performance. Separate OLAP workloads from OLTP by writing pre-aggregated metrics to a summary table via a scheduled job, and have the dashboard read from that:
121 
122```python
123# Scheduled every 5 minutes via cron/Celery
124def refresh_mrr_summary():
125 conn.execute("""
126 INSERT INTO kpi_snapshot (metric, value, snapshot_at)
127 SELECT 'mrr', SUM(...), NOW()
128 FROM subscriptions WHERE status = 'active'
129 ON CONFLICT (metric) DO UPDATE SET value = EXCLUDED.value
130 """)
131```
132 
133### Alert thresholds fire constantly, team ignores them
134 
135Static thresholds set once and never reviewed cause alert fatigue. Use dynamic thresholds based on rolling averages so alerts fire only when the metric deviates significantly from its own baseline:
136 
137```python
138# Alert if current value is > 2 standard deviations from 30-day rolling mean
139def is_anomalous(current: float, history: list[float]) -> bool:
140 mean = statistics.mean(history)
141 stdev = statistics.stdev(history)
142 return abs(current - mean) > 2 * stdev
143```
144 
145## Related Skills
146 
147- `data-storytelling` - Turn dashboard findings into narratives that drive executive decisions
148 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 39,857
Checked
Source
wshobson/agents ↗
Creator
wshobson · 179 listings
View creator

Similar skills

See all →
SkillShow experiment dashboard with results, active loops/ar:ar-status — Experiment Dashboardalirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillTurn a LinkedIn Analytics exportAnalytics dashboardcharlie947/social-media-skills · by charlie947Turn a LinkedIn Analytics export into an interactive dark-themed React dashboard plus a written strategic analysis with 5 data-backed content recommendations. Reads every sheet in the export, builds charts for engagement trend, follower growth, post performance scatter, day-of-week heatmap, and audience breakdown. Use this skill whenever the user says "analyse my linkedin", "linkedin analytics", "build my dashboard", "review my performance", or uploads a LinkedIn Analytics export file. Requires the user's LinkedIn Analytics export (xlsx) as input.★ 3.7k GitHub starsSkillGenerate a pre-earnings briefing for any stock using YahooEarnings Preview Skillhimself65/finance-skills · by himself65Generate a pre-earnings briefing for any stock using Yahoo Finance data. Use this skill whenever the user wants to prepare for an upcoming earnings report, understand what analysts expect, review a company's beat/miss track record, or get a quick overview before an earnings call. Triggers include: "earnings preview for AAPL", "what to expect from TSLA earnings", MSFT reports next week", "earnings preview", "pre-earnings analysis", what are analysts expecting for NVDA", "earnings estimates for", will GOOGL beat earnings", "earnings beat/miss history", upcoming earnings", "before earnings", "earnings setup", consensus estimates", "earnings whisper", "EPS expectations", what's the street expecting", "earnings season preview", any mention of preparing for or previewing an earnings report, or any request to understand expectations ahead of a company's earnings date. Always use this skill when the user mentions a ticker in context of upcoming earnings, even if they don't say "preview" explicitly.★ 3.3k GitHub starsSkillVet a perf measurement before you report or act on itBenchmark checklistmichael-denyer/pstack-claude · by michael-denyerVet a perf measurement (limiter, tuning, limits, errors, repeatability, relevance, and whether the work happened) before you report or act on it. Use when you run a benchmark or report a speedup or regression you measured.★ 1k GitHub starsSkillReport a bug, file an issue, submit a bug reportReport Issue — mobile-appmicrosoft/power-platform-skills · by microsoftUse when the user wants to report a bug, file an issue, submit a bug report, or report any problem with the mobile-app plugin.★ 954 GitHub starsSkillBuild the agency dashboard across all client brands: health/digital-marketing-pro:agency-dashboardindranilbanerjee/digital-marketing-pro · by indranilbanerjeeBuild the agency dashboard across all client brands: health, pacing, risk. "how are all our clients doing"★ 866 GitHub stars

More from wshobson

SkillMaster C/.NET backend development patterns for buildingwshobson/agents · by wshobsonMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.★ 39.9k GitHub starsSkillImplement WCAG 2.2 compliant interfaces with mobileAccessibility compliancewshobson/agents · by wshobsonImplement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.★ 39.9k GitHub starsSkillMaster Material Design 3 and Jetpack Compose patternsAndroid Mobile Designwshobson/agents · by wshobsonMaster Material Design 3 and Jetpack Compose patterns for building native Android apps. Use when designing Android interfaces, implementing Compose UI, or following Google's Material Design guidelines.★ 39.9k GitHub starsSkillMigrate from AngularJS to Angular using hybrid modeAngular migrationwshobson/agents · by wshobsonMigrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.★ 39.9k GitHub starsSkillUnderstand anti-reversing, obfuscationAnti reversing techniqueswshobson/agents · by wshobsonUnderstand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.★ 39.9k GitHub starsSkillBuild production Apache Airflow DAGs with best practicesApache Airflow DAG Patternswshobson/agents · by wshobsonBuild production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.★ 39.9k GitHub stars