dashboard-spec
Spec a dashboard before anyone builds it — the audience and the decision it serves, the questions in priority order, one chart per question with the chart type and why, the defined metric behind each chart, filters, refresh cadence and freshness SLA, and a list of what is deliberately left off, with vanity metrics cut. Use when the user says "spec a dashboard", "what should go on our KPI dashboard", "the BI team needs requirements for a dashboard", "our dashboard has 40 charts and nobody uses it", or "design the exec dashboard".
Other ways to install
With the sibling skills it hands off to:
The whole pack it belongs to:
By hand, from a clone of the repo:
In Claude Code, with the data-analytics plugin installed, invoke it as:
Try it
A realistic prompt from the skill's acceptance evals:
Acme's VP of sales wants an exec dashboard for the Tuesday pipeline review, where she decides which deals need executive help and whether the quarter's forecast needs changing. Requested: total revenue all-time, pipeline by stage, win rate, average deal size, deals by rep, a leaderboard of calls made, website visitors, forecast vs quota, deals slipping past close date, and a map of customers. Defined metrics: `pipeline_value_usd` and `quarter_forecast_usd` (quota is $12M for the quarter). Data is in Salesforce, synced to BigQuery every 6 hours.
What a good result looks like
Example output
Worked example: support staffing dashboard · the skill's own worked example, source
Northwind's support team wants a dashboard. The regional support leads meet every Monday at 09:00 London time to move agents between queues for the week. They've asked for: total tickets all-time, tickets this week, tickets by queue, tickets by channel, first-response time, resolution time, CSAT, backlog, agents online, tickets per agent, top 10 tags, website help-centre page views, NPS, and a world map of customers. Defined metrics so far:
first_response_hours_p90(with a 4-hour target per queue) andopen_backlog_tickets. Data is in the Zendesk export in Snowflake, refreshed nightly.
No questions asked: the audience, the decision and its cadence, and the defined metrics are all in the prompt.
Dashboard spec: Weekly queue staffing
Audience: regional support leads · Owner: support operations lead [assumption] · Tool: not chosen Decision: Regional support leads decide every Monday which queues get more or fewer agents for the week.
Questions, in priority order
| # | Question | If the answer is bad, they… |
|---|---|---|
| 1 | Which queues missed the 4-hour first-response target last week? | Move agents to those queues |
| 2 | Which queues have the biggest open backlog going into this week? | Add agents or schedule a backlog session |
| 3 | Is any queue's incoming volume trending up? | Plan staff ahead of the trend, not after it |
| 4 | How many tickets does an agent on each queue handle per week? | Size the move: how many agents fix the gap |
| 5 | Which queue and ticket combinations need a closer look? | Open the detail and assign follow-up |
Charts
| # | Chart | Type | Why this type | Metric (defined name) | Grain · window · comparison |
|---|---|---|---|---|---|
| 1 | Which queues missed the 4h response target last week? | Sorted horizontal bar with a target line at 4h | Ranking against a threshold; the worst queue reads first | first_response_hours_p90 | queue · last complete week · vs 4h target |
| 2 | Open backlog by queue, Monday 06:00 | Sorted horizontal bar | Ranking by size | open_backlog_tickets | queue · snapshot · vs same time last week |
| 3 | Incoming tickets per queue, last 8 weeks | Line chart, one line per queue (small multiples if more than five queues) | Change over time | undefined: needs a spec before build (incoming tickets: created time? merged tickets? spam?) | queue · weekly · last 8 weeks |
| 4 | Tickets handled per agent-week by queue | Number tiles, one per queue | Single current value per queue, used for arithmetic | undefined: needs a spec before build (what counts as handled; how agent-weeks are counted for part-timers) | queue · last complete week · vs 4-week average |
| 5 | Queue detail | Table, sorted by response time over target | Exact values for lookup | first_response_hours_p90, open_backlog_tickets, and the two undefined metrics | queue · last complete week |
Filters
| Filter | Default | Applies to | Notes |
|---|---|---|---|
| Region | The viewer's region | All | |
| Week | Last complete week (Monday to Sunday, London time) | Charts 1, 4, 5 |
Left off as filters: channel and tag. A ticket can carry several tags, so a tag filter would fan out the ticket counts; channel doesn't change a staffing decision made per queue.
Refresh and freshness
- Refresh: nightly, matching the existing Snowflake load
- Freshness SLA: Sunday's data loaded by 06:00 London time on Monday, three hours before the meeting
- When stale: a red banner across the top naming the support operations lead
- "Data as of" timestamp: top right, on every view
Layout
+-----------------------------------------------------------+
| Q1: Queues over 4h response target (sorted bar) |
+-----------------------------+-----------------------------+
| Q2: Open backlog by queue | Q3: Incoming tickets trend |
+-----------------------------+-----------------------------+
| Q4: Tickets per agent-week tiles |
+-----------------------------------------------------------+
| Q5: Queue detail table |
+-----------------------------------------------------------+
Deliberately left off
| Requested item | Why it's cut |
|---|---|
| Total tickets all-time | Only goes up; changes no staffing decision |
| Tickets this week (single total) | Replaced by the per-queue trend in chart 3, which tells the leads where to move people |
| Tickets by channel | Staffing is by queue, not channel. Belongs on a channel-strategy dashboard. |
| Resolution time | Driven by product fixes and customer replies as much as staffing. Keep it for the monthly quality review. |
| CSAT, NPS | Lagging and not specific to a queue-staffing move this week. Monthly quality review. |
| Agents online | A live-floor number; the decision is weekly |
| Top 10 tags | Diagnostic, not a staffing input; tags also fan out counts |
| Help-centre page views | Activity with no action for this audience |
| World map of customers | Answers no question on the list |
Open questions
- Incoming tickets needs a written definition (created time, merged and spam tickets). Owner: support operations lead.
- Tickets handled per agent-week needs a spec (what "handled" means, part-time agents). Owner: support operations lead.
- Confirm the dashboard owner.
How it's checked
Measured against plain Claude Code (2026-10-23): it met 77% of its checks, against 55% without it, and a blind judge preferred the agent without it. How skills are checked
21 assertions across 3 acceptance evals, and 8 trigger queries. Every skill's checks
What the output must do
When it should and shouldn't activate
Should activate:
- Spec a dashboard for our weekly ops review before the BI team builds it
- What should go on the exec KPI dashboard? Here's the list everyone asked for
- Our marketing dashboard has 40 charts and nobody uses it, redesign what goes on it
- Write the requirements for a Looker dashboard for the finance team
Should leave to another skill:
- Define exactly how monthly recurring revenue is calculated
- Design SLOs, alerts and the service health dashboard for the payments API
- Pick the success metrics and targets for the new search feature
- Build a report of how my team is using AI coding tools from this usage log
Related skills
ai-usage-report, observability-plan, success-metrics
Source
SKILL.md · the whole folder on GitHub.