simulink-configure-real-time-target
Manage Simulink Real-Time target computers from MATLAB — list available targets, check whether a target is connected, read its lifecycle status, add/remove/rename targets, set IP addresses and credentials, choose the default target, install TLS material, configure a startup application, and run targ…
Install / Use
npx skills add matlab/simulink-agentic-toolkit --skill simulink-configure-real-time-targetInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of simulink-configure-real-time-target
simulink-configure-real-time-target scores 93/100 on our quality scale, 796th of 4,598 Development & Engineering skills we index (top 18%).
Its SKILL.md is 19 KB long, well organised into 17 sections with 8 code examples: a thorough specification that gives an agent plenty to work with.
With 1,148 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 26 days ago, so simulink-configure-real-time-target is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
simulink-configure-real-time-target compared with similar skills
All 4 of these similar skills score higher than simulink-configure-real-time-target; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| simulink-configure-real-time-target (this skill)by matlab | 93 | 1.1k | 26d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 46.5k | 5d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.8k | 2d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 21d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 21d ago | SKILL.md |
Frequently asked questions
- How do I install simulink-configure-real-time-target?
- Run
npx skills add matlab/simulink-agentic-toolkit --skill simulink-configure-real-time-target. The install tabs above show the steps for each supported agent. - Which AI agents does simulink-configure-real-time-target work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is simulink-configure-real-time-target safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is simulink-configure-real-time-target still maintained?
- The repository was last updated 26 days ago, so simulink-configure-real-time-target is actively maintained.
Skill content
View source on GitHubname: simulink-configure-real-time-target
description: Manage Simulink Real-Time target computers from MATLAB — list available targets, check whether a target is connected, read its lifecycle status, add/remove/rename targets, set IP addresses and credentials, choose the default target, install TLS material, configure a startup application, and run target lifecycle ops (connect, reboot, RTOS update). Use whenever the user asks "which targets are available", "is my target connected", "what's the status of the target", "add a Speedgoat", "switch default target", "change the target IP", "reboot the box", "update the target", or works with slrealtime.Targets, tg = slrealtime, addTarget, removeTarget, getTargetNames, getDefaultTargetName, setDefaultTargetName, connect, isConnected, status(tg), setipaddr, setupTLSCertificate, setStartupApp, reboot, update, or slrealtime.testSetup. Covers Speedgoat target computers and Simulink Real-Time Linux devices.
license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md
metadata:
author: MathWorks
version: "1.0"
Configuring Simulink Real-Time Targets
Manage target computer definitions for Simulink Real-Time — the development-computer records that name a target and store its IP and credentials — plus the ops that act on the target computer itself (connect, reboot, RTOS update, startup app).
Release compatibility: Designed and validated for MATLAB R2026a and later. Not recommended for earlier releases: APIs, system target files, and workflows differ.
When to Use
- Adding, removing, or switching target computer definitions, and selecting the default (
slrealtime.Targets,setDefaultTargetName) - Setting target IP, ports, or credentials (
TargetSettings,setipaddr), or target-side runtime options (TargetOptions,setupTLSCertificate) - Connecting and verifying a target, and reading its lifecycle state (
connect,isConnected,status,slrealtime.testSetup) - Target lifecycle ops: autostart on boot (
setStartupApp), RTOS image update (update), reboot (reboot)
When NOT to Use
If the task crosses one of these lines, STOP and load the named skill first before writing any code, then come back.
- Model configuration — system target file, fixed-step solver, Simulink Real-Time options →
simulink-configure-real-time-model. - Application build, run, and tuning —
slbuild,load(tg, app),start,stop,tg.Stimulation,setStopTime,getparam,setparam,getsignal, runtime parameters, recording, file logs, live streaming →simulink-run-real-time-application. - Signal capture —
slrealtime.Instrument,addForFileLog,addForSDI,addForMATLAB→simulink-instrument-real-time-application. - Model-level tests — Gherkin
.featurefiles,model_test→testing-simulink-models.slrealtime.testSetuphere is a connectivity check, not a model test. - I/O networks on the target (CAN, EtherCAT) — application-level.
Prerequisites
- MATLAB R2026a or newer, with Simulink Real-Time installed (
verlists "Simulink Real-Time") - The support package for the hardware: Speedgoat → Speedgoat Add-On; Linux x86-64 → Embedded Coder Support Package for Real-Time Linux (requires Embedded Coder). Missing Speedgoat tooling mimics a network fault; probe with
which("speedgoat.version"), notexist(references/network-setup.md). - Target powered on and reachable for any operation requiring
connect(tg)— seereferences/persistent-side-effects.mdfor the connect-required catalogue
Workflow
| Step | Purpose | Asks first? |
| --- | --- | --- |
| 1. Inventory and status | List targets, default, connection and lifecycle state | No (read-only) |
| 2. Read target-side options | Show live TargetOptions before any change | No (read-only) |
| 3. Add a target | Register a new target from user-supplied name and IP | Yes |
| 4. Set the default | Change which target slrealtime binds to | Yes |
| 5. Update settings | Change credentials, ports, or host-side address | Yes |
| 6. Target-side options | HTTPS/TLS and ports | Yes |
| 7. Connect and verify | connect, status, slrealtime.testSetup | No |
| 8. Target-side operations | setipaddr, TLS, startup app, update, reboot | Yes |
| 9. Remove a target | Delete a target record | Yes |
Use only the documented forms in references/api-reference.md (every call this skill
makes, plus status(tg) return values) and the examples below. Dot-form and function-form
are equivalent (connect(tg) = tg.connect()). Copy-ready starting points:
references/quick-start-patterns.md.
There is no in-place mutation API for TargetSettings. To change name/address/credentials/ports, the only path is disconnect → removeTarget → addTarget (Step 5). Do not invent setTargetSettings, updateTarget, tg.TargetSettings.address = ..., etc. — those will not persist.
A target name is NOT its address. An existing name (e.g. TargetPC1) may point at a completely different IP than the one the user gave you. Before connecting to a target the user identified by IP, you MUST read slrealtime("<name>").TargetSettings.address and confirm it equals the user's IP. On a mismatch, STOP and ask — never connect on the assumption they are the same; a mismatched connect just burns a ~120 s ping timeout. See Step 3.
1. Inventory and Status (read-only)
Read which targets exist, the default, and target state, changing nothing. Covers "which
targets are available", "is my target connected", "what's the status of the target".
Do not invent tg.getTargets, tg.connectionStatus, or similar.
my_tgs = slrealtime.Targets();
defaultName = getDefaultTargetName(my_tgs);
allNames = getTargetNames(my_tgs); % every registered target, by name
ts = slrealtime("lab-rig-3").TargetSettings; % one target: name, address, ports, username
allSettings = getTargetSettings(my_tgs); % array of TargetSettings, one per target
tg = slrealtime("lab-rig-3");
connect(tg);
disp(isConnected(tg)); % true/false — NOT tg.isconnected, NOT tg.connectionState
[state, appName] = status(tg); % 'stopped' | 'loaded' | 'running' | ... (references/api-reference.md)
isConnected(tg) answers "is it connected"; status(tg) answers "what's the status". Use
both, and do not invent tg.status as a property — it is the function status(tg)
(dot-form tg.status() also works). Only status(tg) needs a connection, and it
auto-connects.
If the user did not specify a target, operations proceed against the default. Surface the default name and IP before any destructive op so the user can correct an unintended binding.
2. Read Live Target-Side Options Before Changing Them
On a connected target, opts = tg.TargetOptions; returns the live options (REST port, HTTPS
toggle, TLS material, netrc flag). If the user asks you to "fix" something, read and present
the current values first — they may have intended a different change.
3. Add a New Target
REQUIRED USER INPUT — never a best-guess operation. Before constructing
TargetSettings you MUST have the user supply:
name— never invent a name like"lab-rig-3","newTarget","target1", or any placeholder. If the user did not give one, stop and ask.address— the target computer's IP. Never guess; a wrong IP can collide with another machine. If the user did not give one, stop and ask.username,userPassword,rootPassword— Speedgoat factory defaults areslrt/slrt/root; otherwise prompt.
Show the full proposed TargetSettings and wait for confirmation before calling
addTarget. Confirmed factory defaults may be shown plainly; mask user-specific secrets.
Construct TargetSettings in a single call, passing every field as a name-value
argument — the only supported form. name and address must be constructor arguments,
never assignments on a pre-built object.
ts = slrealtime.TargetSettings( ...
"name", userProvidedName, ...
"address", userProvidedAddress, ...
"sshPort", 22, ...
"xcpPort", 5555, ...
"username", userProvidedUser, ...
"userPassword", userPwd, ...
"rootPassword", rootPwd);
addTarget(my_tgs, ts);
Refuse two anti-patterns, because neither persists: default-constructing
slrealtime.TargetSettings and then assigning ts.name / ts.address (or mutating a copy
of an existing settings object); and describing the settings in prose without calling the
constructor. After confirmation, actually execute the constructor and addTarget — the
proposed-settings summary is the confirmation step, not a substitute for running the code.
Field reference: references/target-settings-schema.md.
If the intended name is already registered (or addTarget fails on a duplicate), do
not assume the existing target is what the user wants and do not connect blindly:
existing = slrealtime("TargetPC1").TargetSettings;
disp(existing.address); % compare to the address the user gave you
- Addresses match → already configured; skip
addTargetand proceed. - Addresses differ → surface both and ask: update this target's address (Step 5, or
setipaddrin Step 8) or use a different name.
4. Set or Change the Default Target (Ask First — explicit confirmation required)
The default target is sticky and silent. It persists across MATLAB sessions, and every
future tg = slrealtime (no name argument), in every user script, binds to it.
You MUST NOT call setDefaultTargetName unless the user explicitly asked to change the
default. Adding a target does not imply "make it the default." After addTarget, ask:
"Do you want me to set <name> as the default target? Your current default is
<currentDefault>."
% Only after explicit confirmation that this target should become the new default:
setDefaultTargetName(my_tgs, userConfirmedName);
5. Update Credentials, Ports, or Address
There is no in-place mutation API: disconnect, remove, and re-add.
disconnect(tg);
removeTarget(my_tgs, "lab-rig-3");
addTarget(my_tgs, newTs);
The existing tg is now stale — never read the change back through it. A Target
captures its TargetSettings at construction time. Clear it and verify through a fresh
construction — no connection needed:
clear tg
ts = slrealtime("lab-rig-3").TargetSettings;
fprintf("%s @ %s user %s\n", ts.name, ts.address, ts.username);
connect again only as a separate, deliberate step — never as part of the verification.
If only the target IP is changing and the target is reachable, prefer setipaddr
(Step 8) — it reconfigures the NIC and updates the host-side record. Use remove+add when the
IP changed outside MATLAB and you only need to refresh the host record.
6. Configure Target-Side Options
Write target-side options through dedicated APIs, not by editing the env file: HTTPS / TLS
goes through setupTLSCertificate (Step 8). The XCP and REST API ports have no programmatic
API in R2026a — use Simulink Real-Time Explorer → Target Properties. Schema:
references/target-settings-schema.md.
7. Connect and Verify
tg = slrealtime;
connect(tg);
assert(isConnected(tg), "Failed to connect to %s", tg.TargetSettings.name);
[state, appName] = status(tg);
Call status(tg) before any op that needs to know whether an app is loaded or running.
'targetError' indicates a target-side fault; see references/network-setup.md and consider
slrealtime.getCrashStack.
slrealtime.testSetup(tg); is the confidence test — ping, SSH, FTP, MQTT, REST, and a basic
build/load/run cycle. On failure see references/network-setup.md; the usual cause is
Windows firewall classification (Public vs. Private).
8. Target-Si
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
46.5kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.8kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
