Image to Three.js Model
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Guide for using the experimental Unity CLI with bound UnitySkills projects
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Besty0728/Unity-Skills unity-cli --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .claude/skills/unity-cli && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .claude/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cliType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Besty0728/Unity-Skills unity-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .agents/skills/unity-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .agents/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Besty0728/Unity-Skills unity-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .cursor/skills/unity-cli && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .cursor/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Besty0728/Unity-Skills.git --path 'SkillsForUnity/unity-skills~/skills/unity-cli'--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Besty0728/Unity-Skills unity-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .gemini/skills/unity-cli && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .gemini/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Besty0728/Unity-Skills unity-cliInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .github/skills/unity-cli && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .github/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Besty0728/Unity-Skills --skill unity-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Besty0728/Unity-Skills unity-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Besty0728/Unity-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/'SkillsForUnity/unity-skills~/skills/unity-cli' .opencode/skills/unity-cli && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "unity-cli" agent skill from https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/unity-cli into .opencode/skills/unity-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unity-cli", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
unity-cliGuide for using the experimental Unity CLI with bound UnitySkills projects
Unity CLI is an agent skill from Besty0728/Unity-Skills. Guide for using the experimental Unity CLI with bound UnitySkills projects
Its SKILL.md is about 5.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development. The repository describes itself as: AI automation skills specifically designed for Unity. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 12a40e4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash, json and python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Unity CLI loads about 5.9k tokens when it runs. Until then it costs about 21 tokens; SKILL.md has 3,003 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Besty0728/Unity-Skills at commit 12a40e4, republished under its MIT licence (© Besty0728). 3,003 words, ~5,881 tokens.
.claude/skills/unity-cli/SKILL.md (or your agent's skills folder).Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via
GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.
Advisory module — no REST skills. All commands here run in YOUR shell on the user's machine, not through the REST server. That is the point: they work while the Unity Editor is closed.
Before using anything below, check the binding config:
<projectRoot>/Library/UnitySkills/cli_config.jsonenabled: false → Unity CLI is OFF for this project. Ignore this module entirely. Do not suggest installing the CLI unprompted; the user opts in via Window > UnitySkills → AI Config → Unity CLI Setup….enabled: true → use cliPath as the executable (it may not be on your PATH). Respect the per-feature switches in features:{
"schemaVersion": 1,
"enabled": true,
"cliPath": "/Users/me/.local/bin/unity",
"cliVersion": "1.0.0-beta.5",
"projectPath": "/path/to/Project",
"editorVersion": "6000.0.32f1",
"boundAt": "2026-07-26T09:00:00Z",
"features": { "coldStart": true, "openArgs": true, "cliTest": true, "cliRun": false, "cliBuild": false }
}Configs written by older plugin versions may lack the cliRun / cliBuild keys — for these two, a missing key means OFF (the first three keys keep their original semantics). Both also default to off on fresh binds; the user enables them per project in the panel.
The global registry (~/.unity_skills/registry.json) also carries cliBound / cliPath per running instance — use it for liveness checks only, never as authorization: the ONLY thing that authorizes CLI use for a project is that project's own cli_config.json. Do not cold-start any project whose own config you have not read, even if it appears in the registry. Also note projectPath inside the config is a bind-time snapshot — the directory you actually found the config under is authoritative (helper get_cli_config() already rewrites it); never open the stored path if it differs from the real project root.
Unity CLI is experimental (beta) and its command surface changes between releases — this document was verified against
1.0.0-beta.9(beta.7 was withdrawn the same day it shipped).cliVersionin the config is only a bind-time snapshot; the installed binary moves ahead of it. Before using a command whose semantics changed recently, read<cliPath> --versionand<cliPath> <command> --help—--helpis always the final authority for the binary on disk. beta9+<cliPath> skill show --list/--path <file>prints Unity's own agent skill read-only (offline, ~44k tokens in total — read one file at a time) — a second reference, never an authorization; this module's gates and DO NOT list still apply. If a command errors unexpectedly, run<cliPath> doctor --format jsonfirst (environment snapshot;--tail <n>for more log) and re-check--helpbefore retrying. Never modify the server or config to work around a CLI quirk.
features.coldStart)The one capability REST can never provide: starting the editor when it is not running.
<cliPath> status --format json # any editor instances running?
<cliPath> open "<projectPath>" --args -unityskills-coldstartAlways pass --args -unityskills-coldstart when cold-starting: the UnitySkills plugin detects this marker at editor startup and force-starts the REST server for this session, even if the user's Auto-start preference is off. Without the marker you depend on the user's saved preference. The marker is consumed once per editor session — it never overrides a mid-session manual stop.
Preflight — read-only, no feature switch needed. open / test / run / build all resolve the editor from the project's ProjectVersion.txt. Before the first CLI launch of a session run these checks; none of them modifies the project:
<cliPath> editors -i --format json # all versions: is the bound editorVersion installed?
<cliPath> doctor --ci --format json # beta6+: exit 6 = definitive blocker, 7 = retryable
<cliPath> projects verify "<projectPath>" --format json # beta6+: exit 6 = errors, 0 = clean or warnings onlydoctor --ci (from the project root) checks licence, the project's editor, disk space and Unity services; branch on errors[].code (LICENSE_NONE, EDITOR_NOT_INSTALLED, DISK_SPACE_LOW, NETWORK_UNREACHABLE): 6 → stop and report, 7 → retry a few times, then tell the user. Plain doctor always exits 0. beta6–8 on macOS may hang on a keychain prompt — wrap it in a shell timeout.projects verify needs no Editor, licence or network and only detects: META_MISSING / META_ORPHAN / GUID_DUPLICATE / CONFLICT_MARKERS / MANIFEST_INVALID exit 6 — report, never hand-repair; warnings (PATH_UNVERIFIABLE, EDITOR_VERSION_DRIFT via --expect-editor <version>) exit 0 unless --strict.If the editor is not installed, stop and tell the user — never run install or pass --allow-install (see DO NOT).
After launching, poll the UnitySkills REST server until ready (first import/compile can take minutes):
from unity_skills import wait_for_health
health = wait_for_health(timeout=600) # polls /health on ports 8090-8100beta9+: open exits 6 (OPEN_EDITOR_EXITED) when the Editor dies inside the CLI's short watch window — report it at once instead of waiting on wait_for_health. Only that window is covered: an Editor that quits later is never observed, and older binaries exit 0 regardless, so a wait_for_health timeout remains the real failure signal.
Liveness triage — prefer this over blind retry. When REST is unreachable, determine whether an Editor is actually running before deciding to cold-start:
cli_config.json first. Only proceed if it exists and enabled: true.~/.unity_skills/registry.json, find the entry whose path equals the project root, then test its pid (ps -p <pid> / Windows tasklist). Live pid → the editor is running but busy (Domain Reload / import) → keep the normal REST wait-and-retry; do not cold-start.<cliPath> editors running --format json --non-interactive lists the Editor instances the CLI can see. This is useful confirmation, but it only sees instances the CLI's backend recognizes.Library/UnityLockfile. A held lockfile means an Editor instance is open on this project even if the registry entry is missing.<cliPath> status is supplementary, not authoritative: it only reflects Unity Pipeline connection state. An empty table / non-zero exit does NOT mean the editor is closed — verified in practice: a running editor without the Pipeline package shows nothing.If the PID, the CLI process list, or the lockfile indicates an Editor is already running, do not open, run, or build — Unity refuses a second instance on the same project. Only when none of the above show a live Editor for this project should you cold-start with open, then wait_for_health.
features.openArgs)<cliPath> open "<projectPath>" --args -openscene "Assets/Scenes/Main.unity"Anything after --args is passed to the Unity Editor as standard command-line arguments. Useful to land in a known state (specific scene, custom -executeMethod). Only at launch time — for an already-running editor use REST scene_load instead.
features.cliTest)<cliPath> test "<projectPath>" --mode EditMode --filter <pattern> --output test-results.xml --timeout 1800--mode <EditMode|PlayMode> — omit to run the editor's default test platform; cover both modes with two separate invocations.--filter <pattern> — only run tests whose names match.--output <path> — NUnit XML report (default test-results.xml). In CI, continue to use this file for test results.test --help may list report/coverage flags (beta4+: --report-format nunit,junit, --junit-output, --coverage*) and, beta6+, --shard N/M, --retries N (re-runs only the failed tests, --timeout per attempt, flaky tests named in test-results.retries.json, never-passing tests still exit 8) and --rerun-failed (reads the failing set from --output, writes test-results.rerun.xml). beta9+ --affected --since <ref> runs only the tests a change can reach (an approximation, writes test-results.affected.xml) — run --affected-compare first to measure its false-negative rate before trusting it. The selectors are mutually exclusive. Use a parameter only if the current binary's test --help lists it; never guess names.--timeout <seconds> (env UNITY_TEST_TIMEOUT) — kills the Unity process after N seconds; disabled by default, always set one for unattended runs.--, e.g. -- -nographics.0 all passed (also when --retries rescued a flaky test — the flakiness is still reported). beta6+: 8 tests failed (errors[0].code TESTS_FAILED); 6 no verdict — compile error, licence or Editor crash (TEST_RUN_ERROR), --timeout expiry (TEST_TIMED_OUT). beta3–5: 6 covers both — read the XML to tell them apart. 7 Unity services unreachable after CLI retries; 130 SIGINT; 143 SIGTERM; any other non-zero = the command itself failed — check stderr, the JSON envelope and errors[].code, not just the XML. Retry 6/7 if at all; never retry 8.Routing rule:
test_* skills.unity test (headless, NUnit XML output). Do not run unity test against a project whose editor is open.features.cliRun)One-shot batch automation on the bound project only, while the editor is closed — the third lifecycle option between REST (editor open, interactive) and cold start (launch and keep serving):
<cliPath> run "<projectPath>" --timeout 1800 -- -executeMethod Your.Static.Method -quit-- is forwarded to the Unity Editor as standard command-line arguments; -executeMethod <static method> plus -quit is the typical shape (asset re-import, batch fixes, custom pipelines).stopped with signal SIG… (see §6) — an Editor crash, not a business-logic failure.--timeout <seconds> (env UNITY_RUN_TIMEOUT) — disabled by default; always set one, a hung batch editor otherwise blocks your shell forever.run (Unity refuses a second instance on the same project — same Library/UnityLockfile rule as cold start). Editor closed + persistent session needed → cold start. Editor closed + one-shot task → run.run --command <name> drives Unity Pipeline package commands — not part of this workflow (see DO NOT).features.cliBuild)cliBuild is off by default. When the user enables it, choose the build path based on the installed CLI version, Unity Editor version, target platform, and whether a Build Profile exists:
<cliPath> build "<projectPath>" --profile "Windows" --output-path ./Builds/win64--profile accepts a Build Profile asset path or the profile name shown in the Build Profile window.6000.x) and a configured Build Profile.<cliPath> build "<projectPath>" --target StandaloneWindows64 --output-path ./Builds/win64--target is still required.--execute-method is optional starting with beta4; the CLI can drive the built-in desktop build when --output-path is provided.<cliPath> build "<projectPath>" --target Android --execute-method Builder.PerformBuild --output-path ./Builds/android--execute-method remains compatible and takes priority when provided; use it for Android, iOS, WebGL, or projects that already have a custom build pipeline.--output-path is forwarded to Unity as -buildOutput; the execute-method itself is responsible for reading it.--no-tail to disable); the full log lands at <project>/Logs/build-<target>-<timestamp>.log unless --log-file overrides it. beta6+ also writes <output>.provenance.json beside the artifact — what was built, failed builds too (--no-provenance to skip).--timeout <seconds> (env UNITY_BUILD_TIMEOUT, beta6+) — aborts the build and exits 6; disabled by default, always set one for unattended builds. beta6+ json/ndjson also carry heartbeat frames (elapsed, and seconds since the log last grew — even with --quiet): a stalled Editor is a growing gap, not silence.build refuses to run with uncommitted changes. That protection is deliberate — pass --allow-dirty-build only when the user explicitly says so.--versioning-strategy <semantic|tag|custom|none> (default none) stamps the build version from git tags/history; --build-version applies only with custom.--android-export-type <apk|aab|android-studio-project> and keystore/signing flags exist, but secrets on the command line leak into shell history and CI logs — let the user handle signing; never ask them to paste keystore passwords into your shell commands.run: bound project only, editor must be closed, and once the editor is up again all normal operations go back through REST.0 success; 6 build failed, --timeout expired (beta6+), or the Editor exited abnormally; 7 Unity services unreachable after retries; 130 SIGINT; 143 SIGTERM. beta5+ reports an Editor crash as stopped with signal SIG… (see §6) — treat that separately from BUILD_FAILED.--format <human|json|tsv|ndjson> (env UNITY_FORMAT); --json is shorthand for --format json. When stdout is piped the default silently becomes TSV — one more reason to always pass --format json explicitly. JSON responses use a standard envelope {success, command, data, errors, warnings}; ndjson streams progress events for long-running commands.--non-interactive (env UNITY_NON_INTERACTIVE) turns prompts into hard errors instead of hanging your shell; combine with --quiet (env UNITY_QUIET) and --no-banner (env UNITY_NO_BANNER) for clean machine output.UNITY_NON_INTERACTIVE=1 — disable interactive prompts.UNITY_FORMAT=json — default output format; command-line --format wins if both are set.UNITY_NO_PAGER=1 — never page long output (beta4+ uses a pager in interactive terminals).UNITY_NO_CRASH_REPORT=1 — opt out of anonymous crash reporting via Sentry (beta3+).UNITY_NO_CLI_INVOKED_TELEMETRY=1 — opt out of the per-run usage ping (beta9+; separate from the analytics opt-in).errors[].code, and stderr together — do not rely on a single exit code.| Exit code | Meaning |
|---|---|
0 | Success. |
1 | Generic error — read stderr / JSON errors. |
2 | Usage or argument error (wrong command, missing required flag). |
3 | Authentication or authorization failure. |
4 | Missing required configuration. |
6 | Primary operation failed or reached no verdict — build failed, --timeout expired (beta6+), Editor exited abnormally or crashed, test without a verdict (beta6+; beta3–5 also put failed tests here), doctor --ci definitive blocker, projects verify errors, open Editor died in the watch window (beta9+, OPEN_EDITOR_EXITED). |
7 | Unity services unreachable after CLI retries, or doctor --ci reached no verdict (beta6+); retry a limited number of times. 6 is terminal, 7 may be transient. |
8 | Tests failed (test, beta6+, TESTS_FAILED); never retry. beta3–5 report this as 6. |
130 | Cancelled by user (SIGINT / Ctrl+C). |
143 | Terminated by SIGTERM. |
--format ndjson. Since beta4 the stream ends with a terminal type=result frame — use the last {"type":"result","success":...} frame as the final state, never an earlier progress frame or a stderr line; beta3 emits no result frame, fall back to the exit code plus stderr.build/test/run report an Editor crash as stopped with signal SIGSEGV/SIGILL/SIGTRAP/SIGFPE/SIGBUS. Distinguish these from business failures (TESTS_FAILED on beta6+ / TEST_FAILED before, BUILD_FAILED) and from CLI-side failures (argument, config, network, auth).--verbose adds full error details with stack traces — useful once, when reporting a CLI problem to the user.cli_config.json is absent or enabled:false — the user has not opted in. Operate only on the bound project (the directory you found the config under); never open / test / run / build any other project.--allow-install (accepted by test / run / build), and do not use unity install / install-modules / uninstall / editors upgrade / hub / license commands unless the user explicitly asks — installing, upgrading or removing editors is a large, slow, system-changing operation that belongs to the user alone.unity mcp — it starts a blocking stdio MCP server and waits for a client, hanging your shell.unity command / unity pipeline / unity run --command — the Unity Pipeline package route duplicates what UnitySkills REST already provides and is not part of this workflow.unity projects exec or unity projects clean — these operate across multiple projects and violate the "only touch the bound project" boundary.unity projects create|new|clone|link|unlink|upgrade, unity templates, unity cloud, unity collab, or any unity vcs verb other than the read-only status / diff / summarize / affected / conflicts / explain / providers — they create, re-home or rewrite projects and repositories (local, remote, or Unity Cloud — projects create is cloud-enabled by default on beta8+), outside the bound-project boundary.unity close / projects close (beta8+) unless the user explicitly asks — it quits the Editor without saving; the graceful path needs com.unity.pipeline (pipeline_missing otherwise → hand the close back to the user) and --force (SIGTERM→SIGKILL) is never yours to pass. Save through REST first.unity editors prune or unity editors verify — these modify or validate the global Editor installation set and are outside the project lifecycle.unity command --detach, unity eval --detach, or unity job — detached commands and job queues are a different control channel from the bound-project workflow.unity skill install or unity skill refresh — they write into an AI client's config directory, and the official skill can bypass UnitySkills' own advisory and feature gates; skill installation is a user decision in the panel. Reading it with unity skill show (beta9+) is fine — see Gate.unity shell --protocol ndjson — it is the beta3 warm-process machine protocol, equivalent to the official MCP route, and is not part of this workflow.unity self-update, alias upgrade; self-install / self-uninstall; Homebrew, winget, etc.) or manage its bundled tools (unity plugin install|remove|upgrade, beta8+) — updating and installing are user decisions.unity language, e.g. Chinese table headers) — always pass --format json --non-interactive when you need to read results programmatically./health responds, all normal operations go through REST skills.Starting with beta4, the Unity CLI requires glibc 2.34+ on Linux and no longer supports Ubuntu 20.04 and earlier, Debian 11, RHEL/CentOS 8, or Amazon Linux 2. On those systems the CLI may fail to start with a glibc-related error rather than a normal "command not found".
Do not treat this as "CLI not installed" and prompt the user to reinstall. Instead, surface the compatibility constraint: the installed binary cannot run on this OS/glibc version; options are to stay on beta3 capabilities, upgrade the OS, or use a different machine. There is no global minimum version enforced by UnitySkills — capabilities are branched by actual CLI behavior:
build semantics (--execute-method required), no NDJSON terminal result frame.type=result frames.SIGSEGV, SIGILL, SIGTRAP, SIGFPE, SIGBUS).test exit 8 = failed / 6 = no verdict; build --timeout; doctor --ci; projects verify; test --shard/--retries/--rerun-failed; provenance manifest <output>.provenance.json.unity close and the vcs / plugin command groups (see DO NOT); unity upgrade renamed self-update (alias kept); projects create makes Unity Cloud projects by default.open exits 6/OPEN_EDITOR_EXITED on early Editor death (older: always 0); build refuses an already-open project; test --affected; read-only skill show; version --format json; UNITY_NO_CLI_INVOKED_TELEMETRY=1; doctor no longer hangs on macOS keychain prompts; projects verify no longer flags native plug-in folders (.bundle/.framework/.androidlib/.plugin).The safest way to branch is to run <cliPath> --version (beta9+: version --format json) and <cliPath> <command> --help at the start of a session and act on what the binary actually reports.
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.
© Besty0728, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in SkillsForUnity/unity-skills~/skills/unity-cli of Besty0728/Unity-Skills.
Open the folder on GitHubat commit 12a40e4
Unity CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Unity CLI this skillBesty0728/Unity-Skills | 1.8k | — | ~5.9k | Automated safety check: Pass | MIT | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Web CloneJane-xiaoer/claude-skill-web-clone | 1k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Threejs Game Directormajidmanzarpour/threejs-game-skills | 2.4k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Game Asset Generatorhtdt/godogen | 7.1k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Threejs Gameplay Systemsvalkor-ai/loom | 1.2k | 1 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 |
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Jane-xiaoer/claude-skill-web-clone
网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…
majidmanzarpour/threejs-game-skills
Entrypoint for building, upgrading, and finishing Three.js browser games.
htdt/godogen
Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.
valkor-ai/loom
Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…
CyberAgentGameEntertainment/NovaShader
Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.
Besty0728/Unity-Skills
Automate the Unity Editor through a local REST API — scripts, scenes, prefabs, assets, materials, lighting, tests and hundreds of other Editor operations.
Besty0728/Unity-Skills
Edit Unity Animator Controllers and drive runtime parameters
Besty0728/Unity-Skills
Advise on Unity gameplay and system architecture. An agent skill from Besty0728/Unity-Skills.
Besty0728/Unity-Skills
Unified batch and async-job orchestration. An agent skill from Besty0728/Unity-Skills.
Besty0728/Unity-Skills
Drive Unity Behavior behavior graphs and blackboard variables
Besty0728/Unity-Skills
Capture and query the Unity Editor console. An agent skill from Besty0728/Unity-Skills.
Categories
Guide for using the experimental Unity CLI with bound UnitySkills projects. Unity CLI is an agent skill from Besty0728/Unity-Skills.
Unity CLI fits situations like: game Development work in your project.
Run `npx skills add Besty0728/Unity-Skills --skill unity-cli -a claude-code`. Or copy the skill folder (SkillsForUnity/unity-skills~/skills/unity-cli in Besty0728/Unity-Skills) into .claude/skills/unity-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Besty0728/Unity-Skills --skill unity-cli -a codex`. Or copy the skill folder (SkillsForUnity/unity-skills~/skills/unity-cli in Besty0728/Unity-Skills) into .agents/skills/unity-cli in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Besty0728/Unity-Skills --skill unity-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unity-cli, .gemini/skills/unity-cli, .github/skills/unity-cli and .opencode/skills/unity-cli in your project.
SKILL.md names no scripts, command-line tools or credentials: Unity CLI is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Unity CLI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.9k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Unity CLI: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.4k stars) and Game Asset Generator (htdt/godogen, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Besty0728 (a GitHub user) maintains it in Besty0728/Unity-Skills, which has 1,814 GitHub stars. The repository holds 82 skills in this directory. The repository was last updated on October 6, 2026.
Source: Besty0728/Unity-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.