Unity Compile Fixer
Overview
This skill enables automatic detection and resolution of Unity C# compilation errors by leveraging VSCode's diagnostic system. It collects real-time errors from the OmniSharp C# language server, analyzes error patterns against a curated database of common Unity issues, and proposes context-aware solutions for user approval before applying fixes.
When to Use This Skill
Use this skill when:
- Unity projects report C# compilation errors in VSCode
- Need to diagnose the root cause of Unity compiler errors (CS* error codes)
- Want automated fix suggestions for common Unity scripting issues
- Working with Unity projects that have version control integration (Git, Unity Collaborate, Plastic SCM)
- Need to handle Unity .meta file conflicts
Example user requests:
- "Check Unity compilation errors and help me fix them"
- "My Unity project has compiler errors, can you diagnose and fix?"
- "Unity scripts are not compiling, what's wrong?"
- "Fix the C# errors in my Unity project"
Workflow
Follow this workflow when the skill is invoked:
1. Detect Compilation Errors
Use the mcp__ide__getDiagnostics tool to collect errors from VSCode:
// Collect all project diagnostics
mcp__ide__getDiagnostics()
// Or target specific Unity script files
mcp__ide__getDiagnostics({ uri: "file:///path/to/PlayerController.cs" })
Filter the diagnostics to focus on Unity-relevant errors:
- Severity: Only process errors with
severity: "Error"(ignore warnings) - Source: Only process
source: "csharp"(OmniSharp C# diagnostics) - Error Codes: Focus on CS* compiler error codes (e.g., CS0246, CS0029, CS1061)
2. Analyze Error Patterns
For each detected error:
-
Extract error information:
- File path and line number from
uriandrange - Error code from
message(e.g., "CS0246") - Full error message text
- File path and line number from
-
Match against error pattern database:
- Load
references/error-patterns.json - Find the error code entry (e.g., CS0246)
- Retrieve common causes and solutions
- Load
-
Read affected file context:
- Use Read tool to load the file with errors
- Examine surrounding code for context
- Identify missing imports, incorrect types, or API misuse
3. Generate Solution Proposals
For each error, create a structured fix proposal:
**Error**: CS0246 at PlayerController.cs:45
**Message**: The type or namespace name 'Rigidbody' could not be found
**Analysis**:
- Missing using directive for UnityEngine namespace
- Common Unity API usage pattern
**Proposed Solution**:
Add `using UnityEngine;` at the top of PlayerController.cs
**Changes Required**:
- File: Assets/Scripts/PlayerController.cs
- Action: Insert using directive at line 1
4. User Confirmation
Before applying any fixes:
-
Present all proposed solutions in a clear, structured format
-
Use AskUserQuestion tool to get user approval:
- List each error and proposed fix
- Allow user to approve all, select specific fixes, or cancel
-
Wait for explicit confirmation - do not apply fixes automatically
5. Apply Approved Fixes
For each approved fix:
- Use Edit tool to modify the affected file
- Preserve code formatting and existing structure
- Apply minimal changes - only fix the specific error
Example:
Edit({
file_path: "Assets/Scripts/PlayerController.cs",
old_string: "public class PlayerController : MonoBehaviour",
new_string: "using UnityEngine;\n\npublic class PlayerController : MonoBehaviour"
})
6. Verify Version Control Status
After applying fixes:
-
Check for .meta file conflicts:
- Use Grep to search for Unity .meta files
- Verify that script GUID hasn't changed
- Check for merge conflict markers (<<<<<<, ======, >>>>>>)
-
Report VCS status:
- List modified files
- Warn about any .meta file issues
- Suggest git operations if needed
7. Re-validate Compilation
After fixes are applied:
- Re-run diagnostics using
mcp__ide__getDiagnostics() - Compare error count before and after
- Report results to the user:
- Number of errors fixed
- Remaining errors (if any)
- Success rate
Error Pattern Database
The skill relies on references/error-patterns.json for error analysis. This database contains:
- Error Code: CS* compiler error code
- Description: Human-readable explanation
- Common Causes: Typical reasons this error occurs in Unity
- Solutions: Step-by-step fix instructions
- Unity-Specific Notes: Unity API considerations
To analyze an error, load the database and match the error code:
Read({ file_path: "references/error-patterns.json" })
// Parse JSON and find errorCode entry
Analysis Scripts
The skill includes Node.js scripts in scripts/ for complex error analysis:
scripts/analyze-diagnostics.js
Processes VSCode diagnostics JSON output and extracts Unity-relevant errors.
Usage:
node scripts/analyze-diagnostics.js <diagnostics-json-file>
Output:
- Filtered list of Unity C# compilation errors
- Error classification by type (missing imports, type errors, API issues)
- Severity and file location information
This script can be run independently or invoked from the SKILL.md workflow when detailed analysis is needed.
Best Practices
When using this skill:
- Start with full project diagnostics - use
mcp__ide__getDiagnostics()without parameters to get complete error picture - Prioritize errors by severity and dependency - fix foundational errors (missing imports) before downstream errors
- Batch related fixes - group errors from the same file for efficient editing
- Always verify VCS status - Unity .meta files are critical for version control
- Re-validate after fixes - ensure errors are actually resolved
Resources
scripts/analyze-diagnostics.js
Node.js script for processing VSCode diagnostics and filtering Unity-specific C# errors.
references/error-patterns.json
Curated database of common Unity C# compilation errors with solutions and Unity-specific guidance.