configuring-block-policy

$npx mdskill add matlab/simulink-agentic-toolkit/configuring-block-policy

Create and manage block usage policy for Simulink agent projects.

  • Controls which blocks the agent can use or exclude.
  • Depends on existing .satk/reuse-libraries.json file.
  • Checks if policy file exists, then loads or creates fresh.
  • Outputs or updates .satk/block-policy.json with user preferences.

SKILL.md

.github/skills/configuring-block-policyView on GitHub ↗
---
name: configuring-block-policy
description: 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.
license: MathWorks BSD-3-Clause
metadata:
  author: MathWorks
  version: "1.1"
---

# 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 → `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

```matlab
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):

```matlab
policyData = library.BlockPolicy.defaults();
library.BlockPolicy.save(projectRoot, policyData);
```

## Schema

```json
{
  "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.

----

More from matlab/simulink-agentic-toolkit

SkillDescription
author-modeladvisor-checks>
authoring-simulink-inputs>
building-architecture-modelsCommon steps for building multi-layer system architecture models using System Composer. Use when implementing architecture models or when interacting with interface dictionaries, allocation sets, stereotypes, and requirements for architecture components.
building-simulink-modelsBuilds and edits Simulink, System Composer, Stateflow, and Simscape models. Use when modifying model structure, parameters, ports, connections, or Stateflow chart internals.
checking-model-complianceUse 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.
create-sdi-run>
curating-library-kgGuide users through curating the library knowledge index — reviewing block categories, marking common/important blocks, and improving block descriptions for better agent block selection.
filing-bug-reportsGenerate a standalone bug report that another developer can use to reproduce, investigate, and fix an issue. Use when the user says 'file a bug', 'write a bug report', 'report this issue', or asks to document a defect for handoff.
generate-requirement-draftsGenerates draft requirements from Simulink models. Use when drafting or updating requirement artifacts from a model. Prefers Requirements Toolbox (.slreqx) when available; falls back to structured YAML.
inject-faultsAdd, configure, and manage faults on Simulink, Simscape, and System Composer model signals for robustness analysis and safety validation. Use when injecting faults (stuck, noise, gain, offset) onto block inports/outports, enabling fault simulation, or analyzing fault effects. Covers sensor failures, signal corruptions, actuator faults, FMEA validation, and robustness testing. Requires Simulink Fault Analyzer.