mcpField
U
unity-script

unity-script

github.com/besty0728Development1.9k84 installsUpdated today
Repository

About unity-script

unity-script is a set of skills for managing Unity C# scripts, aimed at developers authoring, inspecting, or refactoring code. It also returns compile diagnostics after writes.

Key features

  1. 01Create individual or batch scripts
  2. 02Replace or append script content
  3. 03Rename, move, and delete scripts
  4. 04Read scripts and search their contents
  5. 05Retrieve compile feedback

Use cases

  1. 01Add script files to a Unity project
  2. 02Search code across scripts
  3. 03Change script content or file layout
  4. 04Check compile errors and their locations

MCP support

MCP clients can call these skills to read and edit C# scripts in a Unity project and retrieve compile diagnostics.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/besty0728/unity-skills --skill unity-script

After installing, type/unity-scriptin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
script_append.md
script_create_batch.md
script_create.md
script_delete.md
script_find_in_file.md
script_get_compile_feedback.md
script_get_info.md
script_list.md
script_move.md
script_read.md
script_rename.md
script_replace.md

Details

From the project README

Triggers

  • Authoring or editing C# code
  • Searching across scripts
  • Refactoring file layout
  • Checking compile errors
  • 编写或编辑 C# 代码、跨脚本搜索、重构文件布局、检查编译错误

Unity Script Skills

Create, edit, move and inspect C# scripts and get their compile result. Parameters come from the schema (recommend includeSchema=true or /skills/schema?names=), which notes the non-obvious ones — never from a skill's name. Execution and dryRun rules: root SKILL.md.

Operating Mode

Read-only SemiAuto skills run directly in every mode: script_read, script_list, script_find_in_file, script_get_info, script_get_compile_feedback. All 7 writers — script_create, script_create_batch, script_replace, script_append, script_rename, script_move, script_delete — are MayTriggerReload + RiskLevel:"high" (a written .cs reloads the domain; script_delete is also Delete), so they are NeverInSemi: Approval and Auto return MODE_FORBIDDEN, and only Bypass or an Allowlist hit runs them. Never request a grant for them → operating mode.

Compile and reload

  • Every write returns at once: {success, status: "accepted", path, jobId, waitUrl, serverAvailability}; compilation follows, and the server is briefly unreachable during the domain reload.
  • One call gets the compile result: GET the returned waitUrl (/jobs/<jobId>?wait=90), e.g. curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "http://localhost:<port>/jobs/<jobId>?wait=90". It answers once compilation settles: job status completed, or failed on compile errors, with diagnostics in resultData.compilation (isCompiling, hasErrors, errorCount, errors: [{type, message, file, line}]). During the reload it may refuse or return 503: repeat the same URL; waitTimedOut: true means GET it again.
  • script_get_compile_feedback(scriptPath) returns the same diagnostics on demand. Fix errors first: component_add finds a new MonoBehaviour only after a clean compile.
  • checkCompile: false skips the diagnostics; diagnosticLimit caps them (default 20).

Shared rules

  • scriptName is the file and class name, without .cs or path separators. Paths (folder, scriptPath, newFolder) are project-relative, starting with Assets/ or Packages/; a missing folder is created. An existing file is never overwritten (Script already exists).
  • script_create writes content verbatim when given (then template / namespaceName are ignored, with a warning); otherwise it fills a template — MonoBehaviour (default), ScriptableObject, Editor, EditorWindow (the last two default to Assets/Editor) — wrapped in namespaceName if set. Any other bare name is rejected (validValues lists these four); text containing code stays a literal template with {CLASS}/{NAMESPACE} filled, but use content for custom classes. A MonoBehaviour or ScriptableObject binds to its file only when the class name equals the file name; content declaring no such type gets a warning.
  • 2+ new scripts → script_create_batch: one domain reload instead of N.

Skills Overview

  • Write: script_create, script_create_batch, script_replace (find/replace, plain or regex), script_append (insert lines), script_rename (file only; the class inside is not renamed), script_move (creates the destination folder), script_delete.
  • Read: script_read, script_list, script_find_in_file (plain or regex, per line), script_get_info (class, base class, public members), script_get_compile_feedback.

Per-skill tables and return shapes: reference/<skill_name>.md — rarely needed, the schema notes the parameters.

DO NOT (common hallucinations):

  • script_edit / script_update do not exist → use script_replace for find-and-replace
  • script_write does not exist → use script_create (new file) or script_replace (modify existing)

Elsewhere: API analysis of a compiled script → script_analyze (perception).

Exact Signatures

Names, parameters, defaults and required flags come from GET /skills/schema?category=Script (or ?names=a,b), not this file.

Common Errors

ErrorTrigger → fix
MISSING_PARAMe.g. scriptName, pattern, find, newName → supply it; the error (or a dryRun) lists all parameters.
SEMANTIC_INVALIDPath separators in scriptName / newName, a path outside Assets/ / Packages/, or the script already exists → fix the name or path, or rename/move the existing file.
TARGET_NOT_FOUNDScript, MonoScript or folder missing → find the right scriptPath with script_list / asset_find.
SKILL_ERRORA filesystem or AssetDatabase move/rename/delete failed → read the message, resolve it, retry.

Transport codes (COMPILING, RATE_LIMIT, ...) → error codes.

Comments

Markdown supported