Skip to content

Skills · data-analytics

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".

Pack data-analyticsTier standardJob Define and trust the numbersv0.1.1

npx skilldrop-cli install dashboard-spec
Other ways to install

With the sibling skills it hands off to:

npx skilldrop-cli install dashboard-spec --with-related

The whole pack it belongs to:

npx skilldrop-cli install --pack data-analytics

By hand, from a clone of the repo:

cp -R packs/data-analytics/skills/dashboard-spec ~/.claude/skills/

In Claude Code, with the data-analytics plugin installed, invoke it as:

/data-analytics:dashboard-spec

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

Input

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) and open_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.

Output

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

#QuestionIf the answer is bad, they…
1Which queues missed the 4-hour first-response target last week?Move agents to those queues
2Which queues have the biggest open backlog going into this week?Add agents or schedule a backlog session
3Is any queue's incoming volume trending up?Plan staff ahead of the trend, not after it
4How many tickets does an agent on each queue handle per week?Size the move: how many agents fix the gap
5Which queue and ticket combinations need a closer look?Open the detail and assign follow-up

Charts

#ChartTypeWhy this typeMetric (defined name)Grain · window · comparison
1Which queues missed the 4h response target last week?Sorted horizontal bar with a target line at 4hRanking against a threshold; the worst queue reads firstfirst_response_hours_p90queue · last complete week · vs 4h target
2Open backlog by queue, Monday 06:00Sorted horizontal barRanking by sizeopen_backlog_ticketsqueue · snapshot · vs same time last week
3Incoming tickets per queue, last 8 weeksLine chart, one line per queue (small multiples if more than five queues)Change over timeundefined: needs a spec before build (incoming tickets: created time? merged tickets? spam?)queue · weekly · last 8 weeks
4Tickets handled per agent-week by queueNumber tiles, one per queueSingle current value per queue, used for arithmeticundefined: 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
5Queue detailTable, sorted by response time over targetExact values for lookupfirst_response_hours_p90, open_backlog_tickets, and the two undefined metricsqueue · last complete week

Filters

FilterDefaultApplies toNotes
RegionThe viewer's regionAll
WeekLast 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 itemWhy it's cut
Total tickets all-timeOnly 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 channelStaffing is by queue, not channel. Belongs on a channel-strategy dashboard.
Resolution timeDriven by product fixes and customer replies as much as staffing. Keep it for the monthly quality review.
CSAT, NPSLagging and not specific to a queue-staffing move this week. Monthly quality review.
Agents onlineA live-floor number; the decision is weekly
Top 10 tagsDiagnostic, not a staffing input; tags also fan out counts
Help-centre page viewsActivity with no action for this audience
World map of customersAnswers 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
  • Opens with a one-sentence decision statement naming the VP of sales, the Tuesday cadence, and both decisions (exec help on deals, forecast change)
  • Lists at most seven questions in priority order, each with the action a bad answer triggers
  • Gives each question one chart with a chart type and a one-line reason, and no chart without a question
  • References pipeline_value_usd and quarter_forecast_usd by name and flags win rate, deal size and slipping deals as undefined build blockers rather than inventing definitions
  • Shows forecast against the $12M quota as a comparison, not a bare number
  • Cuts total revenue all-time, the calls leaderboard, website visitors and the map, each with a reason
  • Sets a refresh and freshness SLA consistent with a weekly decision and the 6-hour sync, with stale-data behaviour
  • Does not invent targets, owners or metrics not given in the prompt; assumptions are tagged
  • Builds the dashboard around the two November decisions, the purchasing split across the six distribution points and Saturday sessions, and stays within the six-chart, one-page limit
  • Defines households served as distinct households, separate from visits, and points out that the annual report's 12,000 is visits, from about 4,100 households
  • Does not promise daily volunteer hours; it sets freshness to what the monthly rota spreadsheet can support
  • Leaves out 'families lifted out of food insecurity' and explains that no outcome data exists to measure it
  • Cuts social media followers and the all-time kg total, saying why they do not help either decision
  • Applies the rule against circulating client counts below 5 to any breakdown by postcode or area
  • Notes there is no Saturday data and does not invent data sources, figures or refresh times beyond the inventory
  • Lists no more than five things
  • Ties each item to something the kitchen can act on, during service or when planning prep
  • Uses only the till data and the waste log, and notes the paper waste log has to be typed in and will not update during service
  • Does not invent other data sources, such as a stock system, labour rota or supplier prices, as if the kitchen had them
  • Delivers the list without stopping to ask questions first
  • Uses plain kitchen language and keeps it short
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.