addressables-design
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Clean up and audit a Unity project
Claude Code
$ npx -y skills add Besty0728/Unity-Skills --skill cleaner --agent claude-code
Codex
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a codex -y
Cursor
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a cursor -y
Gemini CLI
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a gemini-cli -y
GitHub Copilot
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a github-copilot -y
OpenCode
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a opencode -y
Windsurf
$ npx skills add Besty0728/Unity-Skills --skill cleaner -a windsurf -y
name: unity-cleaner description: Clean up and audit a Unity project
Find and clean up project bloat: unused, duplicate, missing-reference and empty assets, large assets, asset usage and dependency trees. The module reports and does not delete, except through the two-step `cleaner_delete_assets` and `cleaner_delete_empty_folders`. Parameters come from the schema (`GET /skills/schema?category=Cleaner&wire=v2`); execution and dryRun rules: root [SKILL.md](../../SKILL.md).
| Skill | Description | |-|-| | `cleaner_find_unused_assets` | Find assets not referenced by others | | `cleaner_find_duplicates` | Find duplicate files by content hash | | `cleaner_find_missing_references` | Find missing scripts/asset references | | `cleaner_delete_assets` | Delete assets via two-step confirmToken (preview → confirm) | | `cleaner_get_asset_usage` | Find what references a specific asset | | `cleaner_find_empty_folders` | Find empty folders in the project | | `cleaner_find_large_assets` | Find largest assets by file size | | `cleaner_delete_empty_folders` | Delete all empty folders | | `cleaner_fix_missing_scripts` | Remove missing script components from GameObjects | | `cleaner_get_dependency_tree` | Get dependency tree for an asset |
Find potentially unused assets of a specific type.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `assetType` | string | No | "Material" | Asset type filter | | `searchPath` | string | No | "Assets" | Search path | | `limit` | int | No | 100 | Max results |
**Returns**: `{success, assetType, potentiallyUnusedCount, assets: [{path, name, type, sizeBytes}]}`
curl -s "http://localhost:<port>/skill/cleaner_find_unused_assets?expectProject=<project>" -d '{"assetType":"Material"}'Unused textures in one folder:
curl -s "http://localhost:<port>/skill/cleaner_find_unused_assets?expectProject=<project>" -d '{"assetType":"Texture2D","searchPath":"Assets/Textures"}'Find duplicate files by MD5 hash.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `assetType` | string | No | "Texture2D" | Asset type | | `searchPath` | string | No | "Assets" | Search path | | `limit` | int | No | 50 | Max groups |
**Returns**: `{success, duplicateGroupCount, totalWastedBytes, totalWastedMB, groups: [{count, sizeBytes, wastedBytes, files}], skipped: [{path, reason}]}` — `skipped` lists files that could not be read for hashing, so they are not silently missing from the groups.
curl -s "http://localhost:<port>/skill/cleaner_find_duplicates?expectProject=<project>" -d '{"assetType":"Texture2D"}'Find components with missing scripts or null references.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `includeInactive` | bool | No | true | Include inactive objects |
**Returns**: `{success, issueCount, missingScripts, missingReferences, issues: [{type, gameObject, path, ...}]}`
curl -s "http://localhost:<port>/skill/cleaner_find_missing_references?expectProject=<project>" -d '{}'Delete specified assets with **two-step confirmation**.
Both steps use this table. Step 1 sends `paths`; step 2 sends only `confirmToken`.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `paths` | string[] | Step 1 | Asset paths to preview; step 2 deletes exactly the paths captured by the token | | `confirmToken` | string | Step 2 | Token from the preview; valid 5 minutes |
**Returns** on preview (step 1): `{success, action: "preview", totalAssets, existingAssets, totalBytes, totalMB, confirmToken, message, expiresIn, assetsToDelete: [{path, exists, sizeBytes, sizeMB}]}`
**Returns** on confirm (step 2): `{success, action: "deleted", deletedCount, totalMB, message, results: [{path, deleted}]}`
Step 1, preview (no `confirmToken`):
curl -s "http://localhost:<port>/skill/cleaner_delete_assets?expectProject=<project>" -d '{"paths":["Assets/Unused/mat1.mat","Assets/Unused/mat2.mat"]}'Step 2, confirm with the token from step 1 (valid 5 minutes):
curl -s "http://localhost:<port>/skill/cleaner_delete_assets?expectProject=<project>" -d '{"confirmToken":"<token from preview>"}'Find what objects reference a specific asset.
REST API-based AI-driven Unity Editor Automation Engine Let AI control Unity scenes directly through Skills 🎉 We are now indexed by DeepWiki! Got questions? Check out the AI-generated docs → The current official maintenance baseline is Unity 2022.3+.
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based)
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.