/dashboard — Build persistent data dashboards
SkillCommerce & finance'Generates self-contained React dashboard applications from structured data, with pre-built templates for financial,
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /dashboard — Build persistent data dashboards skill
What this skill tells your AI
The instructions your AI receives, as published by matteotitta/genesys-skills in skills/primitives/design/dashboard/SKILL.md and read by ahel’s review.
Turn raw data into a reusable React dashboard. Instead of throwaway analysis, produce persistent visualization tools that can be refreshed with new data. Pre-built templates for common GTM use cases.
Doctrine inherited (Step 7 — 0626 rollout, locked 2026-06-04)
Output complies with output-tenets.md, output-simplicity.md, design-production.md. Step 6 calibration: see [[feedback_execution_doctrine_refinements_step6]].
Refinements applied: R1 (dashboard is client-team review surface — DESIGN.md cites inline for build QA; rendered dashboard has no source frames), R3 (KPI labels capability-led), R6 (CTAs from dashboard nav → product-action for in-product variants, sign-up for market-facing), R9 (verb-led section + KPI names).
Claude Code Triggers
Invoke this skill when user says:
- "/dashboard [type]"
- "Build me a dashboard for..."
- "Visualize this data"
- "Create a reporting dashboard"
- "I need a dashboard showing..."
Do NOT invoke when:
- User wants a simple chart (just describe it or use a spreadsheet)
- User wants a Google Sheet (use
create-sheet.mjs) - User wants a static report (use a document skill)
Inputs
| Parameter | Required | Description |
|---|---|---|
| Data source | Yes | File path (CSV/JSON), MCP query, or skill output reference |
| Dashboard type | No | financial / competitive-landscape / content-performance / pipeline / custom |
| Brand hub | No | Client brand hub file for branded colors, fonts, and data viz rules |
| Deploy target | No | local (default) / lovable / vercel |
Dashboard Templates
1. Financial (financial)
Data source: Xero MCP (list-profit-and-loss, list-invoices, list-payments) or Wise CSVs
Visualizations:
- Revenue by client (bar chart, stacked monthly)
- MRR/ARR trend line
- P&L summary (income vs. expenses)
- Payment timeline (when invoices are paid)
- Client concentration risk (pie chart)
Process:
- Pull data from Xero MCP or read Wise CSVs
- Transform into dashboard-friendly JSON
- Build React app with Recharts/Chart.js
- Include date range filters and client toggles
2. Competitive Landscape (competitive-landscape)
Data source: Output from /competitor-research skill (comparison matrices, threat levels)
Visualizations:
- Feature comparison matrix (interactive table with color coding)
- Positioning map (2D scatter: price vs. capability)
- Threat level radar chart
- Market coverage heatmap
- Competitor timeline (funding, launches, pivots)
Process:
- Read competitor research output files
- Extract structured data (dimensions, scores, features)
- Build React app with D3/Recharts
- Include competitor toggle filters
3. Content Performance (content-performance)
Data source: Output from /content-audit skill or CSV export from analytics
Visualizations:
- Content inventory by type and status
- Topic coverage heatmap (topics vs. funnel stages)
- Publication frequency timeline
- Performance metrics (views, engagement, conversions)
- Gap analysis visualization
Process:
- Read content audit output or analytics CSV
- Categorize by topic, type, funnel stage
- Build React app with interactive filters
- Include search and sort capabilities
4. Pipeline (pipeline)
Data source: Funnel strategy output, CRM CSV, or manual data Visualizations:
- Funnel visualization (stage counts and conversion rates)
- Stage duration distribution
- Win/loss rate by source
- Pipeline velocity trends
- Revenue forecast projection
5. Custom (custom)
Data source: Any structured data (CSV, JSON) Process:
- Analyze the data shape (columns, types, relationships)
- Suggest appropriate visualizations
- Ask user to confirm/adjust
- Build the dashboard
Design integration — DESIGN.md + shadcn + recharts
Upstream contract: This skill consumes the client's DESIGN.md file at projects/consulting/{client}/brand/{MMYY}-brand-kit.md. The dashboard renders in the client's brand: shadcn primitives for UI chrome (<Card>, <Tabs>, <Button>), recharts for data viz styled with brand colors.
What this skill reads:
colors.*— chart palette: primary for the main series, secondary/tertiary for additional series, neutral for axes/gridlines, error for negative deltastypography.*— title/headline tokens for dashboard headers, label-sm for axis labels and legendsrounded.*— card and chart container radiispacing.*— gap between metric cards, dashboard section margins, chart inner padding
Web rendering pipeline (same as /vibe-coding):
DESIGN.md tokens → app/globals.css (CSS vars) → tailwind.config.ts (utilities)
↓
shadcn primitives + recharts theming
↓
Branded React dashboard
Recharts theming:
- Pass token-derived hex values to recharts
<Line stroke>,<Bar fill>,<Pie cell>,<Area fill>props - Reference colors via CSS variables in styled components:
var(--primary),var(--secondary) - Axis labels and tooltips inherit
var(--font-sans)andvar(--on-surface) - Chart containers wrap in shadcn
<Card>for consistent surface styling
Forbidden:
- Default recharts colors (cyan/orange/green palette) — always brand-derived
- Hardcoded chart colors in component code — always CSS vars or token-derived constants
- Custom card/tab/button equivalents — use shadcn primitives
Required:
- Cite DESIGN.md path in the dashboard project README
- Apply the brand's "Do's and Don'ts" — one primary color per dashboard surface (use it for the most important metric only)
Authority: Full integration contract in .claude/rules/design-production.md (auto-loaded). When in doubt, that file wins.
If no DESIGN.md exists: pause and recommend running /brand-kit first. Do not invent tokens.
Build Process
Step 1: Data preparation
Read and validate the data source:
- CSV → Parse headers, detect types, handle missing values
- JSON → Validate structure, identify nested objects
- MCP → Execute queries, transform responses
- Skill output → Read markdown tables or structured sections
Step 2: Architecture
Generate a React app structure:
dashboard/
├── src/
│ ├── App.tsx # Main app with routing
│ ├── data/ # Transformed data as JSON
│ ├── components/ # Chart components
│ ├── hooks/ # Data loading and filtering
│ └── styles/ # Tailwind or styled-components
├── package.json
├── vite.config.ts
└── README.md # Data refresh instructions
Step 3: Component selection
Based on data shape and dashboard type, select chart components:
- Bar charts → Comparisons across categories
- Line charts → Trends over time
- Pie/donut → Composition/proportion
- Scatter → Correlation between two variables
- Tables → Detailed data with sorting/filtering
- Heatmaps → Two-dimensional density
- Radar → Multi-variable comparison
Step 4: Build via /vibe-coding
Hand off to the /vibe-coding skill with a detailed specification:
Build a React dashboard app with these requirements:
- Framework: Vite + React + TypeScript
- Charts: Recharts (or Chart.js)
- Styling: Tailwind CSS
- Data: {inline JSON or file path}
- Components: {list of chart components needed}
- Filters: {date range, category toggles, search}
- Branding: {colors from gdrive-config.json if client specified}
Step 5: Data refresh instructions
Generate a README explaining how to refresh the data:
- For Xero: which MCP commands to run and how to export
- For CSVs: where to get the updated file
- For skill output: which skill to re-run
Client Branding
When --client is specified, pull brand colors from .claude/mcp/gdrive/gdrive-config.json:
// Example: ClientCo branding
{
"primaryColor": "#1a1a2e",
"secondaryColor": "#16213e",
"accentColor": "#0f3460",
"font": "Inter"
}
Apply to: chart colors, header background, accent elements, font family.
Design cycle (post-authoring phases)
Dashboards are data-dense by definition — Cognitive load is always-on for this skill (not conditional). Run the full phase walk before ship. Each phase references `../../meta/catalog/design-reviewer/the premium reference.
- Layout —
layout-tenets.md(rhythm, density budget; dashboards push 8–15 components per viewport) - Distill —
distill-principles.md(every chart earns its place) - Typeset —
typeset-principles.md(tabular nums for numeric data) - Polish —
polish-principles.md(interaction states for filters, sortable columns) - Harden —
harden-checklist.md(empty states, loading skeletons matching chart shape, error states for failed data fetches) - Cognitive load —
cognitive-load-tenets.md(always-on for dashboards: ≤7±2 visible options per decision, progressive disclosure, recognition over recall) - Delight —
delight-patterns.md(custom empty states; restraint matches B2B SaaS context) - Onboarding —
onboarding-patterns.md(empty-state-with-tutorial as first-run experience) - Final review — run
/design-reviewer
Notes
- Start with the simplest visualization that answers the question — don't over-engineer
- Financial dashboards MUST use real data from Xero MCP or Wise CSVs (never fabricated)
- Competitive landscape dashboards work best after running
/competitor-researchfirst - The
/vibe-codingskill handles the actual app creation — this skill focuses on data transformation and specification - For quick one-off visualizations, consider a Google Sheet instead (faster, no build step)
Final ship gate
Run /premortem --output before ship. See /premortem skill for the 5 execution domains (will-it-resonate / will-it-convert / will-it-stay-on-brand / will-stakeholder-push-back / will-it-degrade-over-time) and output template.
Trivial-case escape: ## Premortem\nNo failure modes — trivial change satisfies the contract for genuinely trivial outputs.
Signals
- GitHub stars
- 36
- Forks
- 14
- Last commit
- Jul 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
dashboard-matteotitta- Source
- github.com/matteotitta/genesys-skills