Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .claude/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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 object-modify -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .agents/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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 object-modify -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .cursor/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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 object-modify -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .gemini/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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 object-modify -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .github/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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 object-modify -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "object-modify" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/object-modify into .opencode/skills/object-modify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "object-modify", 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
object-modify
GitHub stars
4.4k
Token cost
~2.3k tokens
SKILL.md length
276 words
Files
1
Skills in repo
80
Repo updated
First seen
Licence
Apache-2.0
At a glance
Modify a Unity UnityEngine.Object's serializable fields/properties.
Works in 3 steps: objectDiff — full SerializedMember diff… → pathPatches — list of {path, value}… → jsonPatch — a JSON Merge Patch (RFC…
Tasks that involve Game development
SKILL.md covers Three modification surfaces, Path syntax, How to Call and Input, plus 1 more section
Calls npm and npx
What it does
Object Modify is an agent skill from IvanMurzak/Unity-MCP. Modify a Unity UnityEngine.Object's serializable fields/properties. Three modification surfaces are available (objectDiff, pathPatches, jsonPatch) — see the skill body. Use 'object-get-data' first to inspect the object structure.
Its SKILL.md is about 2.3k 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 Game development. It works with Model Context Protocol. 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 Game development
Example prompts
“object-get-data”
“/object-modify”
Requirements
Node.js
Workflow steps
3 steps, taken from the first numbered list in SKILL.md.
1objectDiff — full SerializedMember diff (legacy, backwards compatible).
2pathPatches — list of {path, value} pairs routed through Reflector.TryModifyAt; atomic per-path modification, multiple entries can target…
3jsonPatch — a JSON Merge Patch (RFC 7396, extended with [i]/[key] notation) routed through Reflector.TryPatch; multiple fields at any…
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
Object Modify loads about 2.3k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 276 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~63
When it runs· the whole SKILL.md, loaded when a task matches
~2.3k
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/object-modify/SKILL.md (or your agent's skills folder).
name
object-modify
description
Modify a Unity `UnityEngine.Object`'s serializable fields/properties. Three modification surfaces are available (`objectDiff`, `pathPatches`, `jsonPatch`) — see the skill body. Use 'object-get-data' first to inspect the object structure.
Object / Modify
Modify the specified Unity Object. Allows direct modification of object fields and properties. Use 'object-get-data' first to inspect the object structure before modifying.
Three modification surfaces
Use whichever fits the task:
objectDiff — full SerializedMember diff (legacy, backwards compatible).
pathPatches — list of {path, value} pairs routed through Reflector.TryModifyAt; atomic per-path modification, multiple entries can target different depths.
jsonPatch — a JSON Merge Patch (RFC 7396, extended with [i]/[key] notation) routed through Reflector.TryPatch; multiple fields at any depth in a single call.
When more than one is supplied they run in this order: jsonPatch → pathPatches → objectDiff. At least one is required.
Path syntax
fieldName, nested/field, arrayField/[i], dictField/[key]. Leading #/ is stripped.
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
objectRef
any
Yes
Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object.
objectDiff
any
No
Optional. The full object data to apply (legacy path). Should contain 'fields' and/or 'props' with the values to modify.
Only include the fields/properties you want to change.
Any unknown or invalid fields and properties will be reported in the response.
pathPatches
any
No
Optional. List of path-scoped patches routed through Reflector.TryModifyAt.
jsonPatch
any
No
Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch.
Input JSON Schema
json
{
"type": "object",
"properties": {
"objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef"
},
"objectDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
},
"name": {
"type": "string",
"description": "Object name."
},
"value": {
"description": "Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value."
},
"description": "Fields of the object, serialized as a list of 'SerializedMember'."
},
"props": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value."
},
"description": "Properties of the object, serialized as a list of 'SerializedMember'."
}
},
"required": [
"typeName"
],
"additionalProperties": false
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"objectRef"
]
}
Output
Output JSON Schema
json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ModifyObjectResponse"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
},
"name": {
"type": "string",
"description": "Object name."
},
"value": {
"description": "Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value."
},
"description": "Fields of the object, serialized as a list of 'SerializedMember'."
},
"props": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value."
},
"description": "Properties of the object, serialized as a list of 'SerializedMember'."
}
},
"required": [
"typeName"
],
"additionalProperties": false
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ModifyObjectResponse": {
"type": "object",
"properties": {
"Success": {
"type": "boolean",
"description": "Whether the modification was successful."
},
"Reference": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to the modified object."
},
"Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Updated object data after modification."
},
"Logs": {
"$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered."
}
},
"required": [
"Success"
]
}
},
"required": [
"result"
]
}
Object Modify 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.
Creates, edits and compiles Unreal Engine 5.8 material assets as one HLSL Custom node through the UMG MCP bridge, instead of editing .uasset files directly.
Modify a Unity UnityEngine.Object's serializable fields/properties. Object Modify is an agent skill from IvanMurzak/Unity-MCP.Object's serializable fields/properties.
When should I use Object Modify?
Object Modify fits situations like: tasks that involve Game development.
How do I install Object Modify in Claude Code?
Run `npx skills add IvanMurzak/Unity-MCP --skill object-modify -a claude-code`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/object-modify in IvanMurzak/Unity-MCP) into .claude/skills/object-modify in your project. Claude Code loads it when a task matches its description.
How do I install Object Modify in Codex?
Run `npx skills add IvanMurzak/Unity-MCP --skill object-modify -a codex`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/object-modify in IvanMurzak/Unity-MCP) into .agents/skills/object-modify in your project. Codex loads it when a task matches its description.
Can I use Object Modify 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 object-modify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/object-modify, .gemini/skills/object-modify, .github/skills/object-modify and .opencode/skills/object-modify in your project.
What does Object Modify need to run?
Going by SKILL.md and its folder, Object Modify needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.
Does Object Modify 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 Object Modify 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 Object Modify use?
Object Modify 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 Object Modify use?
About 2.3k tokens (SKILL.md is roughly 9.4k 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 Object Modify?
Skills that share tags, products or a category with Object Modify: Sprite Gen (aldegad/sprite-gen, 2.6k stars), Unreal Blueprint Authoring (flopperam/unreal-engine-mcp, 1.1k stars), MCP Driver (RandallLiuXin/GodotMaker, 549 stars) and UMG Material MCP (winyunq/UnrealMotionGraphicsMCP, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Object Modify?
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.