Install
$ agentstack add skill-devdavv-unity-ai-workflow-uw-unity-debugging ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Unity Debugging
4-phase debugging framework. Also generates the GameDebug wrapper class.
Before You Start
- Check if
GameDebug.csalready exists in the project (search forclass GameDebug). If not, generate it using the template below during project setup. - Read
docs/ProjectConfig.yaml -> mcp.unity_mcp— iftrue, useread_consoleto read Unity console output. - Read
docs/CODING_STANDARDS.mdfor async patterns — bugs in async code often involve missingCancellationTokenor unhandledOperationCanceledException.
4 Phases
Phase 1: Gather Evidence
- Read Unity console (
read_consolevia MCP or ask user for errors). - Reproduce — exact steps to trigger.
- Scope — single script, system interaction, or timing?
- Check
git log -5for recent changes.
Phase 2: Isolate
- Comment out systems to narrow the culprit.
- Add targeted
GameDebug.Logat decision points. - Check common causes:
- Execution order (
AwakevsStartvsOnEnable) - Null reference (destroyed object, unassigned field)
- Unity API called from background thread
- State not reset in
OnDisable/OnDestroy - Physics in
Updateinstead ofFixedUpdate
Phase 3: Hypothesize & Test
- State: "I believe X happens because Y."
- Write a test proving/disproving the hypothesis.
- If test fails -> back to Phase 2.
Phase 4: Fix & Verify
- Implement minimal fix.
- Re-run the hypothesis test.
- Run full test suite for regressions.
- Clean up temp debug logs.
- Commit:
fix({scope}): {root cause description}
GameDebug Wrapper
Generate during project setup. Uses [Conditional("ENABLE_LOGS")] so all calls are stripped in release builds. Includes [CallerFilePath], [CallerMemberName], and [CallerLineNumber] for automatic context — no need to manually describe where a log came from.
using System.Diagnostics;
using System.Runtime.CompilerServices;
public enum LogTopic { General, Gameplay, Audio, UI, Network, Physics, AI }
public static class GameDebug
{
[Conditional("ENABLE_LOGS")]
public static void Log(
string message,
LogTopic topic = LogTopic.General,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "",
[CallerLineNumber] int line = 0) =>
UnityEngine.Debug.Log(Format(topic, message, file, member, line));
[Conditional("ENABLE_LOGS")]
public static void LogWarning(
string message,
LogTopic topic = LogTopic.General,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "",
[CallerLineNumber] int line = 0) =>
UnityEngine.Debug.LogWarning(Format(topic, message, file, member, line));
[Conditional("ENABLE_LOGS")]
public static void LogError(
string message,
LogTopic topic = LogTopic.General,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "",
[CallerLineNumber] int line = 0) =>
UnityEngine.Debug.LogError(Format(topic, message, file, member, line));
private static string Format(
LogTopic topic, string msg, string file, string member, int line) {
var fileName = System.IO.Path.GetFileNameWithoutExtension(file);
return $"[{topic}] {fileName}.{member}:{line} — {msg}";
}
}
Usage: GameDebug.Log("Player spawned", LogTopic.Gameplay); Output: [Gameplay] PlayerController.Start:42 — Player spawned
Add ENABLE_LOGS to Scripting Define Symbols for Development builds only. Customize LogTopic enum per project.
After Debugging
- Write regression test: Use
uw-unity-test-runnerto add a test that catches the bug if it reappears. - Code review: Use
uw-code-reviewto verify the fix doesn't introduce new issues. - Visualize debug data: Use
uw-unity-editor-toolsto add Gizmos or Handles for spatial debugging (visualize raycast paths, trigger volumes, etc.).
Rules
- Always follow the 4-phase framework — never jump to a fix before gathering evidence and forming a hypothesis.
- Use
GameDebugwrapper, never rawDebug.Log/Debug.LogWarning/Debug.LogError. - Clean up all temporary debug logs after the fix is verified.
- Write a regression test for every bug fix.
- If
ProjectConfig.yaml -> mcp.unity_mcpistrue, useread_consolefor console output andrun_teststo verify fixes.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: devdavv
- Source: devdavv/unity-ai-workflow
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.