build-custom-charts
Builds custom charts for your AI agent to show data in the way your business needs.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
---
name: build-custom-charts
description: Create or update browser-rendered custom nao chart modules in agent/charts.
---
# build-custom-charts
Use this skill when a project needs a visualization beyond nao's built-in chart types.
## Create a chart
Add `agent/charts/<type>.js`, where `<type>` starts with a lowercase letter and may then contain lowercase letters, numbers, hyphens, or underscores. It must not collide with a built-in chart type (such as `bar`, `line`, `pie`) or `table`. Names that break these rules are silently ignored. The file must export a `render` function:
```js
export function render(element, context) {
const { data, config, colors, theme, libs } = context;
element.textContent = `${data.length} rows`;
return () => element.replaceChildren();
}
```
The context contains:
- `data`: rows from the referenced `execute_sql` result
- `config`: `chartType`, `xAxisKey`, `xAxisType`, `series`, and `title`
- `colors`: nao's default chart palette
- `theme`: `light` or `dark`
- `libs`: the installed `React`, `ReactDOM`, and `Recharts` modules
Use plain JavaScript without JSX. Do not import bare package names; use the libraries from `context.libs`. A React chart must return a cleanup function that unmounts its root.
Optionally add `agent/charts/<type>.json`:
```json
{
"name": "Bubble chart",
"description": "Shows two numeric axes while marker size represents a third measure."
}
```
The description tells the agent when to select the chart. Without metadata, nao derives a name from the file name.
## Constraints
- Custom charts render only in authenticated, interactive web chats.
- Stories, PNG exports, automations, MCP embeds, and messaging channels use built-in charts.
- Keep modules self-contained and treat them as trusted project code.
- Return cleanup for event listeners, timers, React roots, and other resources.
- Editing the module reloads active custom charts within a few seconds.
Mirrored from the author's public source. Install counts from the open skills registry.