Unity scaffold
Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.
npx -y skills add tinh2/skills-hub-registry --skill unity-scaffoldAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Scaffolds a Unity game project with folder structure, assembly definitions, new Input System, scriptable object architecture, scene management, Git LFS, and CI/CD via GameCI. Triggers on: "unity project", "unity game", "new unity project", "scaffold unity", "unity 2d game", "unity 3d game", "create a unity game", "unity setup", "unity fps", "unity rpg", "unity platformer", "unity mobile game", "C# game project", "unity starter".
SKILL.md
13.8 KB, ~3.1k tokens by cl100k_base, as published. Nobody here has run it
You are an autonomous Unity project scaffolding agent. You generate a complete, production-ready Unity project structure with assembly definitions, the new Input System, scriptable object architecture, core gameplay systems, and CI/CD configuration. Do NOT ask the user questions. Infer all decisions from the arguments provided.
INPUT: $ARGUMENTS
Accepted arguments:
- Project name (required — first positional argument)
- "2d" or "3d" to specify render pipeline (default: infer from name or default to 3D)
- "urp" or "hdrp" or "birp" to specify render pipeline (default: URP)
- "mobile", "pc", "console", or "cross-platform" for target platform
- Genre hints: "platformer", "fps", "rpg", "puzzle", "rts", "racing", etc.
If no arguments provided, scaffold a generic 3D URP project named "GameProject".
============================================================ PHASE 1: PROJECT DETECTION AND CONFIGURATION
Step 1.1 -- Parse Arguments
Extract from $ARGUMENTS:
- Project name (sanitize for C# namespace: PascalCase, no spaces/special chars)
- 2D vs 3D mode
- Render pipeline preference
- Target platform(s)
- Genre (affects which template scripts to include)
Step 1.2 -- Determine Template Configuration
Based on detected mode:
2D Projects:
- URP 2D renderer
- Pixel-perfect camera setup
- Sprite atlas configuration
- Tilemap boilerplate
- 2D physics defaults (gravity, layers)
3D Projects:
- URP or HDRP renderer settings
- Post-processing volume template
- Cinemachine camera rig
- NavMesh configuration
- 3D physics defaults (layers, collision matrix)
Step 1.3 -- Check Existing Project
- If a Unity project already exists (Assets/ folder, ProjectSettings/), warn and ask whether to augment or replace.
- If no Unity project exists, create from scratch.
============================================================ PHASE 2: FOLDER STRUCTURE
Create the following directory hierarchy:
Assets/
_Project/
Art/
Animations/
Materials/
Models/ (3D only)
Sprites/ (2D only)
Textures/
Shaders/
VFX/
UI/
Audio/
Music/
SFX/
Ambient/
Data/
ScriptableObjects/
Configs/
Fonts/
Prefabs/
Characters/
Environment/
UI/
VFX/
Scenes/
Boot/
MainMenu/
Gameplay/
Loading/
Scripts/
Runtime/
Core/
GameManager.cs
SceneLoader.cs
ServiceLocator.cs
Singleton.cs
EventBus.cs
Input/
InputReader.cs
GameInput.inputactions
Audio/
AudioManager.cs
SoundLibrary.cs
UI/
UIManager.cs
ScreenBase.cs
Data/
SaveSystem.cs
GameSettings.cs
Utils/
Extensions.cs
Constants.cs
Timer.cs
Editor/
EditorTools.cs
BuildPipeline.cs
Settings/
Input/
Rendering/
Audio/
Plugins/
ThirdParty/
Packages/
manifest.json
ProjectSettings/
ProjectSettings.asset
EditorBuildSettings.asset
InputManager.asset
TagManager.asset
QualitySettings.asset
Physics2DSettings.asset (2D)
DynamicsManager.asset (3D)
============================================================ PHASE 3: ASSEMBLY DEFINITIONS
Create assembly definition files to enforce compilation boundaries:
-
Assets/_Project/Scripts/Runtime/GameName.Runtime.asmdef- References: Unity.InputSystem, Unity.TextMeshPro, UniTask (if included)
- Auto-referenced: false
- Define constraints: UNITY_2022_3_OR_NEWER
-
Assets/_Project/Scripts/Editor/GameName.Editor.asmdef- References: GameName.Runtime
- Editor-only: true
- Include platforms: Editor
-
Assets/ThirdParty/ThirdParty.asmdef(if third-party code exists)- Auto-referenced: true
- No test assemblies
Each asmdef must have:
- Proper GUID references
- rootNamespace set to project name
- allowUnsafeCode: false
============================================================ PHASE 4: INPUT SYSTEM SETUP
Configure Unity's new Input System:
Step 4.1 -- Input Actions Asset
Create GameInput.inputactions with action maps:
Player Action Map:
- Move (Vector2, WASD/Left Stick)
- Look (Vector2, Mouse Delta/Right Stick)
- Jump (Button, Space/South Button)
- Interact (Button, E/West Button)
- Attack (Button, Left Click/Right Trigger)
- Pause (Button, Escape/Start)
UI Action Map:
- Navigate (Vector2)
- Submit (Button)
- Cancel (Button)
- Point (Passthrough)
- Click (Button)
Step 4.2 -- InputReader ScriptableObject
Create an InputReader SO that wraps the generated C# input class:
- Exposes UnityEvents for each action
- Handles Enable/Disable per action map
- Provides both event-driven and polling APIs
- Implements IInputReader interface for testability
============================================================ PHASE 5: CORE SYSTEMS
Step 5.1 -- Scene Management
Create SceneLoader.cs:
- Async scene loading with progress callback
- Additive scene support
- Loading screen integration
- Scene transition animations (fade in/out)
- Boot scene that initializes all managers
Create Boot scene with:
- GameManager (DontDestroyOnLoad)
- AudioManager
- UIManager
- SceneLoader
Step 5.2 -- ScriptableObject Architecture
Create base SO templates:
- GameConfig SO (global game settings: target FPS, vsync, default volume)
- AudioClipReference SO (clip + volume + pitch range + spatial blend)
- LevelData SO (scene reference, display name, unlock conditions)
Step 5.3 -- Event System
Create EventBus.cs:
- Static event channel using C# events or ScriptableObject-based events
- Type-safe event raising and subscription
- Auto-cleanup on scene unload
- Debug logging option for tracking event flow
Step 5.4 -- Save System
Create SaveSystem.cs:
- JSON serialization to persistent data path
- Versioned save format with migration support
- Async save/load
- Multiple save slot support
- Auto-save timer configuration
Step 5.5 -- Audio Manager
Create AudioManager.cs:
- Music channel with crossfade
- SFX pool with spatial audio support
- Volume control per channel (master, music, SFX, UI)
- Persistent audio settings via SaveSystem
- Sound library SO for centralized clip management
============================================================ PHASE 6: GIT CONFIGURATION
Step 6.1 -- .gitignore
Generate Unity-specific .gitignore:
- Library/, Temp/, Obj/, Build/, Builds/, Logs/
- UserSettings/ (except specific files)
- *.csproj, *.sln, *.suo, *.user
- *.pidb, *.booproj, *.svd, *.pdb
- *.apk, *.aab, *.ipa
- OS files (.DS_Store, Thumbs.db)
- IDE folders (.idea/, .vs/, .vscode/ except settings)
- Crash reports: sysinfo.txt, crashlytics*
Step 6.2 -- .gitattributes for LFS
Configure Git LFS tracking:
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.asset filter=lfs diff=lfs merge=lfs -text
*.cubemap filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
Also set Unity YAML merge strategy:
*.unity merge=unityyamlmerge
*.prefab merge=unityyamlmerge
*.asset merge=unityyamlmerge
============================================================ PHASE 7: CI/CD PIPELINE
Generate GitHub Actions workflow (.github/workflows/unity-build.yml):
- Trigger on push to main and pull requests
- Use GameCI Docker images for Unity builds
- Steps:
- Checkout with LFS
- Cache Library folder
- Run EditMode tests
- Run PlayMode tests
- Build for target platform(s) (Windows/macOS/Linux/Android/iOS/WebGL)
- Upload build artifacts
- License activation using UNITY_LICENSE secret
- Matrix build for multiple platforms if cross-platform
============================================================ PHASE 8: EDITOR CONFIGURATION
Step 8.1 -- Project Settings
Configure ProjectSettings:
- Company Name and Product Name from arguments
- Target frame rate: 60 (mobile) or uncapped (PC)
- Color space: Linear (3D/HDRP) or Gamma (2D/mobile)
- API compatibility: .NET Standard 2.1
- Active Input Handling: Input System Package (New)
- IL2CPP for release builds, Mono for debug
Step 8.2 -- Quality Settings
Configure quality tiers:
- Low (mobile): no shadows, simple lighting, reduced particles
- Medium: soft shadows, standard lighting
- High (PC/console): full shadows, post-processing, high-res textures
Step 8.3 -- Tags and Layers
Pre-configure useful tags and layers:
- Tags: Player, Enemy, Pickup, Projectile, Interactable, Checkpoint
- Layers: Default, Player, Enemy, Ground, Obstacle, Trigger, UI, Projectile
- Sorting Layers (2D): Background, Midground, Default, Foreground, UI
============================================================ SELF-HEALING VALIDATION (max 3 iterations)
After completing the main phases, validate your work:
- Run the project's test suite (auto-detect: flutter test, npm test, vitest run, cargo test, pytest, go test, sbt test).
- Run the project's build/compile step (flutter analyze, npm run build, tsc --noEmit, cargo build, go build).
- If either fails, diagnose the failure from error output.
- Apply a minimal targeted fix — do NOT refactor unrelated code.
- Re-run the failing validation.
- Repeat up to 3 iterations total.
IF STILL FAILING after 3 iterations:
- Document what was attempted and what failed
- Include the error output in the final report
- Flag for manual intervention
============================================================ OUTPUT
Unity Project Scaffolded
Project: {name}
Mode: {2D/3D}
Render Pipeline: {URP/HDRP/Built-in}
Target: {platform(s)}
Structure Created
| Category | Files | Description |
|---|---|---|
| Folders | {N} directories | Full project hierarchy |
| Scripts | {N} .cs files | Core systems and boilerplate |
| Assembly Defs | {N} .asmdef files | Compilation boundaries |
| Input Actions | 1 .inputactions | Player and UI input maps |
| ScriptableObjects | {N} .asset files | Configuration data |
| Scenes | {N} .unity scenes | Boot, menu, gameplay, loading |
| Git Config | 2 files | .gitignore + .gitattributes (LFS) |
| CI/CD | 1 workflow | GitHub Actions build pipeline |
Core Systems Included
- Scene management with async loading and transitions
- Input System with InputReader SO pattern
- Audio manager with music crossfade and SFX pooling
- Save system with versioned JSON serialization
- Event bus for decoupled communication
- Service locator for dependency management
Setup Instructions
- Open the project in Unity 2022.3+ (LTS recommended)
- Import URP/HDRP package if not auto-resolved from manifest
- Install Git LFS:
git lfs install && git lfs pull - Open
Scenes/Boot/BootScene.unityas the startup scene - Configure build scenes in File > Build Settings
NEXT STEPS:
- "Run
/game-code-reviewto audit the scaffolded architecture." - "Run
/game-performanceto verify the project meets frame budget targets." - "Run
/game-qato validate scene loading and null reference safety."
DO NOT:
- Do NOT create placeholder art assets — leave art folders empty.
- Do NOT include any third-party packages beyond Unity built-ins and UPM packages.
- Do NOT hardcode platform-specific code without preprocessor directives.
- Do NOT use deprecated Unity APIs (UnityEngine.Input, OnGUI, etc.).
- Do NOT create MonoBehaviour singletons without DontDestroyOnLoad protection.
- Do NOT skip assembly definitions — they are required for compilation isolation.
============================================================ SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/ - If found, append to
skill-telemetry.mdin that memory directory
Entry format:
### /unity-scaffold — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.