# Create Toolset

Use this skill when authoring or extending an Unreal Engine toolset, a class of static...

- Repository: https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin (1839 stars)
- Category: Design
- License: MIT
- Last updated: 2026-10-27
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add EpicGames/unreal-engine-skills-for-claude-code-plugin --skill create-toolset -g -a claude-code -y`
Codex: `npx skills add EpicGames/unreal-engine-skills-for-claude-code-plugin --skill create-toolset -g -a codex -y`
Cursor: `npx skills add EpicGames/unreal-engine-skills-for-claude-code-plugin --skill create-toolset -g -a cursor -y`
Gemini CLI: `npx skills add EpicGames/unreal-engine-skills-for-claude-code-plugin --skill create-toolset -g -a gemini-cli -y`

## Description

Use this skill when authoring or extending an Unreal Engine toolset, a class of static, AI-callable functions registered with `ToolsetRegistry` and exposed through the unreal-mcp server. Trigger when the user wants to add, expose, or register a new tool method, create a new toolset, or extend an existing one such as `BlueprintTools`, `StaticMeshTools`, `ObjectTools`, `LevelTools`, or `MaterialTools`. Concrete triggers: 'add a tool to X', 'expose this via MCP', 'register a function so Claude/the agent can call it', 'wire this into the toolset registry', 'create a new toolset for Y', 'add a Python toolset', 'make this AI-callable'; adding a `static` method to a `*Tools.cpp/.h/.py` file; editing files under a `Toolsets/` folder; designing tool parameters, return types, or struct schemas for a toolset. SKIP for: invoking existing tools at runtime (use unreal-mcp instead), authoring an Agent Skill (use unreal-skill), generic refactors that happen to touch a toolset file but don't add or redesign a tool, or unrelated uses of the word 'toolset'.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Create Toolset

You are authoring or extending an Unreal Engine toolset: a collection of static, AI-callable functions registered with the `ToolsetRegistry` and exposed through the MCP server. The goal is to expand the surface of things Claude can do inside the editor.

## Principles

A good toolset is:

**Clean**: Design the simplest API that can do useful work in the domain. Don't mirror Unreal's existing APIs directly; they're often unnecessarily complex. A good heuristic: would a technical artist understand this without reading the implementation?

**Complete**: Support CRUD symmetry. If you can set a thing, you should be able to get it. If there's a create, there should be a delete. Getters without setters are fine when mutation isn't possible or useful.

**Composable**: Use consistent types for the same kinds of operation across the toolset. If `get_graph()` returns a `Graph`, then `get_graph_nodes()` should accept a `Graph`. Functions should combine naturally to produce more complex results.

**DRY**: No duplication within a toolset, and no duplication across toolsets. `ObjectTools` already provides generic UObject property get/set. Don't reimplement it. If functionality lives elsewhere, call it or point to it.

## Before You Write

Work through these questions in order before touching any code.

**1. Does the functionality already exist?** If the editor is running, call `list_toolsets` via MCP, then `describe_toolset` on anything relevant. If MCP isn't available, search the codebase for folders named `Toolsets` and read the C++ headers or Python toolset files there. If the capability is already exposed, there's nothing to do. Tell the user and point them to the right tool.

The rest: https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin/blob/HEAD/skills/create-toolset/SKILL.md
