native-app-profiling
Native App Performance Profiling
Section titled “Native App Performance 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.
When this applies
Section titled “When this applies”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.
Gotchas not covered elsewhere
Section titled “Gotchas not covered elsewhere”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 byrecord_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 inreferences/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.
Deprecation note
Section titled “Deprecation note”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.