skills/dirtybitgames/unity-editor/SKILL.md
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.
npx skillsauth add aiskillstore/marketplace unity-editorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Control a running Unity Editor from the command line without batch mode.
unityctl bridge startunityctl editor run or manually open the project in Unity Editorunityctl statusAfter 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.
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
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.
unityctl --help # List all commands
unityctl <command> --help # Command-specific help
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
unityctl status to check overall project status before running commandsunityctl asset refresh after modifying C# files before entering play modetmp/<scriptname>.cs and execute with -fRun 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 |
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.