Skip to content

iOS development ClaudeCode plugin for mindful token and context usage. Contains modular MCPs that group various Xcode/IDB tools based on your current workflow.

License

Notifications You must be signed in to change notification settings

conorluddy/xclaude-plugin

Repository files navigation

xClaude Plugin

/plugin marketplace add conorluddy/xclaude-plugin

Modular iOS development automation for Claude Code

Build, test, and automate iOS apps through natural conversation with Claude. 8 workflow-specific MCP servers with 24 tools across Xcode, Simulator, and IDB.

Enable only what you need. Each MCP is purpose-built for specific workflows, keeping your context window lean. Plus, our tools intelligently encapsulate Xcode output (errors, test results, build logs) so Claude processes structured JSON instead of raw 50+ line logs—saving significant tokens and enabling faster feedback loops.

Screenshot 2025-11-08 at 10 44 28

Features

🎯 Modular Architecture

  • 8 workflow-specific MCP servers (600-3500 tokens each)
  • Enable only what you need - Ultra-minimal to full-featured
  • 23 shared tools across Xcode, Simulator, and IDB
  • Single source of truth - tools defined once, imported by MCPs

🔥 Surgical MCPs (Ultra-Focused)

  • xc-build (~600 tokens) - Build validation, errors, clean, list schemes
  • xc-launch (~400 tokens) - Simulator app lifecycle: install and launch
  • xc-interact (~900 tokens) - Pure UI interaction, no build

📦 Core Workflow MCPs

  • xc-ai-assist (~1400 tokens) - Build + UI automation + screenshots
  • xc-setup (~800 tokens) - Environment configuration and validation
  • xc-testing (~1200 tokens) - Test execution + UI flows
  • xc-meta (~700 tokens) - Project maintenance and housekeeping

🚀 Full Access

  • xc-all (~3500 tokens) - All 24 tools for complex workflows

📚 8 Procedural Skills (Loaded On-Demand)

  • xcode-workflows - Build system guidance and result analysis
  • simulator-workflows - Device and app lifecycle patterns
  • ui-automation-workflows - Accessibility-first automation
  • accessibility-testing - WCAG compliance and quality checks
  • ios-testing-patterns - Test execution and flaky test detection
  • crash-debugging - Crash log analysis and symbolication
  • performance-profiling - Instruments integration
  • state-management - Cache and configuration management

Installation

From GitHub (Recommended)

/plugin marketplace add conorluddy/xclaude-plugin
/plugin install xclaude-plugin

From Local Development

/plugin marketplace add /path/to/xclaude-plugin
/plugin install xclaude-plugin

First 60 Seconds

Just installed? Enable xc-build and xc-launch for rapid development:

1. In Claude settings, enable "xc-build" and "xc-launch" MCPs
2. Ask Claude: "Build and run MyApp on iPhone 15"
3. Done! ✨

That's it. xc-build + xc-launch gives you a composable development loop: build with xc-build, then install & launch with xc-launch. Claude orchestrates the two-step workflow. If you need other workflows (testing, setup, UI automation), see Choosing the Right MCP below.

Requirements

  • macOS 13.0+ or Linux
  • Xcode 15.0+ (macOS only, for iOS development)
  • Node.js 18+
  • Optional: IDB (Facebook iOS Development Bridge) for advanced UI automation

Migration Guide (v0.4.0)

If you're upgrading from an earlier version, note these breaking changes:

Renamed Server: xc-build-and-launchxc-launch

What changed:

  • Server renamed from xc-build-and-launch to xc-launch for clarity
  • Removed: xcode_build_and_launch monolithic tool (with skip_build flag), plus xcode_build, xcode_clean, xcode_list (moved to xc-build)
  • Now contains: Only simulator_install_app and simulator_launch_app
  • Philosophy: Use xc-build + xc-launch together for development loop

Why: The monolithic xcode_build_and_launch tool coupled build, install, and launch into a single operation. The new architecture separates build concerns (xc-build) from simulator lifecycle (xc-launch), enabling:

  • Better error recovery (retry individual steps)
  • Clearer mental model (build → install → launch)
  • No skip_build code smell
  • Follows Single Responsibility Principle

Action required:

  1. Update your .mcp.json configuration:
    - "xc-build-and-launch": {
    -   "command": "node",
    -   "args": ["${CLAUDE_PLUGIN_ROOT}/mcp-servers/xc-build-and-launch/dist/index.js"]
    + "xc-launch": {
    +   "command": "node",
    +   "args": ["${CLAUDE_PLUGIN_ROOT}/mcp-servers/xc-launch/dist/index.js"]
  2. In Claude settings, enable "xc-launch" instead of "xc-build-and-launch"

Previous versions:

  • v0.3.0: xc-runxc-build-and-launch
  • v0.3.0: xc-compilexc-build, xc-hybridxc-all

See .mcp.json.example for the current configuration.

Choosing the Right MCP

Enable the Right MCP for Your Task

IMPORTANT: Enable ONE MCP at a time for optimal token efficiency. Choose based on your current workflow:

☐ xc-build                # Build validation, errors, clean? (~600 tokens)
☐ xc-launch               # Simulator lifecycle: install + launch? (~400 tokens)
☐ xc-interact             # Testing UI with app already built? (~900 tokens)
☐ xc-ai-assist            # AI-driven UI iteration? (~1400 tokens)
☐ xc-setup                # First time setup? (~800 tokens)
☐ xc-testing              # Running test suites? (~1200 tokens)
☐ xc-meta                 # Maintenance tasks? (~700 tokens)
☐ xc-all                  # Complex workflow needing everything? (~3500 tokens)

💡 Tip: Enable xc-build + xc-launch together for development loop (~1000 tokens total)

Example Workflows

Scenario 1: Build and fix errors

Enable: xc-build (~600 tokens)

"Build the project and show me the errors"

→ Uses xcode_build with automatic error extraction
→ Returns up to 10 errors for quick fixes
→ 87% less tokens than old architecture!

Scenario 2: Rapid development - build and run

Enable: xc-build + xc-launch (~1000 tokens)

"Build and run MyApp on iPhone 15"

→ Claude orchestrates: build (xc-build) → install & launch (xc-launch)
→ Composable two-server workflow
→ Better error recovery (retry individual steps)
→ Perfect for iterative development

Scenario 3: Testing UI flows (app already built)

Enable: xc-interact (~900 tokens)

"Tap the Login button, then check if the profile screen appears"

→ Queries accessibility tree (3-4x faster than screenshots)
→ Taps elements by coordinates
→ Validates UI state without rebuilding

Scenario 4: AI-driven UI iteration

Enable: xc-ai-assist (~1400 tokens)

"Update the button color to blue, rebuild, and show me a screenshot"

→ Modifies code, builds, captures screenshot
→ Complete workflow in one MCP
→ Includes visual feedback (screenshots)

Architecture

Modular MCP Design

┌─────────────────────────────────────────────────────┐
│  Shared Tool Library (24 tools)                     │
│  ├─ Xcode (6): build, build+run, clean, test, list, version │
│  ├─ Simulator (12): boot, install, screenshot, etc.│
│  └─ IDB (6): describe, tap, input, gesture, etc.   │
└─────────────────────────────────────────────────────┘
         ↓ Tools imported by MCP servers ↓
┌─────────────────────────────────────────────────────┐
│  8 Workflow-Specific MCP Servers                    │
│  ├─ xc-build:            3 tools   (~600 tokens)   │
│  ├─ xc-launch:           2 tools   (~400 tokens)   │
│  ├─ xc-interact:         6 tools   (~900 tokens)   │
│  ├─ xc-ai-assist:        7 tools   (~1400 tokens)  │
│  ├─ xc-setup:            5 tools   (~800 tokens)   │
│  ├─ xc-testing:          6 tools   (~1200 tokens)  │
│  ├─ xc-meta:             6 tools   (~700 tokens)   │
│  └─ xc-all:              24 tools  (~3500 tokens)  │
└─────────────────────────────────────────────────────┘

Key Benefits

For Users:

  • Enable only what you need (300-3500 tokens)
  • Clear mental model (workflow-based naming)
  • No tool duplication confusion
  • Easy to toggle on/off in Claude settings

For Developers:

  • Single source of truth (shared tools)
  • Easy testing (isolated functions)
  • Simple maintenance (update once)
  • Type-safe throughout (zero any usage)

MCP Server Reference

🔥 Surgical MCPs

MCP Tools Token Cost Use When
xc-build 3 ~600 Build validation with clean/scheme discovery
xc-launch 2 ~400 Simulator lifecycle: install and launch app
xc-interact 6 ~900 Testing UI flows with app already built

📦 Core Workflow MCPs

MCP Tools Token Cost Use When
xc-ai-assist 7 ~1400 AI UI iteration with visual feedback
xc-setup 5 ~800 Initial setup, environment validation
xc-testing 6 ~1200 Running test suites + UI automation
xc-meta 6 ~700 Maintenance, housekeeping, environment checks

🚀 Full Access

MCP Tools Token Cost Use When
xc-all 23 ~3500 Complex workflows needing everything

Pro tip: Don't enable multiple MCPs simultaneously - tool duplication will increase token usage! Use xc-all instead for multi-workflow sessions.

Cheat Sheet - Which Tools Are in Which MCP?

Quick reference to find which MCP has the tools you need:

Xcode Tools

Tool xc-build xc-launch xc-interact xc-ai-assist xc-setup xc-testing xc-meta xc-all
xcode_build
xcode_build_and_launch
xcode_clean
xcode_test
xcode_list
xcode_version

Simulator Tools

Tool xc-build xc-launch xc-interact xc-ai-assist xc-setup xc-testing xc-meta xc-all
simulator_list
simulator_boot
simulator_shutdown
simulator_create
simulator_delete
simulator_install_app
simulator_launch_app
simulator_terminate_app
simulator_screenshot
simulator_openurl
simulator_get_app_container
simulator_health_check

IDB Tools

Tool xc-build xc-launch xc-interact xc-ai-assist xc-setup xc-testing xc-meta xc-all
idb_describe
idb_tap
idb_input
idb_gesture
idb_find_element
idb_check_quality

Tool Library (24 Total)

Xcode Tools (6)

  • xcode_build - Build with automatic error extraction
  • xcode_build_and_launch - Build, install, and launch on simulator
  • xcode_clean - Clean build artifacts
  • xcode_test - Run XCTest suites
  • xcode_list - List schemes/targets
  • xcode_version - Check Xcode installation

Simulator Tools (12)

  • simulator_list - Enumerate simulators
  • simulator_boot - Boot device
  • simulator_shutdown - Shutdown device
  • simulator_create - Create new simulator
  • simulator_delete - Delete simulator
  • simulator_install_app - Install app
  • simulator_launch_app - Launch app
  • simulator_terminate_app - Terminate app
  • simulator_screenshot - Capture screenshot
  • simulator_openurl - Open URL/deep link
  • simulator_get_app_container - Get app container path
  • simulator_health_check - Validate environment

IDB Tools (6)

  • idb_describe - Query accessibility tree (accessibility-first!)
  • idb_tap - Tap coordinates
  • idb_input - Type text or press keys
  • idb_gesture - Swipes and hardware buttons
  • idb_find_element - Search by label (semantic)
  • idb_check_quality - Assess accessibility data richness

Configuring Your Project

Add this section to your project's .claude/CLAUDE.md file. This guides Claude on when and why to use the xclaude-plugin tools instead of directly calling Xcode or shell commands:

## xclaude-plugin: Why and When to Use These Tools

The xclaude-plugin provides 8 modular MCPs with 24 specialized iOS tools. **Always prefer these over raw `xcodebuild` or shell commands** for iOS development tasks. Here's why:

### Why These Tools Trump Raw Commands

| Task                 | Direct Bash                                                    | xclaude-plugin                   | Why Plugin Wins                                                           |
| -------------------- | -------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------- |
| Build + get errors   | `xcodebuild -scheme Foo 2>&1` (50+ lines of parsing)           | `xcode_build` tool               | Auto-extracts up to 10 errors, structured JSON, 87% fewer tokens          |
| Test suite execution | `xcodebuild test` + manual parsing                             | `xcode_test` tool                | Parses results, reports failures, timing, code coverage                   |
| Simulator screenshot | `xcrun simctl io booted screenshot /tmp/x.png` + file handling | `simulator_screenshot` tool      | Auto-saves, encoded output, accessible in response                        |
| UI automation        | Manual coordinate finding + shell taps                         | `idb_describe` + `idb_tap` tools | Queries accessibility tree (120ms), semantic element finding, 3-4x faster |
| App installation     | `xcrun simctl install booted App.app`                          | `simulator_install_app` tool     | Builds, finds app, installs, validates—one command                        |

### When to Use Each MCP

**Use `xc-build`** (~600 tokens) when:

- Building and fixing errors
- Need to clean build artifacts
- Discovering schemes/targets in project
- Build validation and configuration

**Use `xc-interact`** (~900 tokens) when:

- Testing UI flows with app already built
- Automating screen validation without code changes
- Need accessibility-first element querying

**Use `xc-ai-assist`** (~1400 tokens) when:

- Iterating on UI with live feedback (code change → screenshot)
- Need visual validation of changes
- Combining code modification with testing

**Use `xc-testing`** (~1200 tokens) when:

- Running test suites and analyzing results
- Need both unit tests and UI automation
- Debugging test failures

**Use `xc-setup`** (~800 tokens) when:

- First-time environment validation
- Checking Xcode/simulator health
- Discovering project structure (schemes, targets)

**Use `xc-meta`** (~700 tokens) when:

- Maintenance tasks (clearing derived data, managing simulators)
- Non-coding iOS project operations
- Environment housekeeping

**Use `xc-all`** (~3500 tokens) when:

- Complex workflows requiring multiple tool categories
- Don't know which single MCP fits the task
- Need flexibility to pivot between workflows

### Critical: Prefer Plugin Tools Over Bash

When you encounter a task that could use either approach, **always choose the plugin tool**.

**Don't do this:**


# Manual build parsing
> `xcodebuild -scheme MyApp 2>&1 | grep -A5 "error:" | sed ...`


**Do this instead:** Use the `xcode_build` tool from `xc-build` MCP.

---

**Don't do this:**


# Manual screenshot saving
> `xcrun simctl io booted screenshot /tmp/screenshot.png`
> `cat /tmp/screenshot.png | base64`


**Do this instead:** Use the `simulator_screenshot` tool from `xc-interact` MCP.

---

**Don't do this:**


# Finding UI elements by trial and error
> `xcrun simctl spawn booted launchctl list | grep bundleid`


**Do this instead:** Use `idb_describe` tool to query accessibility tree, then `idb_tap` to interact.

### When Bash IS Still Appropriate

Use Bash for tasks outside iOS development:

- File operations: `mkdir`, `cp`, `rm`, `ls`
- Version control: `git status`, `git diff`, `git commit`
- General scripting: `jq`, `sed`, `awk`
- Environment setup: `npm install`, `brew install`

**Never use Bash for iOS-specific tasks** when a plugin tool exists.

Simulator Configuration

xclaude-plugin automatically tracks your simulator usage and supports configuration files for default simulators.

Config File Locations

Project-level (recommended for team consistency):

# .xcplugin in your project root
{
  "defaultSimulator": "platform=iOS Simulator,name=iPhone 15",
  "maxRecentHistory": 10
}

User-level (personal defaults across all projects):

# ~/.xcplugin/config.json
{
  "defaultSimulator": "platform=iOS Simulator,name=iPhone 15 Pro",
  "maxRecentHistory": 10
}

Precedence: Project config overrides user config.

How It Works

  1. Auto-resolution: Partial destinations like "platform=iOS Simulator,name=iPhone 15" automatically resolve to the latest OS version available
  2. Usage tracking: Every build/test automatically tracks which simulators you use
  3. Smart defaults: When no config exists, the plugin remembers your most recent simulator

Destination Format

The xcode_build and xcode_test tools accept three destination formats:

# 1. Auto-resolve (recommended) - finds latest OS automatically
"platform=iOS Simulator,name=iPhone 15"

# 2. Explicit - specify exact OS version
"platform=iOS Simulator,name=iPhone 15,OS=18.0"

# 3. UDID - direct device identifier
"id=ABC-123-DEF-456"

Quick Setup

  1. Create a config file (choose one):

    # Project-level
    echo '{"defaultSimulator": "platform=iOS Simulator,name=iPhone 15"}' > .xcplugin
    
    # User-level
    mkdir -p ~/.xcplugin
    echo '{"defaultSimulator": "platform=iOS Simulator,name=iPhone 15"}' > ~/.xcplugin/config.json
  2. Find your available simulators:

    xcrun simctl list devices available
  3. Use the simulator_list tool to see your devices:

    Ask Claude: "Show me available simulators"
    

Example Config

See .xcplugin.example in the plugin directory for a complete example.

Enable Minimal MCPs for Token Efficiency

  • Token efficiency: xc-build (~600 tokens) is 83% cheaper than xc-all (3500 tokens)
  • Mental clarity: Focused tools per workflow phase
  • Composable workflows: Enable xc-build + xc-launch together (~1000 tokens) for development loop

Guidelines:

  • Single workflow: Enable one focused MCP (e.g., xc-interact for UI testing only)
  • Development loop: Enable xc-build + xc-launch together for build → install → launch
  • Complex workflows: Enable xc-all when you need multiple capabilities simultaneously

Development

Building from Source

# Clone repository
git clone https://github.com/conorluddy/xclaude-plugin.git
cd xclaude-plugin

# Install dependencies
npm install

# Build MCP server
npm run build

# Test locally
/plugin marketplace add /path/to/xclaude-plugin
/plugin install xclaude-plugin

Project Structure

xclaude-plugin/
├── .claude-plugin/
│   ├── plugin.json           # Plugin manifest (8 MCP servers)
│   └── marketplace.json      # Marketplace configuration
├── mcp-servers/                   # 8 modular MCP servers
│   ├── shared/                    # Shared tool library (24 tools)
│   │   ├── tools/                 # Tool implementations
│   │   ├── types/                 # Shared type definitions
│   │   └── utils/                 # Command execution utilities
│   ├── xc-build/                  # MCP 1: Build validation
│   ├── xc-launch/                 # MCP 2: Simulator lifecycle (install + launch)
│   ├── xc-interact/               # MCP 3: Pure UI interaction
│   ├── xc-ai-assist/              # MCP 4: AI UI automation
│   ├── xc-setup/                  # MCP 5: Environment setup
│   ├── xc-testing/                # MCP 6: Test execution
│   ├── xc-meta/                   # MCP 7: Maintenance
│   └── xc-all/                    # MCP 8: Full toolkit
├── skills/                   # 8 Skills (markdown + YAML)
│   ├── xcode-workflows/
│   ├── simulator-workflows/
│   ├── ui-automation-workflows/
│   ├── accessibility-testing/
│   ├── ios-testing-patterns/
│   ├── crash-debugging/
│   ├── performance-profiling/
│   └── state-management/
└── README.md

Design Philosophy

Modular Token Efficiency

Enable only what you need. Ultra-minimal MCPs (300 tokens) for focused tasks, comprehensive MCPs (3500 tokens) for complex workflows. 87% token reduction for surgical operations.

Accessibility-First UI Automation

Query accessibility tree (120ms, ~50 tokens) before screenshots (2000ms, ~170 tokens). 3-4x faster, 80% cheaper, more reliable across theme changes.

Single Source of Truth

24 tools defined once in shared library, imported by 8 MCPs. Update once, benefit everywhere. Type-safe with zero any usage.

Workflow-Based Organization

MCPs named by developer workflow phase, not technology domain. xc-build for build validation, xc-setup for environment, xc-all for complex sessions.

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

MIT License - See LICENSE for details

Support


Complete iOS development automation for Claude Code 🚀

About

iOS development ClaudeCode plugin for mindful token and context usage. Contains modular MCPs that group various Xcode/IDB tools based on your current workflow.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •