skills/charting/SKILL.md
Full-stack data visualization and charting intelligence. This skill should be used when the user asks to "create a chart", "visualize this data", "build a dashboard", "plot this", "graph these metrics", "show me a chart of", "make a bar chart", "create a line graph", "build a heatmap", or needs help choosing the right chart type, selecting a charting library, or engineering the data pipeline from raw database state to rendered visualization. Covers chart selection, data transformation, library choice by scale, performance optimization, and accessibility.
npx skillsauth add b-open-io/prompts chartingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Enable any agent to (1) instantly identify the exact chart needed from raw data, (2) generate the precise path of queries/transforms to materialize that chart, and (3) evaluate and choose the optimal charting library/stack based on performance, scale, and interactivity requirements.
This is not "just call a library" — it is full-stack visualization strategy.
Before any code runs, answer these questions in order:
| Goal | Chart Type | |------|-----------| | Compare values | Bar/Column (grouped or stacked) | | Show trend over time | Line or Area | | Show distribution / spread | Histogram, Box Plot, Violin | | Show relationship / correlation | Scatter, Bubble, Heatmap | | Show composition / parts-of-whole | Stacked Bar or Area (never pie if >5 slices) | | Show hierarchy / flow | Treemap, Sunburst, Sankey | | Show geographic pattern | Choropleth or Symbol Map |
| Variables | Chart | |-----------|-------| | 1 numeric, unordered | Histogram / Density | | 1 numeric + time | Line | | 1 categorical + 1 numeric | Bar | | 2 numeric | Scatter | | 1 categorical + time series | Grouped or Stacked Line/Area | | Many-to-many relationships | Heatmap or Parallel Coordinates |
| Audience | Approach | |----------|----------| | Executive dashboard | Big numbers + simple bars/lines, zero clutter | | Analyst/explorer | Interactive tooltips, zoom, hover details, multiple linked views | | Mobile | Horizontal bars, large text, minimal colors | | Accessibility | High contrast, patterns instead of color-only, alt-text descriptions |
| Data Situation | Best Chart (first choice) | Avoid | |---------------|--------------------------|-------| | >5 categories | Bar (horizontal) | Pie | | Time series >20 points | Line | Column | | Correlation between 2 measures | Scatter | Line (unless ordered) | | Parts of whole >5 slices | Stacked Bar or Treemap | Pie/Donut | | Outliers or distribution shape | Box + Violin | Bar | | Flow between stages | Sankey | Anything else |
Most databases do NOT have the exact aggregation ready. Auto-generate the full pipeline:
Auto-generate SQL or pandas code for:
| Scale | Strategy | |-------|----------| | One-off (<10k rows) | Run query on-the-fly | | Medium | Create materialized view or cached table | | Large/Real-time | Pre-aggregate in Spark/DuckDB, incremental refresh | | Extreme | Stream + windowed aggregates (Flink/Kafka) |
User says "show monthly revenue by product category":
"I need: LEFT JOIN orders -> products -> categories; GROUP BY month, category; SUM(revenue). No view exists -> I will create temp table or run inline. Chart type: Stacked Area. Library recommendation below."
Always output the performance trade-off and recommended stack.
| Scale / Requirement | Recommended Library | Why | Fallback | |--------------------|-------------------|-----|----------| | <10k points, simple web dashboard | Chart.js or Recharts | <10 ms render, ~60 KB bundle | N/A | | 10k-500k points, interactive | Apache ECharts or Plotly.js | Canvas + WebGL, 60 fps on 100k points | D3 (slower) | | 500k-10M+ points, real-time | LightningChart or Highcharts Stock + WebGL | GPU accelerated, <50 ms at 5M points | Anything SVG-based fails | | Python backend + web | Plotly Dash or Bokeh | Server-side render + client streaming | Matplotlib (static only) | | Python notebook exploration | Seaborn + Plotly | Instant, beautiful defaults | -- | | Extremely large / streaming | DuckDB + Observable Plot or Perspective | In-memory columnar, sub-second on billions | -- | | No JavaScript (PDF reports) | Matplotlib + WeasyPrint or ReportLab | Pure Python, vector output | -- |
tools
This skill should be used when a Claude Code session needs to keep working after Anthropic usage runs out, or when the user asks to run the Claude Code harness on GPT-5.6 Sol. Trigger phrases include "my Anthropic usage ran out", "I'm out of Claude usage", "usage limit reached, what now", "keep working on another model", "run Claude Code on GPT-5.6 Sol", "use GPT-5.6 Sol as the model", "set up claudex", "claudex isn't working", "route the harness through CLIProxyAPI", or "bill against my ChatGPT/Codex subscription". It stands up a local proxy so the Claude Code CLI runs on OpenAI's Codex backend as an escape hatch, and diagnoses that setup when it drifts. macOS + Homebrew.
testing
This skill should be used when the user asks to "open Visual Wayfinder", "answer a Wayfinder ticket visually", "turn this decision into a configurator", "show Wayfinder choices as a dashboard", "prototype the Wayfinder questionnaire", or wants interactive choice cards, tradeoff controls, rankings, ranges, toggles, and consequence previews for one active Wayfinder decision. It wraps the Wayfinder skill and JSON Render; it never replaces the tracker or resolves more than the active decision.
development
This skill should be used when the user asks to "make a visual proposal", "write this up so I can share it", "present these options visually", "diagram the trade-offs", "turn this plan into something reviewable", or requests a shareable design pitch, architecture proposal, RFC, options comparison, or visual roadmap for work that has not been built. It produces one self-contained, theme-aware HTML page led by grounded diagrams. Use visual-review instead for completed code changes; do not use this skill for internal task tracking.
tools
This skill should be used when the user asks to "add plugin settings", "make a plugin configurable", "store per-project plugin configuration", "use settings.local.json", "create a plugin state file", "expose skill settings in Agent Master", or "add a skill interface". Distinguishes official Claude Code settings from project-owned configuration and documents bOpen Agent Master skill interface discovery.