$npx -y skills add matlab/matlab-agentic-toolkit --skill matlab-build-chartCreate and customize MATLAB charts and plots. Plot types (line, scatter, bar, histogram, heatmap, surface), axes configuration, annotations, data tips, interactive plots, animation, multiple axes with tiledlayout, colororder, and performance optimization. Works for standalone fig
| 1 | # MATLAB Chart Builder |
| 2 | |
| 3 | Create, customize, and interact with MATLAB charts and plots — in standalone figures, Live Scripts, or uifigure apps. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | Use this skill when: |
| 8 | - Plotting data (line, scatter, bar, histogram, heatmap, surface, polar, geo, volume) in any context |
| 9 | - Configuring axes (labels, limits, ticks, legend, font, export) |
| 10 | - Adding annotations (xline, yline, xregion, text) |
| 11 | - Adding or customizing data tips |
| 12 | - Creating interactive plots (click, hover, drag callbacks) |
| 13 | - Animating or streaming data to a chart |
| 14 | - Arranging multiple axes with tiledlayout/nexttile |
| 15 | - Optimizing chart rendering performance |
| 16 | - Exporting figures for publication or reports |
| 17 | - User says "help me visualize this" without a specific chart type |
| 18 | |
| 19 | ## When NOT to Use This Skill |
| 20 | |
| 21 | - Building a full app (use `matlab-build-app` — it invokes this skill for chart sub-steps) |
| 22 | - Applying dark mode, brand colors, or custom color themes (use `matlab-theming`) |
| 23 | - Working with Simulink scopes or Simscape plots |
| 24 | - Creating App Designer charts via the drag-and-drop GUI |
| 25 | |
| 26 | ## Workflow |
| 27 | |
| 28 | ``` |
| 29 | User request arrives |
| 30 | | |
| 31 | +-- FAST PATH (most requests) |
| 32 | | Chart type named OR unambiguous single-axes plot |
| 33 | | AND no interactivity / animation / multi-panel / performance concern |
| 34 | | | |
| 35 | | v |
| 36 | | Infer rendering context (default: standalone figure) |
| 37 | | Read relevant references --> Build directly |
| 38 | | |
| 39 | +-- PLAN PATH (complex or ambiguous) |
| 40 | | |
| 41 | +-- Ambiguous intent (no chart type named, unclear data question) |
| 42 | | --> Identify visualization intent (see Intent Taxonomy) |
| 43 | | |
| 44 | +-- Rendering context unclear AND it matters |
| 45 | | --> Ask: standalone figure, Live Script, or uifigure app? |
| 46 | | |
| 47 | v |
| 48 | Present inline plan for approval |
| 49 | | |
| 50 | v |
| 51 | User confirms --> Read references --> Build |
| 52 | ``` |
| 53 | |
| 54 | ### Fast-Path Triggers (build directly, no plan) |
| 55 | |
| 56 | ALL of these must hold: |
| 57 | - Chart type is named OR intent maps unambiguously to one type |
| 58 | - Single axes (no tiled/multi-panel layout) |
| 59 | - No custom interactivity (no user-specified callbacks) |
| 60 | - No animation or streaming |
| 61 | - No explicit performance constraints |
| 62 | - Rendering context is clear or defaults to standalone figure |
| 63 | |
| 64 | ### Plan-Path Triggers (present plan first) |
| 65 | |
| 66 | ANY of these fires the plan path: |
| 67 | - Multi-panel / tiled figure |
| 68 | - Custom interactivity (click, hover, drag callbacks) |
| 69 | - Animation or streaming data |
| 70 | - Performance-sensitive (large dataset, real-time update) |
| 71 | - Branded / designed figure requiring palette/theme coordination |
| 72 | - Ambiguous "help me visualize this" — unclear type or intent |
| 73 | - Multiple visualization intents in one figure |
| 74 | |
| 75 | ## Rendering Context |
| 76 | |
| 77 | Three contexts gate which constraint set applies: |
| 78 | |
| 79 | | Context | Constraints | How inferred | |
| 80 | |---------|-------------|--------------| |
| 81 | | **Standalone figure** | Universal rules only | Default; `figure`/`axes` in request | |
| 82 | | **Live Script** | Universal rules only | User mentions Live Script, `.mlx`, plain-text Live Code | |
| 83 | | **uifigure app** | Universal + uifigure rules | User mentions uifigure; arrives as sub-step of app-builder | |
| 84 | |
| 85 | If context is unstated and cannot be inferred, assume standalone figure. Ask only when the distinction matters (e.g., heatmap parent differs between contexts). |
| 86 | |
| 87 | ## Visualization Intent Taxonomy |
| 88 | |
| 89 | Engages ONLY when the user has NOT named a specific chart type or function. If they say "scatter" or "heatmap," skip intent selection and build directly. |
| 90 | |
| 91 | ### Communicative Intents |
| 92 | |
| 93 | | Intent | Data question | Encouraged functions | |
| 94 | |--------|--------------|---------------------| |
| 95 | | **Comparison** | How do values compare across items? | `bar`, `barh`, `bar3`, `bar3h`, `pareto`, `stem`, `stairs`, `loglog`, `semilogx`, `semilogy` | |
| 96 | | **Trend / time series** | How does a value change over time? | `plot`, `area`, `stackedplot`, `stairs`, `stem`, `fplot`, `fplot3` | |
| 97 | | **Distribution** | How is data spread? | `histogram`, `histogram2`, `boxchart`, `violinplot`, `raincloudplot`, `swarmchart`, `swarmchart3`, `scatterhistogram`, `binscatter`, `pol |