managing-simulink-projects

$npx mdskill add matlab/simulink-agentic-toolkit/managing-simulink-projects

Manages MATLAB projects for Simulink workflows including paths and source control.

  • Creates and configures projects for Simulink models, dictionaries, and requirements.
  • Depends on MATLAB Project API and Simulink for path and reference resolution.
  • Uses project health checks and label definitions to guide configuration decisions.
  • Returns updated project objects and diagnostic reports to the calling agent.

SKILL.md

.github/skills/managing-simulink-projectsView on GitHub ↗
---
name: managing-simulink-projects
description: >-
  Manages MATLAB projects for Simulink workflows: path management, file registration, labels,
  source control configuration, and project lifecycle. Use when creating projects, adding
  models/dictionaries/requirements to projects, configuring labels for automation, fixing broken
  model references, or setting up source control for Simulink artifacts.
license: MathWorks BSD-3-Clause
metadata:
  author: MathWorks
  version: "1.1"
---

# Managing Simulink Projects

MATLAB projects coordinate Simulink workflows — they manage the MATLAB path (which Simulink uses to resolve model references, data dictionaries, and requirements), track file membership for source control, and provide label-based automation for selecting targets in CI/CD pipelines.

## When to Use

- Creating a new MATLAB project for Simulink models
- Adding models, data dictionaries, or requirements to an existing project
- Configuring project paths so Simulink can resolve references
- Setting up labels for automation (test selection, code generation targets)
- Configuring source control and cache folders
- Diagnosing broken model references, missing dictionaries, or failing project health checks

## When NOT to Use

- Building or editing model structure (blocks, connections) → use `building-simulink-models`
- Writing or running tests → use `testing-simulink-models`
- Drafting requirements content → use `generate-requirement-drafts`
- Running simulations for analysis → use `simulating-simulink-models`

## Mental Model

Four principles that prevent the most common failures:

1. **Registration ≠ path.** `addFile` registers a file with the project for source control tracking. `addPath` puts a folder on the MATLAB path so Simulink can resolve artifacts by filename. These are independent operations — you almost always need both.

2. **Filename-only resolution.** Data dictionaries (`set_param(...,'DataDictionary',...)`, `addDataSource`), model references, and requirements all resolve via MATLAB path using **filename only** — never full paths. The containing folder must be on the project path.

3. **`addPath` is not recursive.** Each subfolder containing resolvable artifacts needs its own `addPath` call.

4. **Single-project constraint.** Only one project can be open at a time. Creating or opening a new project silently closes the current one (running its shutdown scripts). `currentProject` throws an error when no project is open — it does not return empty.

## Guardrails

**Always:**
- Use `addPath(proj, folder)` for every folder containing dictionaries, referenced models, requirements, or profiles
- Pass filename only (not full paths) to `addDataSource`, `set_param(...,'DataDictionary',...)`, and `slreq.createLink`
- Use absolute paths for `SimulinkCacheFolder` and `SimulinkCodeGenFolder`: `proj.SimulinkCacheFolder = fullfile(proj.RootFolder, 'work')`
- Call `updateDependencies(proj)` before querying `proj.Dependencies`
- Close the current project before creating or opening another
- Use `.graphml` extension for `DependencyCacheFile`
- Use `.gitignore` for excluding derived files from source control
- Add requirements folder to project path when linking requirements to models
- Register `.slmx` link-store files with the project (guarded by `isfile` check)

**Ask First:**
- Deleting files from a project (`removeFile` then disk delete)
- Modifying startup/shutdown scripts (affects all users who open the project)
- Changing project references (affects dependent projects)

**Never:**
- Use `proj.IgnoredFilePatterns` — throws "Feature not supported" for all project types from `createProject`
- Use `cat.Labels` — the correct property is `cat.LabelDefinitions`
- Use `'string'` as a label DataType — valid types are `'none'`, `'char'`, `'double'`, `'integer'`, `'logical'`
- Use `findFile` (singular) for label queries in R2024a+ — use `findFiles` (plural). ONLY use `findFile` with R2023a/b
- Pass full file paths to filename-only APIs
- Attempt to open two projects simultaneously
- Use `clear all` in startup scripts — it wipes the `proj` variable

## Task Routing

| Intent | Reference |
|--------|-----------|
| Add files/folders to project, manage project path | `references/path-and-file-management.md` |
| Set up labels for automation pipelines | `references/labels-and-automation.md` |
| Link data dictionaries to models | `references/data-dictionaries.md` |
| Configure model references across folders | `references/model-references.md` |
| Configure source control, cache folders, `.gitignore` | `references/source-control-and-caching.md` |
| Diagnose broken references or health check failures | Start with Verification below, then route to the relevant reference |

## Verification

Run after every project modification:

```matlab
results = runChecks(proj);
updateDependencies(proj);
deps = proj.Dependencies;  % digraph
```

If `runChecks` reports issues, inspect which folders are missing from the project path — this is the root cause of most failures.

----

Copyright 2026 The MathWorks, Inc.

----

More from matlab/simulink-agentic-toolkit

SkillDescription
author-modeladvisor-checks>
authoring-simulink-inputs>
building-architecture-modelsCommon steps for building multi-layer system architecture models using System Composer. Use when implementing architecture models or when interacting with interface dictionaries, allocation sets, stereotypes, and requirements for architecture components.
building-simulink-modelsBuilds and edits Simulink, System Composer, Stateflow, and Simscape models. Use when modifying model structure, parameters, ports, connections, or Stateflow chart internals.
checking-model-complianceUse this skill when the user asks to check Simulink model compliance against a standard (MISRA, MAB, JMAAB, ISO 26262, ISO 25119, DO-178C, DO-254, IEC 61508, IEC 62304, EN 50128, CERT C/CWE, AUTOSAR), wants to run Model Advisor checks, or needs a compliance report with fix suggestions. For JMAAB/MAB, supplement deterministic checks with agentic review of uncheckable guidelines.
configuring-block-policyGuide users through creating and managing .satk/block-policy.json for controlling which blocks the agent can use, which are excluded, and which block parameters the agent should not modify. Use when setting up block usage policy for a project.
create-sdi-run>
curating-library-kgGuide users through curating the library knowledge index — reviewing block categories, marking common/important blocks, and improving block descriptions for better agent block selection.
filing-bug-reportsGenerate a standalone bug report that another developer can use to reproduce, investigate, and fix an issue. Use when the user says 'file a bug', 'write a bug report', 'report this issue', or asks to document a defect for handoff.
generate-requirement-draftsGenerates draft requirements from Simulink models. Use when drafting or updating requirement artifacts from a model. Prefers Requirements Toolbox (.slreqx) when available; falls back to structured YAML.