Agent skill
ios-debugger-agent
Use XcodeBuildMCP to build, run, launch, and debug the current iOS project on a booted simulator. Trigger when asked to run an iOS app, interact with the simulator UI, inspect on-screen state, capture logs/console output, or diagnose runtime behavior using XcodeBuildMCP tools.
Install this agent skill to your Project
npx add-skill https://github.com/dagba/ios-mcp/tree/main/skills/ios-debugger-agent
SKILL.md
iOS Debugger Agent
Overview
Use XcodeBuildMCP to build and run the current project scheme on a booted iOS simulator, interact with the UI, and capture logs. Prefer the MCP tools for simulator control, logs, and view inspection.
Core Workflow
Follow this sequence unless the user asks for a narrower action.
1) Discover the booted simulator
- Call
mcp__XcodeBuildMCP__list_simsand select the simulator with stateBooted. - If none are booted, ask the user to boot one (do not boot automatically unless asked).
2) Set session defaults
- Call
mcp__XcodeBuildMCP__session-set-defaultswith:projectPathorworkspacePath(whichever the repo uses)schemefor the current appsimulatorIdfrom the booted device- Optional:
configuration: "Debug",useLatestOS: true
3) Build + run (when requested)
- Call
mcp__XcodeBuildMCP__build_run_sim. - If the app is already built and only launch is requested, use
mcp__XcodeBuildMCP__launch_app_sim. - If bundle id is unknown:
mcp__XcodeBuildMCP__get_sim_app_pathmcp__XcodeBuildMCP__get_app_bundle_id
UI Interaction & Debugging
Use these when asked to inspect or interact with the running app.
- Describe UI:
mcp__XcodeBuildMCP__describe_uibefore tapping or swiping. - Tap:
mcp__XcodeBuildMCP__tap(preferidorlabel; use coordinates only if needed). - Type:
mcp__XcodeBuildMCP__type_textafter focusing a field. - Gestures:
mcp__XcodeBuildMCP__gesturefor common scrolls and edge swipes. - Screenshot:
mcp__XcodeBuildMCP__screenshotfor visual confirmation.
Logs & Console Output
- Start logs:
mcp__XcodeBuildMCP__start_sim_log_capwith the app bundle id. - Stop logs:
mcp__XcodeBuildMCP__stop_sim_log_capand summarize important lines. - For console output, set
captureConsole: trueand relaunch if required.
Troubleshooting
- If build fails, ask whether to retry with
preferXcodebuild: true. - If the wrong app launches, confirm the scheme and bundle id.
- If UI elements are not hittable, re-run
describe_uiafter layout changes.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
gh-issue-fix-flow
End-to-end GitHub issue fix workflow using gh, local code changes, builds/tests, and git push. Use when asked to take an issue number, inspect the issue via gh, implement a fix, run XcodeBuildMCP builds/tests, commit with a closing message, and push.
realm-persistence
Use when implementing Realm database in iOS apps, encountering thread-safety errors, async/await crashes, performance issues with sync/writes, or integrating with Codable APIs
viper-architecture-rambler
Use when architecting complex iOS apps with multiple features, long-term maintenance requirements, or team scalability needs. Use when refactoring Massive View Controllers or implementing testable architecture. Do NOT use for simple single-screen apps, rapid prototypes, or small utility tools.
swiftui-ui-patterns
Best practices and example-driven guidance for building SwiftUI views and components. Use when creating or refactoring SwiftUI UI, designing tab architecture with TabView, composing screens, or needing component-specific patterns and examples.
swiftui-liquid-glass
Implement, review, or improve SwiftUI features using the iOS 26+ Liquid Glass API. Use when asked to adopt Liquid Glass in new SwiftUI UI, refactor an existing feature to Liquid Glass, or review Liquid Glass usage for correctness, performance, and design alignment.
swiftui-view-refactor
Refactor and review SwiftUI view files for consistent structure, dependency injection, and Observation usage. Use when asked to clean up a SwiftUI view’s layout/ordering, handle view models safely (non-optional when possible), or standardize how dependencies and @Observable state are initialized and passed.
Didn't find tool you were looking for?