---
name: Configuring Block Policy
slug: configuring-block-policy
category: AI Engineering
description: Configuring Block Policy helps create or update .satk/block-policy.json to control which Simulink blocks the agent may use, which are excluded, and which parameters it must not change. Use it when setting up or updating block usage restrictions for a project.
github: "https://github.com/matlab/simulink-agentic-toolkit/tree/main/skills-catalog/model-based-design-core/configuring-block-policy"
language: HTML
stars: 963
forks: 94
install: "npx degit https://github.com/matlab/simulink-agentic-toolkit/tree/main/skills-catalog/model-based-design-core/configuring-block-policy ~/.claude/skills/configuring-block-policy"
installs_to: ~/.claude/skills/configuring-block-policy
source_path: skills-catalog/model-based-design-core/configuring-block-policy/SKILL.md
collection_size: 24
category_size: 2451
collection_url: "https://dirskills.com/collections/matlab/simulink-agentic-toolkit"
added: 2026-08-21T05:15:11.164Z
last_synced: 2026-08-21T05:15:11.164Z
canonical_url: "https://dirskills.com/skills/configuring-block-policy"
---

# Configuring Block Policy

Configuring Block Policy helps create or update .satk/block-policy.json to control which Simulink blocks the agent may use, which are excluded, and which parameters it must not change. Use it when setting up or updating block usage restrictions for a project.

**Install:**

```bash
npx degit https://github.com/matlab/simulink-agentic-toolkit/tree/main/skills-catalog/model-based-design-core/configuring-block-policy ~/.claude/skills/configuring-block-policy
```

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

----
