You are working on Unity Developer Tools, a Cursor IDE plugin for Unity game development. ## Repo structure - `.cursor-plugin/plugin.json` - plugin manifest (version is auto-managed by CI) - `skills/` - 18 SKILL.md files (project setup, MonoBehaviour, ScriptableObjects, physics, UI, shaders, animation, audio, input, networking, editor scripting, performance, render pipelines, ECS/DOTS, visual scripting, testing, addressables, platform targeting) - `rules/` - 8 .mdc rule files (C# conventions, lifecycle, performance, naming, serialization, shaders, visual scripting, security) - `snippets/` - 20 code snippets organized by type (csharp, shaders, visual-scripting) - `templates/` - 5 starter templates (2d-platformer, 3d-fps, ui-menu-system, scriptableobject-architecture, editor-tool) - `mcp-server/` - Python FastMCP server with 4 tools and JSON data files - `docs/` - architecture, roadmap, contributing, getting started - `.github/workflows/` - validate, release, deploy-docs, label-sync, update-unity-api, stale - `mkdocs.yml` - MkDocs Material documentation site configuration - `.github/scripts/` - refresh_unity_data.py (data update script) - `AGENTS.md` - full workflow and contribution guide for AI agents - `CHANGELOG.md` - manually maintained release history ## Commit conventions Use conventional commits. The release workflow auto-bumps version based on prefix: - `feat:` = minor bump - `feat!:` or `BREAKING CHANGE` = major bump - `fix:`, `chore:`, `docs:`, `refactor:`, etc. = patch bump ## Version management Never manually edit the version in `plugin.json` or the README version badge. The release workflow (`release.yml`) auto-updates both on push to main. ## Hard rules - No em dashes or en dashes anywhere. Use hyphens or rewrite. - No hardcoded credentials, tokens, API keys, or passwords. - All C# code should target Unity 6.x conventions. - Use Awaitable over IEnumerator coroutines for new async code. - Use FindFirstObjectByType, not FindObjectOfType (deprecated). - Use HLSLPROGRAM, not CGPROGRAM (deprecated in URP/HDRP). - Use UI Toolkit for editor tools, not IMGUI/OnGUI. - Python in `mcp-server/` must pass `py_compile`. - URP is the default render pipeline. HDRP is maintenance-only. Built-in is deprecated. ## When editing skills or rules - Skills are SKILL.md with YAML frontmatter. Keep them accurate to current Unity 6.x APIs. - Rules are .mdc with frontmatter (`description`, `globs`, `alwaysApply`). They enforce conventions in generated code. - After adding/removing a skill or rule, update `plugin.json` to register it and update counts in README.md. ## When editing the MCP server - All tool logic lives in `mcp-server/server.py`. - Placeholder modules in `mcp-server/tools/` maintain directory structure. - Data files in `mcp-server/data/` provide reference databases. - Dependencies are listed in `mcp-server/requirements.txt`. ## When editing templates - Every template directory needs at minimum a README.md and working C# scripts. - Follow Unity 6 conventions: Awaitable, new Input System, [SerializeField] private. ## When editing snippets - Each snippet has a header comment explaining what it does and when to use it. - Use modern Unity patterns throughout. ## When editing workflows - `release.yml` uses `[skip ci]` on its version bump commit. Don't remove that. - `release.yml` paths-ignore excludes `.github/**`, `docs/**`, `*.md`, `LICENSE`. Content-only changes won't trigger releases. - `release.yml` has a concurrency guard. Only one release can run at a time. - `release.yml` builds and attaches a zip artifact to each GitHub Release. - `update-unity-api.yml` commits with `chore:` prefix (patch bump). Don't change to `feat:`. - `validate.yml` runs 8 parallel jobs on PR and push. Keep checks fast. - `label-sync.yml` auto-labels PRs by path. Add new label mappings when adding top-level directories. - `deploy-docs.yml` builds and deploys the MkDocs Material site to GitHub Pages on every push to main. - When adding a new skill, also add it to the `nav:` section in `mkdocs.yml`. - `CHANGELOG.md` is manually maintained. Update it for significant changes. ## When editing MCP data files - Do not manually edit files that `update-unity-api.yml` manages unless you also update the refresh script. - Each JSON data file has a schema validated by `validate.yml`. Adding or renaming fields requires updating the validation job.