Agent skill
unity-editor
Remote control Unity Editor via CLI using unityctl. Use when working with Unity projects to launch/stop editor, enter/exit play mode, compile scripts, view logs, load scenes, run tests, capture screenshots, or execute C# code for debugging. Activate when user mentions Unity, play mode, compilation, or needs to interact with a running Unity Editor.
Install this agent skill to your Project
npx add-skill https://github.com/aiskillstore/marketplace/tree/main/skills/dirtybitgames/unity-editor
SKILL.md
unityctl - Unity Editor Remote Control
Control a running Unity Editor from the command line without batch mode.
Instructions
Setup (Required First)
- Start the bridge daemon:
unityctl bridge start - Launch Unity:
unityctl editor runor manually open the project in Unity Editor - Verify connection:
unityctl status
Refresh Assets After Script Changes
After modifying C# scripts, refresh assets to compile:
unityctl asset refresh
Returns compilation errors directly in the output (non-zero exit code on failure). Fix errors and re-run until compilation succeeds before entering play mode.
Common Commands
Status & Bridge:
unityctl status # Check Unity running, bridge, and connection status
unityctl bridge start # Start bridge daemon (runs in background)
unityctl bridge stop # Stop bridge
Editor Lifecycle:
unityctl editor run # Launch Unity Editor (auto-detects version)
unityctl editor stop # Stop running Unity Editor
Play Mode:
unityctl play enter # Enter play mode
unityctl play exit # Exit play mode
Logs:
unityctl logs # Show all logs since last clear (auto-clears on play enter and compile)
unityctl logs -n 50 # Limit to last 50 entries
unityctl logs --stack # Show stack traces for log entries
unityctl logs --full # Show full history (ignore clear boundary)
Scenes:
unityctl scene list # List scenes
unityctl scene load Assets/Scenes/Main.unity # Load scene
Testing:
unityctl test run # Run edit mode tests
unityctl test run --mode playmode # Play mode tests
Screenshots:
unityctl screenshot capture # Capture screenshot
Script Execution (Debugging Power Tool)
Execute arbitrary C# in the running editor via Roslyn. Invaluable for debugging and automation.
// tmp/get-version.cs
using UnityEngine;
public class Script
{
public static object Main()
{
return Application.version;
}
}
unityctl script execute -f tmp/get-version.cs
You can also execute code directly with -c:
unityctl script execute -c "using UnityEngine; public class Script { public static object Main() { return Application.version; } }"
Scripts must define a class with a public static object Main() method. The return value is JSON-serialized.
Getting Help
unityctl --help # List all commands
unityctl <command> --help # Command-specific help
Examples
Workflow: Edit script, compile, and test:
# After editing C# files...
unityctl asset refresh # Returns compilation errors if any
unityctl play enter
unityctl logs # Check runtime logs (shows all since play enter)
unityctl play exit
Debug: Find all GameObjects in scene:
// tmp/find-objects.cs
using UnityEngine;
public class Script
{
public static object Main()
{
return GameObject.FindObjectsOfType<GameObject>().Length;
}
}
unityctl script execute -f tmp/find-objects.cs
Debug: Inspect Player position:
// tmp/find-player.cs
using UnityEngine;
public class Script
{
public static object Main()
{
var go = GameObject.Find("Player");
return go?.transform.position.ToString() ?? "not found";
}
}
unityctl script execute -f tmp/find-player.cs
Debug: Log message to Unity console:
// tmp/log-message.cs
using UnityEngine;
public class Script
{
public static object Main()
{
Debug.Log("Hello from CLI");
return "logged";
}
}
unityctl script execute -f tmp/log-message.cs
Best Practices
- Run
unityctl statusto check overall project status before running commands - Always run
unityctl asset refreshafter modifying C# files before entering play mode - For script execution, write scripts to
tmp/<scriptname>.csand execute with-f
Troubleshooting
Run unityctl status first to diagnose issues.
| Problem | Solution |
|---|---|
| Bridge not responding | unityctl bridge stop then unityctl bridge start |
| Editor not connected to newly started bridge | Normal, editor plugin uses exponential backoff, up to 30 seconds |
| Connection lost after compile | Normal - domain reload. Auto-reconnects. |
| "Project not found" | Run from project directory or use --project flag |
| Editor not found | Use --unity-path to specify Unity executable |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
perigon-backend
Perigon ASP.NET Core + EF Core + Aspire conventions
perigon-agent
Pointers for Copilot/agents to apply Perigon conventions
perigon-angular
Angular 21+ standalone/Material/signal conventions for Perigon WebApp
fastapi-mastery
Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features.
context7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
browser-use
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction.
Didn't find tool you were looking for?