Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/niqibiao/unity-cli-skill/unity-clinpx skills add niqibiao/unity-cli-skill --skill unity-cligit clone --depth 1 https://github.com/niqibiao/unity-cli-skillWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00105 | $0.04335 |
| Opus 5 | $0.00053 | $0.02167 |
| Sonnet 5 | $0.00021 | $0.00867 |
| Haiku 4.5 | $0.00011 | $0.00434 |
Grade B, and why
unity-cli scanned grade B with 1 finding 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 yesterday.
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.
Enumerates other installed skillsmediumAgent snooping
Other skills' SKILL.md files reveal prompts, capabilities and secrets that should be invisible to peers.
Do not enumerate other skill installations or run `cs --help` to rediscover this How it starts
The opening of the file, as written. The whole thing — 329 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Unity CLI
One CLI (cs) drives the Unity Editor/Player. The default authoring surface is
grouped into six agent-facing domains so only the relevant schema enters context;
control-plane and project custom commands use explicit views.
cs list-commands is a control-plane CLI discovery operation, not the canonical
package contract command/list. Its CLI flags are never command/list arguments,
and discovery invocations must not be represented as canonical command routes.
Only use command/list when the user explicitly requests that package contract.
The records returned by discovery carry authoring, custom, or control-plane tiers.
Running cs
cs below means:
python "<SKILL_DIR>/scripts/cli/cs.py"
<SKILL_DIR> is this skill's absolute base directory, supplied when the skill
loads. Expand cs to that absolute command on every call and run it without
changing directory.
Do not enumerate other skill installations or run cs --help to rediscover this
documented surface; this file and its returned Route Cards are complete for
routing.
Do not pass --project during normal use. The CLI locates the Unity project by
walking up from both the working directory and its own committed location.
--project <path> is only for deliberately targeting a different project.
The CLI runs in place; there is no bootstrap or copy step. cs setup is a
convenience, not a gate. If the package is absent or --update is used, setup
writes the shared Packages/manifest.json. Before any write-producing setup,
state the exact source it will add and obtain the user's approval. See
references/setup.md.
Passing inputs
Never pass C# code or structured command parameters inline through the shell. Write a file, then pass its absolute path:
- Raw C# for
execgoes in a.csfile via--file. - Structured parameters for
commandandbatchgo in a JSON file via--input.
The mandatory scratch directory is:
<project-root>/Temp/CSharpConsole/AgentScratch/
What ships with it
56 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- evals/benchmark.py 33 KB runs code
- evals/evals.json 18 KB
- evals/live_contract.py 67 KB runs code
- evals/route_cases.json 25 KB
- evals/routing-output.schema.json 5.7 KB
- evals/routing-trigger-output.schema.json 593 B
- evals/run_routing_current.py 42 KB runs code
- evals/run_routing_editor_probe.py 2.2 KB runs code
- evals/trigger_queries.json 2.4 KB
- references/catalog.md 2.3 KB
- references/commands.md 4.9 KB
- references/exec-code.md 6.3 KB
- references/logs.md 5.4 KB
- references/player.md 6.7 KB
- references/refresh.md 1.8 KB
- references/setup.md 4.1 KB
- references/snippets-audit.md 2.8 KB
- references/snippets.md 5.4 KB
- references/status.md 1.4 KB
- references/tests.md 2.4 KB
- scripts/cli/__init__.py 1.2 KB runs code
- scripts/cli/__main__.py 29 B runs code
- scripts/cli/catalog_store.py 6.9 KB runs code
- scripts/cli/command_discovery.py 28 KB runs code
- scripts/cli/command_preflight.py 25 KB runs code
- scripts/cli/core_bridge.py 34 KB runs code
- scripts/cli/cs.py 125 KB runs code
- scripts/cli/local_fixtures/builtin_registry_snapshot.v1.json 113 KB
- scripts/cli/paths.py 2.7 KB runs code
- scripts/cli/refresh_local_fixture.py 4.2 KB runs code
- scripts/cli/registry_cache.py 4.2 KB runs code
- scripts/cli/registry_protocol.py 27 KB runs code
- scripts/cli/registry_resolver.py 6.4 KB runs code
- scripts/cli/reliability.py 20 KB runs code
- scripts/cli/routing_overlay.json 33 KB
- scripts/cli/snippets/__init__.py 85 B runs code
- scripts/cli/snippets/render.py 5.4 KB runs code
- scripts/cli/snippets/stats.py 7.4 KB runs code
- scripts/cli/snippets/store.py 9.0 KB runs code
- scripts/cli/snippets/validate.py 2.7 KB runs code
- scripts/cli/test_benchmark.py 16 KB runs code
- scripts/cli/test_catalog_v2.py 15 KB runs code
- scripts/cli/test_cli_surface.py 32 KB runs code
- scripts/cli/test_command_discovery.py 43 KB runs code
- scripts/cli/test_command_execution_cli.py 8.4 KB runs code
- scripts/cli/test_command_preflight.py 20 KB runs code
- scripts/cli/test_core_bridge_retry_safety.py 8.2 KB runs code
- scripts/cli/test_core_bridge.py 45 KB runs code
- scripts/cli/test_registry_cli_integration.py 8.9 KB runs code
- scripts/cli/test_registry_protocol.py 5.2 KB runs code
- scripts/cli/test_registry_resolver.py 12 KB runs code
- scripts/cli/test_reliability.py 12 KB runs code
- scripts/cli/test_routing_eval_coverage.py 13 KB runs code
- scripts/cli/test_routing_runner.py 20 KB runs code
- scripts/cli/VERSION 6 B
- scripts/cli/version_check.py 1.7 KB runs code
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.
- yesterday First seen · 329 lines · 105 tokens per session scan B 7c843db37dc3
unity-cli is a skill published in the GitHub repository niqibiao/unity-cli-skill (41 stars, last pushed 8d ago), licensed Apache-2.0. It adds 105 tokens to every session and 4,335 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it B with 1 finding (enumerates other installed skills). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
live-editor
Control and verify a running Unity Editor with the low-token hera-agent-unity CLI.
hera-agent-unity
Control the running Unity Editor via the hera-agent-unity CLI — execute C#, read the console, drive Play Mode, run tests, inspect live types.
assets-shader-get-data
Get detailed data about a shader asset — properties, subshaders, passes, compilation messages, and supported status. Supports token-saving path-scoped reads via paths or viewQuery. Use 'assets-find' with t:Shader or 'assets-shader-list-all' to locate the shader first.
gameobject-component-get
Get detailed information about a specific Component on a GameObject — type, enabled state, and (optionally) serialized fields and properties. Supports token-saving path-scoped reads via paths or viewQuery. Use 'gameobject-find' to list components first.
gameobject-find
Find a specific GameObject in the opened Prefab (preferred when present) or the active Scene. Optionally include editable data, components preview, bounds, and limited hierarchy. Supports token-saving path-scoped reads via paths or viewQuery.
gameobject-component-modify
Modify a specific Component on a GameObject in opened Prefab or in a Scene. Allows direct modification of component fields and properties without wrapping in GameObject structure. Use 'gameobject-component-get' first to inspect the component structure before modifying. Three modification surfaces are available…