Agent skill

Vega-Lite Interactive Charts

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

MITAuto-check passedData & Analytics

Install Vega-Lite Interactive Charts

skills CLI
$ npx skills add oaustegard/claude-skills --skill charting-vega-lite -a claude-code

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

GitHub CLI
$ gh skill install oaustegard/claude-skills charting-vega-lite --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/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/charting-vega-lite .claude/skills/charting-vega-lite && 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
charting-vega-lite
GitHub stars
150
Token cost
~2.1k tokens
SKILL.md length
758 words
Files
20 (incl. scripts, references, assets)
Skills in repo
67
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 10 steps: Analyze Data Structure → Understand Data Context → Select Meaningful Charts (5-10… → …
  • Visualizing an uploaded CSV with several suitable chart types
  • SKILL.md covers Overview, Critical Technical Constraint:…, Primary Workflow: Data Upload… and Secondary Workflow: Specific…, plus 4 more sections
  • Calls python

What it does

This skill turns an uploaded data file into a set of interactive Vega-Lite visualizations. Its main workflow runs a data-analysis script to get field types, statistics, suggested charts and sample rows, falling back to manual pandas analysis if the script fails. The agent then reads column names and samples to judge what the data represents, such as biomedical, financial, sensor or e-commerce data, and what questions an analyst would ask of it.

From the suggestions it selects five to ten meaningful chart types using readability filters: skipping pie charts with more than 7 categories, aggregating heatmaps with over 50 categories per axis, and considering facets for more than 10 line series. Specs are built programmatically and wrapped in a React artifact. A key constraint is that Claude artifacts cannot fetch data files, so data is embedded as an inline JavaScript constant. The skill ships templates for area, bar, heatmap, line, pie and scatter charts, a ChartExplorer component, and reference guides on chart types, customization and advanced charts.

When your agent uses it

  • Visualizing an uploaded CSV with several suitable chart types
  • Requesting a specific chart type such as a boxplot or stacked bar
  • Producing portable Vega-Lite JSON specs with embedded data

Example prompts

  • “Chart the monthly sales in sales.csv and suggest which views are most informative.”
  • “Make a grouped bar chart comparing the assay results by sample group.”
  • “Build a Vega-Lite boxplot of response times by endpoint with the data embedded inline.”

Requirements

  • Python with pandas for the data analysis script

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Analyze Data Structure
  2. Understand Data Context
  3. Select Meaningful Charts (5-10 suggestions)
  4. Generate Chart Specs
  5. Create Artifact with Inline Data Island
  6. Provide Link
  7. Analyze Data
  8. Validate Chart Fits Data
  9. Generate Spec
  10. Create Artifact

What it can do on your machine

Read from SKILL.md and the folder at commit 63d432e. 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

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • python

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

  • Network

    No URLs in SKILL.md.

    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

Vega-Lite Interactive Charts loads about 2.1k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 114 tokens; SKILL.md has 758 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~114
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~18k

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); the scripts in this folder are not scanned.

SKILL.md

The full file from oaustegard/claude-skills at commit 63d432e, republished under its MIT licence (© oaustegard). 758 words, ~2,095 tokens.

Download SKILL.mdSave it as .claude/skills/charting-vega-lite/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.
name
charting-vega-lite
description
Create interactive data visualizations using Vega-Lite declarative JSON grammar. Supports 20+ chart types (bar, line, scatter, histogram, boxplot, grouped/stacked variations, etc.) via templates and programmatic builders. Use when users upload data for charting, request specific chart types, or mention visualizations. Produces portable JSON specs with inline data islands that work in Claude artifacts and can be adapted for production.
metadata.version
0.1.0

Overview

This skill creates interactive Vega-Lite visualizations from uploaded data. The workflow:

  1. Analyze data structure and context
  2. Select 5-10 meaningful chart types based on what the data represents
  3. Build chart specifications programmatically
  4. Generate React artifact with embedded visualizations

Critical Technical Constraint: Inline Data Island

Claude artifacts cannot use fetch() for computer:// URLs.

All data must be embedded as an inline JavaScript constant:

javascript
const DATA = [ /* embedded data array */ ];

// Later in chart specs:
spec.data = { values: DATA };

DO NOT:

  • Use fetch() to load external files
  • Reference external data URLs
  • Create separate data files

This is the only pattern that works in Claude's artifact environment.

Primary Workflow: Data Upload → Chart Explorer

Execute this sequence when user uploads data without specifying chart type:

1. Analyze Data Structure
bash
python /mnt/skills/user/charting-vega-lite/scripts/analyze_data.py /mnt/user-data/uploads/<filename>

Extract from output:

  • fields[] (with types and statistics)
  • suggested_charts[] (suggested chart types with encodings)
  • sample_data (first 10 rows for understanding context)

If script fails: Use manual pandas analysis

python
import pandas as pd
df = pd.read_csv('/mnt/user-data/uploads/<filename>')
# Classify: numeric→quantitative, datetime→temporal, <20 unique→nominal
2. Understand Data Context

Read sample data and column names to infer what the data represents:

  • Biomedical data? → Biomarkers, patient outcomes, clinical relevance
  • Financial data? → Trends, comparisons, performance metrics
  • Sensor data? → Temporal patterns, anomalies, correlations
  • E-commerce? → Sales trends, product comparisons, conversions

Ask: What questions would someone analyzing this data want answered?

Examples:

  • Assay data: Which biomarkers strongest? Patterns across samples? Variability?
  • Financial: What are trends? How volatile? Seasonal patterns?
  • IoT: Temporal patterns? Anomalies? Sensor correlations?
3. Select Meaningful Charts (5-10 suggestions)

Filter analyze_data.py suggestions based on context and readability:

Apply readability filters:

  • Pie chart with >7 categories → Skip (unreadable)
  • Heatmap with >50 categories per axis → Aggregate first
  • Multi-line with >10 series → Consider faceting

Prioritize charts that answer domain questions:

  • Comparison needs → Bar, box plot, grouped bar
  • Distribution analysis → Histogram, box plot
  • Pattern recognition → Heatmap, scatter
  • Temporal trends → Line, area
  • Part-to-whole → Stacked bar (pie only if <7 categories)

Don't suggest charts just because data types match - choose charts that reveal insights.

4. Generate Chart Specs

Build specs programmatically using analyze_data.py encodings:

For each suggested chart type, construct spec using:

  • Templates from assets/templates/ for basic types (bar, line, scatter, pie, heatmap, area)
  • Builder patterns from references/spec-builder-patterns.md for variations (histogram, boxplot, grouped-bar, etc.)
  • Vega-Lite examples from references/vega-lite-examples-inventory.md for uncommon types

Structure each chart as:

python
{"type": "Chart Name", "reason": "Why this chart", "spec": {/* vega-lite spec */}}
5. Create Artifact with Inline Data Island

Load data, read template, replace __DATA__ and __CHART_SPECS__ placeholders, write using bash heredoc.

[View chart explorer](computer:///mnt/user-data/outputs/ChartExplorer.jsx)

Created 7 contextually relevant charts for your data.

Secondary Workflow: Specific Chart Request

When user specifies chart type (e.g., "make a bar chart"):

1. Analyze Data
bash
python /mnt/skills/user/charting-vega-lite/scripts/analyze_data.py /mnt/user-data/uploads/<filename>
2. Validate Chart Fits Data

Check requirements:

  • Bar: needs 1 nominal + 1 quantitative
  • Line: needs 1 temporal + 1 quantitative
  • Scatter: needs 2 quantitative
  • Heatmap: needs 2 nominal + 1 quantitative
  • Pie: needs 1 nominal + 1 quantitative + <7 categories

If data doesn't fit:

  • Explain: "Bar chart needs categorical data, but all columns are numeric"
  • Suggest 2-3 alternatives
  • Use Primary Workflow to create explorer with alternatives
Show full SKILL.md (301 more words)Show less
3. Generate Spec

Use templates or programmatic builders based on chart type complexity.

4. Create Artifact

Same pattern as Primary Workflow step 5, but with single chart.

Error Prevention

Common failures:

  1. Using fetch() in artifacts

    • Solution: Always use inline data island pattern
    • Never create external data files
  2. Chart doesn't render

    • Verify scripts load: Vega → Vega-Lite → Vega-Embed
    • Check data is injected: spec.data = {values: DATA}
    • Confirm field names match data columns
  3. Generic/random chart suggestions

    • Solution: Consider data context and meaning
    • Filter suggestions for relevance and readability
    • Prioritize charts that answer meaningful questions

Resources

Scripts:

  • scripts/analyze_data.py - analyze structure, suggest 8-12 chart types

Components:

  • assets/components/ChartExplorer.jsx - multi-chart explorer template

Templates:

  • assets/templates/*.json - 6 basic chart templates (bar, line, scatter, pie, heatmap, area)

References - Progressive Disclosure:

Read spec-builder-patterns.md when building charts programmatically (histogram, boxplot, grouped/stacked bars, multi-line, etc.)

Read vega-lite-examples-inventory.md when user requests uncommon chart type not in spec-builder-patterns

Read chart-types.md when validating specific chart requirements or user asks "what chart should I use for..."

Read advanced-charts.md for complete specs of specialized charts (sankey, waterfall, violin plots, complex layered compositions)

Read contextual-chart-selection.md for extended domain examples if unfamiliar with data domain (biomedical, financial, IoT, etc.)

Read online-resources.md to fetch Vega-Lite docs for advanced features (custom selections, transforms, conditional encoding)

Complete Workflow Example

User uploads assay data CSV (51 assays, 74 samples)

bash
# 1. Analyze
python /mnt/skills/user/charting-vega-lite/scripts/analyze_data.py /mnt/user-data/uploads/assay_data.csv

# 2. Understand context: Multi-analyte immunoassay
#    Questions: Which biomarkers strongest? Patterns across samples? Variability?

# 3. Build contextual charts (5-7 specs)
#    Bar: Mean signal by assay
#    Heatmap: Sample × Assay
#    Box plot: Signal distribution by assay
#    Histogram: Overall signal distribution
#    etc.

# 4. Load data and template
df = pd.read_csv('/mnt/user-data/uploads/assay_data.csv')
data = df.to_dict(orient='records')
template = open('/mnt/skills/user/charting-vega-lite/assets/components/ChartExplorer.jsx').read()

# 5. Replace placeholders and write
artifact = template.replace('__DATA__', json.dumps(data)).replace('__CHART_SPECS__', json.dumps(charts))
# Use bash heredoc to avoid XML conflicts in tool parameters

# 6. Provide link

View chart explorer

Created 7 charts for your assay data - bar charts show biomarker signals, heatmap reveals sample patterns, box plots display variability.

Critical Rules

  1. ALWAYS use inline data island pattern - No fetch(), no external files
  2. Consider data context - Choose meaningful charts based on what data represents, not just data types
  3. Filter by readability - Avoid charts with too many categories
  4. Use bash heredoc for file creation - Prevents XML conflicts when creating artifacts
  5. Provide links, not content - Output token efficiency

© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 19 other files (scripts, references, assets) in charting-vega-lite of oaustegard/claude-skills.

  • SKILL.md
  • README.md
  • assets/components/ChartExplorer.jsx
  • assets/templates/area.json
  • assets/templates/bar.json
  • assets/templates/heatmap.json
  • assets/templates/line.json
  • assets/templates/pie.json
  • assets/templates/scatter.json
  • references/advanced-charts.md
  • references/chart-types.md
  • references/contextual-chart-selection.md
  • references/customization.md
  • references/data-driven-workflow.md
  • references/online-resources.md
  • references/spec-builder-patterns.md
  • references/vega-lite-examples-inventory.md
  • … and 3 more

Open the folder on GitHubat commit 63d432e

Compare with similar skills

Vega-Lite Interactive 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.

Vega-Lite Interactive Charts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vega-Lite Interactive Charts this skilloaustegard/claude-skills150—~2.1kAutomated safety check: PassMIT
Python Executorcortega26/chile-hub1132 repos~1.5kAutomated safety check: PassMIT
Analytics Data AnalysisMindrally/skills271—~1.6kAutomated safety check: PassApache-2.0
Pandas ProJeffallan/claude-skills12k1 repos~1.5kAutomated safety check: PassMIT
Raccoon DataanalysisSenseTime-Copilot/raccoon-dataanalysis-skill137—~1.9kAutomated safety check: PassNone
Statistical Data Analysislingzhi227/agent-research-skills390—~886Automated safety check: PassNone

Similar skills

  • Python Executor

    cortega26/chile-hub

    Execute Python code in a safe sandboxed environment via [inference.sh](https://inference.sh).

    113 GitHub starsUsed in 2 repos~1.5k tokens
    Data & AnalyticsAuto-check passed
  • Analytics Data Analysis

    Mindrally/skills

    Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib, seaborn, and Jupyter notebooks.

    271 GitHub stars~1.6k tokensUpdated 2 days ago
    Data & AnalyticsAuto-check passed
  • Pandas Pro

    Jeffallan/claude-skills

    Handles pandas DataFrame work: cleaning, merging, groupby aggregation, pivots, time-series resampling and memory tuning, with checks on dtypes, shapes and nulls.

    12k GitHub starsUsed in 1 repo~1.5k tokens
    Data & AnalyticsAuto-check passed
  • Raccoon Dataanalysis

    SenseTime-Copilot/raccoon-dataanalysis-skill

    Raccoon (小浣熊) Data Analysis - Remote code interpreter and data visualization service powered by SenseTime.

    137 GitHub stars~1.9k tokensUpdated 6 mo ago
    Data & AnalyticsAuto-check passed
  • Statistical Data Analysis

    lingzhi227/agent-research-skills

    Writes statistical analysis code for experimental data, runs it through a four-round review, and reports effect sizes, p-values and confidence intervals.

    390 GitHub stars~886 tokensUpdated 7 mo ago
    Data & AnalyticsAuto-check passed
  • Release Evidence Workflow

    Ali-Marandi/ClimateDataAnalyzer

    Build an auditable release-evidence workflow for a desktop or packaged application.

    107 GitHub stars~1.6k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed

More from oaustegard/claude-skills

All 67 skills in this repo
  • Single-File HTML Composer

    oaustegard/claude-skills

    Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.

    150 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Deciding With Confidence

    oaustegard/claude-skills

    Routes, triages, flags and rates a piece of text with a probability for every option: which department or queue a ticket goes to, which intent a message expresses, whether a yes/no condition holds…

    150 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Declauding

    oaustegard/claude-skills

    Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.

    150 GitHub stars~5.2k tokensUpdated today
    Auto-check passed
  • Preact Developer

    oaustegard/claude-skills

    Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.

    150 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Bluesky Zeitgeist Sampler

    oaustegard/claude-skills

    Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.

    150 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Adversarial Review Before Shipping

    oaustegard/claude-skills

    Has a fresh-context adversary attack a blog post, recommendation, analysis brief or piece of code before you ship it, using a profile suited to that kind of artifact.

    150 GitHub stars~3.4k tokensUpdated today
    Auto-check passed

Questions about Vega-Lite Interactive Charts

What does Vega-Lite Interactive Charts do?

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. This skill turns an uploaded data file into a set of interactive Vega-Lite visualizations. Its main workflow runs a data-analysis script to get field types, statistics, suggested charts and sample rows, falling back to manual pandas analysis if the script fails.

When should I use Vega-Lite Interactive Charts?

Vega-Lite Interactive Charts fits situations like: visualizing an uploaded CSV with several suitable chart types; requesting a specific chart type such as a boxplot or stacked bar; producing portable Vega-Lite JSON specs with embedded data.

How do I install Vega-Lite Interactive Charts in Claude Code?

Run `npx skills add oaustegard/claude-skills --skill charting-vega-lite -a claude-code`. Or copy the skill folder (charting-vega-lite in oaustegard/claude-skills) into .claude/skills/charting-vega-lite in your project. Claude Code loads it when a task matches its description.

How do I install Vega-Lite Interactive Charts in Codex?

Run `npx skills add oaustegard/claude-skills --skill charting-vega-lite -a codex`. Or copy the skill folder (charting-vega-lite in oaustegard/claude-skills) into .agents/skills/charting-vega-lite in your project. Codex loads it when a task matches its description.

Can I use Vega-Lite Interactive 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 oaustegard/claude-skills --skill charting-vega-lite -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/charting-vega-lite, .gemini/skills/charting-vega-lite, .github/skills/charting-vega-lite and .opencode/skills/charting-vega-lite in your project.

What does Vega-Lite Interactive Charts need to run?

Going by SKILL.md and its folder, Vega-Lite Interactive Charts needs the command-line tools its instructions call (python). Our summary lists: Python with pandas for the data analysis script.

Does Vega-Lite Interactive Charts access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Vega-Lite Interactive 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Vega-Lite Interactive Charts use?

Vega-Lite Interactive Charts is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vega-Lite Interactive Charts use?

About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 16k tokens, read only when the agent opens those files.

What are the alternatives to Vega-Lite Interactive Charts?

Skills that share tags, products or a category with Vega-Lite Interactive Charts: Python Executor (cortega26/chile-hub, 113 stars), Analytics Data Analysis (Mindrally/skills, 271 stars), Pandas Pro (Jeffallan/claude-skills, 12k stars) and Raccoon Dataanalysis (SenseTime-Copilot/raccoon-dataanalysis-skill, 137 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vega-Lite Interactive Charts?

oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 10, 2026.

Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.