Skip to content
Back to skills

Xctrace Skill

ASecurity

Profile iOS/macOS app performance with Instruments (xctrace). Use when investigating CPU hotspots, memory leaks, animation hitches, or comparing performance before/after changes.

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
toolspythonswiftbashperformance

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill xctrace-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Xctrace Skill?

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

Security grade badge for Xctrace Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-xctrace-skill/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-xctrace-skill)

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: xctrace-skill
version: 1.0.0
description: Profile iOS/macOS app performance with Instruments (xctrace). Use when investigating CPU hotspots, memory leaks, animation hitches, or comparing performance before/after changes.
---

# xctrace Skill

Profile and analyze app performance using Apple's Instruments toolchain via `xctrace`.

## Quick Start

```bash
# 1. List available profiling templates
python scripts/trace_templates.py

# 2. Record a 10-second Time Profiler trace of your app
python scripts/trace_record.py --template "Time Profiler" --attach MyApp --time-limit 10s

# 3. Export trace data to JSON for analysis
python scripts/trace_export.py --input recording.trace --toc

# 4. Analyze a trace and get a summary
python scripts/trace_analyze.py --input recording.trace
```

All scripts support `--help` for detailed options and `--json` for machine-readable output.

## Scripts

### Profiling

1. **trace_templates.py** - List available Instruments templates
   - Shows all templates: Time Profiler, Allocations, Leaks, SwiftUI, etc.
   - Options: `--json`

2. **trace_record.py** - Record a performance trace
   - Profile by attaching to running app or launching
   - Set time limits, output paths
   - Options: `--template`, `--attach`, `--launch`, `--time-limit`, `--output`, `--all-processes`, `--json`

3. **trace_attach.py** - Profile an already-running process
   - Convenience wrapper for trace_record with --attach
   - Options: `--pid`, `--name`, `--template`, `--time-limit`, `--output`, `--json`

### Analysis

4. **trace_export.py** - Export trace data
   - Table of contents (--toc) or XPath queries
   - Options: `--input`, `--output`, `--toc`, `--xpath`, `--json`

5. **trace_analyze.py** - Generate performance summary
   - Extracts key metrics from trace
   - Identifies hotspots, allocations, issues
   - Options: `--input`, `--verbose`, `--json`

6. **trace_compare.py** - Compare two traces
   - Before/after performance comparison
   - Options: `--baseline`, `--current`, `--json`

### Binary Inspection

7. **binary_inspect.py** - Inspect Mach-O binaries
   - View linked libraries, symbols, headers
   - Useful for understanding crashes, dependencies
   - Options: `--headers`, `--libraries`, `--symbols`, `--swift-symbols`, `--json`

## Common Templates

| Template | Use Case |
|----------|----------|
| Time Profiler | CPU usage, find slow functions |
| Allocations | Memory usage, object lifetimes |
| Leaks | Memory leaks |
| SwiftUI | SwiftUI view body evaluations, identity changes |
| Animation Hitches | UI jank, dropped frames |
| App Launch | Startup time analysis |
| Network | HTTP requests, latency |
| Swift Concurrency | Actor isolation, task scheduling |

## Typical Workflows

### "This screen is slow"
```bash
# Record while reproducing the issue
python scripts/trace_record.py --template "Time Profiler" --attach MyApp --time-limit 15s

# Analyze
python scripts/trace_analyze.py --input recording.trace
```

### "App is using too much memory"
```bash
python scripts/trace_record.py --template "Allocations" --attach MyApp --time-limit 30s
python scripts/trace_analyze.py --input recording.trace
```

### "Is my optimization working?"
```bash
# Record baseline
python scripts/trace_record.py --template "Time Profiler" --attach MyApp --output baseline.trace --time-limit 10s

# Make changes, rebuild, then record again
python scripts/trace_record.py --template "Time Profiler" --attach MyApp --output optimized.trace --time-limit 10s

# Compare
python scripts/trace_compare.py --baseline baseline.trace --current optimized.trace
```

### "What's in this binary?"
```bash
python scripts/binary_inspect.py --libraries /path/to/MyApp.app/MyApp
python scripts/binary_inspect.py --swift-symbols /path/to/MyApp.app/MyApp
```

## Requirements

- macOS 12+
- Xcode Command Line Tools
- Python 3

## Notes

- Traces can be large (100MB+). Use `--time-limit` to keep them manageable.
- Some templates require running on device (not simulator).
- For GUI analysis, open `.trace` files in Instruments.app.

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.