Agent Skills: Task

Execute C# code dynamically in Unity Editor via uloop CLI. Use for editor automation: (1) Prefab/material wiring and AddComponent operations, (2) Reference wiring with SerializedObject, (3) Scene/hierarchy edits and batch operations. NOT for file I/O or script authoring.

UncategorizedID: hatayama/uLoopMCP/uloop-execute-dynamic-code

Install this agent skill to your local

pnpm dlx add-skill https://github.com/hatayama/uLoopMCP/tree/HEAD/.agents/skills/uloop-execute-dynamic-code

Skill Files

Browse the full folder contents for uloop-execute-dynamic-code.

Download Skill

Loading file tree…

.agents/skills/uloop-execute-dynamic-code/SKILL.md

Skill Metadata

Name
uloop-execute-dynamic-code
Description
"Execute C# code dynamically in Unity Editor. Use find-game-objects first for basic selected GameObject discovery or property inspection. Use when you need to: (1) Wire prefab/material references and AddComponent operations, (2) Edit SerializedObject properties and reference wiring, (3) Perform scene/hierarchy edits and batch operations, (4) Execute Unity Editor menu commands through EditorApplication.ExecuteMenuItem, (5) PlayMode automation (click buttons, invoke methods, tweak runtime state), (6) PlayMode UI controls (InputField, Slider, Toggle, Dropdown), (7) PlayMode inspection that requires custom Unity API code beyond existing tools. NOT for file I/O or script authoring."

Task

Execute the following request using uloop execute-dynamic-code: $ARGUMENTS

For basic selected GameObject discovery or property inspection, use find-game-objects --search-mode Selected before this tool. Use this tool after the built-in inspection tools are not enough or when you need to modify Unity state.

Workflow

  1. Read the relevant reference file(s) from the Code Examples section below
  2. Construct C# code based on the reference examples
  3. Execute via Bash: uloop execute-dynamic-code --code '<code>'
  4. If execution fails, adjust code and retry
  5. Report the execution result

Parameters

  • --code '<code>' (required): Inline C# statements to execute. Use direct statements only; return is optional, and using directives may appear at the top of the snippet.
  • Shell quoting: bash/zsh uses single quotes, for example uloop execute-dynamic-code --code 'using UnityEngine; return Mathf.PI;'. PowerShell doubles inner quotes ('Debug.Log(""Hello!"");').
  • --parameters {} (advanced, optional): Pass an object when reusing a snippet with varying data or when keeping values outside the code. Values are exposed as parameters["param0"], parameters["param1"], and so on. Omit this flag for most snippets, and pass an object instead of a JSON string.
  • --compile-only true (optional): Compile the snippet without executing it. Use this when you want Roslyn diagnostics before running new code.

Code Rules

Write direct statements only — no class/namespace/method wrappers. Return is optional.

using UnityEngine;
float x = Mathf.PI;
return x;

Forbidden — these will be rejected at compile time: System.IO.*, AssetDatabase.CreateFolder, creating/editing .cs/.asmdef files. Use terminal commands for file operations instead.

Output

Returns JSON:

  • Success: boolean — overall execution success
  • Result: string — value of the snippet's return statement (empty when omitted)
  • Logs: string[] — Debug.Log / Debug.LogWarning / Debug.LogError messages emitted during the run
  • CompilationErrors: object[] — Roslyn diagnostics with Message, Line, Column, ErrorCode, optional Hint and Suggestions
  • ErrorMessage: string — top-level failure summary (empty on success)
  • Error: string — alias of ErrorMessage
  • SecurityLevel: string — dynamic-code security level active for the request
  • UpdatedCode: string|null — the wrapped form actually compiled (handy when debugging using-statement reordering)
  • DiagnosticsSummary: string|null — compact summary when diagnostics are available
  • Diagnostics: object[] — structured diagnostics; same shape as CompilationErrors, usually populated together with it

On Success: false, inspect CompilationErrors first. If empty, read ErrorMessage (and Logs for extra context) — the failure may be a runtime exception, security violation, cancellation, or an "execution in progress" rejection, all of which return empty CompilationErrors. Both EditMode and PlayMode are supported targets — the snippet runs in whichever mode the Editor is currently in.

Code Examples by Category

For detailed code examples, refer to these files: