Unity Engine integration skill for project setup, C# scripting, scene management, prefab creation, and editor automation. Enables LLMs to interact with Unity Editor through MCP servers for asset manipulation, script generation, and automated workflows.
Manages Unity projects by automating setup, C# scripting, scene editing, and prefab creation.
npx claudepluginhub a5c-ai/babysitterThis skill is limited to using the following tools:
README.mdComprehensive Unity Engine development integration for AI-assisted game creation, editor automation, and project management.
This skill provides capabilities for interacting with Unity projects, including C# scripting, scene manipulation, prefab management, and build automation. It leverages the Unity MCP ecosystem for direct editor integration when available.
For direct Unity Editor integration:
{
"mcpServers": {
"unity": {
"command": "npx",
"args": ["-y", "unity-mcp"],
"env": {
"UNITY_PROJECT_PATH": "/path/to/unity/project"
}
}
}
}
Alternative MCP servers:
unity-mcp (CoplayDev) - Official Unity MCP bridgeUnity-MCP (IvanMurzak) - Editor & Runtime supportmcp-unity (CoderGamester) - Cursor/Claude Code integrationusing UnityEngine;
public class PlayerController : MonoBehaviour
{
[Header("Movement Settings")]
[SerializeField] private float moveSpeed = 5f;
[SerializeField] private float jumpForce = 10f;
[Header("Ground Check")]
[SerializeField] private Transform groundCheck;
[SerializeField] private float groundRadius = 0.2f;
[SerializeField] private LayerMask groundLayer;
private Rigidbody2D rb;
private bool isGrounded;
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, groundLayer);
HandleInput();
}
private void FixedUpdate()
{
HandleMovement();
}
private void HandleInput()
{
if (Input.GetButtonDown("Jump") && isGrounded)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
}
private void HandleMovement()
{
float horizontal = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(horizontal * moveSpeed, rb.velocity.y);
}
}
using UnityEngine;
[CreateAssetMenu(fileName = "NewEnemyData", menuName = "Game/Enemy Data")]
public class EnemyData : ScriptableObject
{
[Header("Basic Info")]
public string enemyName;
public Sprite icon;
[Header("Stats")]
public int maxHealth = 100;
public float moveSpeed = 3f;
public int damage = 10;
[Header("Combat")]
public float attackRange = 2f;
public float attackCooldown = 1.5f;
[Header("Rewards")]
public int experienceReward = 50;
public GameObject[] lootDrops;
}
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(EnemyData))]
public class EnemyDataEditor : Editor
{
public override void OnInspectorGUI()
{
EnemyData enemyData = (EnemyData)target;
EditorGUILayout.BeginHorizontal();
if (enemyData.icon != null)
{
GUILayout.Box(enemyData.icon.texture, GUILayout.Width(64), GUILayout.Height(64));
}
EditorGUILayout.BeginVertical();
EditorGUILayout.LabelField(enemyData.enemyName, EditorStyles.boldLabel);
EditorGUILayout.LabelField($"HP: {enemyData.maxHealth} | DMG: {enemyData.damage}");
EditorGUILayout.EndVertical();
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space();
DrawDefaultInspector();
}
}
const unityScriptTask = defineTask({
name: 'unity-script-generation',
description: 'Generate Unity C# script',
inputs: {
scriptType: { type: 'string', required: true }, // MonoBehaviour, ScriptableObject, Editor
className: { type: 'string', required: true },
features: { type: 'array', required: true },
outputPath: { type: 'string', required: true }
},
outputs: {
scriptPath: { type: 'string' },
success: { type: 'boolean' }
},
async run(inputs, taskCtx) {
return {
kind: 'skill',
title: `Generate Unity script: ${inputs.className}`,
skill: {
name: 'unity-development',
context: {
operation: 'generate_script',
scriptType: inputs.scriptType,
className: inputs.className,
features: inputs.features,
outputPath: inputs.outputPath
}
},
io: {
inputJsonPath: `tasks/${taskCtx.effectId}/input.json`,
outputJsonPath: `tasks/${taskCtx.effectId}/result.json`
}
};
}
});
| Tool | Description |
|---|---|
unity_create_gameobject | Create new GameObject in scene |
unity_modify_component | Add/modify component on GameObject |
unity_create_script | Generate and attach C# script |
unity_build | Trigger Unity build |
unity_run_tests | Execute Unity Test Framework tests |
unity_import_asset | Import and configure assets |
unity_scene_hierarchy | Query scene structure |
unity_project_settings | Read/modify project settings |
{
"mcpServers": {
"unity": {
"command": "uvx",
"args": ["unity-mcp"],
"env": {
"UNITY_PROJECT_PATH": "C:/Projects/MyGame",
"UNITY_VERSION": "2022.3.20f1"
}
}
}
}
| Platform | Key Considerations |
|---|---|
| PC/Mac | Memory less constrained, full shader support |
| Mobile | Texture compression, draw call batching, thermal limits |
| Console | Certification requirements, memory budgets, TCR compliance |
| WebGL | No threading, limited memory, shader restrictions |
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.