Use this skill when the user asks to check Simulink model compliance against a standard (MISRA, MAB, JMAAB, ISO 26262, ISO 25119, DO-178C, DO-254, IEC 61508, IEC 62304, EN 50128, CERT C/CWE, AUTOSAR), wants to run Model Advisor checks, or needs a compliance report with fix suggestions. For JMAAB/MAB, supplement deterministic checks with agentic review of uncheckable guidelines.
npx skills add https://github.com/matlab/simulink-agentic-toolkit --skill checking-model-compliance
Runs Model Advisor checks for a named standard (or default configuration) and delivers a prioritized summary with fix suggestions.
building-simulink-modelstesting-simulink-modelsmodel_check tool directly| Standard | Accepted Inputs |
|----------|----------------|
| 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 |
| Secure Coding (CERT C, CWE) | SECURITY, CERT_C, CWE, secure coding |
| AUTOSAR | AUTOSAR |
Equivalent check sets (run once, report for both):
Users may have custom Model Advisor checks or custom configuration files (.json exported from Model Advisor Configuration Editor). These are not standards — they are handled via:
model_advisor_run with 'configuration' parameter directly (Path B)model_advisor_run with 'checks' parameter directly (skip resolution)All script functions are in the skill's scripts/ directory. Use evaluate_matlab_code with project_path set to the skill's scripts/ folder so MATLAB can find them. Never use addpath.
Tools provided (always use these — never improvise with raw Model Advisor API):
| Function | Inputs | Output | Example |
|----------|--------|--------|---------|
| model_advisor_resolve_checks | 'standard', '<NAME>' | struct with checks, checks_count, status | model_advisor_resolve_checks('standard', 'JMAAB') |
| model_advisor_run | system, 'checks', {ids} or system, 'configuration', path | YAML with findings, status, check_summary | model_advisor_run('MyModel', 'checks', checkIds, 'token_budget', 8000) |
| model_advisor_justify | model, checkId, blockPath, text | struct with status | model_advisor_justify('MyModel', 'mathworks.jmaab.db_0032', 'MyModel/Sub', 'Waived per review') |
| detect_default_config | modelName | struct with config_path or empty | detect_default_config('MyModel') |
Determine from user request:
MISRA_C. For "JMAAB" without version → ask user (v5.1 or v6).slx file (ask if ambiguous)Model/Controller)Disambiguation rules:
Path A — Standard named: Proceed to step 3.
Path B — No standard, user says "run Model Advisor" / "check my model":
Run detect_default_config(modelName). If config found → skip to step 4. If empty → ask which standard (show supported list).
model_advisor_resolve_checks('standard', '<STANDARD_NAME>')
status: success → note checks_count, inform userstatus: truncated → use returned config file path in step 4status: error → report and stopGate: If checks_count > 100, confirm with user before proceeding.
Shortcut: If the user already has specific check IDs, call model_advisor_run directly with those IDs and skip to step 5.
model_advisor_run('<system>', 'checks', {<check_ids>}) % inline checks
model_advisor_run('<system>', 'configuration', '<config_path>') % config file
Use 'token_budget', 8000. If truncated, read full results from full_results path.
Classify from YAML response:
## 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]
Fix Type values: param (block parameter), insert (add block), config (model config), routing (reconnect signals), arch (restructure — recommend only)
Conciseness rules:
For JMAAB, JMAAB_V6, or MAB standards → after Step 6, load and follow references/uncheckable-guidelines-review.md.
Skip this step for other standards (MISRA, ISO 26262, DO-178C, etc.).
Ask: "Would you like me to fix these issues?"
references/fix-mode.md workflowIf user wants to justify/waive/suppress violations → load and follow the Justification section in references/fix-mode.md.
.slx files are present or the name is ambiguousparameter field from check outputsavepath)slbuild or code generation without explicit user permission| Error | Action |
|-------|--------|
| UNKNOWN_STANDARD | Check for typo/alias (e.g., "MAAB" → MAB). If valid but unsupported standard, acknowledge and show supported list. |
| LICENSE_FAILED | Simulink Check license required |
| MODEL_NOT_FOUND | Ask for correct model path |
| CHECK_NOT_FOUND | Release mismatch — tell user which MATLAB release needed |
| CONFIG_NOT_FOUND | Stale path — ask for update or fall back to named standard |
| EXECUTION_FAILED | Model may have compilation errors — suggest fixing first |
| Token budget exceeded | Read full results from full_results field |
| HASH_NOT_FOUND (justify) | Model modified since last run — re-run checks for fresh ids |
| JUSTIFICATION_FILE_ERROR | Check file permissions and license |
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take matlab/checking-model-compliance from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.