templates/analytics/.builder/skills/charts/SKILL.md
Generate inline chart images (PNG) for embedding in chat responses. Use this skill when you need to create bar, line, or area charts for data visualization in chat.
npx skillsauth add BuilderIO/agent-native chartsInstall 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.
Charts are generated server-side as PNG images using chartjs-node-canvas (Chart.js) and served via /api/media/. The generate-chart script renders charts and returns a fully qualified URL for embedding in chat markdown.
pnpm action generate-chart --type=bar --title="Title" --labels='["A","B","C"]' --data='[1,2,3]' --color="#18B4F4"
| Param | Values | Default |
| ---------------------- | -------------------------------------------------------------------------- | ---------------------- |
| --type | bar, line, area | bar |
| --title | Chart title (keep SHORT) | required |
| --subtitle | Optional subtitle — avoid unless needed | — |
| --labels | JSON array of x-axis labels | required |
| --data | JSON array of numbers, OR array of {label, data, color} for multi-series | required |
| --color | Primary hex color | #18B4F4 |
| --theme | dark, light | auto from /api/theme |
| --stacked | true for stacked bars | false |
| --filename | Output filename (no ext) | auto from title |
| --width / --height | Image dimensions | 800x400 |
{ filename, url, width, height } — the url is fully qualified with cache buster.
| Color | Hex | Use |
| ------ | --------- | ---------------------------------- |
| Blue | #18B4F4 | Default/primary for all charts |
| Purple | #8b5cf6 | Secondary |
| Green | #22c55e | Tertiary |
| Amber | #f59e0b | |
| Indigo | #6366f1 | |
| Red | #ef4444 | |
| Teal | #14b8a6 | |
| Orange | #f97316 | |
**Example Corp Product Usage — Last 30 Days**

**528 messages** over 18 active days | Peak: **89** (Feb 14)
When using QuickChart (https://quickchart.io/chart/create) with Chart.js v2:
#09090b (zinc-950)[3,3], color #27272a#52525b, 11px#fafafa, 16px bold#a1a1aa, 11px#18B4F4 (primary blue)#09090b, border #27272a, text #fafafa--stacked=true flag--data='[{"label":"User A","data":[...],"color":"#..."}]'stack: "stack1" on all datasetsAPP_ORIGIN)?v=<timestamp>) auto-appendedchartjs-node-canvas depends on canvas native module — pnpm.onlyBuiltDependencies must include "canvas". If not built, run pnpm rebuild canvasmedia/theme.json (set by sidebar toggle via POST /api/theme)tools
Public booking flow — the state machine, animations, and URL/app-state sync.
tools
Trigger-based automations — reminders, follow-ups, webhooks — across the booking lifecycle.
tools
Team event types, round-robin assignment, collective bookings, host weights, and no-show calibration.
development
The pure `computeAvailableSlots` function — inputs, outputs, invariants, and debugging guide.