new-unity-project
unity-technologies/skills
Guided workflow to scaffold a new Unity project with concept, platforms, and monetization decisions.
What is new-unity-project?
Orchestrates the full setup flow from game idea to a running, version-controlled Unity project. Use when a user asks to start a new game or prototype. Delegates mechanics to specialized skills (unity-cli, unity-package-management, urp-postprocessing, ui, implement-in-app-purchases) while owning the decision flow and parallelizing the multi-minute Editor install.
- Gathers concept (genre, dimension, gameplay, scope) and writes a project brief
- Determines target platforms and monetization model, then launches Editor install in the background
- Creates the project from a URP or Built-in template and initializes source control (Git, Unity Version Control, or local)
- Installs packages via the C# PackageManager Client API based on genre and platform
- Applies visual baseline (post-processing, quality tier, UI stack) before gameplay work
- Commits the initialized project to version control
How to install new-unity-project
npx skills add https://github.com/unity-technologies/skills --skill new-unity-project- Unity CLI installed and authenticated
- Editor version preference (defaults to latest LTS)
- Source control choice (Git, Unity Version Control, or local git)
How to use new-unity-project
- 1.Answer concept questions: genre, dimension, art style, gameplay loop, and scope
- 2.Provide target platforms (Desktop, Mobile, WebGL, Console) and monetization model
- 3.Confirm Editor version while the install runs in the background
- 4.Review the project brief and confirm platform/monetization choices
- 5.Wait for Editor install to complete
- 6.Select a URP or Built-in template and initialize source control
- 7.Review and install recommended packages for your genre and platform
- 8.Apply visual baseline (post-processing, quality tier, UI)
Use cases
- Starting a 2D pixel-art platformer with mobile and desktop targets
- Prototyping a 3D first-person game with in-app purchase monetization
- Setting up a multiplayer game with WebGL and console platforms
- Creating a hyper-casual game optimized for ads
- Building a single-screen puzzle game with minimal scope
- Game developers starting a new Unity project
- Prototypers exploring game ideas quickly
- Teams setting up a standardized project structure with source control
- Developers new to Unity who need guided scaffolding
new-unity-project FAQ
Both decisions change which Editor modules to install and which packages to add. Gathering them early lets the multi-minute Editor install run in the background while you finish concept questions, making setup feel instant.
Default to URP (Universal Render Pipeline) unless you explicitly need Built-in. URP is the modern standard and is removed in Unity 6.7+. Built-in is deprecated.
Yes. The skill asks which you prefer: Git (with optional LFS for asset-heavy games), Unity Version Control (handles large binaries natively), or a local git init. Choose based on your team's workflow.
The skill checks the install status before creating the project. If it fails, it surfaces the error and stops — nothing downstream works without an Editor. See unity-cli troubleshooting.
No. The skill installs packages via the C# PackageManager Client API, never by hand-editing manifest.json. It reads the final list back to you before installing.
Full instructions (SKILL.md)
Source of truth, from unity-technologies/skills.
name: new-unity-project description: Guides creating a new Unity project, gathering concept, platforms, and monetization before setting up the project, source control, and packages. Use when the user asks to start a new game or prototype. allowed-tools:
- Bash
- Read
- Write
- Edit
- AskUserQuestion
New Unity Project
A guided flow from an idea to a running, version-controlled Unity project. This skill owns the flow — the questions, their ordering, running slow installs in the background while you ask, and the handoffs. It deliberately does not re-document commands; it delegates the mechanics to other skills.
Delegates to (read these for the actual commands — don't reinvent them):
unity-cli— CLI install, auth/license, Editor install, project creation, source control, opening the project. Its "Bootstrap a new project from scratch" workflow is the backbone here.unity-package-management— installing packages via the C# PackageManager Client API, and choosing packages by genre / platform / monetization.urp-postprocessing,ui,2d-pixel-perfect— the visual baseline (Step 6): post-processing volume setup, HUD framework choice, pixel-perfect 2D.implement-in-app-purchases,levelplay-unity-integration,build-live-game— monetization / backend integration (invoked at the end).
Work one step at a time. Ask only the current step's questions and wait for the user before moving on — platform and monetization answers change what you install, so don't gather everything up front or scaffold before they're settled.
The flow — and where the parallelism is
- Concept — what they're building.
- Platforms & monetization — then, as soon as platforms are known, kick off the Editor install in the background (it takes minutes) and keep talking.
- (joins) Editor + platform modules finish installing.
- Project + source control — create from a URP template matching 2D/3D; init git.
- Packages — install via the C# Client API.
- Visual baseline — post-processing, camera, quality tier, UI stack, pipeline-correct shaders, so the first frame doesn't look like an untouched template.
- Save & first commit.
- Hand off monetization / backend.
The whole point of a guided flow over a raw recipe: the multi-minute Editor install overlaps the minutes the user spends answering concept questions, so setup feels instant.
Step 1 — Concept
Use AskUserQuestion so the user can pick fast, but let them answer freely too. Cover:
- Genre / core loop — platformer, top-down shooter, puzzle, idle, RPG, racing, card, tower defense, sim, hyper-casual, first-person, etc.
- Dimension & look — 2D or 3D; art style (pixel, low-poly, stylized, realistic, UI-only).
- Gameplay — the one-sentence "what the player does moment to moment."
- Scope — single-screen prototype vs. multi-scene game; single-player or multiplayer.
Also settle on a project name. Write a 2–4 line project brief, read it back to confirm. The brief drives template choice (Step 4), packages (Step 5) and the visual baseline (Step 6): note the palette / mood words the user gives, and whether the look is pixel art.
Step 2 — Platforms & monetization, then start installing
Two decisions, because both change what you install:
- Target platforms (multi-select): Desktop (Win/macOS/Linux), Mobile (iOS/Android), WebGL, Console. These map to Editor modules (Step 3) and argue for leaner packages on mobile/WebGL.
- Monetization: none / premium / in-app purchases / ads / mix. This only decides which handoff skill you invoke in Step 8 — don't integrate it now.
Confirm the Editor version to use (default: latest LTS — see unity-cli for the LTS vs. Tech
vs. beta trade-off). Ask this now, before kicking off the install, so you don't install the
wrong one.
Then confirm prerequisites and launch the Editor install as a background task so it runs while
you continue. See the unity-cli skill for exact syntax, module names per platform, and auth /
license setup:
unity --version
unity auth status --format json # if signed out: unity auth login
unity license status --format json # if none active: unity license activate
# Start in the BACKGROUND, then go straight back to the conversation. Module names per platform
# (android / ios / webgl / …) are in the unity-cli skill.
unity install lts --module <platform-modules> --yes --accept-eula
Run that install as a background task (don't block on it). If you have nothing left to ask, it's fine to just wait — the parallelism only helps when there's a conversation to overlap.
Step 3 — Join: Editor ready
Before creating the project, confirm the background install finished:
unity editors --installed --format json
If it failed, surface the error (see unity-cli troubleshooting) and stop — nothing downstream
works without an Editor.
Step 4 — Create the project + source control
Follow the unity-cli "Bootstrap a new project from scratch" workflow verbatim:
- List the real template ids the Editor offers (
unity templates list --type core) and pick by render pipeline, not just 2D/3D — don't guess ids. Default to URP:com.unity.template.urp-blank("Universal 3D") for 3D,com.unity.template.universal-2d("Universal 2D") for 2D.com.unity.template.3d/com.unity.template.2dare the Built-in Render Pipeline templates — deprecated from Unity 6.5, removed in 6.7 — so choose them only when the user explicitly asks for Built-in. Confirm the pick against the JSONrenderPipelinefield (blank for universal-2d on current releases, so match that one by id). - Create with
unity projects create "<Name>" --path <dir> --editor-version <v> --template <id>. - Set up source control — ask the user which they want, don't assume: Git (GitHub / GitLab;
add
--git-lfsfor asset-heavy games) or Unity Version Control (--vcs uvcs, which handles large binary assets natively — no LFS), or a purely localgit init+ Unity.gitignore. Publish in one step withunity projects create --vcs … --git-token-stdin --no-initial-commit(tokens on stdin). Pass--no-initial-commitso the CLI doesn't commit the bare project before packages and.metafiles exist — you make the real first commit/check-in in Step 7. See theunity-cliworkflow for exact flags.
Step 5 — Packages
Map the brief to a concrete package list and install it via the unity-package-management
skill (C# PackageManager Client API — never hand-edit manifest.json). Read that skill for
the genre/platform/monetization → package mapping, the installer script, and the -quit gotcha.
The template already provides the render pipeline — never add com.unity.render-pipelines.universal
to a Built-in template project (nothing assigns a URP asset; materials go pink) or vice versa.
Read the final list back to the user before installing; verify manifest.json afterward.
Step 6 — Visual baseline
A fresh template renders correctly but looks like a default: no tonemapping, untouched quality
tier, flat colors. Left there, agents reach for OnGUI and guess shader names, which is where
washed-out or magenta materials come from. Apply this floor before any gameplay work.
First, unity pipeline install --project-path "<project-path>", before opening the
Editor. Running C# in the Editor, and unity command screenshot below, both need the
project's com.unity.pipeline package. A project created in Step 4 does not have it, and Step 5
does not add it: that step installs packages by launching the Editor binary with
-batchmode -executeMethod, which never touches the package. Installing before the open is the
supported order — the install updates Packages/manifest.json, which Unity reads at project
load. Run it against an already-open project and the CLI reports
PIPELINE_MANIFEST_WRITE_FAILED; ask the user to close the Editor and re-run. Without the
package, everything below fails to connect, which looks like the Safe Mode failure unity-cli
describes but has a different cause.
Then unity open "<project-path>" (also what Step 7 needs), wait until unity status
reports the Editor ready, and apply each item below by running C# in it. unity-cli owns
those commands and their syntax — don't re-derive them here.
Items 1, 2, 5 and 6 assume a URP template, which is the Step 4 default. If the user
explicitly chose Built-in, don't run them as written: UniversalAdditionalCameraData, Light2D,
the urp-postprocessing volume framework and every Universal Render Pipeline/* shader are URP
types that do not exist there, so the generated C# won't compile. On Built-in, items 3 and 4
still apply as written, post-processing means the legacy Post Processing Stack, and the shader
names are Standard / Unlit/Color. Don't reach for migrate-birp-to-urp — the user asked for
Built-in.
- Post-processing. Global Volume with Tonemapping (ACES), low Bloom (intensity 0.5–1,
threshold 0.9) and a subtle Vignette (≈ 0.25); set
renderPostProcessing = trueon the main camera'sUniversalAdditionalCameraData. REQUIRED SUB-SKILL:urp-postprocessing— its code templates create the volume and check HDR and the Volume layer mask. - Camera and light. 2D → orthographic, solid background color from the brief's palette, and
a
Light2Dof type Global in the scene if the template scene has none (the Sprite-Lit shaders render black without one). 3D → perspective; keep the template's directional light and skybox, main-light shadows on. - Quality tier. Read
QualitySettings.namesfirst — tier names differ per template — thenQualitySettings.SetQualityLevelto the one matching the primary target: the highest tier for desktop, the lowest for mobile/WebGL. Leave color space Linear and the Input System as the template set them. - UI stack. HUD and menus use a uGUI Canvas + TextMeshPro or UI Toolkit — never
OnGUI. REQUIRED SUB-SKILL:uipicks between them for the project. - Materials and shaders. Under URP use
Universal Render Pipeline/Lit,…/Unlit,…/2D/Sprite-Lit-Defaultor…/2D/Sprite-Unlit-Default.StandardandUnlit/Colorrender pink or washed out under URP. PreferGraphicsSettings.currentRenderPipeline.defaultMaterial/.default2DMaterialoverShader.Find, and treat anullfromShader.Findas an error.currentRenderPipeline, notdefaultRenderPipeline: a quality tier can carry its own pipeline asset, and item 3 above just set the tier. - Pixel art only. Point filter mode on sprites and a Pixel Perfect Camera — see
2d-pixel-perfect.
Save the scene, then confirm both of these. Not with unity logs — that reads the CLI's own
log, never the Editor's, so it reports clean whatever the scene looks like:
- No render-pipeline or shader errors Editor-side. Read the Editor console through
unity-cli, or readEditor.logdirectly — that skill's "Recovering from Safe Mode" section has the per-platform paths. unity command screenshot --output baseline.pnglooks lit and tonemapped rather than flat gray.
Step 7 — Save & first commit
The project is already open from Step 6, so .meta files exist. Make the first commit with
whichever VCS you set up in Step 4:
unity open "<project-path>" # only if not already open; for headless/CI use the
# "Import & save headlessly" method in unity-package-management
- Git (GitHub / GitLab / local):
Everycd "<project-path>" git add -A git status # Library/ Temp/ obj/ Build/ must NOT be staged git commit -m "Initial Unity project: <Name>".cs/asset must be committed together with its.meta. - Unity Version Control (UVCS): check in through your UVCS client/workspace (created during
Step 4) — there's no
gitstep. Generated folders are still excluded by the ignore rules.
If you published via --vcs in Step 4 without --no-initial-commit, the CLI already made an
initial commit of the bare project — add a follow-up commit here rather than double-committing.
Step 8 — Hand off
Based on Step 2 monetization, invoke the matching skill for the actual integration:
- IAP → implement-in-app-purchases
- Ads → levelplay-unity-integration
- Accounts / cloud save / economy / remote config / leaderboards → build-live-game
Report the project path, Editor version, render pipeline and template, installed packages, the visual baseline applied, and next steps.
Scope — what this skill does NOT do
- No gameplay scaffolding. It gets you to a running, wired project with a visual floor;
building the actual game (scenes, controllers, art) is the next conversation — iterate there
with the Editor via the
unity-cliMCP server and the Package Manager. Generic genre skeletons tend to produce throwaway mocked primitives, so this skill intentionally stops at a clean starting point. The visual baseline (Step 6) is settings, not content. - No command reference. Syntax lives in
unity-cli/unity-package-management.
Checklist
- Concept brief captured and confirmed (genre, look, gameplay, scope, name)
- Platforms + monetization recorded; Editor version chosen
- Editor + platform modules installed (started in the background during Step 2)
- Project created from a URP template (
urp-blank/universal-2d) unless Built-in was explicitly requested; git initialized with a Unity.gitignore - Packages installed via the C# Client API;
manifest.jsonverified; no render-pipeline package added on top of the template - Visual baseline applied: global Volume (tonemapping, bloom, vignette) + camera post-processing on,
quality tier set for the target, UI stack chosen (no
OnGUI), URP shader names, screenshot checked - Project opened/saved so
.metafiles exist; first commit made;Library/excluded - Handed off to the monetization/backend skill if applicable
Common mistakes
- Blocking on the Editor install instead of backgrounding it while you ask questions.
- Installing the wrong Editor because the version wasn't confirmed before the background install.
- Gathering all questions up front — platform/monetization answers change the modules and packages.
- Hand-editing
manifest.jsoninstead of using the Client API (seeunity-package-management). - Committing
Library//Temp//obj//Build/, or scripts without their.metafiles. - Missing Editor modules — a mobile target needs
android/ios; WebGL needswebgl. - Picking
com.unity.template.2d/.3dbecause the name matches — those are the Built-in pipeline templates. Useuniversal-2d/urp-blank. - Skipping the visual baseline and shipping the template's flat defaults, then building the
HUD with
OnGUIand materials withShader.Find("Standard")under URP.
Related skills
More from unity-technologies/skills and the wider catalog.

optimize-audio
Optimize Unity audio memory, CPU, and quality through import settings and mixer configuration.

optimize-text-mesh-pro
Optimize TextMeshPro rendering, memory, fonts, and multilingual text in Unity.

optimize-web
Optimize Unity WebGL and WebGPU builds for smaller downloads and faster load times.

setup-multiplayer-services
Set up real-time multiplayer with Unity Multiplayer Services: matchmaking, sessions, lobbies, and hosting.

setup-vivox-voice-chat
Add in-game voice and text chat with spatial audio, team channels, and direct messaging via Unity Vivox.

shader-graph-create-custom-node
Generate custom Shader Graph nodes from HLSL code with reflection hints.