Skill v1.0.1
currentAutomated scan100/100+2 new
version: "1.0.1" name: matlab-create-live-script description: Create plain-text MATLAB Live Scripts (.m files) with rich text formatting, LaTeX equations, section breaks, and inline figures. Use when generating tutorials, analysis notebooks, reports, documentation, or educational content. Requires R2025a+. license: MathWorks BSD-3-Clause metadata: author: MathWorks version: "2.1"
Live Scripts
Plain-text .m files that render as rich documents in the MATLAB Live Editor. Version-control friendly — never use binary .mlx.
When to Use
- Tutorials, reports, analysis notebooks, or documentation
- Interactive exploration with inline figures and equations
- Version-controlled content (plain-text
.m, not binary.mlx)
When NOT to Use
- Regular scripts without rich formatting
- Function files
- MATLAB older than R2025a
Converting from .mlx
Binary .mlx files can be converted to plain-text .m by running the following at the MATLAB command window. The recipe is not part of the resulting .m file:
editor = matlab.desktop.editor.openDocument(mlxPath, Visible=0);editor.saveAs(newMPath); % use .m extensioneditor.closeNoPrompt;
Rules
- Text lines use
%[text]— NOT bare% - One paragraph = one
%[text]line — do not hard-wrap; let the Live Editor handle line width - No empty
%[text]lines — they render as unwanted blank space - Section headers:
%%on its own line, then%[text] ## Titleon next line - No blank lines in the file, except a single blank line directly before
%[appendix] - No
figurecommand — implicit figure creation only - No more than one plot per section (unless using tiled layouts)
- No
close allorclear - No
mfilename— does not work as intended in Live Scripts. Hardcode filenames or usepwd. - Escape these characters when used as literal text (not as markdown syntax):
*,_,[,], ``,\, including within LaTeX equations. Also escape.after a digit and#` at line start. - Double LaTeX command backslashes:
\\sin,\\frac,\\sum - Last list item (bulleted or numbered) ends with
\ - Every file ends with the required appendix
- Avoid
fprintf— drop the semicolon or usedisp()for output. There is no way to send output to the command window when running as a Live Script. - Outputs should serve the reader's understanding, not verify execution — run the script via MCP to confirm correctness
Required Appendix
Every Live Script must end with:
%[appendix]{"version":"1.0"}%---%[metadata:view]% data: {"layout":"inline"}%---
Reading Live Scripts (Token Optimization)
When reading a Live Script file, ignore everything below the %[appendix] marker. The appendix contains embedded images and metadata that consume tokens without adding useful information. All code and text content appears before it.
Format Reference
| Syntax | Renders as | |
|---|---|---|
%% | Section break | |
%[text] # Title | H1 heading | |
%[text] ## Section | H2 heading | |
%[text] **bold** | Bold | |
%[text] *italic* | Italic | |
` %[text] code ` | Monospace | |
%[text] <u>text</u> | Underlined text | |
%[text] $ a = \\pi r^2 $ | Inline equation | |
%[text]{"align":"center"} ... | Center-aligned line | |
%[text] - item | Bullet | |
%[text] - last \ | Last bullet | |
%[text] 1. item | Numbered list | |
%[text] 2. last \ | Last numbered item | |
%[text] [text](url) | External hyperlink | |
%[text] [text](internal:id) | Internal link to an anchor | |
%[text] %[text:anchor:id] ... | Anchor (link target) | |
%[text:tableOfContents]{"heading":"..."} | Table of Contents |
IDs (anchors, and any other id-bearing element): letters, digits, and underscores only. No hyphens — my-section won't bind; use my_section. For anchors, place the marker immediately after %[text] at the start of the line.
Tables
%[text:table]%[text] | Method | Result |%[text] | --- | --- |%[text] | Trapezoidal | 1.9998 |%[text:table]
Example
%[text] # Sinusoidal Signals%[text] Examples of sinusoidal signals in MATLAB.%[text:tableOfContents]{"heading":"Contents"}%[text] - sine waves%[text] - cosine waves \x = linspace(0,8*pi);%%%[text] ## Sine Waveplot(x,sin(x))title('Sine Wave')xlabel('x (radians)')ylabel('sin(x)')grid on%%%[text] ## Cosine Waveplot(x,cos(x))title('Cosine Wave')xlabel('x (radians)')ylabel('cos(x)')grid on%%%[text] ## Summary%[text] The sine and cosine functions are $ \\pi/2 $ radians out of phase.%[appendix]{"version":"1.0"}%---%[metadata:view]% data: {"layout":"inline"}%---
Common Patterns
Mathematical Explanations with Equations
%[text] ## Theory%[text] The discrete Fourier transform is defined as:%[text] $ X(k) = \\sum\_{n=0}^{N-1} x(n)e^{-j2\\pi kn/N} $
Code with Inline Comments
%%%[text] ## Data Processing%[text] Load and filter the data, then visualize the results.data = load('measurements.mat');filtered = lowpass(data, 0.5); % Apply lowpass filterplot(filtered)title('Filtered Data')
Tiled Layouts for Comparison
Use only when side-by-side comparison is important to the illustration:
%%%[text] ## Comparison of Methodstiledlayout(1,2)nexttileplot(method1)title('Method 1')nexttileplot(method2)title('Method 2')
Workflow
- Plan — Title, setup, analysis sections, summary
- Write —
%[text]for text,%%for sections, appendix at end - Verify — Run via MCP to confirm code executes
Checklist
Before finishing a Live Script, verify:
- [ ] File has .m extension
- [ ] Sections use
%%alone on its own line, followed by%[text] ## - [ ] No blank lines or empty
%[text]lines (except one blank line directly before%[appendix]) - [ ] Each paragraph is a single
%[text]line (no hard-wrapping) - [ ] One plot per section (unless tiled layout)
- [ ] Bulleted and numbered lists end with backslash on last item
- [ ] LaTeX command backslashes are doubled in the saved file:
\\sin,\\frac,\\pi - [ ] No
figurecommands - [ ] No
close allorclearat start - [ ] No
mfilename - [ ] Appendix is present and correctly formatted
- [ ] Outputs serve the reader, not the developer
Not Yet Supported
Minor features planned for a future revision:
- Interactive controls (sliders, dropdowns, numeric inputs)
- Hide Code View (output view that hides the source code)
Copyright 2026 The MathWorks, Inc.