Configuring block policy
Skill matlab/simulink-agentic-toolkit/skills-catalog/model-based-design-core/configuring-block-policy
The Simulink Agentic Toolkit gives your AI agent both the tools and the expertise to work effectively with Simulink and Model-Based Design.
npx -y skills add matlab/simulink-agentic-toolkit --skill configuring-block-policyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Guide users through creating and managing .satk/block-policy.json for controlling which blocks the agent can use, which are excluded, and which block parameters the agent should not modify. Use when setting up block usage policy for a project.
The file declares its own license as MathWorks BSD-3-Clause. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.7 KB, as published. Nobody here has run it
Configuring Block Policy
Create or update .satk/block-policy.json — the file that controls which blocks (library or built-in) the agent can use, which are excluded, and which block parameters the agent should not modify.
When to Use
- User asks to set up, create, or configure block policy
- User asks to restrict or exclude blocks
- User wants to prevent the agent from modifying certain block parameters
building-simulink-modelsroutes here via the policy gate
When NOT to Use
- Actively building a model →
building-simulink-models - Improving block descriptions or categories →
curating-library-kg - Declaring which libraries exist → Library Setup gate in
building-simulink-models
Prerequisites
.satk/reuse-libraries.jsonmust exist.
Workflow
- Check state — Does
.satk/block-policy.jsonexist? If yes, load and summarize. If no, start fresh. - Policy mode — (skip if no libraries specified) Ask: prefer libraries with built-in fallback, or custom libraries blocks only (no fallback)?
- Excluded blocks (optional) — Are there any blocks (library or built-in) that should never be placed in your models? Collect
referenceBlock+reason. - Off-limits parameters (optional) — Are there any block parameters you don't want the agent to modify? Collect
referenceBlock+protectedParams[]. - Save — Validate and write with
library.BlockPolicy.save().
API
policyData = struct();
policyData.policyMode = 'approved_blocks_only';
policyData.fallbackToBuiltins = false;
% Excluded — agent will never place these blocks
policyData.blockedBlocks = struct('referenceBlock', 'LegacyLib/OldCtrl', 'reason', 'Superseded');
% Protected params — agent won't modify these values
policyData.blockRules = struct('referenceBlock', 'Lib/SpeedCtrl', ...
'protectedParams', {{'Kp', 'Ki', 'Kd'}});
library.BlockPolicy.save(projectRoot, policyData);
For defaults (no restrictions):
policyData = library.BlockPolicy.defaults();
library.BlockPolicy.save(projectRoot, policyData);
Schema
{
"schemaVersion": 1,
"policyMode": "approved_blocks_only | prefer_customer_libraries",
"fallbackToBuiltins": false,
"blockedBlocks": [
{ "referenceBlock": "LegacyLib/OldController", "reason": "Superseded" }
],
"blockRules": [
{ "referenceBlock": "Lib/SpeedController", "protectedParams": ["Kp", "Ki", "Kd", "SampleTime"] }
]
}
Validation Rules
policyMode: must beprefer_customer_librariesorapproved_blocks_onlyapproved_blocks_only+fallbackToBuiltins: true→ rejected (contradictory)protectedParamsmust be a non-empty array of strings- Malformed policy → error (never silently ignored)
Updating an Existing Policy
When .satk/block-policy.json already exists:
- Load with
library.BlockPolicy.loadRaw(projectRoot, libConfig) - Summarize current state — do NOT re-run the full wizard
- Ask what to change, apply to existing struct, save
Common updates: exclude a block, mark params as off-limits, change mode, remove an entry.
Guardrails
- Never write
block-policy.jsonwithout user confirmation - Always validate before saving (
library.BlockPolicy.validate(policyData)) - If user provides a block name without the full library path, look it up in the KG to resolve the
referenceBlock
Copyright 2026 The MathWorks, Inc.