batihandev/unity-mcp-skills/test
- community
Checking that the SKILL.md file is still in the repository.
Use when users want to run Unity tests or read test results.
Install
npx vskill@latest install batihandev/unity-mcp-skills/testSKILL.md
Test Skills
Overview
Kick off Unity tests and read their XML reports. Recipes are stateless fire-and-forget + read pairs — there is no job ID, no polling loop inside a single Unity_RunCommand. Trigger a run in one call, read TestResults/*.xml in a later call.
Mental model
- Install [`tooling/test/test_runner_tool`](../../tooling/test/test_runner_tool.md) first, once
per project, and start every run through it. Do not register a result callback from a Unity_RunCommand body: such a callback can never be cleaned up, and each one rewrites its own old report with every later run's results, so a report captured as "red" becomes a copy of a later green one. It cannot be repaired in place — the failed approaches are listed under Why not inline; do not re-attempt them.
- Trigger:
test_runortest_run_by_namecallsProjectTestRunner.Run(...), which returns the
report path immediately. TestRunnerApi.Execute writes no file on its own; the tool's single permanent callback writes it when the run finishes.
- Use a fresh report filename per run, and pass fully-qualified test names. A bare class
name matches zero tests, and a run of zero tests reports as a pass — always assert total is non-zero before believing a green.
- Read: parse the report yourself once it has settled.
test_get_result,
test_get_last_result and test_get_summary below are recipe templates under `recipes/test/`, not callable MCP tools — adapt one into a Unity_RunCommand body, or just parse the XML from the shell, which is usually less work: python3 -c "import xml.etree.ElementTree as ET;print(ET.parse('TestResults/<name>.xml').getroot().attrib)".
Polling across calls is the caller's job, not a recipe's. Only one Test Runner run should be active at a time — the tool returns an ERROR: string if a run it started is still pending. Wait for the report to be whole and fresh — the poll loop in `test_run` — before starting the next.
Precondition: the Editor must be open and responsive on the intended project before triggering.
PlayMode caveat: a PlayMode run may trigger a domain reload that discards the in-memory callback before it fires, so no XML is written. For reliable PlayMode reports, disable domain reload for the run or use a persistent (compiled) editor runner. EditMode runs do not reload the domain.
Common Mistakes
DO NOT (common hallucinations):
test_run_alldoes not exist → usetest_runortest_run_by_name.test_create_templatedoes not exist → usetest_create_editmodeor
test_create_playmode.
test_get_statusdoes not exist → usetest_get_result(reads the XML,
stateless).
- There is no
jobIdanywhere. If older docs mention one, ignore them. - There is no
test_cancel— UnityTestRunnerApihas no public hard-cancel
surface.
- There is no
test_smoke_skills— it depended on an upstream REST skill
registry that isn't in this pack.
Routing:
- For compile error checking →
editor_get_state(isCompilingfield). - For test script creation →
test_create_editmode/test_create_playmode,
then edit via the script module.
Skills
test_run
Kick off tests. Returns { success, started, mode, filter, resultsPath } immediately; the callback writes TestResults/<mode>-mcp.xml when the run ends.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testMode | string | No | EditMode | EditMode or PlayMode. | |
| filter | string | No | null | Test-name substring forwarded as Filter.testNames[0]. |
test_run_by_name
Kick off a single class or fully-qualified method. Returns { success, started, testName, mode, resultsPath }; the callback writes TestResults/<mode>-mcp.xml when the run ends.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testName | string | Yes | - | Exact class name or Ns.Class.Method. | |
| testMode | string | No | EditMode | EditMode or PlayMode. |
test_get_result
Read the newest TestResults/<mode>-*.xml and return parsed counts.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testMode | string | No | EditMode | Which XML family to filter on. |
Returns: { success, file, total, passed, failed, skipped, inconclusive, failedNames, startTime, endTime, durationSeconds }
test_get_last_result
Newest XML across all modes. No parameters.
Returns: { success, file, mode, total, passed, failed, skipped, inconclusive, failedNames, startTime, endTime, durationSeconds }
test_get_summary
Aggregate every XML report under TestResults/. No parameters.
Returns: { success, totalRuns, totalPassed, totalFailed, totalSkipped, totalInconclusive, allFailedTests, files }
test_list
List available tests.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testMode | string | No | EditMode | EditMode or PlayMode. | |
| limit | int | No | 100 | Max tests to list. |
test_list_categories
List test categories.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testMode | string | No | EditMode | EditMode or PlayMode. |
test_create_editmode
Write an EditMode test template synchronously.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testName | string | Yes | - | Class name. No /, \, ... | |
| folder | string | No | Assets/Tests/Editor | Must start with Assets/ or Packages/. |
Returns: { success, path, testName }
test_create_playmode
Write a PlayMode test template synchronously.
| Parameter | Type | Required | Default | Description | |
|---|---|---|---|---|---|
| testName | string | Yes | - | Class name. No /, \, ... | |
| folder | string | No | Assets/Tests/Runtime | Must start with Assets/ or Packages/. |
Returns: { success, path, testName }
RunCommand Examples
Recipe path rule: ../../recipes/test/<command>.md
See `../../recipes/test/<command>.md` for C# templates.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/test/SKILL.md
Popularity
- Repository stars
- 4
- 7-day trend score
- 8
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/batihandev/unity-mcp-skills/test)