关于 checking-model-compliance
用于按指定标准或自定义 Model Advisor 配置检查 Simulink 模型的技能。它解析检查项,汇总并排序问题,提供修复建议,也支持说明违规项的豁免理由。
主要功能
- 01检查多种合规标准
- 02运行自定义检查或配置
- 03排序问题并提供修复建议
- 04支持说明违规豁免理由
适用场景
- 01按 ISO 26262 检查模型
- 02对子系统运行 JMAAB 检查
- 03汇总自定义配置的检查结果
- 04记录违规项的豁免理由
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ matlab/ simulink-agentic-toolkit --skill checking-model-compliance安装后在 Claude Code 中输入/checking-model-compliance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.yamlreferences/fix-mode.mdsemantic-evaluation-index.mduncheckable-guidelines-review.mdscripts/detect_default_config.pmodel_advisor_justify.pmodel_advisor_resolve_checks.pmodel_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:2023 | MISRA_C、MISRA C、MISRA |
| MISRA Simulink/Stateflow | MISRA_SLSF、MISRA Simulink |
| MAB | MAB、MAAB |
| JMAAB v5.1 | JMAAB |
| JMAAB v6 | JMAAB_V6、JMAAB06 |
| ISO 26262 | ISO_26262、ISO 26262 |
| ISO 25119 | ISO_25119、ISO 25119 |
| DO-178C/DO-331 | DO_178C、DO-178C、DO-178B、DO-331 |
| DO-254 | DO_254、DO-254 |
| IEC 61508 | IEC_61508、IEC 61508 |
| IEC 62304 | IEC_62304、IEC 62304 |
| EN 50128/EN 50657 | EN_50128、EN 50128、EN_50657 |
| 安全编码(CERT C、CWE) | SECURITY、CERT_C、CWE、secure coding |
| AUTOSAR | AUTOSAR |
| Simulink Code Inspector(SLCI) | SLCI、Simulink Code Inspector |
等效检查集(运行一次,同时报告两者):
- 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 文件)。这些不属于标准,可通过以下方式处理:
- **自定义配置文件:**用户提供路径 → 直接使用
model_advisor_run的'configuration'参数(路径 B) - **自定义检查 ID:**用户提供具体检查 ID → 直接使用
model_advisor_run的'checks'参数(跳过解析)
前置条件
所有脚本函数都位于该技能的 scripts/ 目录中。使用 evaluate_matlab_code,并将 project_path 设置为该技能的 scripts/ 文件夹,以便 MATLAB 找到这些函数。切勿使用 addpath。
提供的工具(始终使用这些工具,切勿自行调用原始 Model Advisor API):
| 函数 | 输入 | 输出 | 示例 |
|---|---|---|---|
model_advisor_resolve_checks | 'standard', '<NAME>' | 包含 checks、checks_count、status 的结构体 | model_advisor_resolve_checks('standard', 'JMAAB') |
model_advisor_run | system, 'checks', {ids} 或 system, 'configuration', path | 包含 findings、status、check_summary 的 YAML | model_advisor_run('MyModel', 'checks', checkIds, 'token_budget', 8000) |
model_advisor_justify | model, checkId, blockPath, text | 包含状态的结构体 | model_advisor_justify('MyModel', 'mathworks.jmaab.db_0032', 'MyModel/Sub', 'Waived per review') |
detect_default_config | modelName | 包含 config_path 的结构体,或空值 | detect_default_config('MyModel') |
工作流
1. 确定标准、模型和范围
根据用户请求确定:
- 标准 — 映射到受支持的名称(参见表格)。默认值:“MISRA” →
MISRA_C。如果用户提到“JMAAB”但未指定版本 → 询问用户(v5.1 或 v6) - 模型 —
.slx文件(如果不明确则询问) - 范围 — 整个模型(默认)或子系统路径(例如
Model/Controller)
消歧规则:
- 未指定版本的“JMAAB” → 询问(v5.1 或 v6 — 两组不同的检查集)
- 未指定类别的“ISO” → 询问(有多种受支持的标准)
- 未指定类别的“DO” → 询问(178C 还是 254)
- 请求多个标准 → 分别解析、比较检查集;如果相同,则只运行一次
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 响应分类:
- 严重(Failed)— 必须修复才能符合要求
- 警告(Warning)— 应当修复,但可能有正当理由
- 信息性 — 优先级较低
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(重构 — 仅建议)
简洁性规则:
- 每个检查项占一行;每个检查项最多显示 3-5 个块路径(注明总数)
- 目标为 40-60 行;最多约 80 行
- 如需详细信息,提供“我可以列出检查项 X 涉及的所有块”
7. 执行不可检查指南审查(仅适用于 JMAAB/MAB)
本节说明如何填写上述 MAB/JMAAB 报告模板中的“Agentic Review of Uncheckable Guidelines”(不可检查指南的 Agentic 审查)部分。在向用户提交报告前,必须完成此审查。
仅对其他标准(MISRA、ISO 26262、DO-178C 等)跳过此步骤。
对于 JMAAB、JMAAB_V6 或 MAB 标准 → 加载并遵循 references/uncheckable-guidelines-review.md。
要执行的操作: 评估 Model Advisor 无法完全验证的指南 — 需要语义判断或完全没有对应检查项的指南。加载 references/semantic-evaluation-index.md,获取不可检查指南列表,然后:
- 根据 Model Advisor 结果,确定其中哪些已检查的指南出现在语义评估索引中
- 对于这些指南,使用 MCP 工具(
model_overview、model_read、model_query_params)提取模型数据 - 针对每项适用的指南应用索引中的快速规则
- 对于边界情况,使用“语义差距”列校准判断
判断: 采用所有发现项中的最差判定(FAIL > WARNING > PASS)。置信度为 0.0-1.0。如果置信度 < 0.5,切勿判定为 FAIL。
8. 修复模式
询问:“你希望我修复这些问题吗?”
- 否 → 停止(仅提交报告)
- 是 → 加载并遵循
references/fix-mode.md工作流
9. 申诉模式
如果用户希望为违规项提出理由、申请豁免或抑制 → 加载并遵循 references/fix-mode.md 中的 Justification(申诉)部分。
防护措施
始终遵守
- 对于 JMAAB/JMAAB_V6/MAB:始终执行步骤 7(不可检查指南审查)——缺少此步骤,报告即不完整
- 运行前显示标准名称和检查数量
- 在发现项中包含模块路径
- 严格遵循修复顺序(结构性问题 → 诊断问题),以避免产生级联误报
- 总结结果,不要照搬原始输出
- 执行 ≥100 项检查前,先向用户确认
- 添加任何理由说明前,先向用户索取说明文字——绝不捏造理由
- 如果参考工具返回错误,逐字报告——不要尝试其他方法
- 如果存在多个
.slx文件或名称不明确,先确认要检查哪个模型 - 在报告标题中注明解析后的标准名称和版本
- 报告工具输出中的准确检查数量
- 解释失败时,列出所有不同的根本原因
先询问
- 修复模式下的修改——每批修改前都必须确认,绝不擅自修改模型
- 理由说明——始终由人工决定
- 运行超过 100 项检查——确认检查范围符合预期
绝不执行
- 声称“模型符合要求”——只报告通过/失败;是否符合要求由用户决定
- 在修复结构性问题前升级处理诊断问题
- 未经明确请求便隐藏发现项
- 猜测参数名称——使用检查输出中的准确
parameter字段 - 永久修改 MATLAB 路径(不要运行
savepath) - 未经用户明确许可运行
slbuild或代码生成 - 不必要地重新运行检查——如果模型自上次运行后未修改,请复用最近一次运行的违规 ID;只有模型发生变更时,才重新运行以获取最新哈希值
错误恢复
| 错误 | 操作 |
|---|---|
UNKNOWN_STANDARD | 检查是否存在拼写错误或别名(例如,“MAAB” → MAB)。如果标准有效但不受支持,请说明并显示受支持标准列表。 |
LICENSE_FAILED | 需要 Simulink Check 许可证 |
MODEL_NOT_FOUND | 询问正确的模型路径 |
CHECK_NOT_FOUND | 版本不匹配——告知用户所需的 MATLAB 版本 |
CONFIG_NOT_FOUND | 路径已过期——请用户更新路径,或回退到命名标准 |
EXECUTION_FAILED | 模型可能存在编译错误——建议先修复 |
| Token 预算超限 | 从 full_results 字段读取完整结果 |
HASH_NOT_FOUND(justify) | 上次运行后模型已修改——重新运行检查以获取最新 ID |
JUSTIFICATION_FILE_ERROR | 检查文件权限和许可证 |
版权所有 2026 The MathWorks, Inc.