mcpField
C
checking-model-compliance

checking-model-compliance

github.com/matlabテスト・品質1.3k45 回インストール1 週間前に更新
リポジトリ

checking-model-compliance について

指定した規格やカスタム Model Advisor 設定で Simulink モデルを検査するスキルです。チェックを解決して優先度付きの所見と修正案をまとめ、違反の正当化にも対応します。

主な機能

  1. 01各種適合規格の検査
  2. 02カスタムチェックや設定の実行
  3. 03所見の優先順位付けと修正案
  4. 04違反の正当化に対応

活用シーン

  1. 01ISO 26262に基づくモデル検査
  2. 02サブシステムへのJMAABチェック
  3. 03カスタム設定による結果の報告
  4. 04違反項目の免除理由の記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/simulink-agentic-toolkit --skill checking-model-compliance

インストール後、Claude Code で/checking-model-complianceを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
references/
fix-mode.md
semantic-evaluation-index.md
uncheckable-guidelines-review.md
scripts/
detect_default_config.p
model_advisor_justify.p
model_advisor_resolve_checks.p
model_advisor_run.p

詳細

モデルの規格適合性を確認する

指定した規格(またはデフォルト設定)に対して Model Advisor のチェックを実行し、修正案を添えた優先順位付きの概要を作成します。

使用する場合

  • Simulink モデルが規格(MISRA、MAB、JMAAB、ISO 26262、DO-178C など)に準拠しているか確認する
  • 指定した適合性規格に対して Model Advisor のチェックを実行する
  • 優先順位付きの検出事項と修正案を含む適合性レポートを作成する
  • カスタムの Model Advisor 設定ファイルをモデルに対して実行する
  • 特定の適合性違反を正当化する、または免除する

使用しない場合

  • モデル構造を構築または編集する → building-simulink-models
  • 動作テストを作成する → testing-simulink-models
  • 構造検証のみ(未接続ポート) → model_check ツールを直接使用する
  • 指定した規格がない一般的なモデル品質に関する質問(例:「モデルは適切に分解されていますか?」)— 別のワークフローが必要です

対応規格

規格使用可能な入力
MISRA C:2023MISRA_C, MISRA C, MISRA
MISRA Simulink/StateflowMISRA_SLSF, MISRA Simulink
MABMAB, MAAB
JMAAB v5.1JMAAB
JMAAB v6JMAAB_V6, JMAAB06
ISO 26262ISO_26262, ISO 26262
ISO 25119ISO_25119, ISO 25119
DO-178C/DO-331DO_178C, DO-178C, DO-178B, DO-331
DO-254DO_254, DO-254
IEC 61508IEC_61508, IEC 61508
IEC 62304IEC_62304, IEC 62304
EN 50128/EN 50657EN_50128, EN 50128, EN_50657
セキュアコーディング(CERT C、CWE)SECURITY, CERT_C, CWE, secure coding
AUTOSARAUTOSAR
Simulink Code Inspector(SLCI)SLCI, Simulink Code Inspector

同等のチェックセット(1回実行し、両方の規格についてレポート):

  • ISO 26262、IEC 61508、IEC 62304、EN 50128/EN 50657、ISO 25119
  • DO-178B、DO-178C、DO-331
カスタムチェックと設定

ユーザーがカスタムの Model Advisor チェックやカスタム設定ファイル(Model Advisor Configuration Editor からエクスポートした .json)を使用している場合があります。これらは規格ではなく、次の方法で処理します。

  • カスタム設定ファイル: ユーザーがパスを指定 → 'configuration' パラメーターを直接指定して model_advisor_run を使用します(パス B)
  • カスタムチェック ID: ユーザーが特定のチェック ID を指定 → 'checks' パラメーターを直接指定して model_advisor_run を使用します(解決処理を省略)

前提条件

すべてのスクリプト関数はスキルの scripts/ ディレクトリにあります。MATLAB が関数を見つけられるように、project_path をスキルの scripts/ フォルダーに設定して evaluate_matlab_code を使用してください。addpath は使用しないでください。

提供されるツール(必ずこれらを使用してください。生の Model Advisor API を使って独自の方法で処理しないでください):

関数入力出力例
model_advisor_resolve_checks'standard', '<NAME>'checks、checks_count、status を含む構造体model_advisor_resolve_checks('standard', 'JMAAB')
model_advisor_runsystem, 'checks', {ids} または system, 'configuration', pathfindings、status、check_summary を含む YAMLmodel_advisor_run('MyModel', 'checks', checkIds, 'token_budget', 8000)
model_advisor_justifymodel, checkId, blockPath, textstatus を含む構造体model_advisor_justify('MyModel', 'mathworks.jmaab.db_0032', 'MyModel/Sub', 'Waived per review')
detect_default_configmodelNameconfig_path を含む構造体、または空detect_default_config('MyModel')

ワークフロー

1. 標準、モデル、スコープを特定する

ユーザーのリクエストから判断します:

  • 標準 — 対応している名前に対応付けます(表を参照)。デフォルト:「MISRA」→ MISRA_C。「JMAAB」でバージョン指定がない場合は、ユーザーに確認します(v5.1 または v6)
  • モデル — .slx ファイル(曖昧な場合は確認します)
  • スコープ — モデル全体(デフォルト)またはサブシステムのパス(例:Model/Controller)

判別ルール:

  • バージョン指定のない「JMAAB」→確認します(v5.1 または v6 — 2 つの異なるチェックセットがあります)
  • 指定のない「ISO」→確認します(複数の標準が対応しています)
  • 指定のない「DO」→確認します(178C または 254)
  • 複数の標準がリクエストされた場合 → それぞれを特定してセットを比較し、同一であれば 1 回実行します
2. パスを選択する

パス A — 標準の指定あり: ステップ 3 に進みます。

パス B — 標準の指定なしで、ユーザーが「Model Advisor を実行して」/「モデルをチェックして」と依頼: detect_default_config(modelName) を実行します。設定が見つかった場合 → ステップ 4 に進みます。空の場合 → どの標準を使うか確認します(対応標準の一覧を表示)。

3. チェックを解決する(パス A のみ)
model_advisor_resolve_checks('standard', '<STANDARD_NAME>')
  • status: success → checks_count を確認し、ユーザーに伝えます
  • status: truncated → ステップ 4 で返された設定ファイルのパスを使用します
  • status: error → エラーを報告して停止します

確認事項: checks_count が 100 を超える場合は、続行する前にユーザーの確認を取ります。

ショートカット: ユーザーがすでに特定のチェック ID を指定している場合は、それらの ID を指定して model_advisor_run を直接呼び出し、ステップ 5 に進みます。

4. チェックを実行する
model_advisor_run('<system>', 'checks', {<check_ids>})          % inline checks
model_advisor_run('<system>', 'configuration', '<config_path>') % config file

'token_budget', 8000 を使用します。結果が切り詰められている場合は、full_results のパスから完全な結果を読み取ります。

5. 検出結果を分析する

YAML レスポンスから分類します:

  1. 重大(Failed) — 準拠のために必ず修正する必要があります
  2. 警告(Warning) — 修正するべきですが、正当化できる場合もあります
  3. 情報 — 優先度は低いです
6. 準拠レポートを提示する

MAB/JMAAB 以外の標準には、次のテンプレートを使用します:

## Compliance Summary: <Standard>
Model: <model> [Scope: <subsystem> if scoped]
Result: X passed, Y warnings, Z failures

### Critical Findings (must fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|
| name  | N      | param/insert/config/routing/arch | what to change |

### Warnings (should fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|

### Passed
N checks passed.

### Suggested Next Steps
[5-7 prioritized actions max]

MAB、JMAAB、または JMAAB_V6 標準には、代わりに次のテンプレートを使用します(チェックできないガイドラインのレビューをレポートの一部として含みます):

## Compliance Summary: <Standard>
Model: <model> [Scope: <subsystem> if scoped]
Result: X passed, Y warnings, Z failures

### Critical Findings (must fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|
| name  | N      | param/insert/config/routing/arch | what to change |

### Warnings (should fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|

### Passed
N checks passed.

---

### Agentic Review of Uncheckable Guidelines (LLM-based — not deterministic)

> **Note:** This is a semantic evaluation performed by an AI agent, not a deterministic Model Advisor check.

**Model:** <model_name>
**Judgment:** PASS | WARNING | FAIL
**Confidence:** 0.XX

#### Critical (must fix)
| Guideline | Blocks | Fix Type | Action | Confidence |
|-----------|--------|----------|--------|------------|

#### Warnings (should fix)
| Guideline | Blocks | Fix Type | Action | Confidence |
|-----------|--------|----------|--------|------------|

### Evidence
[2-3 sentences citing specific model data]

### Recommendation
[Top 3-5 prioritized actions, or "No action required."]

---

### Suggested Next Steps
[5-7 prioritized actions max, combining both deterministic and uncheckable findings]

Fix Type の値: param(ブロックパラメーター)、insert(ブロックを追加)、config(モデル設定)、routing(信号を再接続)、arch(再構成 — 推奨のみ)

簡潔さに関するルール:

  • チェックごとに 1 行。チェックごとに表示するブロックパスは最大 3~5 件(合計数を記載)
  • 目標は 40~60 行、最大約 80 行
  • 詳細については「チェック X で影響を受けるブロックをすべて一覧表示できます」と提案します
7. チェックできないガイドラインのレビューを実施する(JMAAB/MAB のみ)

このセクションでは、上記の MAB/JMAAB レポートテンプレートに含まれる「エージェントによるチェック不能なガイドラインのレビュー」セクションの記入方法を説明します。ユーザーにレポートを提示する前に、必ずこの手順を完了してください。

他の標準(MISRA、ISO 26262、DO-178C など)の場合に限り、この手順をスキップします。 JMAAB、JMAAB_V6、または MAB 標準の場合は、references/uncheckable-guidelines-review.md を読み込み、その指示に従います。

実施内容: Model Advisor では完全に検証できないガイドライン、つまり意味的な判断が必要なガイドラインや、チェックが存在しないガイドラインを評価します。references/semantic-evaluation-index.md を読み込み、チェックできないガイドラインの一覧を確認してから、次の手順を実行します:

  1. Model Advisor の結果から、意味評価インデックスに記載されているチェック済みガイドラインを特定します
  2. それらのガイドラインについて、MCP ツール(model_overview、model_read、model_query_params)を使用してモデルデータを抽出します
  3. 該当する各ガイドラインにインデックスのクイックルールを適用します
  4. 判断が分かれるケースでは、「セマンティックギャップ」列を使用して判断を調整します

判断基準: 検出結果のうち最も重大な判定を採用します(FAIL > WARNING > PASS)。信頼度は 0.0~1.0 です。信頼度が 0.5 未満の場合は FAIL と判定しないでください。

8. 修正モード

次のように確認します:「これらの問題を修正しますか?」

  • いいえ → 停止します(レポートのみ)
  • はい → references/fix-mode.md のワークフローを読み込み、その指示に従います
9. 正当化モード

ユーザーが違反の正当化/免除/抑制を希望する場合は、references/fix-mode.md の「正当化」セクションを読み込み、その指示に従います。

ガードレール

常に
  • JMAAB/JMAAB_V6/MAB の場合:必ず Step 7(確認不能なガイドラインのレビュー)を実行します。これを行わないとレポートが不完全になります。
  • 実行前に、標準名とチェック件数を表示します。
  • 検出事項にはブロックパスを含めます。
  • Fix Order(構造 → 診断)を厳守し、連鎖的な誤検出を防ぎます。
  • 生の出力をそのまま示さず、要約します。
  • 100 件以上のチェックを実行する前に、ユーザーに確認します。
  • 正当化理由を追加する前に、その文面をユーザーに確認します。理由を捏造してはいけません。
  • 参照ツールがエラーを返した場合は、エラーをそのまま報告します。別の方法で再試行してはいけません。
  • .slx ファイルが複数ある場合、または名前が曖昧な場合は、チェックするモデルを確認します。
  • レポートのヘッダーに、解決された標準名とバージョンを記載します。
  • ツールの出力にある正確なチェック件数を報告します。
  • 失敗を説明する際は、異なる根本原因をすべて列挙します。
最初に確認すること
  • 修正モードでの変更:バッチごとに必ず確認を取り、確認なしにモデルを変更してはいけません。
  • 正当化理由:必ず人間が判断します。
  • 100 件を超えるチェックの実行:対象範囲が意図したものであることを確認します。
禁止事項
  • 「モデルは準拠しています」と断言しないでください。合否のみを報告し、準拠しているかどうかの判断はユーザーに委ねてください。
  • 構造上の修正より先に診断を実施してはいけません。
  • 明示的な依頼なしに検出事項を抑制してはいけません。
  • パラメーター名を推測してはいけません。チェック出力の parameter フィールドにある値をそのまま使用してください。
  • MATLAB パスを永続的に変更してはいけません(savepath を使用しないでください)。
  • 明示的なユーザーの許可なしに slbuild またはコード生成を実行してはいけません。
  • 不必要にチェックを再実行してはいけません。モデルが変更されていない場合は、直近の実行で得られた違反 ID を再利用してください。モデルが変更された場合に限り、新しいハッシュを取得するために再実行します。

エラーからの復旧

エラー対応
UNKNOWN_STANDARD入力ミスや別名を確認します(例:「MAAB」→ MAB)。有効だが未対応の標準の場合は、その旨を伝え、対応している標準の一覧を示します。
LICENSE_FAILEDSimulink Check のライセンスが必要です
MODEL_NOT_FOUND正しいモデルパスを確認します
CHECK_NOT_FOUNDリリースが一致していません。必要な MATLAB リリースをユーザーに伝えます
CONFIG_NOT_FOUNDパスが古くなっています。更新を依頼するか、名前付き標準にフォールバックします
EXECUTION_FAILEDモデルにコンパイルエラーがある可能性があります。まずその修正を提案します
トークン予算超過full_results フィールドから結果全体を読み取ります
HASH_NOT_FOUND(正当化)前回の実行以降にモデルが変更されています。新しい ID を取得するため、チェックを再実行します
JUSTIFICATION_FILE_ERRORファイルのアクセス許可とライセンスを確認します

Copyright 2026 The MathWorks, Inc.


コメント