Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Besty0728/Unity-Skills --skill unity-gameobject명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | unity-gameobject |
| description | Create and manipulate GameObjects |
Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via
GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.
BATCH-FIRST: Use
*_batchskills when operating on 2+ objects to reduce API calls from N to 1.
SkillMode.FullAuto,调用需用户 grant;grant 后服务端一步执行并返结果。gameobject_delete / gameobject_delete_batch(标记 Operation.Delete)。这些在 Approval/Auto 下返 MODE_FORBIDDEN,仅 Bypass 或用户 Allowlist 命中可调。DO NOT (common hallucinations):
gameobject_move / gameobject_rotate / gameobject_set_scale do not exist → use gameobject_set_transform (handles position, rotation, and scale together)gameobject_set_position does not exist → use gameobject_set_transform with posX/posY/posZgameobject_add_component does not exist → use component_add (component module)gameobject_get_transform does not exist → use gameobject_get_info (returns position/rotation/scale)Routing:
component modulematerial modulegameobject_find (this module) or scene_find_objects (scene module, SkillMode.SemiAuto)Object Targeting: All single-object skills accept
entityId(string, Unity 6000.4+ preferred — returned by all object skills),name(string),instanceId(int, Unity < 6000.4 preferred), andpath(string, hierarchy path like "Parent/Child"). Provide at least one. Priority:entityId > instanceId > path > name. On Unity 6000.4+ useentityId—instanceIdis reported as0. When onlynameis shown in a parameter table,entityId,instanceId, andpathare also accepted.
| Single Object | Batch Version | Use Batch When |
|---|---|---|
gameobject_create | gameobject_create_batch | Creating 2+ objects |
gameobject_delete | gameobject_delete_batch | Deleting 2+ objects |
gameobject_duplicate | gameobject_duplicate_batch | Duplicating 2+ objects |
gameobject_rename | gameobject_rename_batch | Renaming 2+ objects |
gameobject_set_transform | gameobject_set_transform_batch | Moving 2+ objects |
gameobject_set_active | gameobject_set_active_batch | Toggling 2+ objects |
gameobject_set_parent | gameobject_set_parent_batch | Parenting 2+ objects |
| - | gameobject_set_layer_batch | Setting layer on 2+ objects |
| - | gameobject_set_tag_batch | Setting tag on 2+ objects |
gameobject_set_sibling_index | - | No batch variant — reorder one object at a time |
Query Skills (no batch needed):
gameobject_find - Find objects by name/tag/layer/componentgameobject_get_info - Get detailed object informationCreate a new GameObject (primitive or empty).
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | - | Object name |
primitiveType | string | No | null | Cube/Sphere/Capsule/Cylinder/Plane/Quad (null=Empty) |
x, y, z | float | No | 0 | Local position (relative to parent if set) |
parentEntityId | string | No | null | Parent entityId (Unity 6000.4+, preferred) |
parentName | string | No | null | Parent object name |
parentInstanceId | int | No | 0 | Parent instance ID |
parentPath | string | No | null | Parent hierarchy path |
Returns: {success, name, entityId, instanceId, path, parent, position}
Delete a GameObject.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
*At least one identifier required
Duplicate a GameObject.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
Returns: {originalName, copyName, copyEntityId, copyInstanceId, copyPath}
Rename a GameObject.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Current object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
newName | string | Yes | New name |
Returns: {success, oldName, newName, entityId, instanceId}
Find GameObjects matching criteria.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | No | null | Name filter |
tag | string | No | null | Tag filter |
layer | string | No | null | Layer filter |
component | string | No | null | Component type filter |
useRegex | bool | No | false | Use regex for name |
limit | int | No | 50 | Max results |
Returns: {count, objects: [{name, entityId, instanceId, path, tag, layer, position}]}
Get detailed GameObject information.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
Returns: {name, entityId, instanceId, path, tag, layer, active, position, rotation, scale, parent, parentPath, childCount, children: [{name, entityId, instanceId, path}], components}
Set position, rotation, and/or scale. Supports world / local / RectTransform spaces.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
posX/posY/posZ | float | No | World position |
rotX/rotY/rotZ | float | No | World rotation (euler) |
scaleX/scaleY/scaleZ | float | No | Local scale |
localPosX/localPosY/localPosZ | float | No | Local position (relative to parent; works for both 3D and UI) |
anchoredPosX/anchoredPosY | float | No | RectTransform anchored position (UI only) |
anchorMinX/anchorMinY | float | No | RectTransform anchor min (0-1, UI only) |
anchorMaxX/anchorMaxY | float | No | RectTransform anchor max (0-1, UI only) |
pivotX/pivotY | float | No | RectTransform pivot (0-1, UI only) |
sizeDeltaX/sizeDeltaY | float | No | RectTransform size delta (UI only) |
width/height | float | No | Convenience aliases for sizeDeltaX/sizeDeltaY (UI only) |
*At least one identifier required. RectTransform / anchored* / anchor* / pivot* / sizeDelta* / width / height only apply to UI elements; ignored on regular Transforms.
Set parent-child relationship.
| Parameter | Type | Required | Description |
|---|---|---|---|
childEntityId | string | No* | Child entity ID (Unity 6000.4+, preferred) |
childName | string | No* | Child object name |
childInstanceId | int | No* | Child instance ID |
childPath | string | No* | Child hierarchy path |
parentEntityId | string | No* | Parent entity ID (Unity 6000.4+, preferred) |
parentName | string | No* | Parent object name (empty string = unparent) |
parentInstanceId | int | No* | Parent instance ID |
parentPath | string | No* | Parent hierarchy path |
*At least one child identifier required; omit all parent identifiers to unparent
Returns: {success, child, childEntityId, parent, parentEntityId, newPath}
Enable or disable a GameObject.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
active | bool | Yes | Enable state |
*At least one identifier required
Returns: {success, name, entityId, active}
Set a GameObject's sibling index — its position among its parent's children, or among the scene's root objects when unparented. index is clamped into the valid range (clamped: true reports it).
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | No* | Entity ID (Unity 6000.4+, preferred) |
name | string | No* | Object name |
instanceId | int | No* | Instance ID |
path | string | No* | Hierarchy path |
index | int | Yes | Target sibling index (0 = first) |
*At least one identifier required
Returns: {success, name, entityId, path, parent, previousIndex, index, clamped}
Create multiple GameObjects in one call.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Item properties: name, primitiveType, x, y, z, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, parentEntityId, parentName, parentInstanceId, parentPath
Returns: {success, totalItems, successCount, failCount, results: [{success, name, instanceId, path, position}]}
unity_skills.call_skill("gameobject_create_batch", items=[
{"name": "Parent", "primitiveType": "Empty"},
{"name": "Child1", "primitiveType": "Cube", "x": 0, "parentName": "Parent"},
{"name": "Child2", "primitiveType": "Sphere", "x": 2, "parentName": "Parent"}
])
Delete multiple GameObjects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name}]}
# By names
unity_skills.call_skill("gameobject_delete_batch", items=["Cube1", "Cube2", "Cube3"])
# By instanceId (preferred for precision)
unity_skills.call_skill("gameobject_delete_batch", items=[
{"instanceId": 12345},
{"instanceId": 12346}
])
# By path
unity_skills.call_skill("gameobject_delete_batch", items=[
{"path": "Environment/Cube1"},
{"path": "Environment/Cube2"}
])
Duplicate multiple GameObjects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, originalName, copyName, copyInstanceId, copyPath}]}
unity_skills.call_skill("gameobject_duplicate_batch", items=[
{"instanceId": 12345},
{"instanceId": 12346}
])
Rename multiple GameObjects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, oldName, newName, instanceId}]}
unity_skills.call_skill("gameobject_rename_batch", items=[
{"instanceId": 12345, "newName": "Enemy_01"},
{"instanceId": 12346, "newName": "Enemy_02"}
])
Set transforms for multiple objects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Item properties (each item supports identifier + any subset of transform fields):
entityId / name / instanceId / path (at least one required)posX, posY, posZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZlocalPosX, localPosY, localPosZanchoredPosX, anchoredPosY, anchorMinX, anchorMinY, anchorMaxX, anchorMaxY, pivotX, pivotY, sizeDeltaX, sizeDeltaY, width, heightReturns: {success, totalItems, successCount, failCount, results: [{success, name, position, rotation, scale}]}
unity_skills.call_skill("gameobject_set_transform_batch", items=[
{"name": "Cube1", "posX": 0, "posY": 1},
{"instanceId": 12345, "posX": 2, "posY": 1},
{"path": "Env/Cube3", "posX": 4, "posY": 1}
])
Toggle multiple objects. Each item supports identifier (entityId / name / instanceId / path) + active (bool).
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name, active}]}
unity_skills.call_skill("gameobject_set_active_batch", items=[
{"name": "Enemy1", "active": False},
{"name": "Enemy2", "active": False}
])
Parent multiple objects. Each item supports childEntityId/childName/childInstanceId/childPath and parentEntityId/parentName/parentInstanceId/parentPath.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, child, parent}]}
unity_skills.call_skill("gameobject_set_parent_batch", items=[
{"childName": "Wheel1", "parentName": "Car"},
{"childInstanceId": 12345, "parentName": "Car"},
{"childPath": "Wheels/Wheel3", "parentPath": "Vehicles/Car"}
])
Set layer for multiple objects. Each item supports identifier (entityId / name / instanceId / path) + layer (string layer name) + optional recursive (bool, default false — propagates layer to children).
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name, layer}]}
unity_skills.call_skill("gameobject_set_layer_batch", items=[
{"name": "Enemy1", "layer": "Water"},
{"name": "Enemy2", "layer": "Water"}
])
Set tag for multiple objects. Each item supports identifier (entityId / name / instanceId / path) + tag (string tag name).
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name, tag}]}
unity_skills.call_skill("gameobject_set_tag_batch", items=[
{"name": "Enemy1", "tag": "Enemy"},
{"name": "Enemy2", "tag": "Enemy"}
])
import unity_skills
# GOOD: 3 API calls instead of 6
unity_skills.call_skill("gameobject_create_batch", items=[
{"name": "Floor", "primitiveType": "Plane"},
{"name": "Wall1", "primitiveType": "Cube"},
{"name": "Wall2", "primitiveType": "Cube"}
])
unity_skills.call_skill("gameobject_set_transform_batch", items=[
{"name": "Wall1", "posX": -5, "scaleY": 3},
{"name": "Wall2", "posX": 5, "scaleY": 3}
])
unity_skills.call_skill("gameobject_set_tag_batch", items=[
{"name": "Wall1", "tag": "Wall"},
{"name": "Wall2", "tag": "Wall"}
])
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.
Full transport-level codes (COMPILING/RATE_LIMIT etc.) → ../../references/protocol-error-codes.md
| Error | Trigger | Fix |
|---|---|---|
TARGET_NOT_FOUND | The requested GameObject, parent, child, or layer could not be found (e.g., GameObject not found, Parent not found, Layer not found). | Use gameobject_find or scene_get_hierarchy to verify the exact name/path/entityId, then retry with the identifier it returns. |
MISSING_PARAM | A required parameter is missing, such as newName in gameobject_rename or items in batch skills. | Supply the parameter named in the error; use mode=dryRun to see the full parameter schema. |
SEMANTIC_INVALID | An invalid value was supplied, such as an unknown primitiveType or a name/path that does not match Unity conventions. | Correct the value using the allowed set listed in the error message (e.g., Cube, Sphere, Empty/None). |