Install
$ agentstack add skill-maragudk-skills-observable-plot ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Observable Plot Skill
Observable Plot is a JavaScript library for exploratory data visualization. It's built on D3 and provides a concise, declarative API for creating charts.
Installation
npm install @observablehq/plot
Or via CDN:
import * as Plot from "https://cdn.jsdelivr.net/npm/@observablehq/plot@0.6/+esm";
Core Concepts
Plot.plot(options)
The main function that renders a visualization. Returns an SVG or HTML figure element.
Plot.plot({
marks: [
Plot.dot(data, {x: "weight", y: "height"})
]
})
Key Options
| Option | Description | Default | |--------|-------------|---------| | width | Outer width in pixels | 640 | | height | Outer height in pixels | auto | | margin | All margins | varies | | marginTop/Right/Bottom/Left | Individual margins | varies | | marks | Array of marks to render | required | | color | Color scale options | auto | | x, y | Position scale options | auto | | title, subtitle | Chart titles | none | | caption | Figure caption | none |
Data Format
Plot expects tabular data as arrays of objects:
const data = [
{date: new Date("2024-01-01"), value: 100, category: "A"},
{date: new Date("2024-01-02"), value: 120, category: "B"}
];
Channel Mapping
Map data columns to visual properties:
Plot.dot(data, {
x: "date", // column name
y: "value", // column name
fill: "category", // color by category
r: 5 // constant radius
})
Quick Examples
Line Chart
Plot.lineY(data, {x: "date", y: "value"}).plot()
Bar Chart
Plot.barY(data, {x: "category", y: "value"}).plot()
Scatter Plot
Plot.dot(data, {x: "weight", y: "height", fill: "species"}).plot()
Histogram
Plot.rectY(data, Plot.binX({y: "count"}, {x: "value"})).plot()
Area Chart
Plot.areaY(data, {x: "date", y: "value", fill: "steelblue"}).plot()
Documentation Files
This skill includes detailed documentation for each feature:
Marks (Visual Elements)
marks/area.md- Area charts and stacked areasmarks/bar.md- Bar charts (horizontal and vertical)marks/dot.md- Scatter plots and bubble chartsmarks/line.md- Line chartsmarks/rect.md- Rectangles, histograms, heatmapsmarks/text.md- Text labels and annotationsmarks/rule.md- Reference linesmarks/cell.md- Heatmaps with ordinal dimensionsmarks/tip.md- Interactive tooltipsmarks/axis.md- Custom axesmarks/geo.md- Geographic/map visualizationsmarks/link.md- Connections between pointsmarks/arrow.md- Directed arrowsmarks/vector.md- Vector fieldsmarks/tick.md- Tick marksmarks/box.md- Box plotsmarks/frame.md- Frame decorationmarks/image.md- Image glyphsmarks/contour.md- Contour plotsmarks/density.md- Density estimationmarks/raster.md- Raster/heatmap imagesmarks/hexgrid.md- Hexagonal gridsmarks/waffle.md- Waffle chartsmarks/delaunay.md- Voronoi and Delaunaymarks/bollinger.md- Bollinger bandsmarks/difference.md- Difference chartsmarks/tree.md- Hierarchical treesmarks/auto.md- Automatic mark selectionmarks/linear-regression.md- Trend linesmarks/crosshair.md- Interactive crosshairsmarks/grid.md- Grid lines
Transforms (Data Processing)
transforms/bin.md- Binning for histogramstransforms/group.md- Grouping categorical datatransforms/stack.md- Stacking for area/bar chartstransforms/dodge.md- Beeswarm plotstransforms/hexbin.md- Hexagonal binningtransforms/window.md- Moving averagestransforms/select.md- Selecting specific pointstransforms/normalize.md- Normalizing values
Features
features/scales.md- Scale configurationfeatures/facets.md- Small multiplesfeatures/projections.md- Map projectionsfeatures/legends.md- Legend configurationfeatures/interactions.md- Interactive featuresfeatures/curves.md- Line interpolationfeatures/markers.md- Line markersfeatures/shorthand.md- Concise syntaxfeatures/intervals.md- Time intervals
Common Patterns
Adding a Grid
Plot.plot({
y: {grid: true},
marks: [Plot.line(data, {x: "date", y: "value"})]
})
Color Legend
Plot.plot({
color: {legend: true},
marks: [Plot.dot(data, {x: "x", y: "y", fill: "category"})]
})
Faceting (Small Multiples)
Plot.plot({
facet: {data, x: "region"},
marks: [Plot.dot(data, {x: "income", y: "lifeExpectancy"})]
})
Interactive Tooltips
Plot.plot({
marks: [
Plot.dot(data, {x: "x", y: "y", tip: true})
]
})
Stacked Area Chart
Plot.plot({
marks: [
Plot.areaY(data, {x: "date", y: "value", fill: "category"})
]
})
Framework Integration
React
import * as Plot from "@observablehq/plot";
import { useRef, useEffect } from "react";
function Chart({ data }) {
const ref = useRef();
useEffect(() => {
const plot = Plot.plot({
marks: [Plot.dot(data, {x: "x", y: "y"})]
});
ref.current.append(plot);
return () => plot.remove();
}, [data]);
return ;
}
Vanilla JS
const plot = Plot.plot({
marks: [Plot.dot(data, {x: "x", y: "y"})]
});
document.body.append(plot);
Resources
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: maragudk
- Source: maragudk/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.