Research & Analysisš¤claudeš¬gpt
data-build-dashboard
apps/tandem-desktop/src-tauri/resources/skill-templates/data-build-dashboard/SKILL.md
Build an interactive HTML dashboard with charts, filters, and tables
Quick Start
Install this SKILL.md
npx skills add https://github.com/frumu-ai/tandem/tree/main/apps/tandem-desktop/src-tauri/resources/skill-templates/data-build-dashboard---
name: data-build-dashboard
description: Build an interactive HTML dashboard with charts, filters, and tables
---
# Build Interactive Dashboards
> If you see unfamiliar placeholders or need to check which tools are connected, please ask about available integrations.
Build a self-contained interactive HTML dashboard with charts, filters, tables, and professional styling. Opens directly in a browser -- no server or dependencies required.
## Usage
You can ask to build a dashboard with a description (e.g., "Build a sales dashboard" or "Create a support ticket dashboard").
### Arguments
- `description` ā Description of the dashboard purpose and content
- `data source` ā (Optional) The data to use
### Workflow
### 1. Understand the Dashboard Requirements
Determine:
- **Purpose**: Executive overview, operational monitoring, deep-dive analysis, team reporting
- **Audience**: Who will use this dashboard?
- **Key metrics**: What numbers matter most?
- **Dimensions**: What should users be able to filter or slice by?
- **Data source**: Live query, pasted data, CSV file, or sample data
### 2. Gather the Data
**If data warehouse is connected:**
1. Query the necessary data
2. Embed the results as JSON within the HTML file
**If data is pasted or uploaded:**
1. Parse and clean the data
2. Embed as JSON in the dashboard
**If working from a description without data:**
1. Create a realistic sample dataset matching the described schema
2. Note in the dashboard that it uses sample data
3. Provide instructions for swapping in real data
### 3. Design the Dashboard Layout
Follow a standard dashboard layout pattern:
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Dashboard Title [Filters ā¼] ā
āāāāāāāāāāāāāā¬āāāāāāāāāāāāā¬āāāāāāāāāāāāā¬āāāāāāāāāāāā¤
ā KPI Card ā KPI Card ā KPI Card ā KPI Card ā
āāāāāāāāāāāāāā“āāāāāāāāāāāāā¼āāāāāāāāāāāāā“āāāāāāāāāāāā¤
ā ā ā
ā Primary Chart ā Secondary Chart ā
ā (largest area) ā ā
ā ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā Detail Table (sortable, scrollable) ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
**Adapt the layout to the content:**
- 2-4 KPI cards at the top for headline numbers
- 1-3 charts in the middle section for trends and breakdowns
- Optional detail table at the bottom for drill-down data
- Filters in the header or sidebar depending on complexity
### 4. Build the HTML Dashboard
Generate a single self-contained HTML file that includes:
**Structure (HTML):**
- Semantic HTML5 layout
- Responsive grid using CSS Grid or Flexbox
- Filter controls (dropdowns, date pickers, toggles)
- KPI cards with values and labels
- Chart containers
- Data table with sortable headers
**Styling (CSS):**
- Professional color scheme (clean whites, grays, with accent colors for data)
- Card-based layout with subtle shadows
- Consistent typography (system fonts for fast loading)
- Responsive design that works on different screen sizes
- Print-friendly styles
**Interactivity (JavaScript):**
- Chart.js for interactive charts (included via CDN)
- Filter dropdowns that update all charts and tables simultaneously
- Sortable table columns
- Hover tooltips on charts
- Number formatting (commas, currency, percentages)
**Data (embedded JSON):**
- All data embedded directly in the HTML as JavaScript variables
- No external data fetches required
- Dashboard works completely offline
### 5. Implement Chart Types
Use Chart.js for all charts. Common dashboard chart patterns:
- **Line chart**: Time series trends
- **Bar chart**: Category comparisons
- **Doughnut chart**: Composition (when <6 categories)
- **Stacked bar**: Composition over time
- **Mixed (bar + line)**: Volume with rate overlay
### 6. Add Interactivity
**Filters:**
```javascript
// All filters update a central filter state
// Charts and tables re-render when filters change
function applyFilters() {
const filtered = data.filter((row) => matchesFilters(row));
updateKPIs(filtered);
updateCharts(filtered);
updateTable(filtered);
}
```
**Table sorting:**
- Click column headers to sort ascending/descending
- Visual indicator for current sort column and direction
**Tooltips:**
- Charts show detailed values on hover
- KPI cards show comparison to previous period
### 7. Save and Open
1. Save the dashboard as an HTML file with a descriptive name (e.g., `sales_dashboard.html`)
2. Open it in the user's default browser
3. Confirm it renders correctly
4. Provide instructions for updating data or customizing
## Output Template
The generated HTML file follows this structure:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>[Dashboard Title]</title>
<script
src="https://cdn.jsdelivr.net/npm/chart.js@4.5.1"
integrity="sha384-jb8JQMbMoBUzgWatfe6COACi2ljcDdZQ2OxczGA3bGNeWe+6DChMTBJemed7ZnvJ"
crossorigin="anonymous"
></script>
<style>
/* Professional dashboard CSS */
</style>
</head>
<body>
<div class="dashboard">
<header><!-- Title and filters --></header>
<section class="kpis"><!-- KPI cards --></section>
<section class="charts"><!-- Chart containers --></section>
<section class="details"><!-- Data table --></section>
</div>
<script>
const DATA = [
/* embedded JSON data */
];
// Dashboard initialization and interactivity
</script>
</body>
</html>
```
## Tips
- Dashboards are fully self-contained HTML files -- share them with anyone by sending the file
- For real-time dashboards, consider connecting to a BI tool instead. These dashboards are point-in-time snapshots
- Request "dark mode" or "presentation mode" for different styling
- You can request a specific color scheme to match your brand
Repository
121stars
14forks
Details
Related Skills
More research & analysis skills you might like
pr-improver
Research & AnalysisRuns an autonomous review-and-fix improvement loop over the current branch's changes until a PR review comes back clean, scoped mechanically to the directories the branch touched. Reviews are performed by an installed PR-review skill (default: pr-review-toolkit's review-pr). Use to fix review findings on a branch before opening or updating a pull request ('clean up this branch', 'fix this PR until review passes', 'run review-and-fix on my changes'). NOT for a one-time review ā run the PR-review skill directly.
š¤claudešuniversal
7.5k
643
View
code-improver
Research & AnalysisRuns an autonomous review-and-fix improvement loop over any code target ā a skill, plugin, module, or directory ā using a reviewer the user names: any installed skill or agent. Keeps a cross-round findings ledger, escalates when fixes stop converging, and guards scope mechanically. Use when asked to 'improve this code until review passes', 'run an improvement loop with <reviewer>', or to iterate review-and-fix with a specific reviewer. For skills prefer the skill-improver entry; for a branch prefer pr-improver.
š¤claudešuniversal
7.5k
643
View
skill-improver
Research & AnalysisRuns an autonomous review-and-fix improvement loop over a Claude Code skill until a review comes back clean, with a cross-round findings ledger, escalation when fixes stop converging, and a mechanical scope guard. Reviews are performed by the plugin-dev skill-reviewer agent. Use to fix skill quality issues, iteratively refine a skill, or resume a loop after an escalation ('fix my skill', 'improve this skill until it passes review', 'skill improvement loop'). NOT for a one-time review ā use the plugin-dev skill-reviewer agent directly.
š¤claudešuniversal
7.5k
643
View
audit-augmentation
Research & AnalysisAugments Trailmark code graphs with external audit findings from SARIF static analysis results, weAudit annotation files, and version-gated Trailmark 0.4.x binary-analysis graph exports. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, importing binary graph findings, cross-referencing Semgrep, CodeQL, or binary-analysis findings with call graph data, or visualizing audit findings in the context of code structure.
šuniversal
7.5k
643
View