Thanks for your interest in contributing to UniClaude! This guide covers everything you need to get started.
- Unity 6000.3+ (Unity 6)
- Node.js 18+
- A Claude subscription (Pro or Max) logged in via
claude login(for integration testing only)
-
Clone the repository:
git clone https://github.com/TheArcForge/UniClaude.git
-
Add the package to a Unity 6 project:
- Open Window > Package Manager
- Click + > Add package from disk...
- Select the
package.jsonin the cloned directory
-
Install sidecar dependencies:
cd Sidecar~ npm install -
Build the sidecar (TypeScript to JavaScript):
cd Sidecar~ npm run build
The UniClaude window should now be available under ArcForge > UniClaude.
Editor/
Core/ # Data models, services, indexing, sidecar lifecycle
MCP/ # MCP server, tool dispatch, domain reload strategies
Tools/ # 75+ editor tools (one file per category)
Transport/ # HTTP transport layer
DomainReload/
UI/ # Editor window, chat panel, input, rendering
Input/ # Chat input subsystem
Tests/Editor/ # C# unit tests (NUnit)
MCP/ # MCP tool tests
Sidecar~/ # Node.js bridge (TypeScript)
.claude-plugin/ # Plugin manifest for Agent SDK discovery
skills/ # Architecture skills (10 skills + reference docs)
src/ # Source code
tests/ # TypeScript tests
Directories ending in ~ are ignored by Unity's asset pipeline but included in the package.
Open the Unity Test Runner (Window > General > Test Runner) and run the EditMode tests. All tests are in the ArcForge.UniClaude.Tests.Editor assembly.
From the command line:
Unity -runTests -testPlatform EditMode -projectPath /path/to/your/project -testResults results.xmlcd Sidecar~
npm testThis compiles the test TypeScript and runs the tests using Node.js's built-in test runner.
- All C# code lives under
Editor/and runs in the Unity Editor only (no runtime code). - Assembly definition:
ArcForge.UniClaude.Editor.asmdef - Namespace:
UniClaude.Editor(sub-namespaces for MCP, UI, etc.) - Use
[MCPTool]and[MCPToolParam]attributes to add new tools. SeeEditor/MCP/Tools/for examples.
- Source is in
Sidecar~/src/, compiled output goes toSidecar~/dist/. - After editing TypeScript, rebuild with
npm run buildin theSidecar~/directory. - The sidecar uses Express for HTTP and the Anthropic Agent SDK for Claude integration.
- Create a static method in the appropriate file under
Editor/MCP/Tools/(or create a new file for a new category). - Annotate with
[MCPTool("tool_name", "Description")]. - Add
[MCPToolParam("param", "Description")]to each parameter. - Return
MCPToolResult.Success(...)orMCPToolResult.Error(...). - Add tests in
Tests/Editor/MCP/.
The tool is discovered automatically via reflection at editor startup.
- Fork the repository and create a branch from
main. - Make your changes with clear, focused commits.
- Add or update tests for any changed behavior.
- Ensure all C# and TypeScript tests pass.
- Note any user-facing changes in your PR description — they'll be added to
CHANGELOG.mdwhen the next release is cut. - Open a pull request with a description of what changed and why.
Keep PRs focused on a single concern. Large features should be discussed in an issue first.
Open an issue on GitHub Issues with:
- Unity version and OS
- Steps to reproduce
- Expected vs. actual behavior
- Output from
/healthcheckif relevant
- Follow existing patterns in the codebase.
- XML doc comments on all public types and members.
- Use
PathSandbox.Resolve()/PathSandbox.ResolveWritable()for all file path operations in MCP tools. - Use
Undo.RecordObject()/Undo.RegisterCreatedObjectUndo()for scene/component modifications. - Prefer
MCPToolResult.Success()/MCPToolResult.Error()over throwing exceptions in tools.
By contributing, you agree that your contributions will be licensed under the MIT License.