matlab-create-hands-on-exercises
Use when prompting a learner to complete hands-on MATLAB coding exercises, guided practice, debugging drills, code tracing, small MATLAB projects, or MATLAB-script assessment during tutoring. Use when the tutor should create a complete runnable MATLAB script, execute it through MATLAB tools, compare the produced outputs with expected outputs, and evaluate MATLAB programming style.
git clone --depth 1 https://github.com/matlab/agent-skills-playground /tmp/matlab-create-hands-on-exercises && cp -r /tmp/matlab-create-hands-on-exercises/demos/ai-tutoring/skills/matlab-create-hands-on-exercises ~/.claude/skills/matlab-create-hands-on-exercisesSKILL.md
# MATLAB Hands-On Exercises ## Purpose Guide learners through active MATLAB practice. Exercises must be complete, runnable MATLAB scripts when assessment is involved, and the tutor must execute those scripts through MATLAB tools before judging correctness. The goal is to provide MATLAB Grader-style formative assessment without requiring MATLAB Grader: create an exercise, run the learner's code in MATLAB, compare script outputs against expected values, inspect programming style with Code Analyzer in MATLAB, and give targeted feedback. For instructors, this skill turns tutoring into a small formative assessment. Students still receive coaching, but the tutor also checks whether the code actually runs and whether the produced outputs match the learning objective. ## Exercise Loop 1. State the goal in one sentence. 2. Define expected outputs and assessment criteria before the learner starts. 3. Give a complete script scaffold with a clearly marked learner section. 4. Ask the learner to predict, fill in, or revise the learner section. 5. Save the complete script as a temporary `.m` file. 6. Apply the execution preflight in [references/execution-safety.md](references/execution-safety.md), which includes running `check_matlab_code`; do not run it a second time. 7. Run `run_matlab_file` on the script and inspect the MATLAB output. 8. Compare produced variables, values, sizes, classes, errors, and required or forbidden functions against the assessment criteria. 9. Give targeted feedback and one extension or revision prompt. Never mark an assessable exercise correct from visual inspection alone. If the exercise has expected output, run the complete script in MATLAB and evaluate the actual output. ## Exercise Types - **Trace**: Predict workspace variables after each line. - **Edit**: Modify a snippet to meet a requirement. - **Debug**: Diagnose an error message and fix the root cause. - **Refactor**: Replace fragile or verbose code with clearer MATLAB. - **Test**: Write a `matlab.unittest` test for a function. - **Analyze**: Import or summarize a tiny dataset. - **Visualize**: Create or improve a plot. Use the shortest exercise that can reveal the misconception. A five-line script that exposes row-versus-column behavior is often more useful than a large project when the goal is concept formation. ## Starter Exercise Pattern Read [references/exercise-patterns.md](references/exercise-patterns.md) for reusable exercise formats. Read [references/script-assessment-patterns.md](references/script-assessment-patterns.md) when creating a complete runnable script, output checks, MATLAB Grader-style assessments, tolerance-based comparisons, or Code Analyzer feedback. Read [references/execution-safety.md](references/execution-safety.md) before running learner-provided or generated MATLAB scripts. ## Safety and Academic Integrity - For homework-like prompts, ask for the learner's attempt first. - Treat learner code as untrusted input. Perform the execution safety preflight before running scripts. - Do not run large or destructive code. Keep practice files small and temporary. - Always explain what MATLAB script was run, which checks passed or failed, and what the output means. - Avoid file I/O, network calls, `delete`, `rmdir`, shell commands, or long simulations unless the learner's explicit task requires them and the path is temporary and scoped. ## Feedback Feedback should be specific: - Identify the MATLAB rule involved. - Point to the exact expression or line. - Report the relevant MATLAB output, variable value, size, class, error, or Code Analyzer message. - Explain how to inspect evidence next time. - Give one revised attempt or next prompt. ## Assessment Policy Assess scripts with the same broad categories MATLAB Grader uses for script assessment: - expected variable exists; - expected variable has the right class, size, and value; - numeric values are compared with an explicit tolerance; - required functions or keywords are present when the learning objective calls for them; - prohibited functions or shortcuts are absent when the exercise is about a specific programming concept; - custom checks verify plots, tables, errors, or edge cases when variable equality is insufficient. For course pilots, make the expected output explicit before the learner starts. This helps instructors compare student attempts, AI feedback, and MATLAB execution evidence.
>
Use this skill when the user wants to author, design, scope, or refine an Agent Skill (a SKILL.md file). Trigger phrases include "build a new skill", "design an agent skill", "scope a SKILL.md", "how should I structure this skill", "write a skill for X", "my skill isn't working well", or any request to improve an existing SKILL.md. Walks the user through an empirical, test-first process — probe the agent for real failures, design only for genuine knowledge gaps, iterate against runnable examples, and verify across models.
Use this skill for any work involving a MATLAB Project (.prj file) — creating a new project, tracking files, managing the project path, configuring Simulink cache and code-generation folders, running project health checks, or writing build scripts that keep the project in sync with the file system. Trigger phrases include "set up a MATLAB project", "create a .prj", "track this file in the project", "project health check", "build script conventions". This skill is the generic foundation; domain-specific skills (e.g. `mbse-workflow`) build on it.
Use this skill for the architecture phases of an MBSE workflow in MATLAB, when writing idempotent buildXxx.m scripts that produce a three-layer RFLPV architecture (Functional, Logical, Physical) with interface dictionaries, stereotype profiles, allocation sets, and requirements Implement links. Trigger for defining stereotype properties, functional-to-logical / logical-to-physical allocation, mapping requirements to components via slreq Implement links, or running quantitative roll-up analysis on the architecture. Do NOT trigger for ad-hoc structural edits to an already-built System Composer model (adding one component, rewiring a port) — use `building-simulink-models` with `model_edit` for that. Works alongside the `system-composer` skill for detailed SC API patterns.
Use this skill for guided MBSE work in MATLAB — starting a new project, resuming work mid-workflow on an existing project, or answering orientation questions about how the MBSE skills fit together. Trigger when the user says they want to create, start, or set up a new MBSE project; work on a model-based systems engineering / RFLPV project; or asks which skill covers which phase. Walks through phases one at a time — propose → approve → generate → run → confirm. Use proactively whenever someone mentions starting or continuing an MBSE project.
Use this skill for all requirements-related work in a MATLAB MBSE project using the Requirements Toolbox (slreq). Covers creating and populating requirement sets, derivation links, test case requirements, verification coverage, reading and tracing links across requirement sets and models, checking link health, allocating requirements to components (Implement links), and building traceability reports. Trigger when the user asks about slreq API, slreqx files, slmx link files, outLinks/inLinks, traceability matrices, coverage analysis, broken links, or mapping requirements to architecture components. Use proactively for any requirements or traceability task.
Use this skill when authoring reusable, idempotent MATLAB scripts that build System Composer architecture models via the architecture-modeling API — `systemcomposer.createModel`, `addComponent`, `addPort`, `setInterface`, `connect(srcPort, dstPort)`, interface dictionaries (.sldd) with `addInterface`/`addElement`, profiles/stereotypes with `Profile.createProfile` and `addStereotype`, or `systemcomposer.allocation.createAllocationSet`. Also trigger when debugging these APIs (connections that don't appear, interfaces that don't resolve, profile save errors, `createAllocationSet` signature-mismatch errors). Do NOT trigger for ad-hoc structural edits to an already-built model (adding one SubSystem, rewiring a port) — use `building-simulink-models` with `model_edit` for that.
Optimize MATLAB code for better performance through vectorization, memory management, and profiling. Use when user requests optimization, mentions slow code, performance issues, speed improvements, or asks to make code faster or more efficient.