Simulink-agentic-toolkit specifying-plant-models
Specify plant models for closed-loop simulation: system specs, architecture, build plans, validation plans. Use when creating, updating, or reviewing plant model specifications, planning plant model architecture, or planning plant model validation.
git clone https://github.com/matlab/simulink-agentic-toolkit
T=$(mktemp -d) && git clone --depth=1 https://github.com/matlab/simulink-agentic-toolkit "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills-catalog/model-based-design-core/specifying-plant-models" ~/.claude/skills/matlab-simulink-agentic-toolkit-specifying-plant-models && rm -rf "$T"
skills-catalog/model-based-design-core/specifying-plant-models/SKILL.mdPlant Model Specs
Structured specification of plant models for closed-loop simulation. Adapts the
specifying-software templates for the physics-modeling domain.
When to Use
- Creating a plant model to close the loop with an existing controller
- Updating or extending an existing plant model spec
- Specifying a plant model before building it
- Deciding on model architecture (subsystem decomposition, fidelity level)
- Planning validation of a plant model
When NOT to Use
- Building the plant model → use
building-simulink-models - Testing an existing plant model → use
testing-simulink-models - Specs for controller algorithms or MBD algorithms → use
specifying-mbd-algorithms - Specs for traditional software (C, C++, Python, MATLAB scripts) → use
specifying-software - Specifying a full closed-loop system → use
for the algorithm side, this skill for the plant sidespecifying-mbd-algorithms
Output Conventions
Store specs per plant model. Prefix every filename with the plant name so files are self-identifying in editor tabs, search results, and flat listings:
docs/specs/plant-models/<plant-name>/ ├── <plant-name>-system.md # What & why ├── <plant-name>-architecture.md # Subsystem decomposition ├── <plant-name>-implementation-plan.md # Build sequence └── <plant-name>-test-plan.md # Validation plan
Example for a plant called
motor:
docs/specs/plant-models/motor/ ├── motor-system.md ├── motor-architecture.md ├── motor-implementation-plan.md └── motor-test-plan.md
Mode Selection
Does this plant have <5 states, single-rate dynamics, no strong nonlinearities, and will be built by one person/agent?
- Yes → Quick spec: 2 documents (system+architecture combined, implementation+test combined)
- No → Full spec: 4 separate documents
Document Boundaries
| Spec | Answers | Does NOT Contain |
|---|---|---|
| System | What are we building and why? | Subsystem decomposition, equations |
| Architecture | How is it structured? | Simulink block details, parameter values |
| Implementation Plan | How do we build it? | Actual model_edit commands |
| Test Plan | How do we validate it? | Test execution results |
In quick mode, combine system+architecture and implementation+test into two documents.
Workflow
Step 1: Analyze Controller Interface
Read the controller model with
model_overview and model_read. Classify every signal as:
- u (commanded inputs from controller), w (exogenous disturbances),
- y (measured outputs to controller, with sensor effects), z (truth outputs for debugging)
Define the plant boundary and document sample times.
Step 2: Assess Validation Evidence
Before researching the domain, establish what evidence exists: test data, datasheets, standard maneuvers, analytic expectations, reference models.
Fidelity must be justified by available evidence — no point modeling dynamics you can't validate. Intended use matters: MIL rapid iteration → lower fidelity acceptable; HIL/code generation → fixed-step, real-time constraints.
Step 3: Research the Physics Domain
Use
web_search and read_web_page for standard modeling approaches, reference parameters, and authoritative sources. Consult reference/plant-model-guidance.md for cross-domain patterns if needed.
Step 4: Write System Spec
Use
reference/system-spec-template.md. Key plant-model sections: operating scenarios, physical model requirements, controller interface contract (u/w/y/z with sample times, data types, units), initialization & operating points, rate & timing alignment, validation evidence, reference sources.
Review gate before proceeding — verify:
- Completeness of interface requirements (u, y signals covered)
- Appropriate fidelity given intended use AND available validation evidence
- Coverage of controller's operating envelope in operating scenarios
- Operating points / initialization strategy specified and feasible
- Rate/sample time alignment with controller defined
- Clear validation reference for each major requirement
Get user review before proceeding.
Step 5: Write Architecture Spec
Use
reference/architecture-spec-template.md. Key plant-model sections: component catalog with physics domain and port interfaces, equations of motion per subsystem, nonlinearities & constraints, numerical considerations (solver, stiffness, algebraic loops), parameter management, uncertainty hooks.
Review gate before finalizing — verify:
- Correct physics decomposition — subsystem boundaries at natural domain boundaries
- Complete signal flow from u through dynamics to y
- Disturbances w entering at the right points
- Consistent interfaces: units, sign conventions, coordinate frames end-to-end
- DAE / algebraic loop risks addressed; conservation laws respected
- Missing dynamics that affect the controller (actuator limits, sensor noise, transport delays)
Get user review before proceeding.
Step 6: Write Implementation Plan + Test Plan
Use
reference/implementation-plan-template.md and reference/test-plan-template.md.
Implementation plan essentials:
- Phase 0 (interface contract & stubs) gates all parallel work — freeze ports/units/sign conventions first
- Loosely coupled subsystems (sensors, actuators, load, environment) can be built by separate agents concurrently after Phase 0; tightly coupled splits (inverter↔motor, tire↔chassis) need coordination
- Model References enable the strongest parallel development (separate .slx files)
- Parameter table: every parameter with name, value, unit, source, block path
- Sync points use
verification andmodel_read
spot-checksmodel_query_params
Test plan essentials:
- Three-stage validation: subsystem open-loop → integrated open-loop → closed-loop
- Input signal definitions with parameters (step, ramp, sine sweep)
- Gherkin scenarios mapped to
formatmodel_test - Quantitative acceptance criteria with physical justification
Review gate — Implementation Plan — verify:
- Realistic bottom-up build order (leaf subsystems first)
- Phase 0 interface stubs gate parallel work
- Correct Simulink block types for the physics
- Solver choice matches stiffness + discrete elements
- Complete parameter table with sources and units
Review gate — Test Plan — verify:
- Validation staging: subsystem open-loop → integrated open-loop → closed-loop (MIL)
- Real-time execution feasibility assessed if plant is HIL-targeted
- Each maneuver specifies: input, outputs, comparison method, acceptance criteria
- Parameter sensitivity checks included
- Numerical robustness test (solver tolerance, step size)
- Gherkin scenarios executable via model_test
Get user approval before building begins.
Guardrails
Always
- Classify signals as u/w/y/z at every interface
- Cite sources for every parameter (value, unit, source, uncertainty, conditions)
- Assess validation evidence before choosing fidelity level
- Decompose into subsystems at natural domain boundaries (actuator, dynamics, sensor, environment, load)
Ask First
- Fidelity level changes after system spec is approved
- Adding subsystems not in the architecture spec
- Deviating from the controller's sample time alignment
Never
- Reproduce textbook derivations in specs — cite authoritative sources instead; use
for domain-specific researchweb_search - Model dynamics you cannot validate against available evidence
- Skip Phase 0 interface stubs when parallel building is planned
- Use
results from unvetted sources — prefer standards, textbooks, MathWorks docs, and peer-reviewed papersweb_search
References
— System spec template (what & why)reference/system-spec-template.md
— Architecture template (subsystem decomposition)reference/architecture-spec-template.md
— Build sequence templatereference/implementation-plan-template.md
— Validation plan templatereference/test-plan-template.md
— Optional domain reference (decomposition examples, validation maneuvers, solver guide). Human-facing; do not copy verbatim into specs.reference/plant-model-guidance.md