Profiler Capture Frame
IvanMurzak/Unity-MCP
Capture the current frame's timing info (delta time, FPS, frame counts, runtime).
Finds performance bottlenecks, measures them against frame, draw-call and memory budgets, and ranks the optimization recommendations.
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profile --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/perf-profile .claude/skills/perf-profile && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .claude/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profileType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profile --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/perf-profile .agents/skills/perf-profile && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .agents/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profile --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/perf-profile .cursor/skills/perf-profile && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .cursor/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Donchitos/Claude-Code-Game-Studios.git --path .claude/skills/perf-profile--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profile --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/perf-profile .gemini/skills/perf-profile && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .gemini/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profileInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/perf-profile .github/skills/perf-profile && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .github/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Donchitos/Claude-Code-Game-Studios perf-profile --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/perf-profile .opencode/skills/perf-profile && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "perf-profile" agent skill from https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/perf-profile into .opencode/skills/perf-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf-profile", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
perf-profileFinds performance bottlenecks, measures them against frame, draw-call and memory budgets, and ranks the optimization recommendations.
The skill profiles a game against the budgets in the project config: target framerate, frame time in milliseconds, draw call limit and memory ceiling. A `performance.enforce` setting decides what a violation means. At the default `warn` level, violations are reported as findings, and CI logs them without failing.
Before reporting, it lists its inputs, such as profiler output, test results and source code, and marks each as found or absent. Missing data becomes a NOT ASSESSED section instead of an estimate, which prevents false passes like claiming headroom when no profiler data or budget exists. The result is a set of findings with ranked optimization recommendations.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b21fa0f. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGlobGrepWriteBashBash(bash "*/.claude/skills/perf-profile/../../hooks/yaml-helper.sh" resolve_config *)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Game Performance Profiler loads about 2.5k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 1,171 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Glob, Grep, Write, Bash, Bash(bash "*/.claude/skills/perf-profile/../../hooks/yaml-helper.sh" Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Donchitos/Claude-Code-Game-Studios at commit b21fa0f, republished under its MIT licence (© Donchitos). 1,171 words, ~2,483 tokens.
.claude/skills/perf-profile/SKILL.md (or your agent's skills folder).!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys performance.enforce,automation
Resolved above — use as-is. No block → defaults in
.claude/docs/config-resolution.md.
Every AskUserQuestion call follows .claude/docs/automation-modes.md
(collaborative asks always · guided major-only · autonomous logs and proceeds;
automation_always_ask categories always prompt).
If the inputs this skill needs do not exist, the answer is "could not run" — not a filled-in report. Check first, and stop if the check fails.
FOUND or ABSENT — not "assumed present".NOT ASSESSED — NO DATA. Do not estimate it, do not infer it from an
adjacent artifact, and do not leave a mandated cell to be filled by whoever
reads the template next.NOT ASSESSED — NO DATA as the whole verdict, naming what was missing and
which skill produces it.A verdict of NOT ASSESSED is a success. It is the correct, useful answer to
"what does the data say?" when there is no data. The failure mode this prevents is
specific and has been observed in practice: report templates whose verdict
enum had no "could not run" state produced false clean passes — an asset audit
returning COMPLIANT on a project with no assets and no standards, and a
performance profile reporting ">99% headroom against a 16.67ms budget" with zero
profiler data and no budget ever set.
Absence of evidence is never evidence of absence. A scan that finds no matches because there are no files to scan has not verified anything. Say which of the two happened — a reader cannot tell from a green result.
performance.enforce decides what a budget violation means in this run. It
does not change which budgets are measured — performance.target_framerate,
frame_budget_ms, draw_call_limit and memory_ceiling_mb are profiled the
same way at every level:
| Value | Effect on this profile's findings |
|---|---|
warn (default) | Violations are reported as findings. They do not block; CI logs them without failing. |
block | Violations are blockers. Say so explicitly in the report — a block project treats an over-budget system as release-stopping, and /gate-check will FAIL the Polish gate on it. |
off | Budgets are informational only. Still report measured values, but do not raise violations as findings or recommendations to fix. |
Only warn, block and off are recognized. Surface any other value to the
user and fall back to warn rather than guessing.
The value is locally overridable (
/settings --local performance.enforce=block), so use the resolved block above rather than readingproject.yaml— a teammate's stricter local setting is meant to bite on their machine only.
Read the argument:
full → run a comprehensive profile across all systemsRead the committed budgets from config first — they are the project's record of what it agreed to, and design docs are the fallback, not the source:
source "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/yaml-helper.sh" 2>/dev/null
get_effective_yaml_key performance.target_framerate
get_effective_yaml_key performance.frame_budget_ms
get_effective_yaml_key performance.draw_call_limit
get_effective_yaml_key performance.memory_ceiling_mbWritten as four literal keys rather than a loop over leaf names, deliberately. The dead-settings audit matches the full dotted key, so a loop building
performance.$kleaves three of the four spelled nowhere and the audit reports them DEAD while this skill reads them. Spell each key out in full.
Resolve these budgets from
project.yaml, not from prose. Phase 0 above states these four budgets "are profiled the same way at every level". Sending the reader to "design docs or CLAUDE.md" instead means a user who setperformance.target_framerate: 60inproject.yamlhas it ignored by the one skill that profiles against budgets. The keys resolve correctly — this phase has to actually ask for them.
Then fall back to design docs or CLAUDE.md for anything config does not carry:
A metric with no committed budget is NOT ASSESSED, not a pass. Do not
measure against the template's [16.67ms] placeholder — an unset budget is not
a budget that was met, and reporting headroom against a number nobody chose is
the exact fabrication this skill's own header warns about.
CPU Profiling Targets:
_process() / Update() / Tick() functions — list all and estimate costMemory Profiling Targets:
Rendering Targets (if applicable):
I/O Targets:
Write the report to production/polish/[scope]-report-[date].md, asking first
per the Collaboration Protocol: "May I write this profiling report to
production/polish/[scope]-report-[date].md?" Create the directory if absent.
Name the destination — do not just render the template into the conversation. A profile that lives only in the transcript is gone the moment the session ends, and no two runs can be compared.
production/polish/is the same location/team-polishwrites, deliberately: a profile taken by either route belongs in one place, or the comparison this skill exists to enable cannot be made.If a
NOT ASSESSEDsection survives into the report, keep it in the written file. A profile whose gaps are edited out on the way to disk reads, later, as a complete measurement.
## Performance Profile: [System or Full]
Generated: [Date]
### Performance Budgets
| Metric | Budget | Estimated Current | Status |
|--------|--------|-------------------|--------|
| Frame time | [16.67ms] | [estimate] | [OK/WARNING/OVER/NOT ASSESSED] |
| Memory | [target] | [estimate] | [OK/WARNING/OVER/NOT ASSESSED] |
| Load time | [target] | [estimate] | [OK/WARNING/OVER/NOT ASSESSED] |
| Draw calls | [target] | [estimate] | [OK/WARNING/OVER/NOT ASSESSED] |
### Hotspots Identified
| # | Location | Issue | Estimated Impact | Fix Effort |
|---|----------|-------|------------------|------------|
### Optimization Recommendations (Priority Order)
1. **[Title]** — [Description]
- Location: [file:line]
- Expected gain: [estimate]
- Risk: [Low/Med/High]
- Approach: [How to implement]
### Quick Wins (< 1 hour each)
- [Simple optimization 1]
### Requires Investigation
- [Area that needs actual runtime profiling to confirm impact]Output the report with a summary: top 3 hotspots, estimated headroom against
each budget that is set — for a metric with none, no budget set — headroom not assessed — and recommended next action.
Activate this phase only if any hotspot has Fix Effort rated M or L.
Present significant-effort items and ask the user to choose for each:
/scope-check [feature] to analyze trade-offs)/architecture-decision)If multiple items are deferred to Polish (choice C), record them under ### Deferred to Polish.
Close every run that produced a report — whether or not Phase 5 ran — with:
Verdict: COMPLETE — performance profile generated (saved to
production/polish/[scope]-report-[date].md if the write was approved). The only
other outcome is the NOT ASSESSED — NO DATA path above.
/architecture-decision./scope-check [feature]./sprint-plan update.© Donchitos, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/perf-profile of Donchitos/Claude-Code-Game-Studios.
Open the folder on GitHubat commit b21fa0f
Game Performance Profiler next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Game Performance Profiler this skillDonchitos/Claude-Code-Game-Studios | 26k | — | ~2.5k | Automated safety check: Notes | MIT | |
| Profiler Capture FrameIvanMurzak/Unity-MCP | 4.4k | 1 repos | ~839 | Automated safety check: Pass | Apache-2.0 | |
| Profiler Get Rendering StatsIvanMurzak/Unity-MCP | 4.4k | 1 repos | ~833 | Automated safety check: Pass | Apache-2.0 | |
| Profiler Get StatusIvanMurzak/Unity-MCP | 4.4k | 1 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| Profiler Save DataIvanMurzak/Unity-MCP | 4.4k | 1 repos | ~501 | Automated safety check: Pass | Apache-2.0 | |
| Profiler StartIvanMurzak/Unity-MCP | 4.4k | 1 repos | ~432 | Automated safety check: Pass | Apache-2.0 |
IvanMurzak/Unity-MCP
Capture the current frame's timing info (delta time, FPS, frame counts, runtime).
IvanMurzak/Unity-MCP
Return current frame timing, FPS, vsync, target frame rate, threading mode, and graphics device type from Unity Time / QualitySettings / SystemInfo.
IvanMurzak/Unity-MCP
Return the Unity profiler's current enabled state, active modules, max-used memory, and platform support flag.
IvanMurzak/Unity-MCP
Save a snapshot of profiler-derived stats (status + memory + rendering + script + frame capture) to a JSON file.
IvanMurzak/Unity-MCP
Enable Unity's runtime profiler and open the Profiler window.
IvanMurzak/Unity-MCP
Disable Unity's runtime profiler. An agent skill from IvanMurzak/Unity-MCP.
Donchitos/Claude-Code-Game-Studios
Audits game assets against naming conventions, file size budgets and format standards, and finds orphaned assets and missing references.
Donchitos/Claude-Code-Game-Studios
Writes per-asset visual specs and AI image-generation prompts for a game's characters, enemies and screens, driven by the GDD, art bible and an entity inventory.
Donchitos/Claude-Code-Game-Studios
Checks game data and formulas for balance outliers, broken progression, degenerate strategies and economy problems, and answers 'could not run' when the data is missing.
Donchitos/Claude-Code-Game-Studios
Turns a description into a structured bug report, or scans code for likely bugs, then verifies and closes reports through four modes.
Donchitos/Claude-Code-Game-Studios
Reviews the open bug backlog, separates severity from priority, assigns fixes to sprints and reports systemic trends, writing a dated triage file.
Donchitos/Claude-Code-Game-Studios
Generates an internal or player-facing changelog from git commits and sprint data, filtering out framework maintenance commits so that only work on the game itself reaches release copy.
Categories
Finds performance bottlenecks, measures them against frame, draw-call and memory budgets, and ranks the optimization recommendations. The skill profiles a game against the budgets in the project config: target framerate, frame time in milliseconds, draw call limit and memory ceiling.enforce` setting decides what a violation means.
Game Performance Profiler fits situations like: investigating a frame-rate drop in a game build; checking whether a game meets its frame time, draw call and memory budgets; getting a ranked list of optimizations to try first.
Run `npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a claude-code`. Or copy the skill folder (.claude/skills/perf-profile in Donchitos/Claude-Code-Game-Studios) into .claude/skills/perf-profile in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a codex`. Or copy the skill folder (.claude/skills/perf-profile in Donchitos/Claude-Code-Game-Studios) into .agents/skills/perf-profile in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Donchitos/Claude-Code-Game-Studios --skill perf-profile -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/perf-profile, .gemini/skills/perf-profile, .github/skills/perf-profile and .opencode/skills/perf-profile in your project.
Going by SKILL.md and its folder, Game Performance Profiler needs the command-line tools its instructions call (bash). Our summary lists: Profiler output and budget settings in the project config. Its frontmatter pre-approves these tools: Read, Glob, Grep, Write, Bash, Bash(bash "*/.claude/skills/perf-profile/../../hooks/yaml-helper.sh" resolve_config *).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Game Performance Profiler is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Game Performance Profiler: Profiler Capture Frame (IvanMurzak/Unity-MCP, 4.4k stars), Profiler Get Rendering Stats (IvanMurzak/Unity-MCP, 4.4k stars), Profiler Get Status (IvanMurzak/Unity-MCP, 4.4k stars) and Profiler Save Data (IvanMurzak/Unity-MCP, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Donchitos (a GitHub user) maintains it in Donchitos/Claude-Code-Game-Studios, which has 25,871 GitHub stars. The repository holds 73 skills in this directory. The repository was last updated on September 29, 2026.
Source: Donchitos/Claude-Code-Game-Studios on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.