mcpField
U
unity-component

unity-component

github.com/besty0728Development1.9k84 installsUpdated today
Repository

About unity-component

unity-component is a skill set for inspecting and changing components on Unity objects. It covers component management, property editing, and batch operations, including serialized-field verification.

Key features

  1. 01Add, remove, and copy components
  2. 02Toggle component enabled state
  3. 03Read component methods and properties
  4. 04Edit C# and serialized fields
  5. 05Batch changes with verification

Use cases

  1. 01Add or remove an object component
  2. 02Copy component settings between objects
  3. 03Inspect or update serialized fields
  4. 04Change components on multiple objects

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/besty0728/unity-skills --skill unity-component

After installing, type/unity-componentin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
component_add_batch.md
component_add.md
component_copy_exact.md
component_copy.md
component_get_methods_batch.md
component_get_methods.md
component_get_properties.md
component_get_serialized_properties.md
component_invoke_method_batch.md
component_invoke_method.md
component_list.md
component_remove_batch.md
component_remove.md
component_set_enabled.md
component_set_property_batch.md
component_set_property.md
component_set_serialized_property_batch.md
component_set_serialized_property.md

Details

From the project README

Triggers

  • Attaching or removing components
  • Copying components between objects
  • Toggling components
  • Reading/writing serialized fields
  • 挂载或移除组件、在对象间复制组件、开关组件、读写序列化字段

Unity Component Skills

Add, remove, copy, toggle and edit components. Parameters come from the schema (recommend includeSchema=true or /skills/schema?names=), which notes the non-obvious ones — never from a skill's name. Execution, dryRun and verification rules: root SKILL.md.

Operating Mode

component_list, component_get_methods, component_get_methods_batch, component_get_properties, component_get_serialized_properties are SemiAuto (read-only); every writer is FullAuto. component_remove / component_remove_batch (Operation.Delete) and component_invoke_method* (high risk) are NeverInSemi: MODE_FORBIDDEN under Approval/Auto, run only under Bypass or an Allowlist hit → operating mode.

Shared rules

  • Targets: single-object skills take name, instanceId or path (plus entityId, resolved to the path), matched like GameObjects: an ambiguous fuzzy name returns TARGET_NOT_FOUND with candidates, non-exact matches are listed in resolutionNotes. Batch items take only name / instanceId / path: an entityId item key is ignored (named in warnings), so the item finds no target. component_copy* use source* / target* identifiers.
  • componentType (required): the class name — Rigidbody, BoxCollider, Namespace.ClassName for custom scripts. Unity, UI, TextMeshPro, Cinemachine and Input System namespaces are searched first, then a case-insensitive scan that takes the first matching type; the response's component / fullTypeName show what was resolved.
  • Two naming schemes: component_set_property / component_get_properties use C# member names (mass, isKinematic; matched case-insensitively, private fields writable too). component_get_serialized_properties / component_set_serialized_property use SerializedProperty paths (m_Mass, items.Array.data[0]; a bare mass is retried as m_Mass). To convert, drop m_ and lowercase the first letter; an m_ name sent to component_set_property fails with "Property/field not found" and lists the writable members.
  • Value source (component_set_property, its batch, batch_preview_set_property): exactly one of assetPath (project asset) > referencePath (scene object by path) / referenceName (by name, first match) > value, checked in that order; a lower one sent alongside is silently ignored. Sending none writes the type's default (0 / false / null).
  • value encoding: numbers and bools (true/false, 1/0, yes/no, on/off; others rejected) as JSON or strings; enums by member name, case-insensitive; vectors, Quaternion (3 values = euler, 4 = xyzw), Rect (x,y,w,h) and Bounds (cx,cy,cz,sx,sy,sz) as comma strings ("1,2,3"); colours as "r,g,b[,a]" (0–1), #RRGGBB[AA] or a name (red, green, blue, white, black, yellow, cyan, magenta, gray/grey, clear); LayerMask as a layer name or an integer mask. The JSON object form ({"x":1,"y":2,"z":3}, {"r":1,"g":0,"b":0}) works only for Vector2/3/4 and Color/Color32, with every component required (colour a defaults to 1; an explicit null counts as missing); partial objects, unknown keys and non-numbers are rejected naming the expected keys.
  • Read-back: component_set_property returns valueSet read from the component after the write, plus valueRequested only when the setter clamped or normalised it; component_set_serialized_property re-reads after applying. No follow-up read needed.
  • Property/add/remove batches: all-or-nothing — one failed item reverts the whole call (rolledBack:true, other items reverted:true); unknown item keys are named in warnings.

Skills Overview

Invocation batches are non-atomic async jobs; details: method calls.

SingleBatch
component_addcomponent_add_batch
component_get_methodscomponent_get_methods_batch
component_invoke_methodcomponent_invoke_method_batch
component_removecomponent_remove_batch
component_set_propertycomponent_set_property_batch
component_set_serialized_propertycomponent_set_serialized_property_batch

No batch: component_list (types and enabled state), component_get_properties (C# members and values), component_get_serialized_properties (Inspector paths), component_copy, component_copy_exact (verifies every serialized field), component_set_enabled (Behaviour/Renderer/Collider on or off — not component_set_property).

Per-skill tables, item fields and return shapes: reference/<skill_name>.md — rarely needed, the schema notes the parameters.

DO NOT (common hallucinations):

  • component_create / component_get do not exist → use component_add (add) and component_get_properties (read)
  • component_find does not exist → use component_list to list components on an object

Exact Signatures

Names, parameters, defaults and required flags come from GET /skills/schema?category=Component (or ?names=a,b), not this file.

Common Errors

ErrorTrigger → fix
TARGET_NOT_FOUNDObject, component type, component on the object, member or asset missing → component_list, component_get_properties, asset_find, gameobject_find.
MISSING_PARAMe.g. componentType, propertyName, propertyPath → supply it; the error (or a dryRun) lists all parameters.
SEMANTIC_INVALIDA value the target type rejects, componentIndex out of range, a component another one still requires (requiredBy: remove those first), or a failed batch item → fix per the message / results.
SKILL_ERRORRead-only property → pick a writable member.

Transport codes (COMPILING, RATE_LIMIT, ...) → error codes.

Comments

Markdown supported