ios-debugger
Skill17 starsChanged 50 days agoMITView on GitHub
Build, run, and debug iOS apps via CLI without Xcode UI. Use when user wants to build iOS app, run on simulator, capture logs, take screenshots, or automate simulator interactions. Not for Swift code patterns (use apple-swift).
- Installs packages
In this repository37 other files it gives its agents.
- adrSkill
- android-kotlinSkill
- apple-swiftSkill
- autoresearch-promptSkill
- blog-writerSkill
- cloud-infrastructureSkill
- commitSkill
- cover-imageSkill
- freezeSkill
- gemini-reviewSkill
- golangSkill
- harness-mechanicSkill
- harness-traceSkill
- humanizerSkill
- knowledge-syncSkill
- learning-docsSkill
- learning-loopSkill
- obsidianSkill
- orchestratorSkill
- plan-forgeSkill
- process-clippingsSkill
- project-analyzerSkill
- project-checksSkill
- pr-reviewSkill
- pythonSkill
- railsSkill
- react-nextjsSkill
- refine-requirementsSkill
- releasing-softwareSkill
- rubySkill
- scoreSkill
- second-opinionSkill
- skill-forgeSkill
- source-controlSkill
- terraformSkill
- test-design-reviewerSkill
- verify-frontendSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 74
If a command shape is not listed here, verify with xcrun simctl help io before using it: plausible-looking subcommands such as simctl io …
- Distinctive: line 104
Always check simulator is booted before commands
- Very specific: line 105
Use log stream predicates to filter noise
- Very specific: line 108
Use xcrun simctl openurl to test deep links
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ABOUTME: XcodeBuildMCP integration for building, running, and debugging iOS apps via CLI
ABOUTME: Simulator control, UI interaction, log capture, screenshot automation
iOS Debugger
When to Invoke
- Build/run iOS apps without Xcode UI
- Automate simulator interactions
- Capture app logs programmatically
- UI testing via CLI
- CI/CD iOS workflows
Capabilities
- Build and run on booted simulator
- Interact with simulator UI (tap, type, gestures)
- Capture and filter app logs
- Take screenshots
- Install/uninstall apps
Prerequisites
# Check if simulator is booted (pick <booted device> from this list, do not hardcode a model)
xcrun simctl list devices | grep Booted
# Boot simulator if needed
xcrun simctl boot "<booted device>"Throughout this file, <booted device> is a placeholder: substitute the device name or UDID from xcrun simctl list devices | grep Booted.
Build and Run
# Build for simulator
xcodebuild -workspace MyApp.xcworkspace \
-scheme MyApp \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=<booted device>' \
build
# Install app on simulator
xcrun simctl install booted path/to/MyApp.app
# Launch app
xcrun simctl launch booted com.example.myappUI Interaction
simctl io does NOT do taps/typing/swipes (it only handles screenshot, recordVideo, enumerate, poll). For UI automation pick one of:
# Screenshot / screen recording (simctl's actual io surface)
xcrun simctl io booted screenshot screenshot.png
xcrun simctl io booted recordVideo demo.mov # stop with Ctrl-C
# Taps/typing/gestures option 1: XCUITest (robust, accessibility-ID based)
xcodebuild test -workspace App.xcworkspace -scheme AppUITests \
-destination 'platform=iOS Simulator,name=<booted device>'
# Taps/typing/gestures option 2: Meta's idb (brew install idb-companion; pip install fb-idb)
idb ui tap 200 400
idb ui text "Hello World"
idb ui swipe 200 600 200 200 --duration 0.5If a command shape is not listed here, verify with xcrun simctl help io before using it: plausible-looking subcommands such as simctl io tap do not exist.
Log Capture
# Stream all logs from booted simulator
xcrun simctl spawn booted log stream --predicate 'processImagePath CONTAINS "MyApp"'
# Filter by subsystem
xcrun simctl spawn booted log stream --predicate 'subsystem == "com.example.myapp"'
# Capture logs to file
xcrun simctl spawn booted log stream \
--predicate 'processImagePath CONTAINS "MyApp"' \
> app.log &Common Workflows
Reset Simulator
# Erase all data
xcrun simctl erase "<booted device>"
# Shutdown and boot
xcrun simctl shutdown "<booted device>"
xcrun simctl boot "<booted device>"Tips
- Always check simulator is booted before commands
- Use
log streampredicates to filter noise - Coordinate-based taps are fragile (prefer accessibility IDs in XCTest)
- Capture screenshots for visual regression tests
- Use
xcrun simctl openurlto test deep links
Integration with Tests
# Run XCTests on simulator
xcodebuild test \
-workspace App.xcworkspace \
-scheme App \
-destination 'platform=iOS Simulator,name=<booted device>' \
-resultBundlePath TestResults.xcresultDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

