Skip to content
Back to skills

Bi Dash

ASecurity

Builds a BI dashboard the way it gets trusted: a question sheet before any chart, an HTML mockup on synthetic data signed off by the asker, a field map that flags missing fields and columns with two candidates, every KPI reconciled to a reference within a stated tolerance, then the build in the repo's BI tool skill, UAT and a metric glossary. Tool-neutral. Use when the user says 'build a dashboard', 'new dashboard for', 'BI dashboard', 'KPI dashboard', 'reporting dashboard', 'mock up the dash...

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 12, 2026
ai-agentsrustgo

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned November 12, 2026

npx -y skills add vanducng/skills --skill bi-dash --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bi Dash?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bi Dash
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vanducng-bi-dash/badge)](https://www.skillsdirectory.com/skills/vanducng-bi-dash)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bi-dash
description: "Builds a BI dashboard the way it gets trusted: a question sheet before any chart, an HTML mockup on synthetic data signed off by the asker, a field map that flags missing fields and columns with two candidates, every KPI reconciled to a reference within a stated tolerance, then the build in the repo's BI tool skill, UAT and a metric glossary. Tool-neutral. Use when the user says 'build a dashboard', 'new dashboard for', 'BI dashboard', 'KPI dashboard', 'reporting dashboard', 'mock up the dashboard', 'do we have the data for this dashboard', 'check the dashboard numbers' or 'is the dashboard ready to publish'. Not for a one-off number (answer it with a query), the tool's own chart syntax (the repo's BI tool skill) or modeling pipelines (data engineering)."
license: MIT
metadata:
  author: vanducng
  version: "0.1.1"
---

# bi-dash

A dashboard fails quietly: it answers a question nobody asked, reads the wrong column, or disagrees with the number people already trust. Each stage has a gate and a file that proves it. Never pass a gate on a guess.

## When not to use it

A one-off number ("how many orders last week?") is a query: answer with the number, its definition and the period. No question sheet, no mockup, no dashboard talk.

## The gates

| # | Stage | Seat | Proof (file) | Gate |
|---|---|---|---|---|
| 1 | Information needs | lead with the asker | `question-sheet.md` ([template](references/question-sheet.md)) | Every row has an audience, a decision and a metric definition from the asker |
| 2 | Mockup | `dev.design` | HTML mockup on synthetic data; each chart names its sheet row | No chart without a row |
| 3 | Sign-off | human | The asker's yes, recorded in the slice record | Stakeholder messages are drafts for the operator to approve, never sent |
| 4 | Data availability | `dev.build` | `field-map.md` ([template](references/field-map.md)) | No `missing` row and no unchosen `variant` |
| 5 | Data validation | `dev.build` | `reconciliation.md` (below) | Every KPI inside its tolerance |
| 6 | Data engineering | `dev.build` | Models built in dev, tested, then published; each metric defined once in the semantic layer | Model tests pass |
| 7 | Build | `dev.build` | Dashboard as code, in the repo's BI tool skill; every metric carries its description | Follows [chart rules](references/chart-rules.md) |
| 8 | UAT | `dev.qa` | [UAT checklist](references/uat-checklist.md) with a real-data screenshot per sheet row | Design fidelity 9 or more against the mockup |
| 9 | Document | `dev.build` | Metric glossary: definition, source, logic, owner, refresh | Docs move with the change |

## Rules

1. **Start with the question sheet, not a chart.** On "build a dashboard for X", write `question-sheet.md` from the template, fill what the data shows, put `?` in every cell only the asker can answer, and ask for the audience and the decision each question supports. Build nothing else until they answer.
2. **Mock up on synthetic data, in HTML.** No real rows in a mockup, no generated images. Each chart's caption names its sheet row.
3. **Map every field before building.** Write `field-map.md` from the template, even when the ask is only "do we have the data?": the file is the answer and the proof. For each field the mockup shows, the `model.column`, marked `exists`, `variant` (two or more candidate columns, for example a UTC timestamp and a local date, or two geography columns) or `missing`. Profile each column you map: nulls, outliers, and duplicate spellings of one value. A `variant` needs a recorded choice and its reason; a `missing` field goes back to the asker (drop the chart or source the data). Flag both in the reply too.
4. **Reconcile before anyone sees a number.** Compare each KPI with a reference people already trust: a source-system count or a prior report. Write `reconciliation.md`:

   | KPI | Ours | Reference (source) | Gap % | Tolerance | Result |
   |---|---|---|---|---|---|

   Gap % is (ours - reference) / reference. Agree the tolerance with the metric owner; when none is set, use 1% for counts and sums and say it is a default. A gap outside the tolerance is a fail: the dashboard is not ready, whatever the other tiles say. Report the gap, the tolerance and the causes to check (filters, time zone, test or cancelled rows, late data). Send the asker a sample.
5. **Build in the repo's own tool,** as code, with the repo's BI tool skill. Define each metric once in the semantic layer, with a description.
6. **UAT on real data,** against the time-to-read budget in the sheet. A real-data screenshot answers each sheet row, and the numbers match `reconciliation.md`.
7. **Done includes the glossary:** every metric's definition, source, logic, owner and refresh cadence.

## Seats and board

On a workshop rig, `dev.build` writes the field map, reconciliation, models and dashboard; `dev.qa` runs UAT; `dev.review` reads the diff. The mockup is `dev.design`'s: the workshop has no design seat, so add one with `rig add` or let `dev.build` draw it. For the sign-off, put the question sheet and the mockup on the slice card of the tracking board (`sheet` and `mockup` links), so the asker approves both from one place.

Files in this skill

  • SKILL.md5.1 KB
  • evals/01-dashboard-ask/checks.sh828 B
  • evals/01-dashboard-ask/fixture/warehouse.db84 KB
  • evals/01-dashboard-ask/prompt.md137 B
  • evals/02-field-map/checks.sh762 B
  • evals/02-field-map/fixture/mockup.html1.2 KB
  • evals/02-field-map/fixture/warehouse.db80 KB
  • evals/02-field-map/prompt.md205 B
  • evals/03-kpi-off-reference/checks.sh1 KB
  • evals/03-kpi-off-reference/fixture/dashboard/tiles.sql371 B
  • evals/03-kpi-off-reference/fixture/reference/finance-2026-03.csv43 B
  • evals/03-kpi-off-reference/fixture/warehouse.db84 KB
  • evals/03-kpi-off-reference/prompt.md240 B
  • evals/04-plain-number/checks.sh523 B
  • evals/04-plain-number/fixture/warehouse.db28 KB
  • evals/04-plain-number/prompt.md159 B
  • evals/04-plain-number/scenario.json16 B
  • evals/common.sh849 B
  • evals/make_fixtures.py4.8 KB
  • evals/test_checks.py6.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.