Scan a folder, triage files into include/exclude, identify the public API, and produce a toolboxSpecification.m Interface Spec — all in one pass. Use when turning loose code into a toolbox.
npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-define-toolbox-api
You take a folder of code, figure out what belongs in the toolbox, identify the public API, and produce the Interface Spec — the contract defining what the toolbox exposes. One skill, one artifact.
buildUtilities/toolboxSpecification.m directlymatlab-analyze-dependencies after the spec is approvedmatlab-build-toolboxmatlab-document-toolbox| Function | Purpose |
|----------|---------|
| dir | Recursive file listing for inventory |
| which | Resolve function locations on path |
| exist | Check whether a name resolves to a file, folder, or built-in |
| matlab.codetools.requiredFilesAndProducts | Trace caller/callee relationships for Support classification |
| Input | Required | Description |
|-------|----------|-------------|
| path | No | Folder or list of files to analyze. If not provided, prompt the user. |
| purpose | No | What the toolbox does and who uses it. If not provided, prompt the user. |
If path is not provided:
> What folder or files would you like to package as a toolbox?
If purpose is not provided:
> In a sentence or two, what does this toolbox do? Who will use it?
Do not proceed until both are provided.
Scan the path recursively. Classify every file:
| Category | Detection Rule |
|----------|---------------|
| Function | .m file with function keyword on first non-comment line |
| Class | .m file with classdef keyword |
| Script | .m file with no function/classdef keyword |
| Live Script | .mlx file |
| Test | In tests//test/ folder, or name matches *Test.m, *_test.m, test_*.m |
| Data | .mat, .csv, .xlsx, .json, .xml (non-config) |
| Config/Meta | buildfile.m, projectStartup.m, Contents.m, .prj, resources/ |
| Scratch/Temp | In scratch/, tmp/, or names like untitled*.m, Copy_of_* |
| Other | READMEs, images, licenses, etc. |
Using the purpose as guide, classify each file:
Heuristics:
| Signal | Disposition |
|--------|-------------|
| Function name aligns with purpose keywords | Include |
| H1 text mentions concepts from purpose | Include |
| Called by an included file | Support |
| In private/ or +internal folder | Support |
| Test file for an included function | Exclude |
| Script with no connection to purpose | Exclude |
| Data file referenced by included code | Include |
| Scratch/temp naming pattern | Exclude |
From the Include set, determine visibility:
| Signal | Classification |
|--------|---------------|
| Has H1 help text | Likely public |
| Has arguments block or input validation | Likely public |
| Descriptive action-oriented name | Likely public |
| Classdef with public methods | Public |
| Called by others but not standalone | Internal |
| In private/ or generic utility name | Internal |
| Script | Example/entry point |
Display a combined scope + API report:
## Toolbox Scope & API — [Name]
**Purpose:** [user's stated purpose]
**Source:** [path]
**Total files:** N
### Public API (N functions)
| Function | Signature | H1 | Category |
|----------|-----------|-----|----------|
### Internal Support (N files)
| File | Type | Reason |
|------|------|--------|
### Excluded (N files)
| File | Reason |
|------|--------|
### Uncertain — Need Your Input
| File | Why Uncertain |
|------|--------------|
Then ask:
> Please review:
> 1. Should any excluded files be included?
> 2. Should any included files be removed?
> 3. For uncertain files — include or exclude?
> 4. Is the public API surface correct?
> 5. What categories should functions be grouped into? (e.g., "Analysis", "I/O", "Visualization")
Incorporate feedback before proceeding.
Produce toolboxSpecification.m using scripts/toolboxSpecificationTemplate.m as the structure. spec.entries is a cell array (not a struct array) because classdef entries have extra fields (methods, properties) that function entries lack — MATLAB cannot concatenate structs with mismatched fields. Access entries via spec.entries{i}. Each entry has a "type" field — either "function" or "classdef". See the template for the full field conventions for both types.
Save to buildUtilities/toolboxSpecification.m in the project root (create the folder if needed). This folder is excluded from the toolbox package via toolbox.ignore or package.ignore.
buildUtilities/toolboxSpecification.m — executable spec as a MATLAB structmatlab-assess-toolbox, matlab-build-toolbox, matlab-analyze-dependencies) consume toolboxSpecification.mThis skill always pauses for user approval at Step 5. The user must confirm scope and public API before the spec is generated. Nothing is written until confirmation.
matlab-assess-toolbox later.function keyword are examples/entry points, not public API.toolboxSpecification.m is written, to buildUtilities/ — keeps source clean and is excluded from the packaged toolbox./matlab-analyze-dependencies — resolve external dependencies identified in the Interface Spec/matlab-create-project — organize files into a MATLAB project using the spec as a guide----
Copyright 2026 The MathWorks, Inc.
----
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Comprehensive technology-agnostic prompt for analyzing and documenting project folder structures. Auto-detects project types (.NET, Java, React, Angular, Python, Node.js, Flutter), generates detailed blueprints with visualization options, naming conventions, file placement patterns, and extension templates for maintaining consistent code organization across diverse technology stacks.
Use when complex problems require systematic step-by-step reasoning with ability to revise thoughts, branch into alternative approaches, or dynamically adjust scope. Ideal for multi-stage analysis, design planning, problem decomposition, or tasks with initially unclear scope.
Multi-agent workflow examples to work together on the OpenServ Platform. Covers agent discovery, multi-agent workspaces, task dependencies, and workflow orchestration using the Platform Client. Read reference.md for the full API reference. Read openserv-agent-sdk and openserv-client for building and running agents.
> Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.
API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
Patterns for automating GitHub workflows with AI assistance, inspired by [Gemini CLI](https://github.com/google-gemini/gemini-cli) and modern DevOps practices.
Groups existing components into logical business domains to plan service-based architecture. Use when asking "which components belong together?", "group these into services", "organize by domain", "component-to-domain mapping", or planning service extraction from an existing codebase. Do NOT use for identifying new domains from scratch (use domain-analysis) or analyzing coupling (use coupling-analysis).
Take matlab/matlab-define-toolbox-api from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.