Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .claude/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .agents/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .cursor/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .gemini/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .github/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "unity-skill-create" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/unity-skill-create into .opencode/skills/unity-skill-create/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-skill-create", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
unity-skill-create
GitHub stars
4.4k
Token cost
~2.1k tokens
SKILL.md length
588 words
Files
1
Skills in repo
80
Repo updated
First seen
Licence
Apache-2.0
At a glance
Create a new skill (MCP tool) for the Unity Editor by writing a C (.cs) file that Unity compiles into the project.
Works in 4 steps: Accept a [RequestID] string? requestId… → Return… → Schedule the actual work asynchronously… → …
Tasks that involve MCP servers
SKILL.md covers Full sample, Suggestions, How to Call and Input, plus 1 more section
Calls npm and npx
What it does
Unity Skill Create is an agent skill from IvanMurzak/Unity-MCP. Create a new skill (MCP tool) for the Unity Editor by writing a C (.cs) file that Unity compiles into the project. After compilation the new tool becomes callable through MCP. The file must be a partial class decorated with [AiToolType], each tool method must be decorated with [AiTool], the class name should match the file name, all Unity API calls must run via com.IvanMurzak.ReflectorNet.Utils.MainThread.Instance.Run(), and the method should either return a structured data model (for parseable output) or void…
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering MCP servers, Schema markup and Game development. It works with Unity, Model Context Protocol and C#. The repository describes itself as: AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C method may be turned into a… The licence is Apache-2.0.
When your agent uses it
Tasks that involve MCP servers
Tasks that involve Schema markup
Tasks that involve Game development
Example prompts
“/unity-skill-create”
Requirements
Node.js
Workflow steps
4 steps, taken from the first numbered list in SKILL.md.
1Accept a [RequestID] string? requestId parameter.
3Schedule the actual work asynchronously via MainThread.Instance.RunAsync(async () => { await Task.Yield(); ... }).
4When the operation finishes, send the final result by calling
What it can do on your machine
Read from SKILL.md and the folder at commit 4c8056f. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
npm
npx
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Unity Skill Create loads about 2.1k tokens when it runs. Until then it costs about 160 tokens; SKILL.md has 588 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~160
When it runs· the whole SKILL.md, loaded when a task matches
~2.1k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/unity-skill-create/SKILL.md (or your agent's skills folder).
name
unity-skill-create
description
Create a new skill (MCP tool) for the Unity Editor by writing a C# (.cs) file that Unity compiles into the project. After compilation the new tool becomes callable through MCP. The file must be a partial class decorated with [AiToolType], each tool method must be decorated with [AiTool], the class name should match the file name, all Unity API calls must run via com.IvanMurzak.ReflectorNet.Utils.MainThread.Instance.Run(), and the method should either return a structured data model (for parseable output) or void (for side-effect-only operations). See the body of this skill for a full sample and best-practice notes.
Skill (Tool) / Create
Full sample
csharp
#nullable enable
using System;
using System.ComponentModel;
using com.IvanMurzak.McpPlugin;
using com.IvanMurzak.ReflectorNet.Utils;
using com.IvanMurzak.Unity.MCP.Editor.Utils;
using AIGD;
using UnityEditor;
using UnityEngine;
namespace com.IvanMurzak.Unity.MCP.Editor.API
{
[AiToolType]
public partial class Tool_Sample
{
[AiTool("sample-get", Title = "Sample / Get")]
[Description("Finds a GameObject and returns its ref data.")]
public GameObjectRef Get
(
[Description("Name of the GameObject to find.")]
string name
)
{
return MainThread.Instance.Run(() =>
{
var go = GameObject.Find(name)
?? throw new ArgumentException($"GameObject '{name}' not found.", nameof(name));
return new GameObjectRef(go);
});
}
[AiTool("sample-rename", Title = "Sample / Rename")]
[Description("Renames a GameObject.")]
public void Rename
(
[Description("Current name of the GameObject.")]
string name,
[Description("New name to assign.")]
string newName
)
{
MainThread.Instance.Run(() =>
{
var go = GameObject.Find(name)
?? throw new ArgumentException($"GameObject '{name}' not found.", nameof(name));
go.name = newName;
EditorUtility.SetDirty(go);
AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);
EditorUtils.RepaintAllEditorWindows();
});
}
}
}
Suggestions
Refresh UI after visual changes
If the skill modifies anything visually in the Unity Editor (GameObjects, components, materials, etc.), call these two lines at the end of the tool method to apply changes to the UI immediately:
Refresh AssetDatabase after asset or script changes
If the skill creates, modifies, or deletes any asset file or .cs script on disk outside of Unity API, call this inside a MainThread.Instance.Run() block to ensure Unity picks up the changes:
Use processing mechanic for long-running or domain-reload operations
Some operations take time to complete and may trigger a Unity domain reload (e.g. writing a .cs script, switching play mode, running tests, adding a package). In these cases the tool must NOT block and wait — instead it must:
If the operation may survive a domain reload (e.g. a .cs file was saved and Unity will recompile), use ScriptUtils.SchedulePostCompilationNotification(requestId, filePath, operationType) instead of calling NotifyToolRequestCompleted directly — it persists the pending notification to SessionState and sends it automatically after the domain reload completes. For package install/removal or other non-compilation domain reloads use PackageUtils.SchedulePostDomainReloadNotification(requestId, label, action, expectedResult) the same way.
Return structured data with a typed response
Prefer returning a structured data model over a plain string so the AI can parse individual fields. Data models for MCP tools MUST be declared as TOP-LEVEL types in the AIGD namespace - never nested inside the tool class. Place each data model in its own .cs file (one type per file) and use ResponseCallValueTool<T> as the return type. The flat AIGD namespace keeps the auto-generated JSON Schema $defs keys short and intuitive for AI agents.
csharp
// Tool file (Tool/MyTool.cs) - references the data model from AIGD:
using AIGD;
namespace com.IvanMurzak.Unity.MCP.Editor.API
{
[AiToolType]
public partial class Tool_Sample
{
public ResponseCallValueTool<MyResult> MyTool(...)
{
return ResponseCallValueTool<MyResult>.Success(new MyResult
{
Name = go.name,
InstanceID = go.GetInstanceID()
}).SetRequestID(requestId);
}
}
}
// Data model (Tool/Data/MyResult.cs) - top-level, in AIGD namespace, NOT nested:
namespace AIGD
{
public class MyResult
{
[Description("Name of the GameObject.")]
public string? Name { get; set; }
[Description("Unity instance ID of the GameObject.")]
public int InstanceID { get; set; }
}
}
For simpler cases that do not need async/processing, you may return the model directly (without ResponseCallValueTool<T>) and Unity-MCP will wrap it automatically. The data model itself MUST still live as a top-level type in the AIGD namespace.
Show full SKILL.md (249 more words)Show less
Validate inputs early and throw clearly
Always validate required parameters at the top of the method before any Unity API calls. Throw ArgumentException or InvalidOperationException with descriptive messages so the AI knows exactly what went wrong and can self-correct:
csharp
if (string.IsNullOrEmpty(name))
throw new ArgumentException("Name cannot be null or empty.", nameof(name));
Always use MainThread for Unity API calls
All Unity API calls (including GameObject.Find, AssetDatabase, EditorUtility, etc.) MUST run on the main thread. Wrap them in MainThread.Instance.Run(() => { ... }) for synchronous operations, or MainThread.Instance.RunAsync(async () => { ... }) when you need to await inside.
If unity-mcp-cli is not found, either install it globally (npm install -g unity-mcp-cli) or use npx unity-mcp-cli instead.
Read the /unity-initial-setup skill for detailed installation instructions.
Input
Name
Type
Required
Description
path
string
Yes
Path for the C# (.cs) file to be created. Sample: "Assets/Skills/MySkill.cs".
CRITICAL — Assembly Definition placement: If the project uses Assembly Definition files (.asmdef), you MUST place the script inside a folder that belongs to an assembly definition which already references all required dependencies (e.g. com.IvanMurzak.McpPlugin, UnityEditor, UnityEngine). Placing the file in the wrong assembly will cause compile errors due to missing type references. Before choosing a path, inspect existing .asmdef files with the assets-find tool to identify the correct assembly folder.
Unity Skill Create next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
A skill your agent uses when an agent needs to inspect or control a real Unity Editor through Locus, especially when Unity MCP is unavailable, named-pipe discovery is needed, C must be executed, or…
Drives a live Unreal Editor through the unreal-mcp server: spawn actors, edit Blueprints, materials and sequences, change properties and trigger Live Coding.
Create a new skill (MCP tool) for the Unity Editor by writing a C (.cs) file that Unity compiles into the project. Unity Skill Create is an agent skill from IvanMurzak/Unity-MCP.cs) file that Unity compiles into the project.
When should I use Unity Skill Create?
Unity Skill Create fits situations like: tasks that involve MCP servers; tasks that involve Schema markup; tasks that involve Game development.
How do I install Unity Skill Create in Claude Code?
Run `npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a claude-code`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/unity-skill-create in IvanMurzak/Unity-MCP) into .claude/skills/unity-skill-create in your project. Claude Code loads it when a task matches its description.
How do I install Unity Skill Create in Codex?
Run `npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a codex`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/unity-skill-create in IvanMurzak/Unity-MCP) into .agents/skills/unity-skill-create in your project. Codex loads it when a task matches its description.
Can I use Unity Skill Create in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IvanMurzak/Unity-MCP --skill unity-skill-create -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unity-skill-create, .gemini/skills/unity-skill-create, .github/skills/unity-skill-create and .opencode/skills/unity-skill-create in your project.
What does Unity Skill Create need to run?
Going by SKILL.md and its folder, Unity Skill Create needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.
Does Unity Skill Create access the network?
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Is Unity Skill Create safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Unity Skill Create use?
Unity Skill Create is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Unity Skill Create use?
About 2.1k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Unity Skill Create?
Skills that share tags, products or a category with Unity Skill Create: Unity Plugin (TomLeeLive/openclaw-unity-plugin, 106 stars), Unreal Blueprint Authoring (flopperam/unreal-engine-mcp, 1.1k stars), Locus Unity Bridge (Misaka-Mikoto-Tech/agent-skills, 275 stars) and MCP Driver (RandallLiuXin/GodotMaker, 549 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Unity Skill Create?
IvanMurzak (a GitHub user) maintains it in IvanMurzak/Unity-MCP, which has 4,392 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on October 4, 2026.
Source: IvanMurzak/Unity-MCP on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.