matlab-list-products

$npx mdskill add matlab/matlab-agentic-toolkit/matlab-list-products

List installed MATLAB products and support packages for a given installation.

  • Resolves user-provided path or release name to a MATLAB installation.
  • Depends on MATLAB's installed product metadata and file system access.
  • Determines platform and matlabroot from path format or release name.
  • Returns a list of installed products and support packages to the user.

SKILL.md

.github/skills/matlab-list-productsView on GitHub ↗
---
name: matlab-list-products
description: "Show all installed MATLAB products and support packages for a given MATLAB installation folder. Use when listing, checking, or verifying what products or support packages are in a MATLAB installation."
license: "MathWorks BSD-3-Clause"
metadata:
  author: MathWorks
  version: "1.0"
---

# Show Installed MATLAB Products

Use this skill when asked to show, list, or check what MATLAB products or support packages are installed in a given MATLAB installation.

$ARGUMENTS

## When to Use

- User asks what products, toolboxes, or support packages are installed in a MATLAB installation
- User wants to verify a specific product is installed
- User asks to list or check their MATLAB installation contents
- User provides a matlabroot path or release name and wants to see what's there

## When NOT to Use

- User wants to install new products (use `matlab-install-products` instead)
- User wants to check MATLAB license status or activation (different workflow)
- User wants to manage or update Add-Ons from within MATLAB
- User asks about MATLAB version/release info only (use `ver` or `version` in MATLAB)

## Input

The user may provide a matlabroot path or a release name, and optionally a platform. Resolve the matlabroot as follows:

- **Path provided** (e.g. `C:\Program Files\MATLAB\R2025a`, `/usr/local/MATLAB/R2025a`, `/Applications/MATLAB_R2025a.app`): use it as-is. Infer the platform from the path format (backslash / drive letter -> Windows; `/Applications/MATLAB_` prefix -> macOS; other Unix path -> Linux).
- **Release name provided** (e.g. `R2025a`, or shorthand like `25a`): expand shorthand to full form (`25a` -> `R2025a`, `26a` -> `R2026a`, etc.) and construct the default path for the detected or specified platform:
  - **Windows:** `C:\Program Files\MATLAB\<release>`
  - **Linux:** `/usr/local/MATLAB/<release>`
  - **macOS:** `/Applications/MATLAB_<release>.app`
- **Nothing provided**: ask the user for the release name and, if ambiguous, the platform before proceeding.

If the platform cannot be inferred from the path, assume Windows.

## Protocol

> **Important:** Execute all steps below silently. Do not narrate, describe, or show progress to the user. Output only the final formatted result from Step 6.

### Step 1 -- Extract release name

Take the last component of the matlabroot path as the release name. Strip any trailing `.app` suffix for macOS paths.

Examples:
- `C:\Program Files\MATLAB\R2025a` -> release = `R2025a`
- `/usr/local/MATLAB/R2025a` -> release = `R2025a`
- `/Applications/MATLAB_R2025a.app` -> release = `R2025a`

**Fallback:** If the last path component does not match `R20\d{2}[ab]` (e.g. custom installs like `L:\prod25b`), read `{matlabroot}/VersionInfo.xml` and extract the release from the `<release>` element. If that file is missing, ask the user for the release name.

### Step 2 -- Read installed products from matlabroot

Read the file (use forward slashes on Linux/macOS, backslashes on Windows):
```
{matlabroot}/appdata/prodcontents.json
```

This is a single-line JSON object. Parse it as JSON and extract the **keys** — these are the installed product names (e.g. `"MATLAB 25.1 win64"`, `"MATLAB 25.1 glnxa64"`, `"MATLAB 25.1 maca64"`). The values (XML paths) are not needed.

### Step 3 -- Read installed support packages

Derive the support package root based on platform:

- **Windows:** `C:\ProgramData\MATLAB\SupportPackages\{release}`
- **Linux:** `/usr/local/MATLAB/SupportPackages/{release}`
- **macOS:** `~/Library/Application Support/MathWorks/MATLAB/SupportPackages/{release}`

Read the file:
```
{supportpkgroot}/appdata/prodcontents.json
```

If the file does not exist, note that no support packages are installed and skip this section.

### Step 4 -- Clean up product names

Each key in `prodcontents.json` looks like `"MATLAB 25.1 win64"` or `"MATLAB Support Package for USB Webcams 25.1.0 win64"`.

Strip the trailing version number and platform token to get a clean display name:
- Remove the version suffix: one or two numeric segments followed by an optional third (e.g. `25.1`, `25.1.0`, `25.2`)
- Remove the platform token: `win64`, `glnxa64`, `maci64`, `maca64`, or `common`
- Trim any trailing whitespace

Examples:
| Raw key | Display name |
|---|---|
| `MATLAB 25.1 win64` | `MATLAB` |
| `Simulink 25.1 win64` | `Simulink` |
| `Datafeed Toolbox 25.1 win64` | `Datafeed Toolbox` |
| `Motor Control Blockset 25.1 win64` | `Motor Control Blockset` |
| `MATLAB Documentation 25.1.0 win64` | `MATLAB Documentation` |
| `MATLAB Support Package for USB Webcams 25.1.0 win64` | `MATLAB Support Package for USB Webcams` |

### Step 5 -- Sort products

Sort the cleaned product names using **MATLABabetical order**:

1. `MATLAB`
2. `MATLAB Copilot`
3. `Simulink`
4. `Simulink Copilot`
5. All remaining products in standard alphabetical order

Any of the four anchor products that are not installed are simply omitted. Products not in the anchor list are sorted alphabetically after them.

Sort support packages in standard alphabetical order.

### Step 6 -- Display results

Show the release name as a heading, the installation folder, then two separate tables.

Use this exact format:

---

## {Release Name}

**Installed at:** `{matlabroot}`
**Support packages at:** `{supportpkgroot}`

### Products

| **Installed Products** |
|---|
| MATLAB |
| Simulink |
| ... |

### Support Packages

| **Installed Support Packages** |
|---|
| MATLAB Support Package for USB Webcams |
| ... |

---

If no support packages are installed, show the heading and a single line: `No support packages installed.`

## Key Functions and Patterns

| Pattern | Purpose |
|---|---|
| `{matlabroot}/appdata/prodcontents.json` | JSON file listing installed products (keys = product names) |
| `{supportpkgroot}/appdata/prodcontents.json` | JSON file listing installed support packages |
| MATLABabetical sort | MATLAB, MATLAB Copilot, Simulink, Simulink Copilot first, then alphabetical |
| Version/platform stripping | Remove trailing `25.1 win64` etc. from raw keys |

----

Copyright 2026 The MathWorks, Inc.

----

More from matlab/matlab-agentic-toolkit

SkillDescription
matlab-access-datafeed>
matlab-add-awgnRead BEFORE writing any code that adds Additive White Gaussian Noise (AWGN) to signals and converts between SNR, Eb/No, Es/No, and per-subcarrier SNR for communications simulations, using awgn(), convertSNR(), berawgn(). The default MATLAB patterns for AWGN (e.g., 'measured' option, manual SNR formulas) produce subtly incorrect results. This skill specifies the correct calling conventions, required function usage, and critical anti-patterns that must be avoided.
matlab-analyze-ams-waveformAnalyze AMS waveform data using Mixed-Signal Blockset utilities: phase noise measurement, clock jitter, anti-aliased resampling, timing measurements, lock time, INL/DNL, ADC/DAC calibration, HSpice import. Use when analyzing time-domain voltage from PLL/VCO/clock simulations, measuring phase noise from variable-step solver output, computing jitter, or resampling non-uniform data.
matlab-analyze-dataAnalyze data using MATLAB. Use when the task involves tables, timetables, time-series data, numeric arrays, sensor matrices, or gridded data — including but not limited to exploring, filtering, sorting, cleaning, transforming, aggregating, smoothing, padding, trimming, and answering questions about data. MATLAB provides extensive, easy-to-use built-in functions for these workflows with no additional products required.
matlab-analyze-dependenciesAnalyze the effective toolbox file set to produce a Dependency Manifest — classify all transitive dependencies as included, product, add-on, or external-unresolved, then present resolution options with tradeoffs. Use after matlab-define-toolbox-api when the spec is approved.
matlab-analyze-emS-parameters, insertion loss, fields, currents, mesh control, and solver selection for RF PCB performance validation. TRIGGER: user asks to compute S-parameters, analyze insertion/return loss, extract fields or currents, compare MoM vs FEM, or control mesh for any RF PCB component. Invoke BEFORE writing sparameters() or solver code — API is non-obvious. SKIP: designing or creating components (use the specific matlab-design-pcb-* skill), material/stackup setup only (use matlab-manage-pcb-material), optimization sweeps (use matlab-optimize-pcb-design), PDN/IR-drop analysis (use matlab-analyze-pcb-pdn).
matlab-analyze-installed-antennaAnalyze antennas installed on electrically large conducting platforms using MATLAB Antenna Toolbox. Loads platform geometry from STL/STEP/IGES, installs antenna elements, selects electromagnetic solvers (MoM-PO, FMM, MoM), and computes patterns, impedance, coupling, and efficiency. Use when the user wants to model an antenna on a vehicle, aircraft, ship, satellite, or other large structure.
matlab-analyze-pcb-pdnPDN DC voltage/current analysis, IR drop, design rule checking, and multi-net batch analysis on imported PCB layouts. TRIGGER: user asks about power integrity, PDN analysis, IR drop, voltage distribution, current density, power nets, or design rule checking on a PCB. Invoke BEFORE writing code — the PDN API chain is specialized and non-obvious. SKIP: importing a PCB file (use matlab-read-pcb-layout), EM field/S-parameter extraction (use matlab-analyze-em), material/stackup setup only (use matlab-manage-pcb-material), transmission line design (use matlab-design-pcb-txline).
matlab-analyze-rcsCalculate and visualize monostatic and bistatic radar cross section (RCS) using MATLAB Antenna Toolbox. Computes RCS of platforms, antennas, and arrays with PO, MoM, and FMM solvers, supporting HH/VV/HV/VH polarization, GPU acceleration, and near-field observation. Use when the user wants to compute, plot, or analyze radar cross section.
matlab-analyze-rf-propagationAnalyze RF propagation and plan wireless sites using MATLAB Antenna Toolbox. Creates transmitter/receiver sites, computes signal strength, coverage maps, SINR, line-of-sight, and ray tracing in geographic or indoor environments. Supports multiple propagation models (free-space, close-in, Longley-Rice, ray tracing, rain/gas/fog), custom terrain, building data, and directional antennas. Use when the user wants to compute coverage, signal strength, path loss, SINR, ray tracing, or plan a wireless network.