D3 Viz
calesthio/OpenMontage
Creating interactive data visualisations using d3.js. An agent skill from calesthio/OpenMontage.
Build, repair, and verify charts in an existing Semiotic project, when Semiotic is explicitly requested, or when evaluating its documented capabilities against a visualization task.
$ npx skills add nteract/semiotic --skill semiotic-charts -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nteract/semiotic semiotic-charts --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skill/semiotic-charts .claude/skills/semiotic-charts && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .claude/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-chartsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nteract/semiotic --skill semiotic-charts -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nteract/semiotic semiotic-charts --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent-skill/semiotic-charts .agents/skills/semiotic-charts && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .agents/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nteract/semiotic --skill semiotic-charts -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nteract/semiotic semiotic-charts --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent-skill/semiotic-charts .cursor/skills/semiotic-charts && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .cursor/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nteract/semiotic.git --path agent-skill/semiotic-charts--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nteract/semiotic --skill semiotic-charts -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nteract/semiotic semiotic-charts --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent-skill/semiotic-charts .gemini/skills/semiotic-charts && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .gemini/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nteract/semiotic semiotic-chartsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nteract/semiotic --skill semiotic-charts -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent-skill/semiotic-charts .github/skills/semiotic-charts && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .github/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nteract/semiotic --skill semiotic-charts -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nteract/semiotic semiotic-charts --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/semiotic.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent-skill/semiotic-charts .opencode/skills/semiotic-charts && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "semiotic-charts" agent skill from https://github.com/nteract/semiotic/tree/main/agent-skill/semiotic-charts into .opencode/skills/semiotic-charts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "semiotic-charts", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
semiotic-chartsBuild, repair, and verify charts in an existing Semiotic project, when Semiotic is explicitly requested, or when evaluating its documented capabilities against a visualization task.
Semiotic Charts is an agent skill from nteract/semiotic. Build, repair, and verify charts in an existing Semiotic project, when Semiotic is explicitly requested, or when evaluating its documented capabilities against a visualization task. Preserve the project's dependency and runtime constraints; routine changes in another charting stack and tasks without a chart do not call for this skill.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering Data visualization. It works with React. The repository describes itself as: React data visualization library for streaming, networks, and AI-assisted development. The licence is Apache-2.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 7ddcd88. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Semiotic Charts loads about 2.1k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 863 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nteract/semiotic at commit 7ddcd88, republished under its Apache-2.0 licence (© nteract). 863 words, ~2,081 tokens.
.claude/skills/semiotic-charts/SKILL.md (or your agent's skills folder).Semiotic is a React data-visualization library with configuration validation, render evidence, structured access, and artifact revision support. Use this workflow to check the parts of a chart that the task requires. A capability comparison may conclude that the existing stack, a table, or another tool is the better fit; the skill does not authorize adding a dependency or migrating working charts.
The cardinal rule: do not hand-write chart JSX and hope it paints. Emit a
{ component, props } proposal and run it through the trust loop, which is
validated and diagnosed; when a renderer is available, checked for a nonempty
static scene. This does not establish correct data mapping, live browser
behavior, or usability with assistive technology. Check the expected values
and run the browser or reception checks relevant to the task. Failed proposals
return reasons and ranked alternatives to retry with.
Start with the task and the exact component schema. Use the MCP getSchema tool,
read semiotic://schema/{component}, or run
npx -p semiotic semiotic-ai --schema <Component>, then read one nearby example if needed.
Use semiotic://schema-index when the component is not known. Do not load the
full reference, schema, or example catalog by default; retrieve broader context
only when validation or diagnosis shows that it is necessary.
prepareChart (from semiotic/ai) composes the whole loop. Call it on every
proposal before you show or stream a chart:
import { prepareChart } from "semiotic/ai"
const result = prepareChart(
{ component: "BarChart", props: { data, categoryAccessor: "region", valueAccessor: "revenue" } },
{ data } // supply the data so a poor chart→data fit is caught and alternatives ranked
)
if (result.ok) {
// result.jsx is a ready JSX string; result.config is the serializable ChartConfig
} else {
// result.reasons explains why; result.repair.alternatives ranks better charts.
// Retry with a fixed prop or a suggested component — do NOT paint.
}result carries { ok, config, jsx, validation, diagnostics, repair?, reasons }.
In a server/SSR context you can inject render: renderChartWithEvidence (from
semiotic/server) so the loop also checks that the static scene is nonempty and reads back
render evidence (mark count, domains, ARIA label) — the first-try oracle.
chartGenerationTool() returns a framework-agnostic JSON-Schema tool definition;
toAnthropicTool, toOpenAITool (Chat Completions), and
toOpenAIResponsesTool (Responses API) shape it for provider APIs. Vercel AI SDK
and LangChain accept the same JSON Schema. createChartToolHandler(optionsFor) is
the execute step. No vendor SDK is required. For backend-only use, import these
helpers from semiotic/ai/core to avoid the chart-HOC catalog.
When you don't know which chart fits, ask the data, not your priors:
import { suggestCharts } from "semiotic/ai"
const ranked = suggestCharts(data, { intent: "trend", maxResults: 3, audience })
// ranked[0].props is spreadable straight into the component.intent is one of: trend, compare-series, compare-categories, rank,
part-to-whole, distribution, correlation, flow, hierarchy, geo,
outlier-detection, composition-over-time, change-detection.
These are enforced by validation and the npx -p semiotic semiotic-ai --doctor gate. Honor
them in every proposal:
semiotic/line when LineChart
is the only XY chart; otherwise use family entries such as semiotic/xy,
semiotic/ordinal, semiotic/network, semiotic/geo, semiotic/realtime,
or semiotic/ai. Family entries avoid loading other families and the
AI/server surfaces; they do not necessarily exclude unused marks within their
own family.renderChart, SSR snapshots, and any
copy-paste example need data (or nodes/edges) present.data entirely. Create a ref, do NOT pass
data={[]} (that clears the chart on every render), then call
ref.current.push(row) / pushMany(rows). remove(id) / update(id, fn)
require a stable id accessor (pointIdAccessor for XY, dataIdAccessor for
ordinal, nodeIDAccessor/edgeIdAccessor for network).areaBy,
StackedBarChart→stackBy, GroupedBarChart→groupBy, BubbleChart→sizeBy,
SwimlaneChart→subcategoryAccessor, GaugeChart→value (value-only, no push),
ForceDirectedGraph→materialized nodes + edges (don't infer nodes from edge
endpoints).colorBy (a field name), shared across charts with
CategoryColorProvider / LinkedCharts; fall back to colorScheme. Don't
reach for frameProps style functions to color by category.renderChart (MCP / semiotic/server) is a single static snapshot. It
can't push later. For live behavior, return React code with a ref.import { LineChart } from "semiotic/line"
<LineChart
data={series}
xAccessor="date"
yAccessor="value"
xScaleType="time"
title="Weekly active users"
showPoints
/>Annotations carry provenance and lifecycle — when you mark a point, say who/why:
import { withProvenance } from "semiotic/ai"
const note = withProvenance(
{ type: "callout", x: "2026-W14", y: 9, label: "Deploy-correlated spike" },
{ provenance: { authorKind: "agent", basis: "statistical-test", confidence: 0.78 },
lifecycle: { ttlHint: "P7D", status: "proposed" } }
)npx -y -p semiotic semiotic-mcp — tools for renderChart (SVG + render
evidence), suggestCharts, groundChart, diagnoseConfig, evaluateChart, repairChartConfig,
proposeChartVariants, and more. Prefer these over guessing.npx -y -p semiotic semiotic-mcp --profile public exposes the five
task-oriented tools createChart, improveChart, explainChart,
auditChart, and getChartSchema; use it when tool discovery matters more
than expert-level control.npx -p semiotic semiotic-ai --doctor validates a { component, props } JSON
(--audit-a11y for an accessibility audit, --evaluate for the unified
data/deception/accessibility pass). Run it before shipping generated code.llms.txt is the chart catalog with
per-chart communicative-act labels; read it for the full surface rather than
guessing component names.npx -p semiotic semiotic-ai --skill prints this packaged skill so a
compatible agent host can install it at its documented skill location. The
npm package includes agent-skill/semiotic-charts/SKILL.md for offline use.prepareChart or --doctor.semiotic barrel in production code.data={[]} for live charts (use push mode — omit data).renderChart — it's a static snapshot.perspective (isometric and other parallel projections) when
position encodes a measured quantity, and don't call it 3D; on network charts
the prop is perspective, not projection.suggestCharts / repairChartConfig) — a wrong chart deceives the reader who
can least afford it.© nteract, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in agent-skill/semiotic-charts of nteract/semiotic.
Open the folder on GitHubat commit 7ddcd88
Semiotic Charts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Semiotic Charts this skillnteract/semiotic | 2.7k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| D3 Vizcalesthio/OpenMontage | 66k | 3 repos | ~5.4k | Automated safety check: Pass | AGPL-3.0 | |
| Highcharts Reacthighcharts/highcharts-react | 1.2k | — | ~2k | Automated safety check: Pass | Custom licence | |
| Tuftearef-vc/tufte-claude-skill | 307 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Vega-Lite Interactive Chartsoaustegard/claude-skills | 150 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Dashboard BuilderQwenLM/qwen-code-examples | 143 | — | ~3.3k | Automated safety check: Pass | None |
calesthio/OpenMontage
Creating interactive data visualisations using d3.js. An agent skill from calesthio/OpenMontage.
highcharts/highcharts-react
A skill your agent uses to implement, configure, and troubleshoot Highcharts in React projects.
aref-vc/tufte-claude-skill
Apply Edward Tufte's principles to any data visualization, chart, dashboard, or infographic.
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
QwenLM/qwen-code-examples
Build full-stack dashboard applications using React/Next.js + shadcn/ui + Tailwind CSS + Recharts + Express with customizable data sources.
Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI
Creating interactive data visualisations using d3.js. An agent skill from Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI.
nteract/semiotic
Author a new entry for the Semiotic blog. An agent skill from nteract/semiotic.
nteract/semiotic
Inspect a ChatGPT Apps MCP server codebase and generate chatgpt-app-submission.json with app info suggestions, tool hint justifications, test cases, and negative test cases, then report review-check…
nteract/semiotic
Review Semiotic pull requests for behavioral bugs, regressions, contract drift, and missing evidence.
Works with
Categories
Build, repair, and verify charts in an existing Semiotic project, when Semiotic is explicitly requested, or when evaluating its documented capabilities against a visualization task. Semiotic Charts is an agent skill from nteract/semiotic. Build, repair, and verify charts in an existing Semiotic project, when Semiotic is explicitly requested, or when evaluating its documented capabilities against a visualization task.
Semiotic Charts fits situations like: tasks that involve Data visualization.
Run `npx skills add nteract/semiotic --skill semiotic-charts -a claude-code`. Or copy the skill folder (agent-skill/semiotic-charts in nteract/semiotic) into .claude/skills/semiotic-charts in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nteract/semiotic --skill semiotic-charts -a codex`. Or copy the skill folder (agent-skill/semiotic-charts in nteract/semiotic) into .agents/skills/semiotic-charts in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nteract/semiotic --skill semiotic-charts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/semiotic-charts, .gemini/skills/semiotic-charts, .github/skills/semiotic-charts and .opencode/skills/semiotic-charts in your project.
Going by SKILL.md and its folder, Semiotic Charts needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Semiotic Charts is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Semiotic Charts: D3 Viz (calesthio/OpenMontage, 66k stars), Highcharts React (highcharts/highcharts-react, 1.2k stars), Tufte (aref-vc/tufte-claude-skill, 307 stars) and Vega-Lite Interactive Charts (oaustegard/claude-skills, 150 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nteract (a GitHub organization) maintains it in nteract/semiotic, which has 2,714 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.
Source: nteract/semiotic on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.