Synthesize new waveforms from scratch for Simulink inports using createInputDataset. Use ONLY when the user asks to generate, create, or synthesize signals (step, ramp, sine, chirp, pulse, noise) to populate a Dataset for External Inputs or Signal Editor. Covers timeseries and timetable formats with correct data type, interpolation, units, and dimensions. Also covers function-call and trigger inport timing setup.
SkillScore86Maintained
Automatic
◆Coding pack
Last verified 8/15/2026
What it changes
Passed 19 of 22 test cases with the skill, and 6 of 22 without it.
Without skill27%
With skill86%
Checks it passed that the model alone missed
Copies DataInfo.Units from the scaffold element.
Avoids calling clear or clearvars in the script.
Replaces the bus element in place in the dataset.
and 20 more in the full report
13 fixed6 passed either way3 still failing0 broke
Pass-rate lift
+59 pp
Tokens
+77%
Agent turns
0%
Response time
-19%
Model gemini-3.6-flashMeasured 8/15/2026v119 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 13
Prompt
For 'SuspensionModel', I need an input dataset where inport 'RoadProfile' is a ramp rising from 0 to 0.05 m over 4 seconds, combined with Gaussian noise (std dev 0.002 m). Provide the local function code to produce the Dataset.
What was checked, without and with the skill
Checked
Without skill
With skill
Calls createInputDataset once to generate the base dataset.
Missed
Passed
Uses cast with 'like' to match the scaffold element data type.
Missed
Passed
case-20 · gemini-3.6-flash · 8/15/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md125 lines3 files
Author Input Signals
Create populated input signal datasets for Simulink models using createInputDataset as the scaffold, then populating with meaningful waveforms while preserving all signal metadata.
When to Use
User asks to generate or create synthetic waveforms (step, ramp, sine, chirp, pulse, noise, constant) for a model's inports
User wants to populate a Dataset created by createInputDataset with meaningful signal data
User needs signals for Signal Editor scenarios
User describes desired input signal behavior in natural language (e.g., "ramp from 0 to 10", "sine at 5 Hz")
User wants timetable-based input signals for inports
User needs to set up function-call timing or configure trigger/enable inport signals
User wants to replace zero-filled scaffold data with realistic waveforms
When NOT to Use
User wants to simulate the model, run it, or plot outputs — use simulating-simulink-models instead. This skill only creates input data; it never runs sim() or produces plots.
User wants to load, import, or read data from existing files (CSV, MAT, spreadsheet, .mat workspace) — even if the destination is a model inport. This skill generates new synthetic waveforms from scratch; it does not read or convert existing recorded/measured data.
Output
This skill produces:
MATLAB code — a local function that generates and returns the Dataset (reproducible, editable, keeps workspace clean)
Dataset variable (ds) — populated Simulink.SimulationData.Dataset in the base workspace, ready for simulation
Summary — brief description of each element: name, data type, waveform shape, and value range
To simulate with the Dataset, follow the simulating-simulink-models skill workflow (SimulationInput → setExternalInput → sim).
Must-Follow Rules
Start from createInputDataset — call it exactly once — never build a Dataset from scratch. Call createInputDataset once per model (it triggers update diagram). For multiple datasets, clone the returned scaffold in a loop rather than calling createInputDataset again
Preserve metadata from scaffold — every new timeseries must copy origEl.DataInfo.Interpolation and origEl.DataInfo.Units. For timetables, copy origEl.Properties.VariableContinuity. Omitting these is a bug
Replace elements in place — for timeseries: ds{k} = ts. For timetable: ds = ds.setElement(k, tt, origEl.Properties.Description) — never use addElement
Respect data types — use cast(data, 'like', origEl.Data) to match any scaffold type (double, single, integer, fixed-point). For boolean inports use true(size(t)) directly
Set interpolation correctly — continuous signals (sine, ramp, chirp) use linear; discrete signals (step, pulse, boolean, integer, noise) use zero-order hold. The scaffold's interpolation reflects the inport's Interpolate property — preserve it unless the signal nature demands otherwise
Wrap all generation logic in a function — the only variables left in the base workspace should be the Dataset (and simIn/simOut if simulating). All intermediate variables (t, dt, origEl, ts, signalData, k) must stay inside function scope
Never destroy user data — never call clear, clearvars, clear all, or bdclose all. The user may have existing variables, models, or figures open. Only add to the workspace, never remove from it