profiling

profiling is a skill for Claude Code, Codex from kevinpbuckley/VibeUE. It costs 57 tokens per session (4,519 once invoked), scanned A, original, MIT.

A tool for finding what limits a game's frame rate in Unreal Engine— the processor, graphics card, or a particular engine thread—and for recording Unreal Insights traces.

In plain words
What is it for?
Use it to inspect game, render, GPU, and RHI timing, check performance against a target FPS, deliberately create test hitches, capture traces, and write performance reports.
Why use it?
It replaces guesswork about low FPS with frame-time measurements and a CPU-versus-GPU diagnosis.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to inspect game, render, GPU, and RHI timing, check performance against a target FPS, deliberately create test hitches, capture traces, and write performance reports.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/kevinpbuckley/vibeue/profiling
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add kevinpbuckley/VibeUE --skill profiling
Clone the repo
git clone --depth 1 https://github.com/kevinpbuckley/VibeUE

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for profiling

README.md
[![agentmods](https://agentmods.dev/badge/skills/kevinpbuckley/vibeue/profiling/github.svg)](https://agentmods.dev/skills/kevinpbuckley/vibeue/profiling)
Your own site
<a href="https://agentmods.dev/skills/kevinpbuckley/vibeue/profiling"><img src="https://agentmods.dev/badge/skills/kevinpbuckley/vibeue/profiling/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for profiling

Your own site · 80×15
<a href="https://agentmods.dev/skills/kevinpbuckley/vibeue/profiling"><img src="https://agentmods.dev/badge/skills/kevinpbuckley/vibeue/profiling.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 57 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,519 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00057 $0.04519
Opus 5.5 $0.00023 $0.01808
Sonnet 5.5 $0.00011 $0.00904
Haiku 4.5 $0.00006 $0.00452

Measured 1mo ago against content hash fab1f25744db, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

profiling scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Content/Skills/profiling/SKILL.md · 366 lines

How it starts

The opening of the file, as written. The whole thing — 366 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Profiling Skill

Unreal 5.8's native toolsets have no performance or tracing tools, so this is VibeUE's net-new capability: unreal.PerformanceService answers "are we CPU- or GPU-bound?" and drives Unreal Insights captures from Python with no C++ required. Run everything here through execute_python_code.

The whole API is small — read the live signatures once with discover_python_class(class_name="unreal.PerformanceService"):

Method Purpose
frame_timing(target_fps=60.0) Game/Render/GPU/RHI thread ms + a CPU-vs-GPU bound verdict + a hint, plus a per-thread budget breakdown gated against target_fps (budget.meets_target PASS/FAIL). Run FIRST.
force_hitch(thread="game", ms=250.0, frames=1) Validation helper — deliberately stall a KNOWN thread ("game"/"render"/"both"/"gpu") to confirm the verdict fires. CPU paths are self-measuring: validate from the SAME response (observed_peak_*_ms, verdict_matched_expect) — do NOT follow up with frame_timing. Only the async gpu path is read back on a following frame. Clamped (≤5000 ms, ~10 s total) for safety.
report(title=..., source="both", file="") Write a self-contained, shareable HTML report (live verdict + budget + analyse stats + a data-driven "fix in this order" list) to Saved/VibeUE/Performance/report_<timestamp>.html.
start_pie() / stop_pie() In-process PIE so frame_timing/force_hitch read a live game world (PIE starts on the next tick — read on a following frame, pie_running flips true). Quick checks only; prefer start_standalone when the numbers must be trusted.
start_trace(name="mcp_capture", channels="") Start an Insights trace to file (default channel set if channels empty).
stop_trace() Stop the active trace; returns the trace file path + size.
get_trace_status() Whether a trace is active and which channels are enabled.
bookmark(name) Drop a point-in-time bookmark in the active trace.
region_start(name) / region_end(name) Begin / end a named region span in the active trace.
analyse(source="both", file="") Read back trace and/or log → frame stats, worst frames, hitches, notable log lines. Combined analysis reports complete, partial, or failed; partial is never top-level success.
start_standalone(name="standalone_capture", channels="") Request a separate process with a unique direct-to-file trace. The first response is start_pending; poll status for verified capture.
stop_standalone() Gracefully stop the exact tracked process and verify the exact trace finalized; forced/partial outcomes are explicit failures.
get_standalone_status() Session ID, PID, map, exact trace/log destinations, process state, and capture/finalization verification.

All methods return a JSON string. For a representative reading, profile under PIE or a standalone session (start_standalone), not the bare editor viewport.

Read the full file on GitHub · 366 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago Changed · +19 lines fab1f25744db
  2. 1mo ago First seen · 347 lines · 57 tokens per session scan A 4cab72ae93c1

Subscribe to this mod's changes

profiling is a skill published in the GitHub repository kevinpbuckley/VibeUE (787 stars, last pushed yesterday), licensed MIT. It adds 57 tokens to every session and 4,519 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories