src/templates/claude/skills/bonnard-build-dashboard/SKILL.md
Guide a user through building and deploying a markdown dashboard. Use when user says "build a dashboard", "create a chart", "visualize data", or wants to create a dashboard.
npx skillsauth add meal-inc/bonnard-cli bonnard-build-dashboardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through creating a markdown dashboard with built-in chart components and deploying it to Bonnard.
Discover what measures and dimensions are available to query:
# List all views and their fields
bon schema
# Inspect a specific view's measures and dimensions
bon schema <view_name>
# Query a specific view to see what data looks like
bon query '{"measures": ["view_name.measure"], "dimensions": ["view_name.dimension"], "limit": 5}'
# Or use SQL format
bon query --sql "SELECT MEASURE(total_revenue), date FROM sales_performance LIMIT 5"
Ask the user what data they want to visualize. Match their request to available views and measures.
Review the dashboard format docs for reference:
bon docs dashboards # Overview + format
bon docs dashboards.components # Chart components (BigValue, LineChart, BarChart, etc.)
bon docs dashboards.queries # Query block syntax
bon docs dashboards.inputs # Interactive filters (DateRange, Dropdown)
bon docs dashboards.examples # Complete examples
Create a .md file with three parts:
```query name code fences with YAML query options<BigValue />, <LineChart />, <BarChart />, etc.Key points:
orders.total_revenue, not total_revenuedata={query_name}<BigValue> components auto-group into a row<Grid cols="2"> to place charts side by side<DateRange> and <Dropdown> for interactive filterscomparison prop for ▲/▼ delta indicators (e.g. actual vs target)y2 for secondary y-axis (combo charts: bars + line, dual scales)<Column> children instead of the fmt prop (avoids comma ambiguity with Excel format codes):
<DataTable data={sales}>
<Column field="orders.total_revenue" header="Revenue" fmt="eur2" />
<Column field="orders.count" header="Orders" fmt="num0" />
</DataTable>
Example structure:
---
title: Revenue Dashboard
description: Key revenue metrics and trends
---
` ``query total_revenue
measures: [orders.total_revenue]
` ``
` ``query order_count
measures: [orders.count]
` ``
<BigValue data={total_revenue} value="orders.total_revenue" title="Revenue" fmt="eur2" />
<BigValue data={order_count} value="orders.count" title="Orders" />
## Trend
` ``query monthly
measures: [orders.total_revenue, orders.count]
timeDimension:
dimension: orders.created_at
granularity: month
` ``
<BarChart data={monthly} x="orders.created_at" y="orders.total_revenue" y2="orders.count" yFmt="eur" y2Fmt="num0" y2SeriesType="line" title="Revenue & Orders" />
Save the file (e.g., dashboard.md).
Always preview before deploying. Open a local dev server with live reload:
bon dashboard dev dashboard.md
This opens a browser with the rendered dashboard. Edit the .md file and
the preview updates automatically. Queries run against the deployed
semantic layer using the user's credentials.
Requires bon login — no API key needed.
Ask the user to review the preview and confirm it looks correct before moving to Phase 5. Do not skip this step — deploying without previewing often results in layout issues, missing data, or wrong chart types that are easy to catch locally.
Once the user has confirmed the preview looks good, deploy the dashboard:
bon dashboard deploy dashboard.md
This will:
--slug)Options:
--slug <slug> — custom URL slug (default: derived from filename)--title <title> — override frontmatter titleCustomize colors and palettes:
theme: to frontmatter (e.g. theme: { palette: observable })theme.yml and run bon theme set theme.ymlbon dashboard dev dashboard.md --theme theme.ymlSee bon docs dashboards.theming for palette names, color tokens, and examples.
Open the deployed dashboard in the browser:
bon dashboard open dashboard
To update, edit the .md file and redeploy:
bon dashboard deploy dashboard.md
Each deploy increments the version. Use bon dashboard list to see all
deployed dashboards with their versions and URLs.
To remove a dashboard:
bon dashboard remove dashboard
documentation
Guide migration from an existing Metabase instance to a Bonnard semantic layer. Use when user says "migrate from metabase", "import metabase", "metabase to semantic layer", or has Metabase data they want to model.
documentation
Guide a user through setting up their first semantic layer after bon init. Use when user says "get started", "what next", "help me set up", or has just run bon init.
development
Design principles for building semantic layers that work well for AI agents and business users. Use when building views, writing descriptions, or improving agent accuracy.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.