Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Matlab Design Radar

ASecurity

Launch and control the MATLAB Radar Designer app programmatically via MCP. Use when designing radar systems, configuring parameters, comparing radar types, analyzing performance metrics, or managing radar design sessions.

1,122 stars
0 votes
0 copies
1 views
Added 9/22/2026
ai-agentsgoperformance

Works with

climcp

Security Analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned 9/22/2026

$npx -y skills add matlab/matlab-agentic-toolkit --skill matlab-design-radar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Matlab Design Radar?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Matlab Design Radar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/matlab-matlab-design-radar/badge)](https://www.skillsdirectory.com/skills/matlab-matlab-design-radar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: matlab-design-radar
description: Launch and control the MATLAB Radar Designer app programmatically via MCP. Use when designing radar systems, configuring parameters, comparing radar types, analyzing performance metrics, or managing radar design sessions.
license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md
metadata:
  author: MathWorks
  version: "1.0"
---

# Radar Designer MCP Control

Launch and control the MATLAB Radar Designer app programmatically via MCP. Use this skill when a user asks about radar design parameters, wants to configure a radar system, compare radar types, analyze radar performance, or visualize radar metrics interactively in the Radar Designer app.

## On Entry

When this skill is first invoked without a specific user request, present the following example prompts to inspire the user:

1. Design a tracking radar at 5 GHz with 2 MW peak power at 1500 km range for a 1 sq meter target
2. Compare airport radar performance at 2.8 GHz vs 5.6 GHz — which can achieve 150 km range for a 10 sq meter target?
3. Set up a weather radar and show how heavy rain (16 mm/hr) degrades detection range
4. Configure an automotive radar at 77 GHz with electronic scanning for 100 meters range
5. Add a 200 km max range requirement to my current radar design and check if it meets the objective

Then wait for the user to type their own radar design question.

**IMPORTANT**
- Never generate MATLAB scripts for the user that call the wrapper functions directly. These are for the agent's internal use only. When the user asks for a script, use only the built-in export commands via `radarDesignerExport`.
- When greeting the user, simply ask about their radar design goals (type, frequency, power, requirements) without referencing the underlying mechanism.

## When to Use

- User asks to design, configure, or analyze a radar system
- User wants to launch or open the Radar Designer app
- User asks to change radar parameters (frequency, power, antenna, etc.)
- User wants to compare different radar types (tracking, airport, airborne, etc.)
- User asks about radar performance metrics (max range, SNR, detection probability, etc.)
- User wants to load or save a radar design session (.mat file)
- User asks about target or environment configuration for radar analysis
- User wants to set requirements/objectives for a radar design

## When NOT to Use

- User asks about general MATLAB programming unrelated to radar design
- User wants to use Radar Toolbox functions directly (without the Radar Designer app)
- User asks about Simulink radar models or Phased Array System Toolbox without the app
- User wants to create radar waveforms or signals outside the app context
- User asks about radar theory or equations without wanting to use the app

## Prerequisites

- MATLAB MCP server must be running and connected
- The `mcp__matlab__evaluate_matlab_code` tool must be available
- The Radar Toolbox must be installed in the MATLAB instance
- The skill's `scripts/` directory must be on the MATLAB path (set via `project_path`)

## Code Reference

Consult [code-reference.md](references/code-reference.md) for detailed code patterns — including multi-radar comparison, session management, export, and range auto-tuning examples. The patterns below are summaries; `code-reference.md` is authoritative.

---

## Wrapper Scripts

All Radar Designer operations go through 5 p-coded wrapper scripts in `scripts/`. Always set `project_path` to the skill's root directory when calling `mcp__matlab__evaluate_matlab_code` so the scripts are on the MATLAB path.

### radarDesignerSession — App lifecycle and sessions

| Action | Call | Returns |
|--------|------|---------|
| Launch app | `h = radarDesignerSession('launch')` | App handle `h` |
| Reuse existing | `h = radarDesignerSession('launch', h)` | Same `h` if valid |
| Start new | `radarDesignerSession('startNew', h, templateName)` | — |
| Save session | `radarDesignerSession('save', h, filePath)` | — |
| Load session | `radarDesignerSession('load', h, filePath)` | — |

**Templates:** `'AirborneRadarSpec'`, `'AirportRadarSpec'`, `'AutomotiveRadarSpec'`, `'TrackingRadarSpec'`, `'WeatherRadarSpec'`

### radarDesignerParam — Get/set parameters and requirements

| Action | Call | Returns |
|--------|------|---------|
| Set parameter | `radarDesignerParam(h, 'set', specType, propName, value)` | — |
| Get parameter | `val = radarDesignerParam(h, 'get', specType, propName)` | Property value |
| Set requirement | `radarDesignerParam(h, 'setRequirement', reqIndex, propName, value)` | — |

**specType:** `'Radar'`, `'Target'`, `'Environment'`

### radarDesignerResults — Read results and auto-tune

| Action | Call | Returns |
|--------|------|---------|
| Read results | `T = radarDesignerResults(h, 'read')` | Table (16 metrics) |
| Auto-tune range | `result = radarDesignerResults(h, 'autoTune', range_m)` | Struct |

**Results table columns:** `Metric`, `Units`, `Threshold`, `Objective`, `Result_<radarName>`, `Status_<radarName>` (PASS/WARN/FAIL)

**Auto-tune result fields:** `requestedRange_km`, `achievedRange_km`, `ratio`, `converged`

### radarDesignerMultiRadar — Multiple radar management

| Action | Call | Returns |
|--------|------|---------|
| Add template | `radarDesignerMultiRadar(h, 'add', templateName)` | — |
| Clone current | `radarDesignerMultiRadar(h, 'clone')` | — |
| Select by index | `radarDesignerMultiRadar(h, 'select', index)` | — |
| Delete current | `radarDesignerMultiRadar(h, 'delete')` | — |
| List names | `names = radarDesignerMultiRadar(h, 'names')` | Cell array |

**Add templates:** `'AirborneRadar'`, `'AirportRadar'`, `'AutomotiveRadar'`, `'TrackingRadar'`, `'WeatherRadar'`

### radarDesignerExport — Built-in export

| Action | Call | Description |
|--------|------|-------------|
| SNR vs Range | `radarDesignerExport(h, 'snr')` | Opens SNR vs Range script in editor |
| Metrics Report | `radarDesignerExport(h, 'report')` | Opens Radar Metrics Report |
| Vertical Coverage | `radarDesignerExport(h, 'coverage')` | Opens Vertical Coverage script |
| Range-Doppler Grid | `radarDesignerExport(h, 'rdgrid')` | Opens Range-Doppler Grid script |

---

## Workflow

### Step 1: Launch the App

```matlab
h = radarDesignerSession('launch');
```

Always check if `h` already exists:

```matlab
if ~exist('h','var') || ~isvalid(h)
    h = radarDesignerSession('launch');
end
```

### Step 2: Select a Radar Template

```matlab
radarDesignerSession('startNew', h, 'TrackingRadarSpec');
```

### Step 3: Set Parameters

```matlab
radarDesignerParam(h, 'set', 'Radar', 'Frequency', 5e9);     % 5 GHz
radarDesignerParam(h, 'set', 'Radar', 'PeakPower', 2e6);     % 2 MW
radarDesignerParam(h, 'set', 'Target', 'RCS', 1);             % 1 m²
radarDesignerParam(h, 'set', 'Environment', 'RainRate', 4);   % 4 mm/hr
```

**All values in SI units:** frequency in Hz, power in W, range in m, etc.

### Step 3a: Map User Objectives to Requirements

When the user states a performance goal, set it as the Threshold on the matching requirement.

| User says | Req Index | Example call |
|-----------|-----------|--------------|
| "150 km range" | 2 (`MaxRange`) | `radarDesignerParam(h, 'setRequirement', 2, 'Threshold', 150e3)` |
| "10 m range resolution" | 6 (`RangeResolution`) | `radarDesignerParam(h, 'setRequirement', 6, 'Threshold', 10)` |
| "0.5° azimuth accuracy" | 10 (`AzimuthAccuracy`) | `radarDesignerParam(h, 'setRequirement', 10, 'Threshold', 0.5)` |
| "100 m/s first blind speed" | 7 (`FirstBlindSpeed`) | `radarDesignerParam(h, 'setRequirement', 7, 'Threshold', 100)` |
| "5 km min range" | 4 (`MinRange`) | `radarDesignerParam(h, 'setRequirement', 4, 'Threshold', 5e3)` |

Set both Threshold and Objective to the same value unless the user distinguishes a minimum acceptable (Threshold) from a desired goal (Objective).

### Step 3b: Range Auto-Tuning (MANDATORY when user specifies a range)

**If the user specifies a target range**, you MUST run auto-tune BEFORE reading/reporting results:

```matlab
result = radarDesignerResults(h, 'autoTune', 300e3);  % 300 km target
```

The auto-tune adjusts peak power (and gain if needed) so the achieved range is within ±15% of the user's request. It also sets the MaxRange requirement threshold to the user's requested range.

Skip this step ONLY if the user did not mention a specific range target.

### Step 4: Read Analysis Results

```matlab
T = radarDesignerResults(h, 'read');
```

The returned table has 16 rows (one per metric) with columns: `Metric`, `Units`, `Threshold`, `Objective`, and per-radar `Result_<name>` and `Status_<name>` columns.

Status values: `PASS` (meets objective), `WARN` (between threshold and objective), `FAIL` (does not meet threshold).

### Step 5: Multi-Radar, Sessions, Export

See [code-reference.md](references/code-reference.md) for complete patterns.

---

## Complete Property Reference

### Radar Properties (Settable)

#### Waveform
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `Frequency` | Carrier frequency | Hz | `3e9` |
| `PulseBandwidth` | Pulse bandwidth | Hz | `20e6` |
| `PeakPower` | Peak transmit power | W | `15e6` |
| `pulsewidth` | Pulse duration | s | `1e-3` |
| `prf` | Pulse repetition frequency | Hz | `1000` |
| `CarrierWaveInput` | Input type for carrier wave | enum | `'Frequency'` or `'Wavelength'` |
| `PowerInput` | Input type for power | enum | `'PeakPower'` or `'AveragePower'` |
| `PulseDurationInput` | Input type for duration | enum | `'PulseWidth'` or `'DutyCycle'` |
| `PulseRepetitionInput` | Input type for PRF | enum | `'PRF'` or `'PRI'` |

#### Noise
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `SystemNoiseInput` | Noise input type | enum | `'Temperature'` or `'Figure'` |
| `NoiseTemperature` | System noise temperature | K | `290` |
| `referenceNoiseTemperature` | Reference noise temp | K | `290` |
| `QuantizationNoise` | Enable quantization noise | logical | `true`/`false` |
| `QuantizationNumBits` | ADC bits | integer | `12` |
| `QuantizationDynamicRange` | ADC dynamic range | dB | `60` |

#### Antenna
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `AntennaHeight` | Antenna height above ground | m | `75` |
| `TiltAngle` | Antenna tilt angle | deg | `0` |
| `Polarization` | Antenna polarization | enum | `'H'`, `'V'`, `'Circular'` |
| `TxGain` | Transmit antenna gain | dBi | `40` |
| `TxAzBeamwidth` | Tx azimuth beamwidth | deg | `2` |
| `TxElBeamwidth` | Tx elevation beamwidth | deg | `2` |
| `DifferentRx` | Use different Rx antenna | logical | `false` |
| `RxGain` | Receive antenna gain | dBi | `40` |
| `RxAzBeamwidth` | Rx azimuth beamwidth | deg | `2` |
| `RxElBeamwidth` | Rx elevation beamwidth | deg | `2` |
| `TxGainInput` | Tx gain input mode | enum | `'GainBeamwidth'`, `'GainOnly'`, `'Imported'` |
| `RxGainInput` | Rx gain input mode | enum | `'GainBeamwidth'`, `'GainOnly'`, `'Imported'` |
| `TxSincInput` | Tx sinc pattern option | enum | `'Sinc'` or `'Gaussian'` |

#### Scanning
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `Scanning` | Scan type | enum | `'None'`, `'Mechanical'`, `'Electronic'` |
| `AzScanSectorMech` | Mechanical az scan sector | deg | `360` |
| `AzScanSectorElec` | Electronic az scan sector | deg | `120` |
| `ElScanStart` | Elevation scan start | deg | `0` |
| `ElScanStop` | Elevation scan stop | deg | `30` |

#### Detection
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `Pfa` | Probability of false alarm | probability | `1e-6` |
| `NumPulses` | Number of pulses integrated | integer | `10` |
| `PulseIntegration` | Integration type | enum | `'Coherent'`, `'Noncoherent'` |
| `NumCPIs` | Number of CPIs | integer | `1` |
| `BinaryIntegration` | Enable binary integration | logical | `false` |
| `NumBinaryDetections` | Binary detection threshold | integer | depends |
| `MofNCPIIntegration` | Enable M-of-N CPI integration | logical | `false` |
| `MNumCPIs` | M threshold for M-of-N | integer | depends |

#### Track Confirmation
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `ConfirmationThreshM` | M for M/N confirmation | integer | `3` |
| `ConfirmationThreshN` | N for M/N confirmation | integer | `5` |
| `TrackUpdateInput` | Track update input type | enum | `'TrackUpdateRate'` or `'TrackUpdateTime'` |
| `TrackUpdateTime` | Track update time | s | `1` |

#### Signal Processing
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `STC` | Enable STC | logical | `false` |
| `STCCutOffRange` | STC cutoff range | m | `50000` |
| `STCExponent` | STC exponent | scalar | `4` |
| `CFAR` | Enable CFAR | logical | `false` |
| `CFARNumCells` | CFAR reference cells | integer | `20` |
| `CFARMethod` | CFAR method | enum | `'CA'`, `'OS'`, `'GO'`, `'SO'` |
| `MTI` | Enable MTI filter | logical | `false` |
| `MTICanceller` | MTI canceller order | integer | `2` |
| `MTINullVelocity` | MTI null velocity | m/s | `0` |
| `MTIMethod` | MTI method | enum | depends |
| `Eclipsing` | Enable eclipsing loss | logical | `false` |
| `CustomLoss` | Additional custom loss | dB | `0` |

### Target Properties
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `RCS` | Radar cross section | m² | `1` |
| `SwerlingModel` | Swerling fluctuation model | enum | `'Swerling0'`...`'Swerling4'` |
| `TargetPositionInputType` | Input type | enum | `'Height'` or `'Elevation'` |
| `TargetHeight` | Target height/altitude | m | `10000` |
| `TargetElevation` | Target elevation angle | deg | `5` |
| `MaxAcceleration` | Max target acceleration | m/s² | `50` |
| `Name` | Target name | string | `'Target 1'` |

### Environment Properties
| Property | Description | Units | Example |
|----------|-------------|-------|---------|
| `FreeSpace` | Free space propagation | logical | `true` |
| `AtmosphericGasLoss` | Gas absorption enabled | logical | `true` |
| `LensLoss` | Lens effect enabled | logical | `true` |
| `PropagationFactor` | Propagation factor model | logical | `true` |
| `EarthModel` | Earth model type | enum | `'Flat'`, `'Curved'` |
| `SurfaceType` | Surface type | enum | `'Sea'`, `'Land'`, `'Custom'` |
| `RainRate` | Rain rate | mm/hr | `4` |
| `PrecipitationType` | Precipitation type | enum | `'Rain'`, `'Snow'`, `'Fog'`, `'Cloud'` |
| `SeaStateNumber` | Sea state (0-7) | integer | `3` |
| `LandType` | Land type | enum | depends |
| `VegetationType` | Vegetation type | enum | depends |
| `EffectiveEarthRadius` | Effective earth radius | m | `8500000` |
| `Name` | Environment name | string | `'Environment 1'` |

### Requirement Specifications

| Index | Name | Description |
|-------|------|-------------|
| 1 | `MaxRangePd` | Max range at detection probability |
| 2 | `MaxRange` | Maximum detection range |
| 3 | `MDS` | Minimum detectable signal |
| 4 | `MinRange` | Minimum range |
| 5 | `UnambiguousRange` | Unambiguous range |
| 6 | `RangeResolution` | Range resolution |
| 7 | `FirstBlindSpeed` | First blind speed |
| 8 | `RangeRateResolution` | Range-rate resolution |
| 9 | `RangeAccuracy` | Range accuracy |
| 10 | `AzimuthAccuracy` | Azimuth accuracy |
| 11 | `ElevationAccuracy` | Elevation accuracy |
| 12 | `RangeRateAccuracy` | Range-rate accuracy |
| 13 | `PtrueTrack` | True track probability |
| 14 | `PfalseTrack` | False track probability |
| 15 | `EIRP` | EIRP |
| 16 | `PowerAperture` | Power-aperture product |

Each requirement has: `Objective`, `Threshold`.

---

## Presenting Results

Always present results to the user in the following structured format:

### 1. Summary Table

Use Unicode box-drawing characters to render a clean table.

**Single radar:**

```
┌───────────────────────┬────────────┬────────┐
│        Metric         │   Value    │ Status │
├───────────────────────┼────────────┼────────┤
│ Max Range             │ 315.1 km   │ PASS   │
├───────────────────────┼────────────┼────────┤
│ Range Resolution      │ 7.5 m      │ PASS   │
├───────────────────────┼────────────┼────────┤
│ First Blind Speed     │ 53.5 m/s   │ WARN   │
└───────────────────────┴────────────┴────────┘
```

**Multi-radar comparison:**

```
┌───────────────────────┬────────────┬────────────┬─────────┐
│        Metric         │  Radar A   │  Radar B   │ Winner  │
├───────────────────────┼────────────┼────────────┼─────────┤
│ Max Range             │ 315.1 km   │ 222.6 km   │ Radar A │
├───────────────────────┼────────────┼────────────┼─────────┤
│ First Blind Speed     │ 53.5 m/s   │ 26.8 m/s   │ Radar A │
└───────────────────────┴────────────┴────────────┴─────────┘
```

**Table rules:**
- Show only metrics that are relevant to the user's question or that differ meaningfully between radars (not all 16 by default)
- If the user asks for a "full report", show all 16 metrics
- Include display units in the value cells (km, m/s, dBW, etc.)
- Use the Status column values directly from the results table (PASS/WARN/FAIL)

### 2. Key Takeaways

After the table, provide 2-4 bullet points covering:
- The most significant performance tradeoffs
- Any surprising results or requirement failures
- What factor is limiting performance (e.g., rain loss, duty cycle, antenna gain)
- Impact of the user's parameter change (if they modified something)

### 3. Verdict

End with a 1-2 sentence summary or recommendation.

---

## Conventions

1. **UI Auto-Updates**: All parameter changes fire events that update the web UI automatically — no manual refresh needed.

2. **Handle Persistence**: The variable `h` must persist in the MATLAB base workspace between calls. Each `evaluate_matlab_code` call shares the same workspace, so `h` remains available.

3. **Startup Timing**: The app takes 5-10 seconds to initialize. `radarDesignerSession('launch')` handles the wait automatically.

4. **Always Use project_path**: When calling `mcp__matlab__evaluate_matlab_code`, set `project_path` to the skill's root directory so the wrapper scripts in `scripts/` are on the MATLAB path.

5. **Property Names Are Case-Sensitive**: Use exact names from the property reference tables above.

6. **Range Auto-Tuning Is Mandatory**: When the user specifies a target range, ALWAYS run `radarDesignerResults(h, 'autoTune', range_m)` BEFORE reading results. Never report a design that overshoots or undershoots the user's requested range by more than 30%.

7. **Always Report Pass/Fail**: When presenting results, always include the Status (PASS/WARN/FAIL) for each metric and explicitly call out which requirements are not met.

8. **SI Units**: All parameter values must be in SI units — frequency in Hz (not GHz), power in W (not MW), range in m (not km).

9. **Always Consult code-reference.md**: Before writing code for multi-radar comparison, session management, export, or before/after analysis, load and follow the patterns in [code-reference.md](references/code-reference.md).

----

Copyright 2026 The MathWorks, Inc.

----

Attribution

matlabmatlab
View sourceSee grades on GitHubMore from matlab →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →