matlab-export-session-script について
会話中に実行した MATLAB コードを整理し、説明付きの実行可能な .m スクリプトとして作業ディレクトリの Results フォルダーに保存するスキルです。MATLAB の作業手順を残したり納品したりする用途に向いています。
主な機能
- 01会話から実行済み MATLAB コードを抽出
- 02重複コードは最終成功版を採用
- 03手順を並べ替えてセクションを追加
- 04パラメーターを集約して .m ファイルを保存
活用シーン
- 01MATLAB 解析をスクリプト化
- 02設計と可視化の手順を保存
- 03MATLAB セッションから実行可能な成果物を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-export-session-scriptインストール後、Claude Code で/matlab-export-session-scriptを入力して読み込まれたか確認します。
同梱ファイルmanifest.yaml
詳細
セッションを MATLAB スクリプトにエクスポートする
現在の会話で実行されたすべての MATLAB コードを抽出し、十分な説明を加えた実行可能な .m スクリプトにまとめて、作業ディレクトリに保存します。
クイックリファレンス
| 手順 | 操作 |
|---|---|
| 1. スキャン | アシスタントのメッセージを時系列順に確認し、実行された MATLAB コードブロックをそれぞれ抽出します |
| 2. 重複を除去 | 同じコードブロックが繰り返された場合は、最後に正常に実行されたバージョンだけを残します |
| 3. 順序を整理 | 論理的なワークフローの順序(セットアップ、モデル、設定、解析、可視化)に並べます |
| 4. 書式を整える | %% セクションヘッダーを追加し、パラメーターを冒頭にまとめます |
| 5. 保存 | 作業ディレクトリ内の Results/<descriptive_name>.m に書き込みます |
使用する場合
- ユーザーが「このセッションをスクリプトとしてエクスポートして」と言った場合
- ユーザーが「ここまでの作業からスクリプトを作成して」と言った場合
- ユーザーが「この会話の MATLAB コードを保存して」と言った場合
- 成果物を求められた MATLAB ワークフローセッションの終了時
使用しない場合
- MATLAB コードを新規に記述する場合 — コードをそのまま記述します
- MATLAB 以外のコンテンツ(Python、シェルスクリプトなど)をエクスポートする場合
- Live スクリプト(.mlx)を作成する場合 — このスキルで作成するのは通常の .m ファイルのみです
抽出ルール
含めるもの
- 意味のある結果を生み出したすべての MATLAB コード(解析、設計、可視化)
- 変数の代入、関数呼び出し、プロットコマンド
- セッション中に使用したユーティリティ関数に必要な
addpath呼び出し
除外するもの
- PowerShell、Bash、OS コマンド、
sbmラッパーなどのシェルコマンド - MCP ツール呼び出しのメタデータとフレームワークのボイラープレート
- デバッグ目的で実行した、行き詰まりに終わった試行的なワンライナー
- 情報を伝えるためだけに使用したエージェント専用の
fprintf文(ユーザー向けのものは残します) - 図の
'Visible','off'— エクスポートしたスクリプトは対話的な使用を目的とします
重複を除去する
同じコードブロックを複数回実行した場合(エラーを修正するためなど)は、最後に正常に実行されたバージョンだけを残します。途中の失敗やパラメーター修正は含めず、正常に動作した値を使用します。
スクリプトの構成
1. 会話をスキャンする
アシスタントのメッセージを時系列順に確認します。実行された(MCP、-batch などによる)MATLAB コードブロックごとに、MATLAB の部分を抽出し、次の点を記録します。
- そのコードで実現したこと(セクションコメントに使用)
- 正常に実行されたか、後のバージョンに置き換えられたか
- ワークフロー内での論理的な位置
2. 論理的な順序に並べる
抽出したコードを自然なワークフローの順序に並べます。実行順とは異なる場合があります。
- セットアップ(パス、パラメーター、インポート)
- データの読み込み/モデルの作成
- 設定
- 解析/計算
- 可視化/結果
3. セクションとして書式を整える
%% <Title> -- <One-line summary>
% <Multi-line description of what this script does.>
% <Key context: what design, what board, what analysis, etc.>
%
% Required toolboxes: <list only what was actually used>
%% Step 1: <Description>
% <Why this step matters>
<code>
%% Step 2: <Description>
<code>
書式上の規則
- 各論理ステップに
%%セクション区切りを使用する(MATLAB エディターで折りたたみ可能なセクションが作成されます) - 各セクションの前に、意図を説明するコメントを 1 行追加する
- パラメーターをまとめる:スクリプト内に散在させず、セットアップセクションにまとめます
- 変数名をそのまま保持します
title()/xlabel()の TeX 文字列では、アンダースコアをエスケープします:_ではなく\_
出力
ファイル名
セッションの主なタスクに基づいてファイル名を付けます。小文字とアンダースコアを使用します。
openrex_core_rail_dc_analysis.mhairpin_filter_design_2p4ghz.mvia_crosstalk_sweep.m
ファイルの場所
作業ディレクトリ内の Results/ に保存します。フォルダーが存在しない場合は作成します。
保存後
ユーザーに次の情報を伝えます。
- ファイル名とパス
- スクリプトのセクション数/行数
- 必要なツールボックスがあれば MATLAB ですぐに実行できること
よくあるパターン
- セッションごとに1つのスクリプト -- 複数回の設計反復にまたがる場合でも、関連する作業はすべて1つのスクリプトにまとめます。同じセッション内で無関係なワークフローを実行する場合に限り、複数のスクリプトを使用します。
- パラメーターは冒頭に配置 -- ユーザーが設定できる値(
freq、substrate、寸法)はすべてセットアップセクションにまとめ、スクリプト内を探し回らなくても変更できるようにします。 - バッチ実行では図を非表示にする -- スクリプトを非対話型で実行する可能性がある場合は、プロット処理を
if ~exist('BATCH_MODE', 'var')ガードで囲みます。ただし、対話型での使用では既定で図を表示します。 - パスの管理 -- スクリプトでファイル(Touchstone、基板ファイル)を使用する場合は、セットアップセクションの冒頭でファイルパスを変数に格納します。クロスプラットフォーム対応のパスには
fullfile()を使用します。絶対パスをハードコードしないでください。 - バッチモード用のヘッダー --
matlab -batchで実行する可能性があるスクリプトには、冒頭に次を追加します:%% Configuration BATCH_MODE = exist('BATCH_MODE', 'var') || ~usejava('desktop'); if ~BATCH_MODE, close all; clc; end - 結果ディレクトリ -- 出力は
Results/サブフォルダーに保存します:resultsDir = fullfile(pwd, 'Results'); if ~exist(resultsDir, 'dir'), mkdir(resultsDir); end
注意点
-
シェルコマンドを含めないでください。 エクスポートするスクリプトに含めるのはMATLABコードのみです。PowerShell、Bash、
sbmのラッパー呼び出しは削除してください。ファイルのダウンロードなど、シェルでの手順が不可欠な場合は、前提条件を記したコメントに置き換えます。 -
失敗した試行を残さないでください。 エラーを修正してコードブロックを再実行した場合は、最終的に成功したバージョンのみを記載します。途中で失敗したコードを含めると、スクリプトを実行できなくなります。
-
パラメーターを分散させないでください。 解析セクションやプロットセクション内に埋め込まれたハードコード値は、見つけて変更するのが困難です。ユーザーが設定できるパラメーター(
freq、substrate、寸法、ファイルパス)は、必ず冒頭のセットアップセクションにまとめます。 -
絶対パスをハードコードしないでください。
C:\Users\viyer\...のようなパスは、ほかのマシンでは動作しません。fullfile()と相対パスを使用するか、セットアップセクションにパス変数を配置します。 -
図で
'Visible','off'を使用しないでください。 エージェントのセッションでは、非対話型実行のために図ウィンドウを抑制しますが、エクスポートされたスクリプトは対話型での使用を想定しています。figure()の呼び出しから'Visible','off'引数を削除します。 -
TeX文字列内のアンダースコアをエスケープしてください。 MATLABでは既定で、
title()、xlabel()、ylabel()、legend()の呼び出しにおいて_が下付き文字として解釈されます。\_を使用するか、'Interpreter','none'を設定します。
著作権 2026 The MathWorks, Inc.