Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Give agents more agency

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    daispacy

    ios-instruments-performance-cli

    daispacy/ios-instruments-performance-cli
    Data & Analytics
    3 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Use Xcode Instruments command line tools to analyze iOS app performance, detect memory leaks, optimize launch times, monitor CPU usage, and identify performance bottlenecks for the iOS project

    SKILL.md

    iOS Instruments Performance CLI

    Instructions

    When helping with iOS app performance optimization using Instruments command line tools:

    1. Setup Analysis Environment

    CRITICAL: Always use device UUID, never device names

    • Get device UUID: xcrun simctl list devices available | grep "iPhone"
    • Device names like "iPhone 17 Pro" are ambiguous and will fail
    • Use UUID format: F464E766-555C-4B95-B8CC-763702A70791

    Clean installation state (REQUIRED)

    • Always uninstall app before profiling: xcrun simctl uninstall $DEVICE_UUID <bundle id>
    • Multiple app installations cause "process is ambiguous" errors
    • Alternative: Completely erase simulator for cleanest state

    Build configuration

    • Build in Release mode for accurate performance measurements

    2. Choose Appropriate Instrument Template

    Use xcrun xctrace list templates to see available templates:

    • App Launch - Essential for launch time optimization (most common)
    • Time Profiler - CPU performance analysis
    • Allocations - Memory usage tracking
    • Leaks - Memory leak detection
    • Network - API calls and network activity
    • Animation Hitches - UI performance issues

    3. Run Performance Analysis

    Standard workflow:

    DEVICE_UUID="F464E766-555C-4B95-B8CC-763702A70791" # this is sample uuid, run command line to get exist uuid
    xcrun simctl uninstall $DEVICE_UUID <bundle id>
    xcrun simctl install $DEVICE_UUID /path/to/<app name>.app
    sleep 2
    xcrun xctrace record --template "App Launch" --device $DEVICE_UUID \
      --launch -- /path/to/<app name>.app 2>&1
    

    Important notes:

    • Trace files auto-generate names like Launch_<app name>.app_2025-10-30_3.55.40 PM_39E6A410.trace
    • --output parameter may be ignored; accept auto-generated names
    • Wait 2 seconds after installation before profiling
    • Use 2>&1 to capture all output
    • Recording duration: 10-30s for launch, 2-5m for other analyses

    4. Analyze Results

    Finding trace files:

    ls -lt *.trace | head -1  # Most recent trace
    find . -name "*.trace" -type d -mmin -5  # Files from last 5 minutes
    

    Analysis approaches:

    • CLI export often fails - "trace is malformed" errors are common

    • Recommended: Open in Instruments.app GUI for reliable analysis

      open -a Instruments.app Launch_<app name>*.trace
      
    • Parse signpost markers for performance metrics

    • Identify bottlenecks in launch sequence, memory allocations, CPU hotspots

    5. Common Optimization Patterns

    Based on successful optimizations:

    • Lazy initialization - Defer expensive dependency resolution
    • Background operations - Move non-critical setup off main thread
    • Deferred bindings - Set up subscriptions after UI appears
    • Font loading - Register fonts asynchronously
    • Method swizzling - Only essential swizzles during launch

    Critical Pitfalls to Avoid

    ❌ Using device names instead of UUIDs ❌ Skipping clean installation step ❌ Building in Debug mode ❌ Trying to export trace immediately after recording ❌ Assuming --output path will be used ❌ Not waiting between installation and profiling

    Reference Documentation

    See examples in this skill directory for:

    • Detailed command examples with correct syntax
    • Complete troubleshooting guide with solutions
    • Real-world lessons learned
    • Production-ready workflow scripts
    Recommended Servers
    ThinAir Data
    ThinAir Data
    PlanetScale
    PlanetScale
    MantleKit Launch Planner
    MantleKit Launch Planner
    Repository
    daispacy/py-claude-marketplace
    Files