termio-device
See and drive the sibling agent sessions running alongside you on this machine via the `termio session` CLI — list them and their…
Inspect an installed iOS app from a paired Mac, investigate its connection and rendering behavior, and use verified findings to fix Termio. Use for iPhone app reverse engineering, binary inspection, companion protocol analysis, or terminal garbling; use ios-rebuild-dev alone for
Claude Code
$ npx -y skills add termio-sh/termio --skill ios-app-analysis --agent claude-code
Codex
$ npx skills add termio-sh/termio --skill ios-app-analysis -a codex -y
Cursor
$ npx skills add termio-sh/termio --skill ios-app-analysis -a cursor -y
Gemini CLI
$ npx skills add termio-sh/termio --skill ios-app-analysis -a gemini-cli -y
GitHub Copilot
$ npx skills add termio-sh/termio --skill ios-app-analysis -a github-copilot -y
OpenCode
$ npx skills add termio-sh/termio --skill ios-app-analysis -a opencode -y
Windsurf
$ npx skills add termio-sh/termio --skill ios-app-analysis -a windsurf -y
name: ios-app-analysis description: "Inspect an installed iOS app from a paired Mac, investigate its connection and rendering behavior, and use verified findings to fix Termio. Use for iPhone app reverse engineering, binary inspection, companion protocol analysis, or terminal garbling; use ios-rebuild-dev alone for ordinary rebuild requests."
Investigate a concrete behavior and carry the finding through to a fix when requested. Distinguish the target iOS app, its Mac companion, and Termio: evidence from one does not establish another's implementation.
Read the repository's `AGENTS.md` and check the working tree before editing. Discover the device and installed app instead of reusing an old device ID or application path:
xcrun devicectl list devices --json-output /tmp/ios-analysis-devices.json xcrun devicectl device info apps --device "$device_id" \ --json-output /tmp/ios-analysis-apps.json uv tool run --from pymobiledevice3 pymobiledevice3 apps query "$bundle_id"
Use the JSON results, filtered to the requested app. Record its bundle ID, executable, version, build, signing identity, and bundle location. A `builtByDeveloper` flag alone does not establish debugger access: Rex's TestFlight build reported that flag, while its signing identity was TestFlight distribution.
When no device is available, ask for connection/trust or work from an existing artifact. Check command help for the installed tool version. Prefer the existing pairing; don't replace it merely to get logs.
Use `file`, `otool -L`, `otool -l`, `nm`, `swift-demangle`, and targeted `strings` searches. Check Mach-O encryption information before promising useful disassembly. A decompiler reconstructs approximate code, not the original Swift source.
file domains, usually app data. An installed bundle path from metadata does not make its executable accessible through those domains. If an executable pull returns not-found or denied, report the limit rather than repeating it with invented paths. Look for a local build, an accessible companion, or a user-supplied artifact.
Mac-binary findings. Type and field names suggest architecture; they do not prove control flow. Prefer a live API contract or runtime trace to confirm it.
Check its installed tools and instructions first. REA does not by itself provide access to an iPhone's app executable. Avoid installing a large tool stack when a protocol query or targeted inspection answers the question.
For Rex-specific commands, API behavior, and the measured Termio bug, read [the Rex case study](references/rex-terminal.md).
Identify the actual endpoint from the app's configuration or logs. Record the transport, authentication mechanism, and which server process is listening. Keep pairing tokens out of output; when launching with credentials, build an argument array and sanitize captured output rather than interpolating a URL into a shell command. Don't read unrelated credentials or terminal contents.
Capture only the target process and a bounded reproduction window:
uv tool run --from pymobiledevice3 pymobiledevice3 syslog live \ --process-name "$executable" --label
Run live capture under a managed process, stop it after the reproduction (typically 15–30 seconds), and collect its exit status. Use a timeout on device launches as well. Retain matching app-subsystem lines rather than dumping the whole device log. Device and Mac clocks can differ; correlate session IDs and event order as well as timestamps.
For garbling, separate replacement characters or broken UTF-8 from misplaced cells, rewrapped borders, and stale partial repaints. Inspect the active data path before patching: Termio's legacy companion and `vt_stream` can coexist in source while only one is enabled on the phone.
Measure these values through attachment, keyboard changes, rotation, and reconnection as relevant to the reproduction:
renderer's actual rows and columns.
A terminal parsing cursor-positioned output needs the server's grid. A one-column disagreement can look like text corruption even when UTF-8 decoding is correct. For an ownership bug, check which client can apply a resize and what passive clients do with their desired sizes. Don't infer authority from window focus.
Patch the smallest confirmed cause. Check the pinned rendering library's arithmetic, including DPI conversion and pixel flooring, rather than assuming configuration points equal UIKit points. Keep custom renderer measurements separate from embedded Ghostty measurements when their padding units differ.
Add a regression test for the observed failure when the logic is testable. Run `swift build`, the relevant existing tests, and the iOS build. Use [`ios-rebuild-dev`](../ios-rebuild-dev/SKILL.md) for installation and launch; don't hand-edit signing or its deployment script. Establish whether the running Mac daemon actually contains a related change before attributing behavior to it. A Git merge does not deploy the daemon.
Repeat the same device reproduction and compare the server and renderer's measurements. Remove temporary diagnostic logs, then rebuild and install the clean version. Report what passed and what remains unverified. Follow the rebuild skill's screenshot workflow: ask for a screenshot
A terminal-first agentic development environment for agentic coding. Build for CLI/TUI agent. Runtime for Coding Agent, Tmux alternative
See and drive the sibling agent sessions running alongside you on this machine via the `termio session` CLI — list them and their…
See and drive the sibling agent sessions running alongside you in this Termio project via the `termio session` CLI — list and…
Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing…
Drive the running termio app via AppleScript / System Events to reach a UI state (focus the window, click a sidebar project, a…
Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing…
Drive App Store Connect from the terminal with the `asc` CLI — TestFlight builds, groups, testers and What to Test notes; App…
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration