# ios-ettrace-performance

This skill guides a focused iOS ETTrace capture from matching dSYMs to per-thread analysis. Use it when comparing a repeatable launch or runtime flow.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1200 installs · ★ 1237
- Author: dpearson2699
- License: LicenseRef-Unknown · policy=link-only · description only; the file stays with the author
- Source: https://github.com/dpearson2699/swift-ios-skills/tree/HEAD/skills/ios-ettrace-performance/SKILL.md
- Updated: 2026-07-31
- HTML: https://affpapa.org/en/nevibecode/skills/dpearson2699-ios-ettrace-performance

## What it does

The skill lays out an ETTrace workflow for one bounded iOS flow. It records capture conditions, gathers dSYMs by UUID from the final build, and keeps processed `output_<threadId>.json` files. It covers launch and runtime capture on a Simulator or a device.

It includes commands for installing ETTrace with Homebrew plus `scripts/collect_dsyms.py` and `scripts/analyze_ettrace.py`. The analyzer checks the v1.1.1 output shape, summarizes thread data, separates inclusive from exclusive time, and puts address-bearing frames in `unresolved_frames`. You need Python 3, ETTrace, and the ETTrace package linked to the app target being measured. Important app frames shown as `<unknown>` mean symbolication must be fixed before code changes are judged.

The workflow calls for repeating the same flow after the smallest supported change while holding capture conditions steady. For broad CPU, hitch, I/O, or concurrency investigation, it points to Instruments instead.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add dpearson2699/swift-ios-skills --skill ios-ettrace-performance -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/ios-ettrace-performance/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/ios-ettrace-performance/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add dpearson2699/swift-ios-skills --skill ios-ettrace-performance -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/ios-ettrace-performance/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add dpearson2699/swift-ios-skills --skill ios-ettrace-performance -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/ios-ettrace-performance/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install dpearson2699/swift-ios-skills ios-ettrace-performance
```

2. **Manually: put the files in place**
- File: `.github/skills/ios-ettrace-performance/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add dpearson2699/swift-ios-skills --skill ios-ettrace-performance -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/dpearson2699/swift-ios-skills --path skills/ios-ettrace-performance
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/ios-ettrace-performance/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add dpearson2699/swift-ios-skills --skill ios-ettrace-performance -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/dpearson2699/swift-ios-skills/tree/HEAD/skills/ios-ettrace-performance/SKILL.md

## When to use it
- collect dSYMs that match build UUIDs
- capture an iOS launch on a Simulator
- summarize per-thread ETTrace JSON files
- flag unresolved symbols and wrong binary attribution
- compare repeated captures of one flow

## Example prompts
- “Capture an ETTrace profile for this iOS app launch on a Simulator and verify dSYM UUIDs.”
- “Analyze `output_*.json` with `scripts/analyze_ettrace.py` and list hot frames.”
- “Repeat the ETTrace capture after my change with the same capture contract.”

## Similar
- [swiftui-performance-audit](https://affpapa.org/en/nevibecode/skills/swiftui-performance-audit.md) — skill · 109 installs
- [android-performance](https://affpapa.org/en/nevibecode/skills/android-performance.md) — skill · 19 installs
- [performance-profiling](https://affpapa.org/en/nevibecode/skills/mengto-performance-profiling.md) — skill · 1400 installs
- [axiom-performance](https://affpapa.org/en/nevibecode/skills/axiom-performance.md) — skill · 1300 installs
- [performance-engineer](https://affpapa.org/en/nevibecode/skills/performance-engineer.md) — skill · 918 installs
- [agent-performance-engineer](https://affpapa.org/en/nevibecode/skills/agent-performance-engineer.md) — skill · 555 installs

## Other versions with the same name
- [ios-ettrace-performance · openai](https://affpapa.org/en/nevibecode/skills/ios-ettrace-performance.md) — 87 installs

From the same set: [dpearson2699/swift-ios-skills](https://affpapa.org/en/nevibecode/by/dpearson2699/swift-ios-skills.md) — 86 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
