mcpField
C
configuring-block-policy

configuring-block-policy

github.com/matlabAgent workflows1.3k45 installsUpdated 1w ago
Repository

About configuring-block-policy

A skill for creating or updating `.satk/block-policy.json` to govern which Simulink blocks an agent may use and which parameters it may change. It supports block exclusions, parameter protections, policy modes, and validation before saving.

Key features

  1. 01Set block policy modes
  2. 02Exclude specified blocks
  3. 03Protect selected parameters
  4. 04Validate policy before saving

Use cases

  1. 01Restrict an agent to approved blocks
  2. 02Prevent changes to selected block parameters
  3. 03Update an existing block policy

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/matlab/simulink-agentic-toolkit --skill configuring-block-policy

After installing, type/configuring-block-policyin Claude Code to confirm it loaded.

Bundled filesmanifest.yaml

Details

From the project README

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-models routes here via the policy gate

When NOT to Use

  • Actively building a model → building-simulink-models
  • Improving block descriptions or categories → simulink-curating-library-kg
  • Declaring which libraries exist → Library Setup gate in building-simulink-models

Prerequisites

  • .satk/reuse-libraries.json must exist.

Workflow

  1. Check state — Does .satk/block-policy.json exist? If yes, load and summarize. If no, start fresh.
  2. Policy mode — (skip if no libraries specified) Ask: prefer libraries with built-in fallback, or custom libraries blocks only (no fallback)?
  3. Excluded blocks (optional) — Are there any blocks (library or built-in) that should never be placed in your models? Collect referenceBlock + reason.
  4. Off-limits parameters (optional) — Are there any block parameters you don't want the agent to modify? Collect referenceBlock + protectedParams[].
  5. 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 be prefer_customer_libraries or approved_blocks_only
  • approved_blocks_only + fallbackToBuiltins: true → rejected (contradictory)
  • protectedParams must be a non-empty array of strings
  • Malformed policy → error (never silently ignored)

Updating an Existing Policy

When .satk/block-policy.json already exists:

  1. Load with library.BlockPolicy.loadRaw(projectRoot, libConfig)
  2. Summarize current state — do NOT re-run the full wizard
  3. 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.json without 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.


Comments

Markdown supported