Skip to content
SlashClone

Saas usage dashboard

@usagemetrics/saas-usage-dashboard

Turn a product events CSV (timestamp, account_id, user_id, event) into one self-contained HTML dashboard: DAU, WAU, MAU, stickiness, active accounts, top features, activation rate, weekly retention, and accounts trending down. No external scripts; open it in any browser or attach it to an email.

SkillDatav1.0.0 (latest)Tested
Activity
New: be the first to try it

Real output from this kit

How this works

  1. It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
  2. While it works, it reads and changes files in the places it lists, nowhere else.
  3. It runs these commands on your computer: node scripts/usage-dashboard.mjs.
  4. Nothing runs until you choose to use it, and you can remove it any time.

SKILL.md

SaaS usage dashboard

One command, one HTML file. The file has no external scripts or fonts, so it opens anywhere, works offline, and can be attached to an email or dropped in a shared drive. The numbers come from a script, so they are the same every time.

Inputs

An events CSV in data/ with these columns (extra columns are ignored):

timestamp,account_id,user_id,event
2026-10-30T09:12:00Z,acme-co,acme-u1,created_report
  • timestamp: ISO date or datetime, or unix seconds. Times are read as UTC.
  • account_id: the customer (company or workspace). user_id: the person.
  • event: the action name. Use the product's own names; snake_case reads best.

Where to get it: a warehouse query (select occurred_at as timestamp, account_id, user_id, event_name as event from events where occurred_at >= now() - interval '120 days'), an analytics tool's raw export, or the app's own event log. 90 to 120 days of history gives every chart enough data.

Ask the user:

  1. What is "activated"? The one action that means a new user got value (for example shared_dashboard). If they do not know, use the default: active on 3 or more distinct days in the first 14 days.
  2. Which events are noise? Logins and page views are ignored for features by default (login,logout,session_start,page_view,signup,signed_up). Add others with --ignore.
  3. A title for the page (company or product name).

Steps

  1. Check the file: row count, date range, distinct accounts and users, and the 15 most common events. Point out obvious issues (test accounts, internal users, bots) and offer to filter them into a new file data/events-clean.csv before building.
  2. Run:

    node scripts/usage-dashboard.mjs data/events.csv --activation-event shared_dashboard --title "Acme usage" --out out/usage-dashboard.html

    Other options: --as-of 2026-10-30 (defaults to the last day in the data; pick a weekday or a full day if the export ends mid-day), --activation-days 14, --ignore login,page_view,heartbeat.

  3. Tell the user where the file is (out/usage-dashboard.html) and give a five-line read-out from out/usage-dashboard.json: MAU and its change, stickiness, activation rate, the top feature, and the accounts trending down.
  4. Offer next steps that fit what you saw: the retention-cohorts kit for monthly or account-level retention, activation-funnel to see where new users drop, or customer-health-score for the accounts trending down.

How to read it (include when sharing)

  • Stickiness = average DAU over the last 30 days / MAU. Under 15% is light use, 20 to 30% is healthy for most B2B tools, over 40% is a daily habit.
  • Activation only counts users first seen at least --activation-days ago, so new users are not counted as failures.
  • Weekly retention is per first-seen week: the share of that cohort active in each later week. The current, partial week is blank.
  • Trending down: accounts with at least 20 events in the prior 28 days whose events or active users fell 30% or more in the last 28 days, or with no events for 14 days.

Output template (chat read-out)

Dashboard: out/usage-dashboard.html (as of 2026-10-30)
- MAU 42 (-2% vs prior 30 days), WAU 32, DAU 14. Stickiness 25%.
- Activation 59% (did shared_dashboard within 14 days).
- Top feature: created_report, used by 98% of MAU.
- Trending down: bluebird-labs (quiet 21 days), harbor-retail (-64% events), juniper-bank (-43%).

Guardrails

  • Events often carry user emails or names in IDs. Do not paste raw rows into chat; the dashboard shows IDs only in the accounts table.
  • Do not upload the events file or the dashboard anywhere. The user shares the HTML file.
  • If more than 1% of rows are skipped (bad timestamp, missing user), stop and show examples before trusting the numbers.

README.md

SaaS usage dashboard

Turns a raw product events export into one HTML dashboard you can open anywhere: DAU, WAU, MAU, stickiness, active accounts, top features, activation, weekly retention, and the accounts whose usage is dropping. No external scripts, no tracking, nothing to host.

Who it is for: founders, product managers, and customer success leads at B2B SaaS companies who want a usage view without setting up an analytics tool.

Example

Input (examples/events.csv, about 3,000 events from 12 accounts over four months):

timestamp,account_id,user_id,event
2026-10-30T09:12:00Z,acme-co,acm-u1,created_report

Run with --activation-event shared_dashboard. Output: out/usage-dashboard.html with KPI tiles, a 90-day DAU line, weekly active users and accounts, top features, a retention heatmap, activation by week, and this table:

AccountEvents (prior 28d to last 28d)ChangeSignal
bluebird-labs63 to 20-68%quiet 21 days
harbor-retail181 to 66-64%usage down

Plus out/usage-dashboard.json with every number.

What it can access

  • Runs node scripts/usage-dashboard.mjs (Node built-ins only).
  • Reads your export from data/. Writes out/usage-dashboard.html and .json.
  • No network. The HTML loads nothing from the internet.

Setup

None. Export events with the four columns to data/events.csv and ask Claude for a usage dashboard.

Files

  • README.md
  • SKILL.md
  • examples/events.csv
  • kit.json
  • scripts/html.mjs
  • scripts/lib.mjs
  • scripts/usage-dashboard.mjs

Did it work?

0worked for them0did not work

Sign in to say whether it worked for you.

Nobody has said yet. Tried it? Tell the next person.