SkillAgentSearch skills...

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-target

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

93/100

Supported Platforms

Universal

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.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
13/20
Freshness
15/15

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.

SkillScoreStarsUpdatedFormat
simulink-configure-real-time-target (this skill)by matlab931.1k26d agoSKILL.md
ai-job-searchby MadsLorentzen10046.5k5d agoCLAUDE.md
claude-howtoby luongnv8910041.8k2d agoCLAUDE.md
algorithmic-artby anthropics100177.9k21d agoSKILL.md
pptxby anthropics100177.9k21d agoSKILL.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.

name: 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 .feature files, model_test → testing-simulink-models. slrealtime.testSetup here 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 (ver lists "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"), not exist (references/network-setup.md).
  • Target powered on and reachable for any operation requiring connect(tg) — see references/persistent-side-effects.md for 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:

  1. name — never invent a name like "lab-rig-3", "newTarget", "target1", or any placeholder. If the user did not give one, stop and ask.
  2. 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.
  3. username, userPassword, rootPassword — Speedgoat factory defaults are slrt / 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 addTarget and proceed.
  • Addresses differ → surface both and ask: update this target's address (Step 5, or setipaddr in 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

View on GitHub
GitHub Stars1.1k
CategoryDevelopment
Updated26d ago
Forks106

Languages

HTML

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium