besty0728/unity-profiler
Capture read-only Unity runtime performance snapshots — sample frame timing, memory, and runtime stats without mutating anything. Use when checking runtime performance, taking a profiler snapshot, or inspecting memory/frame stats, even if the user just says "性能数据" or "看看帧率". 采集只读的 Unity 运行时性能快照(采样帧耗时、内存、运行时统计,不做任何改动);当用户要查看运行时性能、抓取 profiler 快照、或检查内存/帧率统计时使用。
npx skills add https://github.com/Besty0728/Unity-Skills --skill unity-profiler
Get performance statistics.
ReadOnly = true, Mode = SkillMode.SemiAuto,三档模式下都不需要 grant。IsForbiddenInSemi 拦截。DO NOT (common hallucinations):
profiler_start / profiler_stop do not exist → profiler skills are read-only snapshots, not recording controlsprofiler_record does not exist → use Unity Profiler window for recordingprofiler_analyze / profiler_get_fps do not exist → use profiler_get_stats (FPS, batches, draw calls) or profiler_get_memory (heap sizes)Routing:
perception module's scene_performance_hintsdebug_get_memory_info (debug module) or profiler_get_memory (this module)optimization moduleprofiler_get_statsGet performance statistics (FPS, Memory, Batches).
Parameters: None.
Returns:
{
"fps": 60.0,
"triangles": 1500,
"batches": 12,
"memory": { "totalAllocatedMB": 256.5, ... }
}
profiler_get_memoryGet memory usage overview (total allocated, reserved, mono heap).
Parameters: None.
Returns: { success, totalAllocatedMB, totalReservedMB, unusedReservedMB, monoHeapMB, monoUsedMB }
profiler_get_runtime_memoryGet top N objects by runtime memory usage in the scene.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| limit | int | No | 20 | Maximum number of objects to return |
Returns: { success, totalTrackedMB, showing, objects: [{ name, type, sizeKB }] }
profiler_get_texture_memoryGet memory usage of all loaded textures.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| limit | int | No | 50 | Maximum number of textures to return |
Returns: { success, totalCount, totalMB, topTextures: [{ name, type, sizeKB, width, height }] }
profiler_get_mesh_memoryGet memory usage of all loaded meshes.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| limit | int | No | 50 | Maximum number of meshes to return |
Returns: { success, totalCount, totalMB, topMeshes: [{ name, sizeKB, vertices, triangles }] }
profiler_get_material_memoryGet memory usage of all loaded materials.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| limit | int | No | 50 | Maximum number of materials to return |
Returns: { success, totalCount, totalMB, topMaterials: [{ name, shader, sizeKB }] }
profiler_get_audio_memoryGet memory usage of all loaded AudioClips.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| limit | int | No | 50 | Maximum number of clips to return |
Returns: { success, totalCount, totalMB, topClips: [{ name, sizeKB, length, channels, frequency }] }
profiler_get_object_countCount all loaded objects grouped by type.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| topN | int | No | 20 | Number of top types to return |
Returns: { success, totalObjects, topTypes: [{ type, count }] }
profiler_get_rendering_statsGet rendering statistics (batches, triangles, vertices, etc.).
Parameters: None.
Returns: { success, frameTime, renderTime, triangles, vertices, batches, setPassCalls, drawCalls, dynamicBatchedDrawCalls, staticBatchedDrawCalls, instancedBatchedDrawCalls, shadowCasters }
profiler_get_asset_bundle_statsGet information about all loaded AssetBundles.
Parameters: None.
Returns: { success, count, bundles: [{ name, isStreamedSceneAssetBundle }] }
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.
Take besty0728/unity-profiler from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.