Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
steipete avatar

Native App Performance

  • 188 installs
  • 6.5k repo stars
  • Updated August 3, 2026
  • steipete/agent-scripts

Use native-app-performance for development tasks

About

native-app-performance: A skill for development. This provides functionality for development workflows.

  • native-app-performance

Native App Performance by the numbers

  • 188 all-time installs (skills.sh)
  • +6 installs in the week ending Jul 27, 2026 (Skillselion tracking)
  • Ranked #2,091 of 4,348 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/steipete/agent-scripts --skill native-app-performance

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs188
repo stars6.5k
Last updatedAugust 3, 2026
Repositorysteipete/agent-scripts

What it does

Use native-app-performance for development tasks

Files

SKILL.mdMarkdownGitHub ↗

Native App Performance (CLI-only)

Goal: record Time Profiler via xctrace, extract samples, symbolicate, and propose hotspots without opening Instruments.

Quick start (CLI)

1) Record Time Profiler (attach):

# Start app yourself, then attach
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>

2) Record Time Profiler (launch):

xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App

3) Extract time samples:

scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml

4) Get load address for symbolication:

# While app is running
vmmap <pid> | rg -m1 "__TEXT" -n

5) Symbolicate + rank hotspots:

scripts/top_hotspots.py --samples /tmp/time-sample.xml \
  --binary /path/App.app/Contents/MacOS/App \
  --load-address 0x100000000 --top 30

Workflow notes

  • Always confirm you’re profiling the correct binary (local build vs /Applications). Prefer direct binary path for --launch.
  • Ensure you trigger the slow path during capture (menu open/close, refresh, etc.).
  • If stacks are empty, capture longer or avoid idle sections.
  • xcrun xctrace help record and xcrun xctrace help export show correct flags.

Included scripts

  • scripts/record_time_profiler.sh: record via attach or launch.
  • scripts/extract_time_samples.py: export time-sample XML from a trace.
  • scripts/top_hotspots.py: symbolicate and rank top app frames.

Gotchas

  • ASLR means you must use the runtime __TEXT load address from vmmap.
  • If using a new build, update the --binary path; symbols must match the trace.
  • CLI-only flow: no need to open Instruments if stacks are symbolicated via atos.

Related skills

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.