UniCli: Instructions file for Claude Code

CLAUDE.md

UniCli CLAUDE.md is an instructions file for Claude Code from yucchiy/UniCli. It costs 6,796 tokens per session, scanned A, original, MIT.

Project instructions for UniCli, a tool for sending commands from a command line to Unity applications, including applications running on a device.

In plain words
What is it for?
Build the shared protocol, client, Unity server, source generator, and sample projects across the supported Unity versions.
Why use it?
They explain the multi-part project and the required build order, reducing mistakes when changing its shared protocol or Unity components.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md. Also seen: mentions .claude-plugin.

This is yucchiy/UniCli's own configuration. It tells Claude Code how to work on UniCli itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything UniCli configures →

Reuse

Borrowing it

Nothing to install: this file belongs to yucchiy/UniCli. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/yucchiy/UniCli/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/yucchiy/UniCli

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for UniCli CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/yucchiy/unicli/claude-md/github.svg)](https://agentmods.dev/instructions/yucchiy/unicli/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/yucchiy/unicli/claude-md"><img src="https://agentmods.dev/badge/instructions/yucchiy/unicli/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for UniCli CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/yucchiy/unicli/claude-md"><img src="https://agentmods.dev/badge/instructions/yucchiy/unicli/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 6,796 This file is loaded in full into every session.
When invoked 6,796 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.06796 $0.06796
Opus 5.5 $0.02718 $0.02718
Sonnet 5.5 $0.01359 $0.01359
Haiku 4.5 $0.00680 $0.00680

Measured 2mo ago against content hash cd3da82d6678, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

UniCli CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 347 lines

How it starts

The opening of the file, as written. The whole thing — 347 lines — stays where its author put it; the contents beside it link to each section on GitHub.

UniCli

Project Structure

  • src: Source code directory
    • src/UniCli.Client: CLI project for unicli
    • src/UniCli.Unity: Unity server implementation for unicli (Unity project)
      • src/UniCli.Unity/Packages/com.yucchiy.unicli-server/Editor: Editor-side command handlers
      • src/UniCli.Unity/Packages/com.yucchiy.unicli-server/Runtime/Remote: Runtime debug commands (runs on device via PlayerConnection)
      • src/UniCli.Unity/Assets/Samples: Sample implementations for the server package
    • src/UniCli.SourceGenerator: Roslyn Source Generator for auto-generating Inspect command handlers
  • src/UniCli.Protocol: Shared type definitions between UniCli.Client and UniCli.Unity
  • samples: Sample Unity projects for multi-version testing
    • samples/UniCli.Samples.Unity2022LTS: Unity 2022.3 LTS project
    • samples/UniCli.Samples.Unity6LTS: Unity 6 (6000.0) LTS project
    • samples/UniCli.Samples.Unity6.5: Unity 6.5 (6000.5) project
  • doc: Documentation directory
    • doc/command-naming-guidelines.md: Command naming conventions for handlers

Quick Commands

# Build Protocol (must be built first to trigger file copy)
dotnet build src/UniCli.Protocol

# Build Client
dotnet build src/UniCli.Client

# Publish Client and test with the built binary
dotnet publish src/UniCli.Client -o .build
UNICLI_PROJECT=src/UniCli.Unity .build/unicli commands --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Editor.Status --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Compile --json

# GameObject operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Create '{"name":"TestObject"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Create '{"name":"Child","parent":"TestObject"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Create '{"name":"WithCollider","components":["BoxCollider"]}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.CreatePrimitive '{"primitiveType":"Cube"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.CreatePrimitive '{"primitiveType":"Sphere","name":"Ball","parent":"Parent"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.GetComponents '{"path":"Main Camera"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.AddComponent '{"path":"Main Camera","typeName":"BoxCollider"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.RemoveComponent '{"componentInstanceId":12345}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Destroy '{"path":"TestObject"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.SetTransform '{"path":"TestObject","position":[1,2,3]}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Duplicate '{"path":"TestObject"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.Rename '{"path":"TestObject","name":"Renamed"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec GameObject.SetParent '{"path":"Child","parentPath":"Parent"}' --json

# Component operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Component.SetProperty '{"componentInstanceId":12345,"propertyPath":"m_IsKinematic","value":"true"}' --json

# AnimatorController operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.Create '{"assetPath":"Assets/Test.controller"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.Inspect '{"assetPath":"Assets/Test.controller"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.AddParameter '{"assetPath":"Assets/Test.controller","name":"Speed","type":"Float"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.RemoveParameter '{"assetPath":"Assets/Test.controller","name":"Speed"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.AddState '{"assetPath":"Assets/Test.controller","name":"Idle"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.AddTransition '{"assetPath":"Assets/Test.controller","sourceStateName":"Idle","destinationStateName":"Walk"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AnimatorController.AddTransitionCondition '{"assetPath":"Assets/Test.controller","sourceStateName":"Idle","destinationStateName":"Walk","parameter":"Speed","mode":"Greater","threshold":0.1}' --json

# Animator operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Animator.Inspect '{"path":"SomeGameObject"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Animator.SetController '{"path":"SomeGameObject","controllerAssetPath":"Assets/Test.controller"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Animator.SetParameter '{"path":"SomeGameObject","name":"Speed","value":"1.5"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Animator.Play '{"path":"SomeGameObject","stateName":"Idle"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Animator.CrossFade '{"path":"SomeGameObject","stateName":"Walk","transitionDuration":0.25}' --json

# Prefab operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Prefab.GetStatus '{"path":"Main Camera"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Prefab.Instantiate '{"assetPath":"Assets/Prefabs/Enemy.prefab"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Prefab.Save '{"path":"Main Camera","assetPath":"Assets/TestPrefab.prefab"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Prefab.Apply '{"path":"MyPrefabInstance"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Prefab.Unpack '{"path":"MyPrefabInstance"}' --json

# Scene operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.GetActive --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Open '{"path":"Assets/Scenes/SampleScene.unity"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Open '{"path":"Assets/Scenes/SampleScene.unity","dirtyAction":"save"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Open '{"path":"Assets/Scenes/Additive.unity","additive":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.SetActive '{"name":"SampleScene"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Save '{"all":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Close '{"name":"Additive"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.New '{"empty":true,"additive":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Screenshot2D '{"lookAt":"Player","offset":[1,0],"size":5,"path":"Screenshots/map.png"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Scene.Screenshot3D '{"lookAt":"Player","yaw":45,"pitch":30,"distance":10,"path":"Screenshots/shot.png"}' --json

# PackageManager operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec PackageManager.GetInfo '{"name":"com.unity.test-framework"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec PackageManager.Update '{"name":"com.unity.test-framework"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec PackageManager.Update '{"name":"com.unity.test-framework","version":"1.4.5"}' --json

# AssetDatabase operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec AssetDatabase.Delete '{"path":"Assets/Prefabs/Old.prefab"}' --json

# Run Unity EditMode tests (default: only failed/skipped results)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec TestRunner.RunEditMode --json

# Run Unity PlayMode tests (default: only failed/skipped results)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec TestRunner.RunPlayMode --json

# Run tests with all results (including passed)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec TestRunner.RunEditMode --resultFilter all --json

# Run tests with stack traces (first 3 lines per failure)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec TestRunner.RunEditMode --stackTraceLines 3 --json

# Run tests with summary counts only (no individual results)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec TestRunner.RunEditMode --resultFilter none --json

# Console logs filtered by type (comma-separated)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Console.GetLog '{"logType":"Warning,Error"}' --json

# Console logs with stack traces (first 3 lines)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Console.GetLog '{"logType":"Error","stackTraceLines":3}' --json

# Build player
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Build --locationPathName "Builds/Test.app" --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Build --locationPathName "Builds/Test.app" --options Development --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Build --locationPathName "Builds/Test.app" --options Development --options ConnectWithProfiler --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Build --locationPathName "Builds/Test-Android.apk" --target Android --scenes "Assets/Scenes/SampleScene.unity" --json

# Compile player scripts for a specific build target
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Compile --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Compile --target Android --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildPlayer.Compile --target iOS --extraScriptingDefines MY_DEFINE --extraScriptingDefines ANOTHER_DEFINE --json

# BuildProfile operations (Unity 6+ only)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.GetActive --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.SetActive '{"path":"Assets/Settings/MyProfile.asset"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.SetActive '{"path":"none"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.Inspect '{"path":"Assets/Settings/MyProfile.asset"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec BuildProfile.Inspect --json

# Connection operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Connection.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Connection.Status --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Connection.Connect '{"id":-1}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Connection.Connect '{"ip":"192.168.1.100"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Connection.Connect '{"deviceId":"DEVICE_SERIAL"}' --json

# Remote debug commands (requires Development Build connected via PlayerConnection)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.Stats"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.SystemInfo"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.GetHierarchy"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.GetLogs","data":"{\"limit\":100}"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.GetScenes"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.FindGameObjects","data":"{\"name\":\"Player\"}"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.GetPlayerPref","data":"{\"key\":\"HighScore\",\"type\":\"int\"}"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Remote.Invoke '{"command":"Debug.Stats","playerId":1}' --json

# Material operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.Create '{"assetPath":"Assets/Materials/MyMat.mat"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.Create '{"assetPath":"Assets/Materials/MyMat.mat","shader":"Standard"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.SetColor '{"guid":"abc123","name":"_Color","value":{"r":1,"g":0,"b":0,"a":1}}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.GetColor '{"guid":"abc123","name":"_Color"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.SetFloat '{"guid":"abc123","name":"_Metallic","value":0.8}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Material.GetFloat '{"guid":"abc123","name":"_Metallic"}' --json

# Settings operations (Inspect via Source Generator, modify via eval)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec PlayerSettings.Inspect --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec EditorSettings.Inspect --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec EditorUserBuildSettings.Inspect --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval 'PlayerSettings.companyName = "MyCompany";' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval 'PlayerSettings.SetScriptingBackend(UnityEditor.Build.NamedBuildTarget.Android, ScriptingImplementation.IL2CPP);' --json

# Type inspection
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Type.List '{"baseType":"UniCli.Server.Editor.Handlers.ICommandHandler"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Type.Inspect '{"typeName":"UnityEditor.PlayerSettings"}' --json

# Dynamic C# code execution (Eval)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval 'return Application.unityVersion;' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval 'return PlayerSettings.productName;' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval "$(cat <<'EOF'
var go = GameObject.Find("Main Camera");
return go.transform.position;
EOF
)" --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli eval "$(cat <<'EOF'
var stats = new MyStats();
stats.objectCount = GameObject.FindObjectsOfType<GameObject>().Length;
return stats;
EOF
)" --declarations "$(cat <<'EOF'
[System.Serializable]
public class MyStats { public int objectCount; }
EOF
)" --json

# NuGet package management (requires NuGetForUnity)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.Install '{"id":"Newtonsoft.Json"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.Install '{"id":"Newtonsoft.Json","version":"13.0.3"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.Install '{"id":"MyPackage","source":"/path/to/local/feed"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.Uninstall '{"id":"Newtonsoft.Json"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.Restore --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.ListSources --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.AddSource '{"name":"LocalFeed","path":"/path/to/local/feed"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec NuGet.RemoveSource '{"name":"LocalFeed"}' --json

# Profiler operations
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.Inspect --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.StartRecording --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.StartRecording '{"deep":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.StartRecording '{"editor":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.StopRecording --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.SaveProfile '{"path":"Profiles/capture.raw"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.LoadProfile '{"path":"Profiles/capture.raw"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.LoadProfile '{"path":"Profiles/capture.raw","keepExistingData":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.GetFrameData --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.GetFrameData '{"frame":10,"limit":5}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.TakeSnapshot --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.TakeSnapshot '{"path":"MemoryCaptures/my_snapshot.snap"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.AnalyzeFrames --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.AnalyzeFrames '{"startFrame":100,"endFrame":200,"topSampleCount":20}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.AnalyzeFrames '{"sampleNameFilter":"BehaviourUpdate"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.FindSpikes '{"frameTimeThresholdMs":16.6}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.FindSpikes '{"gcThresholdBytes":1024}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Profiler.FindSpikes '{"frameTimeThresholdMs":16.6,"gcThresholdBytes":1024,"limit":5}' --json

# Memory snapshot analysis (requires com.unity.memoryprofiler; capture with MemorySnapshot.Capture, Profiler.TakeSnapshot, or the Memory Profiler window)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Capture --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Capture '{"path":"MemoryCaptures/before.snap","flags":["ManagedObjects","NativeObjects","NativeAllocations"]}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Load '{"path":"MemoryCaptures/before.snap","name":"before"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Load '{"path":"MemoryCaptures/after.snap","name":"after"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Status --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Summary --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Summary '{"path":"MemoryCaptures/my_snapshot.snap"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Summary '{"snapshot":"after"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.AllOfMemory '{"snapshot":"after","baseSnapshot":"before","limit":20,"minSize":1048576,"minSizeDelta":1048576}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.AllOfMemory '{"snapshot":"after","includeBreakdownTree":true,"pathFilter":"Native/Unity Subsystems","pathDepth":1,"memoryMetric":"both"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.AllOfMemory '{"snapshot":"after","scope":"managed","typeFilter":"System.","limit":20}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.AllOfMemory '{"snapshot":"after","scope":"native","includeNativeObjects":true,"typeFilter":"Texture2D","nameFilter":"atlas","limit":20}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.TopObjects '{"path":"MemoryCaptures/my_snapshot.snap","groupByType":true}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.TopObjects '{"snapshot":"after","scope":"managed","groupByType":true,"limit":20}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.TopObjects '{"path":"MemoryCaptures/my_snapshot.snap","typeFilter":"Texture2D","limit":20}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Diff --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Diff '{"basePath":"MemoryCaptures/before.snap","targetPath":"MemoryCaptures/after.snap"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Diff '{"baseSnapshot":"before","targetSnapshot":"after","scope":"managed","minSizeDelta":1048576}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Diff '{"scope":"managed","minSizeDelta":1048576}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Analyze '{"snapshot":"after","baseSnapshot":"before","limit":10}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Unload '{"snapshot":"before"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec MemorySnapshot.Unload --json

# Recorder operations (requires Play Mode and com.unity.recorder package)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.StartRecording --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.StartRecording '{"path":"Recordings/test.mp4"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.StartRecording '{"format":"WebM","quality":"High","frameRate":60}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.StartRecording '{"width":1920,"height":1080}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.Status --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Recorder.StopRecording --json

# Screenshot operations (captures the Game View in the current mode; pin with "mode")
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Screenshot.Capture --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Screenshot.Capture '{"path":"Screenshots/test.png"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Screenshot.Capture '{"path":"Screenshots/hires.png","superSize":2}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Screenshot.Capture '{"mode":"edit"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Screenshot.Capture '{"mode":"play"}' --json

# Module management
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Module.List --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Module.Enable '{"name":"Search"}' --json
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Module.Disable '{"name":"Profiler"}' --json

# Compile Unity project (also serves as a build verification for the server)
UNICLI_PROJECT=src/UniCli.Unity .build/unicli exec Compile --json

Read the full file on GitHub · 347 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2mo ago First seen · 347 lines · 6,796 tokens per session scan A cd3da82d6678

Subscribe to this mod's changes

UniCli CLAUDE.md is an instructions file published in the GitHub repository yucchiy/UniCli (258 stars, last pushed 2mo ago), licensed MIT. It adds 6,796 tokens to every session, about $0.0272 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

UniCli CLAUDE.md compared with instructions from other repositories

UniCli CLAUDE.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
UniCli CLAUDE.mdyucchiy/UniCliInstructions file2582mo agoMITA6,796Claude Code
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143kyesterdayMITA7,461Codex, OpenCode
langchain AGENTS.mdlangchain-ai/langchainInstructions file149ktodayMITA4,680Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA5,516GitHub Copilot
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA3,093GitHub Copilot
deepseek-harness AGENTS.mddeepseek-ai/deepseek-harnessInstructions file275k2d agoMITA4,313Codex, OpenCode