chartslisted
Install: claude install-skill brightwave-inc/tidebreak
# Charts
Charts ship in one of two forms. Pick the form first, then follow that
section plus the shared rules at the end.
- **Native chart** — an interactive figure the app renders inline, with
zoom, hover, and PNG export. Default for anything delivered on screen.
- **Raster chart** — a matplotlib PNG or SVG. Use it when the chart must be
embedded in a generated document (DOCX, PDF, PPTX) or when the user asks
for an image file.
When a chart is both shown to the user and embedded in a document, produce
both: the native figure for the conversation, the image for the document.
## Native charts
Write a file named `<name>.chart.json` in `output/`. It must contain a
single JSON object — a Plotly figure — with a `data` array of traces and an
optional `layout` object:
```json
{
"data": [
{
"type": "bar",
"name": "Revenue",
"x": ["Q1", "Q2", "Q3", "Q4"],
"y": [12400, 15100, 14800, 19300]
}
],
"layout": {
"title": { "text": "Revenue by quarter (USD)" },
"xaxis": { "title": { "text": "Quarter" } },
"yaxis": { "title": { "text": "Revenue (USD)" } }
}
}
```
No library is required. Author the JSON directly when you already know the
numbers — with `json.dump` from a small script, or by writing the file
outright. Reach for `plotly` only when the traces have to be computed from
data you are processing anyway; if you do, install it in its own `exec`
call the way matplotlib is installed below (`python3 -m pip install --user
plotl