← Back to Skills Marketplace
steipete

Instruments Profiling

by Peter Steinberger · GitHub ↗ · v1.0.0
cross-platform ✓ Security Clean
2323
Downloads
3
Stars
5
Active Installs
1
Versions
Install in OpenClaw
/install instruments-profiling
Description
Use when profiling native macOS or iOS apps with Instruments/xctrace. Covers correct binary selection, CLI arguments, exports, and common gotchas.
README (SKILL.md)

Instruments Profiling (macOS/iOS)

Use this skill when the user wants performance profiling or stack analysis for native apps. Focus: Time Profiler, xctrace CLI, and picking the correct binary/app instance.

Quick Start (CLI)

  • List templates: xcrun xctrace list templates
  • Record Time Profiler (launch):
    • xcrun xctrace record --template 'Time Profiler' --time-limit 60s --output /tmp/App.trace --launch -- /path/To/App.app
  • Record Time Profiler (attach):
    • Launch app yourself, get PID, then:
    • xcrun xctrace record --template 'Time Profiler' --time-limit 60s --output /tmp/App.trace --attach \x3Cpid>
  • Open trace in Instruments:
    • open -a Instruments /tmp/App.trace

Note: xcrun xctrace --help is not a valid subcommand. Use xcrun xctrace help record.

Picking the Correct Binary (Critical)

Gotcha: Instruments may profile the wrong app (e.g., one in /Applications) if LaunchServices resolves a different bundle. Use these rules:

  • Prefer direct binary path for deterministic launch:
    • xcrun xctrace record ... --launch -- /path/App.app/Contents/MacOS/App
  • If launching .app, ensure it’s the intended bundle:
    • open -n /path/App.app
    • Verify with ps -p \x3Cpid> -o comm= -o command=
  • If both /Applications/App.app and a local build exist, explicitly target the local build path.
  • After launch, confirm the process path before trusting the trace.

Command Arguments (xctrace)

  • --template 'Time Profiler': template name from xctrace list templates.
  • --launch -- \x3Ccmd>: everything after -- is the target command (binary or app bundle).
  • --attach \x3Cpid|name>: attach to running process.
  • --output \x3Cpath>: .trace output. If omitted, file saved in CWD.
  • --time-limit 60s|5m: set capture duration.
  • --device \x3Cname|UDID>: required for iOS device runs.
  • --target-stdout -: stream launched process stdout to terminal (useful for CLI tools).

Exporting Stacks (CLI)

  • Inspect trace tables:
    • xcrun xctrace export --input /tmp/App.trace --toc
  • Export raw time-profile samples:
    • xcrun xctrace export --input /tmp/App.trace --xpath '/trace-toc/run[@number="1"]/data/table[@schema="time-profile"]' --output /tmp/time-profile.xml
  • Post-process in a script (Python/Rust) to aggregate stacks.

Instruments UI Workflow

  • Template: Time Profiler
  • Use “Record” and capture the slow path (startup vs steady-state)
  • Call Tree tips:
    • Hide System Libraries
    • Invert Call Tree
    • Separate by Thread
    • Focus on hot frames and call counts

Gotchas & Fixes

  • Wrong app profiled: LaunchServices resolves installed app instead of local build.
    • Fix: use direct binary path or --attach with known PID.
  • No samples / empty trace: App exits quickly or never hits work.
    • Fix: longer capture, trigger workload during recording.
  • Privacy prompts: xctrace may need Developer Tools permission.
    • Fix: System Settings → Privacy & Security → Developer Tools → allow Terminal/Xcode.
  • Large XML exports: time-profile exports are huge.
    • Fix: filter with XPath and aggregate offline; don’t print to terminal.

iOS Specific Notes

  • Device: use xcrun xctrace list devices and --device \x3CUDID>.
  • Launch via Xcode if needed; attach with xctrace --attach.
  • Ensure debug symbols for meaningful stacks.

Verification Checklist

  • Confirm trace process path matches target build.
  • Confirm stacks show expected app frames.
  • Capture covers the slow operation (startup/refresh).
  • Export stacks for automated diffing if optimizing.
Usage Guidance
This skill is a straightforward, instruction-only guide for using xctrace/Instruments — it appears coherent and benign. Before enabling it for an agent, ensure the agent will run on macOS with Xcode command-line tools installed, and be aware the instructions will run local shell commands that access app bundles, PIDs, and local trace files (e.g., /tmp). Do not use the skill on machines containing sensitive builds or data you wouldn't want the agent to access. If you want stricter metadata, ask the publisher to declare an OS restriction (macOS/iOS) and list required binaries (xcrun/xctrace) so the registry reflects the runtime assumptions.
Capability Analysis
Type: OpenClaw Skill Name: instruments-profiling Version: 1.0.0 The skill bundle provides instructions for using `xcrun xctrace` for macOS/iOS app profiling. All commands and documentation in `SKILL.md` are directly related to this stated purpose, involving standard developer tools and local file operations (e.g., writing trace files to `/tmp`). There is no evidence of data exfiltration, malicious execution, persistence mechanisms, or prompt injection attempts designed to subvert the agent's behavior beyond its intended function.
Capability Assessment
Purpose & Capability
The name/description match the SKILL.md instructions (xctrace/Instruments profiling). Minor metadata mismatches: the registry lists no OS restriction and no required binaries, yet the guidance clearly assumes a macOS/iOS environment with Xcode command-line tools (xcrun/xctrace, open, ps). This is expected for the stated purpose but the metadata could be more explicit.
Instruction Scope
The SKILL.md stays on-topic: it gives concrete CLI commands, checks, and troubleshooting steps for profiling apps. It references local paths, PIDs, and system privacy settings only in the context of profiling; it does not instruct collecting or transmitting unrelated data.
Install Mechanism
No install spec and no code files are present (instruction-only), so nothing is written to disk by the skill itself — this is the lowest-risk configuration for this purpose.
Credentials
The skill requires no environment variables or credentials. The commands it suggests operate on local files/processes (app bundles, /tmp traces) which is appropriate for profiling tasks.
Persistence & Privilege
always is false and model invocation is allowed (platform default). The skill does not request persistent/system-wide changes or other skills' credentials.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install instruments-profiling
  3. After installation, invoke the skill by name or use /instruments-profiling
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Metadata
Slug instruments-profiling
Version 1.0.0
License
All-time Installs 5
Active Installs 5
Total Versions 1
Frequently Asked Questions

What is Instruments Profiling?

Use when profiling native macOS or iOS apps with Instruments/xctrace. Covers correct binary selection, CLI arguments, exports, and common gotchas. It is an AI Agent Skill for Claude Code / OpenClaw, with 2323 downloads so far.

How do I install Instruments Profiling?

Run "/install instruments-profiling" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Instruments Profiling free?

Yes, Instruments Profiling is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Instruments Profiling support?

Instruments Profiling is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Instruments Profiling?

It is built and maintained by Peter Steinberger (@steipete); the current version is v1.0.0.

💬 Comments