simulink-curating-library-kg
Use this skill when the user wants to curate the SATK library knowledge index for a Simulink project — mark commonly used blocks, correct auto-assigned block categories, or improve block descriptions so the model-building agent picks better blocks from custom libraries.
Install / Use
npx skills add matlab/simulink-agentic-toolkit --skill simulink-curating-library-kgInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of simulink-curating-library-kg
simulink-curating-library-kg scores 92/100 on our quality scale, 944th of 4,615 Development & Engineering skills we index (top 21%).
Its SKILL.md is 8.0 KB long, well organised into 14 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
With 1,148 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 16 days ago, so simulink-curating-library-kg is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
simulink-curating-library-kg compared with similar skills
All 4 of these similar skills score higher than simulink-curating-library-kg; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| simulink-curating-library-kg (this skill)by matlab | 92 | 1.1k | 16d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 44.9k | 1d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 3d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install simulink-curating-library-kg?
- Run
npx skills add matlab/simulink-agentic-toolkit --skill simulink-curating-library-kg. The install tabs above show the steps for each supported agent. - Which AI agents does simulink-curating-library-kg work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is simulink-curating-library-kg safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is simulink-curating-library-kg still maintained?
- The repository was last updated 16 days ago, so simulink-curating-library-kg is actively maintained.
Skill content
View source on GitHubname: simulink-curating-library-kg description: Use this skill when the user wants to curate the SATK library knowledge index for a Simulink project — mark commonly used blocks, correct auto-assigned block categories, or improve block descriptions so the model-building agent picks better blocks from custom libraries. Triggered by phrases like "mark blocks common", "improve block descriptions", "correct block category", "make the agent prefer certain blocks", and from Gate 3 of building-simulink-models. license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "2.2"
Curating the Library Knowledge Index
Curate .satk/library-kg/ for better agent block selection. Infer categories and descriptions from block metadata in .satk/library-cache/*.json, save curation to .satk/library-curation.json, then regenerate the KG.
When to Use
- User wants to mark blocks as commonly used or important
- User wants to correct auto-assigned categories
- User wants to improve block descriptions for better selection
- User asks "how do I make the agent prefer certain blocks?"
- Called from
building-simulink-modelsGate 3.
When NOT to Use
- Blocking, deprecating, or protecting blocks →
configuring-block-policy - Actively building a model →
building-simulink-models - Declaring which libraries exist → Library Setup gate in
building-simulink-models
Prerequisites
satk-libraries.jsonor.satk/reuse-libraries.jsonmust exist with libraries declared
Curation Rules
- Custom descriptions are mandatory for ALL
metadataQuality: "low"and"medium"blocks across ALL declared libraries. These blocks have no useful information. Write a short intent-focused description for every such block to help with agent block selection. Do not skip blocks because a file is large or because they seem unrelated to the current task. - Custom descriptions for
"high"quality blocks are encouraged but optional. - Write custom descriptions for as many blocks as possible. After covering low/medium, covering high blocks too improves the KG.
- Process in batches by category. Group blocks, infer descriptions together, present to user in digestible chunks.
- Never write template or mechanical descriptions. Descriptions like "Mathematical operation: gain" or "Signal routing utility: mux" are useless — they just restate the category and name. Every description MUST be thoughtful, intent-focused description explaining when to use the block and what modeling problem it solves (e.g., "Scale a signal by a constant factor — use for unit conversion, controller gains, or applying physical constants" instead of "Mathematical operation: gain").
Modes
- Automatic (from Gate 3 "Automatic" option) — infer everything, commit without pausing per step, present final result for review.
- Guided (from Gate 3 "Guided setup" or direct user invocation) — propose at each step, wait for user confirmation before proceeding.
Determine mode before starting. Do not proceed without mode selection.
Workflow
If .satk/library-kg/index.md already exists, start at step 1 (review existing state). If not, start at step 2.
- Review (only if KG exists) — Read
index.mdandcommon.md, summarize current state to user (libraries, block count, categories, common blocks). - Mode selection — Determine Automatic or Guided. Do not proceed without completing this step.
- Descriptions — Ensure cache exists (see API), then read ALL
.satk/library-cache/*.jsonfiles in full. If a file exceeds read limits, read it in chunks until every block has been processed. Apply Curation Rules above — write custom descriptions for blocks, prioritizing low/medium quality. Do NOT proceed to Step 4 until descriptions exist for every low/medium quality block across ALL cache files. Save tocustomDescriptions. - Common blocks — Propose which blocks should be marked as commonly used. Consider blocks covering diverse categories and frequent modeling workflows. Save to
commonBlocks. - Categories — Finalize category definitions (names, descriptions, 3-5 keywords each). Allow user to correct individual block assignments via
categoryAssignments. - Completeness check — Before saving, count total low/medium quality blocks across ALL cache files and count how many have custom descriptions. Report coverage to the user (e.g., "275/275 low/medium blocks described, 120/285 high blocks described"). Do NOT proceed if coverage of low/medium blocks is below 100%.
- Save and generate — Save all curation data via
library.LibraryCuration.save(projectRoot, curation), then runlibrary.kg.Populate.run(projectRoot). Present the output summary to the user.
API
Ensuring cache exists
libConfig = library.LibraryConfig.load(projectRoot);
library.LibraryCatalog.getOrCreate(libConfig, projectRoot);
Reading block metadata
Read .satk/library-cache/*.json directly. Each file:
{
"libraryName": "MotorLib",
"description": "Motor control library",
"blocks": [
{
"name": "SpeedController",
"maskType": "SpeedCtrl",
"blockType": "SubSystem",
"maskDescription": "Closed-loop speed regulation with anti-windup",
"description": "",
"pathCategory": "Controllers",
"metadataQuality": "high",
"referenceBlock": "MotorLib/Controllers/SpeedController"
}
]
}
Saving curation data
projectRoot = prefdir();
curation = library.LibraryCuration.load(projectRoot);
curation.commonBlocks = {'Speed Controller', 'Torque Estimator'};
curation.categories = struct('name', 'motors', 'description', 'Electric motors', 'keywords', {{'motor', 'drive'}});
% Use containers.Map — supports any block name as key
curation.customDescriptions = containers.Map('KeyType', 'char', 'ValueType', 'char');
curation.customDescriptions('Unit Delay') = 'Delay signal by one sample period';
curation.customDescriptions('1-D Lookup Table') = 'Interpolate output from breakpoint-value pairs';
curation.categoryAssignments = containers.Map('KeyType', 'char', 'ValueType', 'char');
curation.categoryAssignments('DC Current Controller') = 'motor-control';
library.LibraryCuration.save(projectRoot, curation);
library.kg.Populate.run(projectRoot);
Important: Use containers.Map (not struct) for customDescriptions and categoryAssignments. Struct field names cannot contain spaces or hyphens, which most Simulink block names have.
JSON format on disk
{
"customDescriptions": [
{"block": "Unit Delay", "value": "Delay signal by one sample period"},
{"block": "1-D Lookup Table", "value": "Interpolate output from breakpoint-value pairs"}
],
"categoryAssignments": [
{"block": "DC Current Controller", "value": "motor-control"}
]
}
Curation Fields
| Field | Type | Effect |
|-------|------|--------|
| commonBlocks | cell array of strings | Always shown in common.md regardless of quality score |
| categories | struct array with .name, .description, .keywords | Defines categories with keyword matching for assignment |
| categoryAssignments | containers.Map (blockName → categoryName) | Per-block category assignment |
| customDescriptions | containers.Map (blockName → description) | Per-block custom description (intent) |
Guardrails
Always:
- Read block metadata only from
.satk/library-cache/*.json. - Persist curation via
library.LibraryCuration.save()and regenerate the KG vialibrary.kg.Populate.run(). - Use
library.kg.Query.search()for KG lookups. - In user-facing output, use "custom description" or "category assignment" — never the term "override".
Ask first:
- Confirm the proposed curation with the user before calling
library.LibraryCuration.save().
Never:
- Never call
find_systemorget_paramon library.slxfiles. - Never modify
.satk/library-cache/*.jsonor.satk/library-kg/*.mddirectly — they are auto-generated. - Never persist curation through any path other than
library.LibraryCuration.save().
Copyright 2026 The MathWorks, Inc.
Related Skills
ai-job-search
44.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
