Agent skill

Semiotic Charts

by nteract in 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.

Apache-2.0Auto-check passedData & Analytics

Install Semiotic Charts

skills CLI
$ npx skills add nteract/semiotic --skill semiotic-charts -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nteract/semiotic semiotic-charts --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
semiotic-charts
GitHub stars
2.7k
Token cost
~2.1k tokens
SKILL.md length
863 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

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.

  • Works in 6 steps: Sub-path imports. Import from the… → Static usage requires data in props.… → Push (live) mode omits data entirely.… → …
  • Tasks that involve Data visualization
  • SKILL.md covers Context discipline, The trust loop — generate →…, Hard rules (the behavior… and What good output looks like, plus 2 more sections
  • Calls npx

What it does

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.

When your agent uses it

  • Tasks that involve Data visualization

Example prompts

  • “/semiotic-charts”

Requirements

  • Node.js

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Sub-path imports. Import from the smallest stable entry that covers every
  2. Static usage requires data in props. renderChart, SSR snapshots, and any
  3. Push (live) mode omits data entirely. Create a ref, do NOT pass
  4. Required prop combinations. Beyond data, some families need a semantic
  5. Categorical color via colorBy (a field name), shared across charts with
  6. renderChart (MCP / semiotic/server) is a single static snapshot. It

What it can do on your machine

Read from SKILL.md and the folder at commit 7ddcd88. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from nteract/semiotic at commit 7ddcd88, republished under its Apache-2.0 licence (© nteract). 863 words, ~2,081 tokens.

Download SKILL.mdSave it as .claude/skills/semiotic-charts/SKILL.md (or your agent's skills folder).
name
semiotic-charts
description
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.

Generating charts with Semiotic

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.

Context discipline

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.

The trust loop — generate → validate → diagnose → repair → prove

prepareChart (from semiotic/ai) composes the whole loop. Call it on every proposal before you show or stream a chart:

ts
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.

As an agent tool

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.

Picking a chart for a dataset

When you don't know which chart fits, ask the data, not your priors:

ts
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.

Hard rules (the behavior contracts)

These are enforced by validation and the npx -p semiotic semiotic-ai --doctor gate. Honor them in every proposal:

  1. Sub-path imports. Import from the smallest stable entry that covers every chart in the route, never the barrel: use 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.
  2. Static usage requires data in props. renderChart, SSR snapshots, and any copy-paste example need data (or nodes/edges) present.
  3. Push (live) mode omits 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).
  4. Required prop combinations. Beyond data, some families need a semantic prop, in static and push mode: StackedAreaChart→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).
  5. Categorical color via 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.
  6. renderChart (MCP / semiotic/server) is a single static snapshot. It can't push later. For live behavior, return React code with a ref.
Show full SKILL.md (257 more words)Show less

What good output looks like

tsx
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:

ts
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" } }
)

Tooling

  • MCP server: npx -y -p semiotic semiotic-mcp — tools for renderChart (SVG + render evidence), suggestCharts, groundChart, diagnoseConfig, evaluateChart, repairChartConfig, proposeChartVariants, and more. Prefer these over guessing.
  • Public app profile: 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.
  • CLI gate: 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.
  • Machine-readable docs: the published llms.txt is the chart catalog with per-chart communicative-act labels; read it for the full surface rather than guessing component names.
  • Portable install: 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.

Don't

  • Don't hand-write chart JSX without running prepareChart or --doctor.
  • Don't import charts from the bare semiotic barrel in production code.
  • Don't pass data={[]} for live charts (use push mode — omit data).
  • Don't promise live/interactive behavior from renderChart — it's a static snapshot.
  • Don't use network 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.
  • Don't invent a component name; if no chart fits, say so and surface alternatives (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

Files

Just SKILL.md in agent-skill/semiotic-charts of nteract/semiotic.

Open the folder on GitHubat commit 7ddcd88

Compare with similar skills

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.

Semiotic Charts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Semiotic Charts this skillnteract/semiotic2.7k—~2.1kAutomated safety check: PassApache-2.0
D3 Vizcalesthio/OpenMontage66k3 repos~5.4kAutomated safety check: PassAGPL-3.0
Highcharts Reacthighcharts/highcharts-react1.2k—~2kAutomated safety check: PassCustom licence
Tuftearef-vc/tufte-claude-skill307—~1.3kAutomated safety check: PassMIT
Vega-Lite Interactive Chartsoaustegard/claude-skills150—~2.1kAutomated safety check: PassMIT
Dashboard BuilderQwenLM/qwen-code-examples143—~3.3kAutomated safety check: PassNone

Similar skills

  • D3 Viz

    calesthio/OpenMontage

    Creating interactive data visualisations using d3.js. An agent skill from calesthio/OpenMontage.

    66k GitHub starsUsed in 3 repos~5.4k tokens
    Data & AnalyticsAuto-check passed
  • Highcharts React

    highcharts/highcharts-react

    A skill your agent uses to implement, configure, and troubleshoot Highcharts in React projects.

    1.2k GitHub stars~2k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed
  • Tufte

    aref-vc/tufte-claude-skill

    Apply Edward Tufte's principles to any data visualization, chart, dashboard, or infographic.

    307 GitHub stars~1.3k tokensUpdated 3 mo ago
    Data & AnalyticsAuto-check passed
  • Vega-Lite Interactive Charts

    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.

    150 GitHub stars~2.1k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Dashboard Builder

    QwenLM/qwen-code-examples

    Build full-stack dashboard applications using React/Next.js + shadcn/ui + Tailwind CSS + Recharts + Express with customizable data sources.

    143 GitHub stars~3.3k tokensUpdated 4 mo ago
    Data & AnalyticsAuto-check passed
  • Agent D3js Skill

    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.

    508 GitHub stars~753 tokensUpdated 4 mo ago
    Data & AnalyticsAuto-check passed

More from nteract/semiotic

  • Blog Post

    nteract/semiotic

    Author a new entry for the Semiotic blog. An agent skill from nteract/semiotic.

    2.7k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Chatgpt App Submission

    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…

    2.7k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Code Review

    nteract/semiotic

    Review Semiotic pull requests for behavioral bugs, regressions, contract drift, and missing evidence.

    2.7k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Works with

Questions about Semiotic Charts

What does Semiotic Charts do?

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.

When should I use Semiotic Charts?

Semiotic Charts fits situations like: tasks that involve Data visualization.

How do I install Semiotic Charts in Claude Code?

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.

How do I install Semiotic Charts in Codex?

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.

Can I use Semiotic Charts in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Semiotic Charts need to run?

Going by SKILL.md and its folder, Semiotic Charts needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Semiotic Charts access the network?

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.

Is Semiotic Charts safe to install?

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.

What licence does Semiotic Charts use?

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.

How many tokens does Semiotic Charts use?

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.

What are the alternatives to Semiotic Charts?

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.

Who maintains Semiotic Charts?

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.