Skip to content
Back to skills

Profiler

ASecurity

Capture read-only Unity runtime performance snapshots

  • 1,812 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 7, 2026
toolsperformance

Works with

  • cli

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add Besty0728/Unity-Skills --skill profiler --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Profiler?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Profiler
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/besty0728-profiler/badge)](https://www.skillsdirectory.com/skills/besty0728-profiler)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: unity-profiler
description: Capture read-only Unity runtime performance snapshots
---

> **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
- Checking runtime performance
- Taking a profiler snapshot
- Inspecting memory/frame stats
- 查看运行时性能、抓取 profiler 快照、检查内存/帧率统计

# Profiler Skills

Get performance statistics.

## Operating Mode

- **Approval / Auto / Bypass**: 所有 skill 直接执行。本模块**全部**标 `ReadOnly = true, Mode = SkillMode.SemiAuto`,三档模式下都不需要 grant。
- **本模块不含 Delete / PlayMode / Reload / RiskLevel=high 类 skill** —— 没有 `IsForbiddenInSemi` 拦截。
- 注:本组 skill 仅做"瞬时快照"读取,不是 Profiler 录制控制;持续采样请用 Unity Profiler 窗口。

**DO NOT** (common hallucinations):
- `profiler_start` / `profiler_stop` do not exist → profiler skills are read-only snapshots, not recording controls
- `profiler_record` does not exist → use Unity Profiler window for recording
- `profiler_analyze` / `profiler_get_fps` do not exist → use `profiler_get_stats` (FPS, batches, draw calls) or `profiler_get_memory` (heap sizes)

**Routing**:
- For scene performance hints → use `perception` module's `scene_performance_hints`
- For memory info → `debug_get_memory_info` (debug module) or `profiler_get_memory` (this module)
- For optimization suggestions → use `optimization` module

## Skills

### `profiler_get_stats`
Get performance statistics (FPS, Memory, Batches).
**Parameters:** None.

**Returns:**
```json
{
  "fps": 60.0,
  "triangles": 1500,
  "batches": 12,
  "memory": { "totalAllocatedMB": 256.5, ... }
}
```

### `profiler_get_memory`
Get memory usage overview (total allocated, reserved, mono heap).
**Parameters:** None.

**Returns:** `{ success, totalAllocatedMB, totalReservedMB, unusedReservedMB, monoHeapMB, monoUsedMB }`

### `profiler_get_runtime_memory`
Get 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_memory`
Get 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_memory`
Get 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_memory`
Get 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_memory`
Get 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_count`
Count 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_stats`
Get 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_stats`
Get information about all loaded AssetBundles.
**Parameters:** None.

**Returns:** `{ success, count, bundles: [{ name, isStreamedSceneAssetBundle }] }`

## Exact Signatures

Exact names, parameters, defaults, and returns are defined by `GET /skills/schema` or `unity_skills.get_skill_schema()`, not by this file.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.