building-simulink-models について
building-simulink-modelsは、Simulink、System Composer、Simscape、Stateflowのモデル編集向けスキルです。読み取り、編集、構造チェックを段階的に進めてモデルを構築します。
主な機能
- 01ブロックの追加、接続、設定
- 02Stateflowチャート内部の編集
- 03System Composerアーキテクチャの構築
- 04Simscape物理接続の配線
- 05モデル構造と接続状態の確認
活用シーン
- 01新しいSimulinkサブシステムの構築
- 02ブロックパラメーターと信号の変更
- 03Stateflowの状態と遷移の作成
- 04物理モデルの接続確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ simulink-agentic-toolkit --skill building-simulink-modelsインストール後、Claude Code で/building-simulink-modelsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamlreferences/simscape.mdstateflow.mdsystem-composer.md詳細
モデルの構築
Simulink、System Composer、Simscape、Stateflow チャート内部の構造を変更する場合は、すべて model_edit を使用してください。
使用する場合
- モデル内のブロックを追加、接続、削除、置換する場合
- ブロックパラメーター、信号プロパティ、モデル設定を構成する場合
- Stateflow チャート内部(状態、遷移、ジャンクション、データ、イベント、メッセージ、関数)を作成または編集する場合
- System Composer のアーキテクチャモデルを構築する場合
- Simscape の物理接続を配線する場合
使用しない場合
- パラメーター値を照会する場合 →
model_query_paramsを使用してください - 変数参照を数値に解決する場合 →
model_resolve_paramsを使用してください
ライブラリとポリシーの前提条件 — ブロッキングゲート
最初に実行してください。他のツールを呼び出す前に、結果を評価してください。 ゲートの確認についてユーザーに説明しないでください。結果に基づいて、説明なしで続行してください。
library.settingsLookup() を呼び出して、カスタムライブラリの設定を確認してください。絶対パスが解決済みの構造体が返されます。
found— ライブラリファイルが見つかったかどうか(satk-libraries.json または従来の reuse-libraries.json)enabled— カスタムライブラリが設定されているかどうかgatePass— ゲートが満たされているかどうか(構築に進めるかどうか)kgIndexPath—library-kg/index.mdの絶対パスlibrariesPath— ライブラリファイルの絶対パスpolicyPath—block-policy.jsonの絶対パスdataRoot—.satk/を含むディレクトリの絶対パス
結果を解釈してください。
found: false→ カスタムライブラリは設定されていません。標準の Simulink ブロックを使用して進めてください。gatePass: true, found: true→ ブロックを検索するためにkgIndexPathを読み込んでから、計画と編集を行ってください。gatePass: false→setup-custom-librariesを呼び出して、ナレッジインデックスを作成してください。
ゲートの合否を述べるのではなく、各確認項目と結果について、意味のある説明を表示してください。
ゲートを通過するまでは、モデルの読み込み、計画、編集を開始しないでください。
ワークフロー
- ライブラリとポリシーの前提条件を確認する: 上記のブロッキングゲートを参照してください。ゲートを通過するまでは進めないでください。
- ライブラリブロックを検索する: 使用予定のブロックタイプをすべて列挙し、
.satk/library-kg/index.mdと該当するカテゴリページを検索して、条件に合うライブラリブロックをそれぞれ見つけてください。 - 最初に読み込む: 対象スコープで
model_readを使用し、ブロック ID を取得して既存のトポロジーを把握してください。 - データフローを計画する: 複雑な編集では、入力 → 処理 → 出力を図示してから、ステップ 1 と 2 で特定したブロックに対応付けてください。
- 編集する:
model_editを使用し、一度に 1 つのサブシステムレベルを対象として操作してください。 - 検証する: スコープで
model_readを使用し、構造が意図どおりであることを確認してください。 - 接続を確認する: スコープ内の編集がすべて完了したら、
model_checkを実行して、未接続のポートや未接続のラインがないか確認してください。重大度がerrorの問題は修正してください。
model_edit が status: partial を返した場合: 編集がすべて完了するのを待たずに、直ちに model_read と model_check の両方を実行してください。
ref による操作の連鎖
ref でブロックに名前を付け、同じ呼び出し内の後続の操作では #ref を使ってそのブロックを参照してください。
[{"op": "add_block", "type": "Gain", "name": "MyGain", "ref": "g1"},
{"op": "connect", "target": "blk_5.y1 -> #g1.u1"}]
SF スコープでは、#ref の参照にポートはなく、.y1/.u1 のサフィックスは付けません(references/stateflow.md を参照)。
レスポンスの created マップには、ref → blk_id(SF スコープでは ref → sf_X)が表示されます。後続の呼び出しでは、返された ID を使用してください。#ref が使えるのは 1 回の呼び出し内のみです。
ガードレール
model_overviewまたはmodel_readに表示された名前から、ブロックのパス文字列を手動で作成しないでください。ブロック名には目に見えない改行や末尾の空白が含まれることがあり、hilite_system、open_system、get_paramが失敗する原因になります。代わりに、blk_XID からパスを解決してください。% blk_42 → use the number after "blk_" as the SID blockPath = Simulink.ID.getFullName('<ModelName>:42'); hilite_system(blockPath) open_system(blockPath) get_param(blockPath, 'BlockType')- ユーザーから明示的に依頼されない限り、ブロックの配置に
Simulink.BlockDiagram.arrangeSystemを呼び出したり、set_paramを使用したりしないでください。model_editには自動レイアウトエンジンが組み込まれており、呼び出しのたびに自動で実行されます。 model_editには必ずlayout_modeを指定してください。空のスコープ(新しいモデルルート、または新しく作成したサブシステム)にブロックを配置する場合は、ブロックを最適に配置するため"full"を使用してください。既存のブロックがあるスコープにブロックを追加する場合は、既存の位置を維持するため"incremental"を使用してください。- 各
model_edit呼び出しは、スコープによって決まる単一のドメイン(Simulink、System Composer、または Stateflow)でのみ動作します。Chart ブロックを追加してから内容を作成するには、2 回呼び出します。まず SL スコープで Chart ブロックを追加し、次に SF スコープで内部要素を作成します。呼び出しの間にmodel_readを使用して、チャートのsf_Xスコープ ID を確認してください。 - 数値をハードコードする代わりに、意味のある名前の変数(例:
Kp_SpeedController)を使用してください。モデルワークスペースまたは.m初期化スクリプトで変数を定義してください。 model_editを迂回するために、set_param/add_blockを指定してevaluate_matlab_codeを使用しないでください。自動レイアウト、取り消し履歴、エラー復旧が省略されます。- ユーザーから別の方法を明示的に求められた場合や、モデルがライブラリの場合を除き、まだ開いていないモデルを開くときや新しいモデルを作成するときは、
load_systemではなくopen_systemを使用してください。これにより、編集中の内容をユーザーがリアルタイムで確認できます。
命名規則
ブロック、信号、変数には、コード生成に安全な名前を使用してください。
- 使用できる文字は
a-z、A-Z、0-9、アンダースコア(_)のみです。 - 数字で始めないでください。
- 先頭または末尾のアンダースコアや、連続するアンダースコアは使用しないでください。
- 32 文字未満の名前を推奨します(コード生成ターゲットによっては必須です)。
ブロックの種類
type フィールドには、ブロックの表示名を使用してください。ライブラリのパスを作成したり、推測したりしないでください。
-
カスタムライブラリブロック(
satk-libraries.jsonから):typeフィールドとReferenceBlockフィールドの両方を指定してください。typeにはブロックの表示名を、ReferenceBlockにはライブラリ KG に記載された完全なライブラリパスを設定してください。 -
ツールボックス KB ブロック(
activeToolboxesから): カスタムライブラリブロックと同じ方法で使用してください。ライブラリ KG のツールボックスカテゴリページに記載されたtypeフィールドとReferenceBlockフィールドを参照してください。 -
組み込み Simulink ブロック: BlockType をそのまま使用してください:
Gain、Sum、Constant、Integrator、SubSystem、Scope -
ライブラリブロック(Simscape、Aerospace、DSP、Communications など): Simulink ライブラリブラウザーに表示される名前を使用してください:
Voltage Source、Resistor、DC Motor、Solver Configuration、6DOF (Euler Angles) -
model_editがINVALID_TYPEを返した場合: MATLAB ドキュメントに記載された完全なライブラリパスに切り替えてください(例:ee_lib/Sources/Voltage Source)
[{"op": "add_block", "type": "In", "ReferenceBlock": "customLib_Portsandsubsystems/In", "name": "Voltage", "ref": "v1"},
{"op": "add_block", "type": "Gain", "ReferenceBlock": "customLib_Mathoperations/Gain", "name": "Kp", "ref": "g1"},
{"op": "add_block", "type": "Add", "ReferenceBlock": "customLib_Mathoperations/Add", "name": "SumErr", "ref": "s1"},
{"op": "add_block", "type": "Out", "ReferenceBlock": "customLib_Portsandsubsystems/Out", "name": "Output", "ref": "o1"}]
[{"op": "add_block", "type": "Voltage Source", "name": "V1", "ref": "v1"},
{"op": "add_block", "type": "Resistor", "name": "R1", "ref": "r1"},
{"op": "add_block", "type": "Electrical Reference", "name": "Gnd", "ref": "gnd"},
{"op": "add_block", "type": "Solver Configuration", "name": "Solver", "ref": "sc"}]
レビューゲート
スコープの編集がすべて完了したら、次の点を確認してください。
model_checkで重大度がerrorの問題(未接続のポート、未接続のライン)がないこと- すべての
ref名がcreatedマップ内のblk_idに解決されており、後続の呼び出しに未解決の#ref参照がないこと - Stateflow チャートは、レイアウト適用前に lint に合格していること(
checks='["stateflow_lint"]'を指定したmodel_checkを使用) model_editが一度でもstatus: partialを返した場合、model_readでスコープの構造が完成していることを確認してください
ドメイン固有のルール
以下のドメインを扱う場合は、編集する前に対応するリファレンスファイルを読んでください。
- Stateflow チャート ->
references/stateflow.md—model_editはチャートの内部をネイティブに編集します。チャート(sf_Xまたはチャートのblk_X)をスコープに指定し、同じ操作を使用します。SF 要素にはadd_block、遷移にはポートなしのconnect、プロパティにはconfigureを使用してください。リファレンスでは、SF 固有の構文、スコープ指定、LabelString のパターン、および SL と SF の 2 回呼び出しのワークフローについて説明しています。 - System Composer アーキテクチャモデル ->
references/system-composer.md—systemcomposer.createModelでモデルを作成してから、model_editを使用します。コンポーネントにはtype: "SubSystem"を指定し、ポートには Bus Element ブロックを使用してください。リファレンスでは、コンポーネントの作成、ポートの配線、およびビヘイビアモデルの生成について説明しています。 - Simscape 物理モデル ->
references/simscape.md— 物理接続には双方向の<->構文を使用します。リファレンスでは、接続のセマンティクス、ポートのパターン、および初期ターゲット変数について説明しています。
Copyright 2026 The MathWorks, Inc.