Asset import settings — texture/audio/model importers, sprite settings, per-platform overrides, and reimport. Exact signatures via GET /skills/schema.
BY Besty0728UPDATED Oct 27, 2026
INTENDED FOR↗CursorInstall in a listed agent.
instructions.md
---
name: unity-importer
description: Configure asset import settings
---
> **Before calling any skill in this module:** if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via `GET /skills/recommend?includeSchema=true`) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.
## Triggers
- Adjusting how assets import
- Setting texture compression or sprite modes
- Applying per-platform overrides
- 调整资源导入方式、设置贴图压缩或 Sprite 模式、应用分平台覆盖
# Unity Importer Skills
Use this module to change import **settings** for textures, audio, and models that already exist in the project.
> **Batch-first**: Prefer the batch setters when configuring `2+` assets of the same category.
## Guardrails
**Operating Mode** (v1.9 three-tier):
- **Approval** (default): query/getter skills (`texture_get_settings`, `texture_get_info`, `texture_find_assets`, `texture_find_by_size`, `texture_get_platform_settings`, `texture_get_import_settings`, `audio_get_settings`, `audio_get_clip_info`, `audio_find_clips`, `audio_find_sources_in_scene`, `audio_get_source_info`, `audio_get_import_settings`, `model_get_settings`, `model_find_assets`, `model_get_mesh_info`, `model_get_materials_info`, `model_get_animations_info`, `model_get_rig_info`, `model_get_import_settings`, `asset_get_labels`) run directly. Setters / reimport are FullAuto — on `MODE_RESTRICTED`, run the grant protocol.
- **Auto** / **Bypass**: SemiAuto and FullAuto run directly.
- This module contains **no** Delete / PlayMode / Reload / `RiskLevel="high"` skills — nothing auto-classifies as forbidden. Importer mutations are reachable via grant in Approval mode.
- Setting changes do not always apply in memory immediately; call `asset_reimport` / `asset_reimport_batch` when Unity needs to fully refresh the asset.
**DO NOT** (common hallucinations):
- `importer_import` does not exist -> use `asset_import` in the `asset` module to bring files into the project
- `importer_set_format` does not exist -> use the specific texture/audio/model setters
- `importer_get_settings` does not exist -> use the category-specific getters
- Settings changes do not always apply instantly in memory. Reimport may still be required
**Routing**:
- File import or refresh -> `asset`
- Texture settings -> `texture_*`
- Audio settings -> `audio_*`
- Model settings -> `model_*`
- Alternative importer bridge skills -> `texture_set_import_settings`, `audio_set_import_settings`, `model_set_import_settings`
- Force importer refresh -> `asset_reimport` or `asset_reimport_batch`
## Skills
### Texture Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_get_settings` | Read texture importer settings | `assetPath` |
| `texture_set_settings` | Set texture importer settings | `assetPath`, `textureType?`, `maxSize?`, `filterMode?`, `compression?`, `mipmapEnabled?`, `sRGB?`, `readable?`, `wrapMode?` |
| `texture_set_settings_batch` | Batch texture settings | `items` |
| `texture_get_import_settings` | Read minimal importer settings (type/maxSize/compression/filter/srgb/readable/mipmap) | `assetPath` |
| `texture_set_import_settings` | Alternative texture import bridge | similar texture fields |
> **`compression` vocabulary.** Pass the CLR member names of `TextureImporterCompression` — `Uncompressed`, `Compressed`, `CompressedHQ`, `CompressedLQ` — which are also what the getters echo back. The Inspector's wording is accepted as aliases: `None` → `Uncompressed`, `Normal` and `NormalQuality` → `Compressed`, `LowQuality` → `CompressedLQ`, `HighQuality` → `CompressedHQ`; spaces are stripped first, so `"Low Quality"` and `"High Quality"` also work. `texture_set_settings` and `texture_set_import_settings` share this one vocabulary — they used to disagree, so a value that works on one now works on the other. Per-platform `compressionQuality` is a separate `0-100` integer, not this enum. Full field list → [IMPORT_REFERENCE.md](IMPORT_REFERENCE.md).
Query and runtime info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_find_assets` | Search Texture2D assets by AssetDatabase filter | `filter?`, `limit?` (default 50) |
| `texture_get_info` | Inspect dimensions, format, and runtime memory size | `assetPath` |
| `texture_find_by_size` | Find textures in a dimension range (pixels) | `minSize?` (0), `maxSize?` (99999), `limit?` (50) |
Typed / platform overrides:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_set_type` | Switch texture type | `assetPath`, `textureType` (`Default`/`NormalMap`/`GUI`/`Sprite`/`Cursor`/`Cookie`/`Lightmap`/`SingleChannel`/`Shadowmask`/`DirectionalLightmap`; `EditorGUI` aliases `GUI`, and Inspector labels like `"Normal Map"` work as-is) |
| `texture_set_platform_settings` | Override per-platform settings | `assetPath`, `platform` (`Standalone`/`iPhone`/`Android`/`WebGL`), `maxSize?`, `format?` (accepted set is editor-version dependent — take it from `validValues` on a rejection), `compressionQuality?`, `overridden?` |
| `texture_get_platform_settings` | Read per-platform override | `assetPath`, `platform` |
| `texture_set_sprite_settings` | Sprite-specific knobs (PPU, mode) | `assetPath`, `pixelsPerUnit?`, `spriteMode?` (`None`/`Single`/`Multiple`/`Polygon`) |
| `sprite_set_import_settings` | Sprite importer bridge (PPU, packingTag, pivot) | `assetPath`, `spriteMode?` (same four values), `pixelsPerUnit?`, `packingTag?`, `pivotX?`, `pivotY?` |
> **`spriteMode` is the plain `SpriteImportMode` vocabulary — all four members, `None` included.** The two skills differ in what they do around it: `sprite_set_import_settings` forces `textureType` to `Sprite` for `Single`/`Multiple`/`Polygon` and deliberately leaves the texture type alone for `None` (a Sprite-typed texture with no sprite is unusable), and it echoes the resulting `textureType` back. `texture_set_sprite_settings` only writes the mode and pixels-per-unit.
Common texture decisions:
- UI sprites -> `textureType="Sprite"`, usually `mipmapEnabled=false`
- Pixel art -> `filterMode="Point"`
- Runtime CPU reads -> `readable=true` only when necessary
- Platform-tuned builds -> prefer `texture_set_platform_settings` over global `texture_set_settings`
### Audio Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_get_settings` | Read audio importer settings | `assetPath` |
| `audio_set_settings` | Set audio importer settings | `assetPath`, `forceToMono?`, `loadInBackground?`, `loadType?`, `compressionFormat?`, `quality?` |
| `audio_set_settings_batch` | Batch audio settings | `items` |
| `audio_get_import_settings` | Read minimal importer defaults (loadType/format/quality/forceToMono/loadInBackground) | `assetPath` |
| `audio_set_import_settings` | Alternative audio import bridge | similar audio fields |
Clip query and info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_find_clips` | Search `AudioClip` assets by filter | `filter?`, `limit?` (default 50) |
| `audio_get_clip_info` | Inspect length/channels/frequency/samples of a clip | `assetPath` |
Scene runtime (`AudioSource` / `AudioMixer`):
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_add_source` | Add an `AudioSource` to a GameObject | target (`name`/`instanceId`/`path`), `clipPath?`, `playOnAwake?` (false), `loop?` (false), `volume?` (1) |
| `audio_get_source_info` | Read the AudioSource configuration | target |
| `audio_set_source_properties` | Update AudioSource fields | target, `clipPath?`, `volume?`, `pitch?`, `loop?`, `playOnAwake?`, `mute?`, `spatialBlend?`, `priority?` |
| `audio_find_sources_in_scene` | List all AudioSources in the active scene | `limit?` (default 50) |
| `audio_create_mixer` | Create a new `AudioMixer` asset | `mixerName?` (default `NewAudioMixer`), `folder?` (default `Assets`) |
Common audio decisions:
- Long BGM -> `loadType="Streaming"`
- Short SFX -> `loadType="DecompressOnLoad"`
- Memory-sensitive SFX libraries -> consider `forceToMono=true`
- Scene-side AudioSource tuning -> prefer `audio_set_source_properties` over manual component edits
### Model Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_get_settings` | Read model importer settings | `assetPath` |
| `model_set_settings` | Set model importer settings | `assetPath`, `globalScale?`, `meshCompression?`, `isReadable?`, `generateSecondaryUV?`, `animationType?`, `importAnimation?`, `importCameras?`, `importLights?`, `materialImportMode?` |
| `model_set_settings_batch` | Batch model settings | `items` |
| `model_get_import_settings` | Read minimal importer defaults (scale/compression/animationType/importAnimation/materialImportMode) | `assetPath` |
| `model_set_import_settings` | Alternative model import bridge | similar model fields |
Query and info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_find_assets` | Search model assets by filter | `filter?`, `limit?` (default 50) |
| `model_get_mesh_info` | Mesh vertex / triangle / submesh stats | target (`name`/`instanceId`/`path`) or `assetPath` |
| `model_get_materials_info` | Inspect sub-asset materials embedded in the model | `assetPath` |
| `model_get_animations_info` | List animation clips and framerates on the model | `assetPath` |
| `model_get_rig_info` | Read animationType, avatar, skeleton binding info | `assetPath` |
Animation and rig:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_set_animation_clips` | Configure animation clip splits | `assetPath`, `clips` (JSON array of `{name, firstFrame, lastFrame, loop}`) |
| `model_set_rig` | Switch rig/skeleton mode | `assetPath`, `animationType` (`None`/`Legacy`/`Generic`/`Human`), `avatarSetup?` |
> `animationType` rig mode: the CLR enum member is `Human` — `Humanoid` is the Inspector's label for it and is accepted as an alias, so either spelling works. `model_get_rig_info` echoes the CLR name (`Human`) and also returns `isHuman`.
Common model decisions:
- Characters -> `animationType="Human"` (or the `Humanoid` alias) when retargeting is required
- Static props -> disable cameras/lights/animation imports when unused
- Baked-lighting meshes -> enable secondary UVs when appropriate
- After `model_set_rig` or `model_set_animation_clips` -> call `asset_reimport` to refresh clips and avatar
## Reimport Rule
After importer changes, use reimport when you need Unity to fully refresh the asset:
| Skill | Use |
|-------|-----|
| `asset_reimport` | Reimport one asset |
| `asset_reimport_batch` | Reimport assets matching a search scope |
## Minimal Example
```python
import unity_skills
unity_skills.call_skill("texture_set_settings_batch", items=[
{"assetPath": "Assets/UI/icon_play.png", "textureType": "Sprite", "mipmapEnabled": False},
{"assetPath": "Assets/UI/icon_pause.png", "textureType": "Sprite", "mipmapEnabled": False}
])
unity_skills.call_skill("audio_set_settings",
assetPath="Assets/Audio/bgm.mp3",
loadType="Streaming",
compressionFormat="Vorbis",
quality=0.7
)
unity_skills.call_skill("asset_reimport", assetPath="Assets/Audio/bgm.mp3")
```
## Exact Signatures
Exact names, parameters, defaults, and returns are defined by `GET /skills/schema` or `unity_skills.get_skill_schema()`, not by this file.
Load `IMPORT_REFERENCE.md` for extended asset search/query helpers, platform overrides, rig/animation details, and importer-side best practices.
---
name: unity-importer
description: Configure asset import settings
---
> **Before calling any skill in this module:** if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via `GET /skills/recommend?includeSchema=true`) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.
## Triggers
- Adjusting how assets import
- Setting texture compression or sprite modes
- Applying per-platform overrides
- 调整资源导入方式、设置贴图压缩或 Sprite 模式、应用分平台覆盖
# Unity Importer Skills
Use this module to change import **settings** for textures, audio, and models that already exist in the project.
> **Batch-first**: Prefer the batch setters when configuring `2+` assets of the same category.
## Guardrails
**Operating Mode** (v1.9 three-tier):
- **Approval** (default): query/getter skills (`texture_get_settings`, `texture_get_info`, `texture_find_assets`, `texture_find_by_size`, `texture_get_platform_settings`, `texture_get_import_settings`, `audio_get_settings`, `audio_get_clip_info`, `audio_find_clips`, `audio_find_sources_in_scene`, `audio_get_source_info`, `audio_get_import_settings`, `model_get_settings`, `model_find_assets`, `model_get_mesh_info`, `model_get_materials_info`, `model_get_animations_info`, `model_get_rig_info`, `model_get_import_settings`, `asset_get_labels`) run directly. Setters / reimport are FullAuto — on `MODE_RESTRICTED`, run the grant protocol.
- **Auto** / **Bypass**: SemiAuto and FullAuto run directly.
- This module contains **no** Delete / PlayMode / Reload / `RiskLevel="high"` skills — nothing auto-classifies as forbidden. Importer mutations are reachable via grant in Approval mode.
- Setting changes do not always apply in memory immediately; call `asset_reimport` / `asset_reimport_batch` when Unity needs to fully refresh the asset.
**DO NOT** (common hallucinations):
- `importer_import` does not exist -> use `asset_import` in the `asset` module to bring files into the project
- `importer_set_format` does not exist -> use the specific texture/audio/model setters
- `importer_get_settings` does not exist -> use the category-specific getters
- Settings changes do not always apply instantly in memory. Reimport may still be required
**Routing**:
- File import or refresh -> `asset`
- Texture settings -> `texture_*`
- Audio settings -> `audio_*`
- Model settings -> `model_*`
- Alternative importer bridge skills -> `texture_set_import_settings`, `audio_set_import_settings`, `model_set_import_settings`
- Force importer refresh -> `asset_reimport` or `asset_reimport_batch`
## Skills
### Texture Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_get_settings` | Read texture importer settings | `assetPath` |
| `texture_set_settings` | Set texture importer settings | `assetPath`, `textureType?`, `maxSize?`, `filterMode?`, `compression?`, `mipmapEnabled?`, `sRGB?`, `readable?`, `wrapMode?` |
| `texture_set_settings_batch` | Batch texture settings | `items` |
| `texture_get_import_settings` | Read minimal importer settings (type/maxSize/compression/filter/srgb/readable/mipmap) | `assetPath` |
| `texture_set_import_settings` | Alternative texture import bridge | similar texture fields |
> **`compression` vocabulary.** Pass the CLR member names of `TextureImporterCompression` — `Uncompressed`, `Compressed`, `CompressedHQ`, `CompressedLQ` — which are also what the getters echo back. The Inspector's wording is accepted as aliases: `None` → `Uncompressed`, `Normal` and `NormalQuality` → `Compressed`, `LowQuality` → `CompressedLQ`, `HighQuality` → `CompressedHQ`; spaces are stripped first, so `"Low Quality"` and `"High Quality"` also work. `texture_set_settings` and `texture_set_import_settings` share this one vocabulary — they used to disagree, so a value that works on one now works on the other. Per-platform `compressionQuality` is a separate `0-100` integer, not this enum. Full field list → [IMPORT_REFERENCE.md](IMPORT_REFERENCE.md).
Query and runtime info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_find_assets` | Search Texture2D assets by AssetDatabase filter | `filter?`, `limit?` (default 50) |
| `texture_get_info` | Inspect dimensions, format, and runtime memory size | `assetPath` |
| `texture_find_by_size` | Find textures in a dimension range (pixels) | `minSize?` (0), `maxSize?` (99999), `limit?` (50) |
Typed / platform overrides:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `texture_set_type` | Switch texture type | `assetPath`, `textureType` (`Default`/`NormalMap`/`GUI`/`Sprite`/`Cursor`/`Cookie`/`Lightmap`/`SingleChannel`/`Shadowmask`/`DirectionalLightmap`; `EditorGUI` aliases `GUI`, and Inspector labels like `"Normal Map"` work as-is) |
| `texture_set_platform_settings` | Override per-platform settings | `assetPath`, `platform` (`Standalone`/`iPhone`/`Android`/`WebGL`), `maxSize?`, `format?` (accepted set is editor-version dependent — take it from `validValues` on a rejection), `compressionQuality?`, `overridden?` |
| `texture_get_platform_settings` | Read per-platform override | `assetPath`, `platform` |
| `texture_set_sprite_settings` | Sprite-specific knobs (PPU, mode) | `assetPath`, `pixelsPerUnit?`, `spriteMode?` (`None`/`Single`/`Multiple`/`Polygon`) |
| `sprite_set_import_settings` | Sprite importer bridge (PPU, packingTag, pivot) | `assetPath`, `spriteMode?` (same four values), `pixelsPerUnit?`, `packingTag?`, `pivotX?`, `pivotY?` |
> **`spriteMode` is the plain `SpriteImportMode` vocabulary — all four members, `None` included.** The two skills differ in what they do around it: `sprite_set_import_settings` forces `textureType` to `Sprite` for `Single`/`Multiple`/`Polygon` and deliberately leaves the texture type alone for `None` (a Sprite-typed texture with no sprite is unusable), and it echoes the resulting `textureType` back. `texture_set_sprite_settings` only writes the mode and pixels-per-unit.
Common texture decisions:
- UI sprites -> `textureType="Sprite"`, usually `mipmapEnabled=false`
- Pixel art -> `filterMode="Point"`
- Runtime CPU reads -> `readable=true` only when necessary
- Platform-tuned builds -> prefer `texture_set_platform_settings` over global `texture_set_settings`
### Audio Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_get_settings` | Read audio importer settings | `assetPath` |
| `audio_set_settings` | Set audio importer settings | `assetPath`, `forceToMono?`, `loadInBackground?`, `loadType?`, `compressionFormat?`, `quality?` |
| `audio_set_settings_batch` | Batch audio settings | `items` |
| `audio_get_import_settings` | Read minimal importer defaults (loadType/format/quality/forceToMono/loadInBackground) | `assetPath` |
| `audio_set_import_settings` | Alternative audio import bridge | similar audio fields |
Clip query and info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_find_clips` | Search `AudioClip` assets by filter | `filter?`, `limit?` (default 50) |
| `audio_get_clip_info` | Inspect length/channels/frequency/samples of a clip | `assetPath` |
Scene runtime (`AudioSource` / `AudioMixer`):
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `audio_add_source` | Add an `AudioSource` to a GameObject | target (`name`/`instanceId`/`path`), `clipPath?`, `playOnAwake?` (false), `loop?` (false), `volume?` (1) |
| `audio_get_source_info` | Read the AudioSource configuration | target |
| `audio_set_source_properties` | Update AudioSource fields | target, `clipPath?`, `volume?`, `pitch?`, `loop?`, `playOnAwake?`, `mute?`, `spatialBlend?`, `priority?` |
| `audio_find_sources_in_scene` | List all AudioSources in the active scene | `limit?` (default 50) |
| `audio_create_mixer` | Create a new `AudioMixer` asset | `mixerName?` (default `NewAudioMixer`), `folder?` (default `Assets`) |
Common audio decisions:
- Long BGM -> `loadType="Streaming"`
- Short SFX -> `loadType="DecompressOnLoad"`
- Memory-sensitive SFX libraries -> consider `forceToMono=true`
- Scene-side AudioSource tuning -> prefer `audio_set_source_properties` over manual component edits
### Model Route
Import settings:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_get_settings` | Read model importer settings | `assetPath` |
| `model_set_settings` | Set model importer settings | `assetPath`, `globalScale?`, `meshCompression?`, `isReadable?`, `generateSecondaryUV?`, `animationType?`, `importAnimation?`, `importCameras?`, `importLights?`, `materialImportMode?` |
| `model_set_settings_batch` | Batch model settings | `items` |
| `model_get_import_settings` | Read minimal importer defaults (scale/compression/animationType/importAnimation/materialImportMode) | `assetPath` |
| `model_set_import_settings` | Alternative model import bridge | similar model fields |
Query and info:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_find_assets` | Search model assets by filter | `filter?`, `limit?` (default 50) |
| `model_get_mesh_info` | Mesh vertex / triangle / submesh stats | target (`name`/`instanceId`/`path`) or `assetPath` |
| `model_get_materials_info` | Inspect sub-asset materials embedded in the model | `assetPath` |
| `model_get_animations_info` | List animation clips and framerates on the model | `assetPath` |
| `model_get_rig_info` | Read animationType, avatar, skeleton binding info | `assetPath` |
Animation and rig:
| Skill | Use | Key parameters |
|-------|-----|----------------|
| `model_set_animation_clips` | Configure animation clip splits | `assetPath`, `clips` (JSON array of `{name, firstFrame, lastFrame, loop}`) |
| `model_set_rig` | Switch rig/skeleton mode | `assetPath`, `animationType` (`None`/`Legacy`/`Generic`/`Human`), `avatarSetup?` |
> `animationType` rig mode: the CLR enum member is `Human` — `Humanoid` is the Inspector's label for it and is accepted as an alias, so either spelling works. `model_get_rig_info` echoes the CLR name (`Human`) and also returns `isHuman`.
Common model decisions:
- Characters -> `animationType="Human"` (or the `Humanoid` alias) when retargeting is required
- Static props -> disable cameras/lights/animation imports when unused
- Baked-lighting meshes -> enable secondary UVs when appropriate
- After `model_set_rig` or `model_set_animation_clips` -> call `asset_reimport` to refresh clips and avatar
## Reimport Rule
After importer changes, use reimport when you need Unity to fully refresh the asset:
| Skill | Use |
|-------|-----|
| `asset_reimport` | Reimport one asset |
| `asset_reimport_batch` | Reimport assets matching a search scope |
## Minimal Example
```python
import unity_skills
unity_skills.call_skill("texture_set_settings_batch", items=[
{"assetPath": "Assets/UI/icon_play.png", "textureType": "Sprite", "mipmapEnabled": False},
{"assetPath": "Assets/UI/icon_pause.png", "textureType": "Sprite", "mipmapEnabled": False}
])
unity_skills.call_skill("audio_set_settings",
assetPath="Assets/Audio/bgm.mp3",
loadType="Streaming",
compressionFormat="Vorbis",
quality=0.7
)
unity_skills.call_skill("asset_reimport", assetPath="Assets/Audio/bgm.mp3")
```
## Exact Signatures
Exact names, parameters, defaults, and returns are defined by `GET /skills/schema` or `unity_skills.get_skill_schema()`, not by this file.
Load `IMPORT_REFERENCE.md` for extended asset search/query helpers, platform overrides, rig/animation details, and importer-side best practices.
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
Creates comprehensive frontend UI/UX designs including user interfaces, design systems, component libraries, responsive layouts, and accessibility implementations. Produces wireframes, mockups, design specifications, and implementation guidelines. Use when designing user interfaces, creating desi...
Expert in building scalable design systems with Atomic Design, design tokens, and theming infrastructure. Use when creating component libraries, implementing dark mode, or establishing typography and color systems. Covers multi-brand support, Storybook-driven development, and accessibility-first ...
Deep CSS analysis tool for understanding specificity, cascade order, inheritance chains, and computed styles. Visualizes CSS complexity and suggests simplifications. Use when debugging specificity issues or understanding CSS behavior.