Native App Performance
harperreed/dotfiles
Native macOS/iOS app performance profiling via xctrace/Time Profiler and CLI-only analysis of Instruments traces.
Profile native macOS/iOS apps using Time Profiler via CLI (xctrace).
$ npx skills add termio-sh/termio --skill native-app-profiling -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install termio-sh/termio native-app-profiling --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/native-app-profiling .claude/skills/native-app-profiling && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .claude/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/termio-sh/termio/tree/main/skills/native-app-profilingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add termio-sh/termio --skill native-app-profiling -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install termio-sh/termio native-app-profiling --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/native-app-profiling .agents/skills/native-app-profiling && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .agents/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add termio-sh/termio --skill native-app-profiling -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install termio-sh/termio native-app-profiling --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/native-app-profiling .cursor/skills/native-app-profiling && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .cursor/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/termio-sh/termio.git --path skills/native-app-profiling--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add termio-sh/termio --skill native-app-profiling -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install termio-sh/termio native-app-profiling --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/native-app-profiling .gemini/skills/native-app-profiling && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .gemini/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install termio-sh/termio native-app-profilingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add termio-sh/termio --skill native-app-profiling -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/native-app-profiling .github/skills/native-app-profiling && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .github/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add termio-sh/termio --skill native-app-profiling -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install termio-sh/termio native-app-profiling --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/native-app-profiling .opencode/skills/native-app-profiling && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "native-app-profiling" agent skill from https://github.com/termio-sh/termio/tree/main/skills/native-app-profiling into .opencode/skills/native-app-profiling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-app-profiling", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
native-app-profilingProfile native macOS/iOS apps using Time Profiler via CLI (xctrace).
Native App Profiling is an agent skill from termio-sh/termio. Profile native macOS/iOS apps using Time Profiler via CLI (xctrace). Use when asked to identify performance hotspots, profile CPU usage, or diagnose slow code paths without opening Instruments.
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Performance optimization and iOS development. It works with macOS. The repository describes itself as: A terminal-first agentic development environment for agentic coding. Build for CLI/TUI agent. Runtime for Coding Agent, Tmux alternative. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit af3b35b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
xcrunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Native App Profiling loads about 1.1k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 345 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from termio-sh/termio at commit af3b35b, republished under its MIT licence (© termio-sh). 345 words, ~1,145 tokens.
.claude/skills/native-app-profiling/SKILL.md (or your agent's skills folder).Record Time Profiler via xctrace, extract samples, symbolicate, and identify hotspots without opening Instruments.
Attach to running process:
# Get the PID first
pgrep -x "AppName"
# Record for 90 seconds
xcrun xctrace record \
--template 'Time Profiler' \
--time-limit 90s \
--output /tmp/App.trace \
--attach <pid>Launch and record:
xcrun xctrace record \
--template 'Time Profiler' \
--time-limit 90s \
--output /tmp/App.trace \
--launch -- /path/to/App.app/Contents/MacOS/AppList available schemas in the trace:
xcrun xctrace export --input /tmp/App.trace --tocExport time profile data:
xcrun xctrace export \
--input /tmp/App.trace \
--xpath '/trace-toc/run/data/table[@schema="time-profile"]' \
--output /tmp/time-profile.xmlWhile the app is running, get the __TEXT segment load address:
vmmap <pid> | grep "__TEXT"Look for the load address (typically starts with 0x1...).
Use atos to symbolicate addresses:
atos -o /path/to/App.app/Contents/MacOS/App -l 0x100000000 <address>List all profiling templates:
xcrun xctrace list templatesCommon templates:
Time Profiler - CPU samplingAllocations - Memory allocationsLeaks - Memory leak detectionSystem Trace - System-level activityAnimation Hitches - UI performance| Task | Command |
|---|---|
| List templates | xcrun xctrace list templates |
| List devices | xcrun xctrace list devices |
| Record help | xcrun xctrace help record |
| Export help | xcrun xctrace help export |
| Get PID | pgrep -x "AppName" |
| Get load address | vmmap <pid> | grep __TEXT |
| Symbolicate | atos -o <binary> -l <load-addr> <address> |
Look for:
__TEXT load address changes each launch - get it from vmmapsudo for some operationsFor iOS apps on simulator:
xcrun xctrace record \
--template 'Time Profiler' \
--device <simulator-udid> \
--time-limit 60s \
--output /tmp/iOS-App.trace \
--launch -- <bundle-id>Get simulator UDID:
xcrun simctl list devices | grep BootedBasic recording script:
#!/bin/bash
set -e
APP_NAME="$1"
DURATION="${2:-60}"
OUTPUT="${3:-/tmp/$APP_NAME.trace}"
if [ -z "$APP_NAME" ]; then
echo "Usage: $0 <app-name> [duration-seconds] [output-path]"
exit 1
fi
PID=$(pgrep -x "$APP_NAME" || true)
if [ -n "$PID" ]; then
echo "Attaching to running $APP_NAME (PID: $PID)"
xcrun xctrace record \
--template 'Time Profiler' \
--time-limit "${DURATION}s" \
--output "$OUTPUT" \
--attach "$PID"
else
echo "App not running. Please start $APP_NAME first."
exit 1
fi
echo "Trace saved to: $OUTPUT"
echo "To analyze: xcrun xctrace export --input $OUTPUT --toc"© termio-sh, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/native-app-profiling of termio-sh/termio.
Open the folder on GitHubat commit af3b35b
Native App Profiling next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Native App Profiling this skilltermio-sh/termio | 540 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Native App Performanceharperreed/dotfiles | 334 | 4 repos | ~538 | Automated safety check: Pass | None | |
| Swiftdata ArchitectureKartikLabhshetwar/better-shot | 2.4k | 2 repos | ~1.2k | Automated safety check: Pass | Custom licence | |
| Core Data ExpertAvdLee/Core-Data-Agent-Skill | 314 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Performance Profilingconorluddy/xclaude-plugin | 183 | — | ~7.3k | Automated safety check: Pass | MIT | |
| Hopper Debuggersteipete/agent-scripts | 7.3k | — | ~1.6k | Automated safety check: Pass | MIT |
harperreed/dotfiles
Native macOS/iOS app performance profiling via xctrace/Time Profiler and CLI-only analysis of Instruments traces.
KartikLabhshetwar/better-shot
Deep dive into SwiftData design patterns and best practices.
AvdLee/Core-Data-Agent-Skill
Expert Core Data guidance (iOS/macOS): stack setup, fetch requests & NSFetchedResultsController, saving/merge conflicts, threading & Swift Concurrency, batch operations & persistent history…
conorluddy/xclaude-plugin
Instruments integration and performance analysis workflows for iOS apps.
steipete/agent-scripts
Hopper debugging: macOS/iOS binaries, ObjC/Swift symbols, dyld, LLDB.
dpearson2699/swift-ios-skills
Debug iOS apps and profile performance using LLDB, the interactive Memory Graph Debugger, and Instruments.
termio-sh/termio
Diagnose a termio hang, beachball, crash, or 'it froze again' from the evidence macOS and termio actually leave behind — live process samples, crash and CPU-burn reports, the unified log, the…
termio-sh/termio
Drive the running termio app via AppleScript / System Events to reach a UI state (focus the window, click a sidebar project, a terminal pane, a control), capture a pixel-accurate screenshot of just…
termio-sh/termio
Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc).
termio-sh/termio
Drive App Store Connect from the terminal with the asc CLI — TestFlight builds, groups, testers and What to Test notes; App Store versions, metadata, keywords, screenshots and release notes…
termio-sh/termio
Turn vague customer or user feedback from pasted text, chat excerpts, or screenshots into a clear, evidence-backed GitHub issue without inventing requirements.
termio-sh/termio
Regenerate the landing site's OG/social card (web/landing/public/og.webp) by rendering a temporary in-app route with the real hero WebGL aurora and screenshotting it with headless Chrome.
Works with
Categories
Profile native macOS/iOS apps using Time Profiler via CLI (xctrace). Native App Profiling is an agent skill from termio-sh/termio. Profile native macOS/iOS apps using Time Profiler via CLI (xctrace).
Native App Profiling fits situations like: asked to identify performance hotspots; profile CPU usage; diagnose slow code paths without opening Instruments.
Run `npx skills add termio-sh/termio --skill native-app-profiling -a claude-code`. Or copy the skill folder (skills/native-app-profiling in termio-sh/termio) into .claude/skills/native-app-profiling in your project. Claude Code loads it when a task matches its description.
Run `npx skills add termio-sh/termio --skill native-app-profiling -a codex`. Or copy the skill folder (skills/native-app-profiling in termio-sh/termio) into .agents/skills/native-app-profiling in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add termio-sh/termio --skill native-app-profiling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/native-app-profiling, .gemini/skills/native-app-profiling, .github/skills/native-app-profiling and .opencode/skills/native-app-profiling in your project.
Going by SKILL.md and its folder, Native App Profiling needs the command-line tools its instructions call (xcrun).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Native App Profiling is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Native App Profiling: Native App Performance (harperreed/dotfiles, 334 stars), Swiftdata Architecture (KartikLabhshetwar/better-shot, 2.4k stars), Core Data Expert (AvdLee/Core-Data-Agent-Skill, 314 stars) and Performance Profiling (conorluddy/xclaude-plugin, 183 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
termio-sh (a GitHub organization) maintains it in termio-sh/termio, which has 540 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 7, 2026.
Source: termio-sh/termio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.