Matlab Read Documentation
MathWorksOfficialCreated by MathWorks
- Skill
- Tool integration
- Science and research
- BSD-2-Clause
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured, four-pass methodology for accessing MathWorks documentation, enabling agents to move from local function discovery to deep-dive web research. By utilizing a set of specialized MATLAB scripts, the agent can programmatically fetch product indices, extract page slugs, and parse reference or user guide content. This approach minimizes trial-and-error by prioritizing local help for syntax and using web-based retrieval only when necessary for complex workflow context or release-specific details.
What it does
- Automates the discovery of function lists from local MATLAB installations.
- Provides a reliable four-pass strategy to navigate product and section indices.
- Fetches and parses official MathWorks documentation pages for syntax and workflow context.
- Identifies deprecation notices and suggests recommended replacements.
- Handles version-specific URL construction to ensure documentation matches the installed release.
- Distinguishes between programmatic and GUI-based documentation paths.
When to use it
- When you need to verify function syntax, arguments, or deprecation status.
- When you require workflow context that is not available in standard help output.
- When you need to identify which functions exist for a specific product or task.
- When training-data knowledge is uncertain or potentially outdated for a specific release.
- When you need to find the programmatic path for a feature that also has a GUI interface.
Advantages
- Reduces hallucination by relying on authoritative, version-specific sources.
- Minimizes unnecessary web calls by prioritizing local help.
- Provides a consistent, repeatable process for navigating complex documentation hierarchies.
- Ensures accurate identification of name-value arguments and property enumerations.
Usage examples
- “What functions are available in the Simulink product for code generation?”
- The agent uses get_local_function_list('simulink', 'code generation') to return a table of relevant functions.
- “How do I programmatically configure a simulation in Simulink?”
- The agent fetches the relevant user guide (ug/) page to understand the workflow and the reference (slref/) page for exact function signatures.
Install
6 of its files are not mirrored here, so install it from its source:
https://github.com/matlab/matlab-agentic-toolkit/tree/2a7f215e965597acf6ed495beb9e7b8aff45a3be/skills-catalog/matlab-core/matlab-read-documentation
Documentation by MathWorks
Use MathWorks Documentation
Systematic methodology for reading live MathWorks documentation. Provides a repeatable four-pass strategy (local catalog → help → user guide pages → reference pages) that turns documentation lookup into a predictable, efficient operation. Uses MATLAB's webread via MCP to fetch pages, with helper scripts that handle URL discovery, HTML parsing, and content extraction.
When to Use
You are answering a "How do I..." question related to MathWorks products and workflows
You guessed a URL and got 404 — use this skill to discover the correct URL from the index
You need to find which functions exist for a product or workflow — start with the local function catalog
You need to verify a function's syntax, arguments, or deprecation status from the authoritative source
You want to check MathWorks best practices for a specific workflow
Training-data knowledge is uncertain or potentially out of date for a release-specific API
The user asks what MathWorks recommends for a specific topic
You want a systematic approach that finds the RIGHT page (not just A page) in minimal tool calls
When NOT to Use
The local
helpcommand is sufficient — preferhelp function_namefor API syntax; it's faster and always correct for the installed versionThe question is about general MATLAB programming patterns, not product-specific workflows
You already have the authoritative answer from local
helpor a successfully fetched page
Fast Paths
Not every task needs the full four-pass strategy. Match the task to the shortest path:
| Task | Fast Path | Skip |
|---|---|---|
| Release notes / what's new | Fetch https://www.mathworks.com/help/{product}/release-notes.md directly via webread, then extract the ## R20XXx section | Steps 0-2 — no script needed |
| Known standalone function, need ref page | Use a URL from a prior extract_page_slugs call, or construct baseUrl + "ref/{name}.html" for simple standalone functions | Steps 0-2 — but URL must come from a verified source, not guessed |
| Know the product, need function list | get_local_function_list(product) | Steps 1-4 — no web needed |
| Unfamiliar API, no idea what exists | Full four-pass strategy | Nothing — use all steps |
Release notes
Release notes are available as clean markdown at https://www.mathworks.com/help/{product}/release-notes.md. Fetch this URL with webread, then extract the section between ## R20XXx and the next ## R header. No HTML parsing needed. Common product slugs: matlab, simulink, ecoder, rtw, stateflow, fixedpoint, hdlcoder.
Help Center Page Hierarchy
Product landing page — Lists top-level categories with short descriptions. Use to discover section slugs.
Intermediate category page — Links to subcategories with one-line descriptions. No leaf content. Drill deeper.
Lowest-level category page — Contains reference groups (functions, blocks, apps) then links to related topics and examples.
Topic pages (
ug/or product-specific path) — Conceptual or task-based content explaining how to use a feature.Example pages — Standalone worked examples with supporting files. May include live scripts, data files, or models.
Reference pages (
ref/orslref/) — Function, block, object, or property reference. Multiple subtypes: function ref, object ref, property list, block ref, app ref.Getting started pages (
gs/) — Introductory tutorials for new users of a product.Sequential topics (STEP 1, 2, 3) indicate a workflow with an intended order.
Choosing What to Fetch
MathWorks doc has two content layers that serve different purposes:
Guide pages (user guide topics, typically under
ug/) — Show which functions to call and in what order. Workflow-oriented. Best for learning a new API or deciding an approach. Note: not all products useug/— some (Simulink, Statistics and Machine Learning) use different subdirectory structures. Always discover via the section index.ref/pages (function/object reference) — Show exactly how to call each function: full syntax, argument types, name-value pairs, valid enum values, return types, per-argument examples. Best when you know the function but need its exact signature. Some products use product-specific variants (e.g., Simulink usesslref/).
You typically need both. The ug/ page tells you the recipe; the ref/ page tells you the ingredient specifications. Skipping ref/ means guessing at property names and argument values — which frequently fails because MathWorks APIs use domain-specific names that aren't intuitive (e.g., "ArxmlFilePackaging" not "FilePackaging", "StopTime" not "SimulationDuration").
Page value signals (product-independent)
| Signal | Likely high value | Likely low value |
|---|---|---|
Slug contains programmatically, program-, or command-line | Yes — always programmatic | — |
Slug contains property-map-functions | Yes — API workflow | — |
Slug contains explorer, interactively, using-...editor | — | Yes — GUI-only |
Page type is ref/ with object or function name | Yes — exact signatures | — |
| Page is very large (>30K) with product that has GUI+programmatic paths | — | Suspect GUI — measure before reading |
Page under ~1500 chars between Main Content and footer | — | Likely a navigation stub or redirect |
Slug starts with example- | Mixed — check if it opens with GUI wizard or live-script code | |
ref/ page listing "-properties" in slug | Yes — property name/value lookup table |
Four-pass strategy
Entry rule: If you have a function name from the user's request or from a get_local_function_list call in this session, start at Step 2. Do not skip Step 1 based on training-data knowledge alone — function names change between releases and guessed names waste calls.
Discover functions via the local catalog: Run
get_local_function_list('product', 'keyword')to find which functions exist. Only use this when you don't have a function name yet.Get signatures with
help: Runhelp functionNameorhelp namespace. Ifhelpanswers your question, stop here — don't fetch the web page.Third pass (
ug/): If you need workflow context — which functions to call before/after, how they compose, or which of several approaches to take — fetch theug/page withprogrammaticallyin the slug. This gives you the call sequence and overall pattern.Fourth pass (
ref/): Ifhelpwas insufficient for a specific function (truncated output, missing name-value arguments from recent releases, need the full property enumeration, or need valid categories for afindcall), fetch itsref/page.
When help is enough (most of the time)
Syntax and basic arguments for any function
Block descriptions (
help simulink/Gain)Class and object reference (
help Simulink.SimulationInput)Listing all functions in a namespace (
help matlab.io) or methods on an object (methods(obj))One-line descriptions of what each function does
Input/output argument types
Simple usage examples
When help is NOT enough (fetch the web page)
Web
ref/page: name-value arguments added in recent releases; the full property name enumeration for a settings/properties object; valid enum values for an argument; which category strings are valid for afindcall;helpoutput is truncated or incomplete.Web
ug/page: workflow context (what to call before/after); understanding how multiple functions compose together; the task has GUI and programmatic paths and you need to find the programmatic one; decision guides for choosing between approaches.
URL Patterns
MathWorks documentation URLs follow these patterns. Do not guess — use the index to discover slugs.
Building documentation URLs
All documentation URLs are versioned under /help/releases/R20XXx/ and default to the installed MATLAB release. URL construction is handled internally by fetch_product_index — you do not need to build URLs manually. Get page URLs from one of these verified sources:
hrefsoutput offetch_product_index— full URLs returned directly, ready to usefullUrlsoutput ofextract_page_slugs— full URLs from a section index
baseUrl already includes the product path (e.g., https://www.mathworks.com/help/releases/R2026a/autosar/). Append only the sub-path: baseUrl + "ref/name.html" or baseUrl + "ug/topic.html". Never re-add the product name.
Page type patterns
| Page type | Pattern | Example |
|---|---|---|
| Product index | {base}/{product}/index.html | https://www.mathworks.com/help/releases/R2025b/simulink/index.html |
| Section index | {base}/{product}/{section-slug}.html | https://www.mathworks.com/help/releases/R2025b/simulink/block-libraries.html |
| User guide page | {base}/{product}/ug/{page-slug}.html | https://www.mathworks.com/help/releases/R2025b/simulink/ug/some-topic.html |
| Reference page | {base}/{product}/ref/{function-name}.html | https://www.mathworks.com/help/releases/R2025b/matlab/ref/plot.html |
URL structure varies by product. Always crawl the section index to discover actual slugs — do not guess subdirectory names.
| Product | Guide pages | Reference pages |
|---|---|---|
matlab | matlab_prog/slug.html, matlab_oop/slug.html — multiple subdirs | ref/name.html |
simulink | ug/slug.html | slref/name.html (also gui/ for configuration parameters) |
systemcomposer | ug/slug.html | ref/name.html |
autosar | ug/slug.html | ref/name.html |
stateflow | ug/slug.html | ref/name.html |
For MATLAB, flat slugs with no subdirectory (e.g. debug-code.html) are usually section navigation pages. When crawling a section index, hrefs appear as relative paths — prepend the base URL to construct the full URL.
Common product slugs: matlab, simulink, systemcomposer, stateflow, autosar, ecoder, fixedpoint, stats, control, signal, dsp, deeplearning, images, optim, robust, mpc, sltest, parallel-computing
Scripts
MATLAB scripts automate the repetitive fetch-and-parse steps. These are function files — they require input arguments and must be called via evaluate_matlab_code, NOT run_matlab_file.
How to invoke
Use evaluate_matlab_code with project_path set to this skill's scripts/ directory (the "Base directory for this skill" shown at the top of this prompt, plus /scripts).
Do NOT use run_matlab_file — these are functions that require input arguments.
Tool: evaluate_matlab_code
code: "[t, hrefs] = fetch_product_index('simulink', 'Modeling')"
project_path: "<base-directory-for-this-skill>/scripts"Script reference
| Script | Signature | Purpose |
|---|---|---|
get_local_function_list.m | results = get_local_function_list(product, searchTerm) | Read complete categorized function list from local MATLAB install (fastest, works offline) |
fetch_product_index.m | [t, hrefs, baseUrl] = fetch_product_index(product, search, rel) | Auto-detect release, fetch product index, return section links AND base URL for reuse |
extract_page_slugs.m | [slugs, fullUrls] = extract_page_slugs(sectionUrl) | Extract page slugs and full URLs from a section index |
fetch_doc_page.m | content = fetch_doc_page(url, maxChars, startChar) | Fetch a doc page and extract readable text (default 50K char limit). Pass startChar to paginate. |
find_replacement.m | find_replacement(url) | Search a page for deprecation/replacement language |
DocUtilities.m | Static class (not called directly) | Shared utilities: HTML stripping, link extraction, URL resolution. Used internally by other scripts |
Workflow
Use the Fast Paths table above to determine which steps to skip. The full workflow below is for unfamiliar APIs where you don't know what exists.
Step 1 — Try help first (when you have a function name)
If you have a function name from any source, start here:
help set_param % function reference
help Simulink.SimulationInput % class referenceIf help answers your question, stop here. This is the most common entry point.
Step 1b — Discover functions via the catalog (when you don't have a name)
If you don't know what function to call, discover what exists:
results = get_local_function_list('ecoder');
results = get_local_function_list('simulink', 'code generation');Returns a table with Name, Purpose, and Category. If you don't know the product slug, call get_local_function_list('unknown') to list available slugs. Then proceed to Step 1 with the discovered function names.
Step 2 — Navigate the product index to find the right page
fetch_product_index auto-detects the release, constructs the base URL, and returns section links:
[t, hrefs, baseUrl] = fetch_product_index('simulink', 'Modeling');The third output baseUrl is the resolved version-aware URL — reuse it for all subsequent fetches in this session.
Step 3 — Fetch a section index to get page slugs
Use a URL from hrefs (returned by fetch_product_index) directly — do not construct URLs manually:
[slugs, fullUrls] = extract_page_slugs(hrefs{2,1});Step 4 — Fetch and extract a specific page
content = fetch_doc_page(fullUrls{3}); % from discovered URLsFor very large pages, limit output:
content = fetch_doc_page(pageUrl, 10000); % limit to 10K charsStep 5 — Verify deprecation notices and replacements
When help shows "not recommended", find the recommended replacement on the web page:
find_replacement(baseUrl + "ref/hist.html");Instructions
HTML processing
HTML stripping is handled internally by the fetch scripts (fetch_doc_page, fetch_product_index, find_replacement). Do not reimplement HTML parsing — call the appropriate fetch script instead.
URL discovery — never guess
When a URL returns 404, go up one level (section index or product index) and read slugs from the page content.
Standalone function ref page URLs (one dot or none:
plot,set_param) can also be constructed directly:baseUrl + "ref/{name}.html"— sincebaseUrlalready includes the product path.Functions or objects with a namespace (e.g.,
Simulink.SimulationInput,autosar.api.create): useextract_page_slugson the relevant section index to discover the correct URL.All other URLs must be discovered from index pages. The
fetch_product_indexfunction returns full URLs inhrefs— use them directly.
Variable naming
Avoid names that shadow MATLAB built-ins: dir, input, length, size, path. If already shadowed in the workspace, use clear <name> before calling the built-in.
Product-specific URL patterns
MATLAB: Has multiple subdirectories (
matlab_prog/,matlab_oop/,ref/). Flat slugs with no subdirectory are almost always section navigation pages.Simulink: Uses
ug/for guide pages,slref/for block/function reference, andgui/for configuration parameters.System Composer, Stateflow: Use
ug/for guide pages,ref/for reference. Straightforward hierarchy.Products with GUI+programmatic paths: Large character counts don't guarantee programmatic content — GUI-documentation pages can be 20K+ of UI element descriptions. Look for
programmaticallyorprogram-in the slug as a reliable signal.
Release-specific documentation
All URLs are versioned (
/help/releases/R20XXx/).fetch_product_indexdefaults to the installed MATLAB release. Pass a release argument (e.g.,"R2024b") to target a different version.Always verify
helpoutput first — it's guaranteed to match the installed version.If web docs describe features not available in
help, the user may be on an older release. Note this discrepancy rather than assuming the API exists.
Copyright 2026 The MathWorks, Inc.
Files
- ATTRIBUTION.mdAdded by AutoGineer1.0 KiB
- LICENSELicence file added by AutoGineer1.4 KiB
- SKILL.md18.7 KiB
- manifest.yaml541 B
- scripts/DocUtilities.p(opens on GitHub)Not mirrored: opens on GitHub4.1 KiB
- scripts/extract_page_slugs.p(opens on GitHub)Not mirrored: opens on GitHub2.8 KiB
- scripts/fetch_doc_page.p(opens on GitHub)Not mirrored: opens on GitHub3.5 KiB
- scripts/fetch_product_index.p(opens on GitHub)Not mirrored: opens on GitHub3.5 KiB
- scripts/find_replacement.p(opens on GitHub)Not mirrored: opens on GitHub2.8 KiB
- scripts/get_local_function_list.p(opens on GitHub)Not mirrored: opens on GitHub6.5 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- MathWorks
- Publisher
- MathWorks (Official)
- Source
- matlab/matlab-agentic-toolkit · skills-catalog/matlab-core/matlab-read-documentation · commit 2a7f215
- Licence
- BSD 2-Clause License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.
Get it from the source
6 of this skill’s files are not mirrored here, so there is no ZIP. Get the complete skill from its source: matlab/matlab-agentic-toolkit