Skip to content

native-app-profiling

This is a redirect skill. This lacquer’s Instruments trace recording and analysis workflow lives in swiftui-expert-skill — see its “Record a new Instruments trace” and “Trace-driven improvement” task-workflow sections, backed by scripts/record_trace.py and scripts/analyze_trace.py and documented in full in references/trace-recording.md and references/trace-analysis.md. That workflow already covers everything this skill used to teach manually: template selection by device kind, attach/launch/stop-file recording modes, and analysis with automatic symbolication, window scoping, main-thread coverage (main_running_coverage_pct), and SwiftUI cause-graph fan-in (--fanin-for).

Do not use raw xcrun xctrace, atos, vmmap, or pgrep for this. FlowDeck’s ban on raw Apple CLI tools (xcodebuild, xcrun, simctl, devicectl) extends to Instruments tooling in this lacquer for the same reason — record_trace.py/analyze_trace.py wrap xctrace and handle symbolication automatically, so the manual atos/vmmap load-address dance this skill used to document is no longer part of the workflow.

Any request to profile CPU usage, find performance hotspots, or diagnose hangs/hitches in a native iOS/macOS app — whether or not the code under investigation is SwiftUI. swiftui-expert-skill’s trace workflow is not SwiftUI-specific for recording or the Time Profiler/Hangs/Animation Hitches lanes: only the swiftui and swiftui-causes analysis lanes are SwiftUI-specific, and they simply report available: false on non-SwiftUI code paths.

These are the two items from the old manual workflow that remain relevant and aren’t already documented in swiftui-expert-skill’s trace references:

  • Idle time produces empty data. Trigger the slow code path during the recording window — profiling an idle app yields empty or low-signal traces regardless of capture duration.
  • Instruments permissions. xctrace (wrapped by record_trace.py) may prompt for Developer Tools access or Full Disk Access on first use on a given machine, or require elevated privileges for certain system-wide captures. This is separate from the per-device signing/trust failure mode already documented in references/trace-recording.md.

Everything else — device/template selection, starting or stopping a recording, scoping analysis to a time window, interpreting coverage percentages, and mapping findings back to source files — is swiftui-expert-skill’s job. Follow its workflow directly rather than duplicating it here.

Every capability this skill used to teach (record, export, symbolicate, analyze) now has a strictly better equivalent in swiftui-expert-skill. This skill was kept as a short redirect rather than deleted outright, since removing a skill entirely is a bigger call than trimming its content — flagged here for a human decision on whether to fully retire native-app-profiling in a future pass.