Agent skill

iOS Testing Patterns

by conorluddy in conorluddy/xclaude-plugin

XCTest and XCUITest execution workflows and flaky test detection patterns

MITAuto-check passedTesting & QA

Install iOS Testing Patterns

skills CLI
$ npx skills add conorluddy/xclaude-plugin --skill ios-testing-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install conorluddy/xclaude-plugin ios-testing-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/conorluddy/xclaude-plugin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ios-testing-patterns .claude/skills/ios-testing-patterns && rm -rf skills-src

Use ~/.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/

Facts

Skill name
ios-testing-patterns
GitHub stars
183
Token cost
~4.5k tokens
SKILL.md length
1,219 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

XCTest and XCUITest execution workflows and flaky test detection patterns

  • Works in 12 steps: Running Unit Tests → Running UI Tests → Parallel Test Execution → …
  • Tasks that involve Failing and flaky tests
  • SKILL.md covers Overview, Quick Reference, When to Use This Skill and Key Concepts, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

iOS Testing Patterns is an agent skill from conorluddy/xclaude-plugin. XCTest and XCUITest execution workflows and flaky test detection patterns

Its SKILL.md is about 4.5k 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 Testing & QA, covering Failing and flaky tests, Test strategy and Mobile testing and debugging. It works with iOS, Xcode and Model Context Protocol. The repository describes itself as: iOS development ClaudeCode plugin for mindful token and context usage. Contains modular MCPs that group various Xcode/IDB tools based on your current workflow. The licence is MIT.

When your agent uses it

  • Tasks that involve Failing and flaky tests
  • Tasks that involve Test strategy
  • Tasks that involve Mobile testing and debugging

Example prompts

  • “/ios-testing-patterns”

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Running Unit Tests
  2. Running UI Tests
  3. Parallel Test Execution
  4. Test Filtering
  5. Test Result Analysis
  6. Flaky Test Detection
  7. Test Isolation
  8. Test Isolation
  9. Fast Test Execution
  10. Readable Test Names
  11. Arrange-Act-Assert Pattern
  12. Test Data Management

What it can do on your machine

Read from SKILL.md and the folder at commit 6de4b2c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json, swift and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

iOS Testing Patterns loads about 4.5k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 1,219 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from conorluddy/xclaude-plugin at commit 6de4b2c, republished under its MIT licence (© conorluddy). 1,219 words, ~4,519 tokens.

Download SKILL.mdSave it as .claude/skills/ios-testing-patterns/SKILL.md (or your agent's skills folder).
name
ios-testing-patterns
description
XCTest and XCUITest execution workflows and flaky test detection patterns
version
0.0.1
token_cost
~40

iOS Testing Patterns Skill

Comprehensive guide to XCTest and XCUITest execution, analysis, and flaky test detection

Overview

This skill provides patterns and workflows for executing iOS tests using XCTest and XCUITest frameworks. It covers test execution strategies, result analysis, flaky test detection, and troubleshooting common test failures.

Use this skill when:

  • Running unit tests or UI tests
  • Analyzing test failures
  • Detecting and debugging flaky tests
  • Optimizing test execution performance
  • Setting up CI/CD test pipelines

Quick Reference

TaskOperationKey Parameters
Run all teststestscheme, destination
Run specific testtestscheme, only_testing
Skip teststestscheme, skip_testing
Use test plantestscheme, test_plan
Parallel executiontestdestination (multiple)

When to Use This Skill

Use ios-testing-patterns when:

  • Executing XCTest unit tests
  • Running XCUITest UI automation tests
  • Investigating test failures
  • Detecting intermittent test failures (flaky tests)
  • Analyzing test performance and execution time
  • Setting up test schemes and test plans
  • Configuring parallel test execution
  • Debugging test-specific simulator issues

Related Skills:

  • xcode-workflows: For general build and test operations
  • simulator-workflows: For managing test simulators
  • ui-automation-workflows: For UI test interaction patterns

Key Concepts

XCTest vs XCUITest

XCTest (Unit/Integration Tests):

  • Fast execution (milliseconds to seconds)
  • Tests individual components in isolation
  • Direct access to app internals
  • No UI interaction required
  • Runs in same process as app code

XCUITest (UI Tests):

  • Slower execution (seconds to minutes)
  • Tests user-facing workflows
  • Black-box testing (no app internals)
  • Requires simulator/device UI
  • Runs in separate process
Test Execution Strategies

Sequential Execution:

  • Tests run one after another
  • Predictable, repeatable results
  • Slower overall execution
  • Better for debugging

Parallel Execution:

  • Tests run simultaneously on multiple simulators
  • Faster overall execution
  • Requires more system resources
  • May expose race conditions

Test Sharding:

  • Split test suite across multiple destinations
  • Optimal for CI/CD pipelines
  • Reduces total execution time
  • Requires careful test isolation

Workflows

1. Running Unit Tests

Basic Unit Test Execution:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15,OS=18.0"
}

Note: The destination parameter now supports auto-resolution! You can omit the OS version (e.g., "platform=iOS Simulator,name=iPhone 15") and the tool will automatically select the latest available OS version for that device.

Run Specific Test Class:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15,OS=18.0",
  "options": {
    "only_testing": ["MyAppTests/NetworkTests"]
  }
}

Run Specific Test Method:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15,OS=18.0",
  "options": {
    "only_testing": ["MyAppTests/NetworkTests/testAPIRequest"]
  }
}
2. Running UI Tests

Basic UI Test Execution:

json
{
  "operation": "test",
  "scheme": "MyAppUITests",
  "destination": "platform=iOS Simulator,name=iPhone 15"
}

UI Tests with Specific Device:

json
{
  "operation": "test",
  "scheme": "MyAppUITests",
  "destination": "platform=iOS Simulator,name=iPad Pro (12.9-inch)"
}

UI Tests with Test Plan:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "test_plan": "SmokeTests"
  }
}
3. Parallel Test Execution

Multiple Destinations:

Run tests on multiple simulators simultaneously:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": [
    "platform=iOS Simulator,name=iPhone 15",
    "platform=iOS Simulator,name=iPhone SE (3rd generation)"
  ],
  "options": {
    "parallel": true
  }
}

Parallel Test Benefits:

  • Reduces total execution time
  • Tests across multiple device types
  • Exposes device-specific issues
  • Better CI/CD performance

Parallel Test Considerations:

  • Requires multiple simulators
  • Higher CPU/memory usage
  • May expose race conditions
  • Test isolation critical
4. Test Filtering

Skip Specific Tests:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "skip_testing": [
      "MyAppUITests/SlowTests",
      "MyAppTests/NetworkTests/testLargeDownload"
    ]
  }
}

Run Only Fast Tests:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "only_testing": ["MyAppTests/UnitTests"],
    "skip_testing": ["MyAppTests/UnitTests/testSlowOperation"]
  }
}
5. Test Result Analysis

Success Response:

json
{
  "success": true,
  "tests_run": 45,
  "tests_passed": 45,
  "tests_failed": 0,
  "execution_time": "12.4s",
  "scheme": "MyApp"
}

Failure Response:

json
{
  "success": false,
  "tests_run": 45,
  "tests_passed": 43,
  "tests_failed": 2,
  "failures": [
    {
      "test": "MyAppTests.LoginTests.testInvalidPassword",
      "message": "XCTAssertEqual failed: (\"error\") is not equal to (\"invalid\")",
      "file": "LoginTests.swift",
      "line": 42
    },
    {
      "test": "MyAppUITests.CheckoutTests.testPaymentFlow",
      "message": "Failed to find button \"Confirm\"",
      "file": "CheckoutTests.swift",
      "line": 78
    }
  ],
  "execution_time": "18.7s"
}

Analyzing Test Results:

  1. Check success status
  2. Review tests_failed count
  3. Examine failures array for details
  4. Check execution_time for performance issues
  5. Look for patterns in failure messages
6. Flaky Test Detection

What are Flaky Tests?

Tests that intermittently pass or fail without code changes:

  • Timing-dependent assertions
  • Race conditions
  • Async operation issues
  • Shared state between tests
  • Network-dependent tests
  • UI animation timing issues

Detection Strategy 1: Multiple Runs

Run tests multiple times to detect flakiness:

bash
# Run tests 5 times and compare results
for i in {1..5}; do
  execute_xcode_command(test, scheme, destination)
  # Record results
done

Detection Strategy 2: Pattern Analysis

Look for common flaky test patterns:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "only_testing": ["MyAppTests/SuspectedFlakyTest"]
  }
}

Flaky Test Indicators:

  1. Timeout failures: "Exceeded timeout of 30 seconds"
  2. Element not found: "Failed to find button..." (UI tests)
  3. Race conditions: "Expected 5 but got 4"
  4. Async timing: "Asynchronous wait failed"
  5. Network failures: "Request timed out"

Flaky Test Workflow:

1. Identify suspect test (intermittent failures)
2. Run test 10+ times in isolation
3. Analyze failure patterns
4. Check for:
   - Hard-coded waits (sleep/wait)
   - Expectation timeouts too short
   - Shared mutable state
   - Network dependencies
   - Animation timing assumptions
5. Fix root cause
6. Verify with repeated runs
7. Test Isolation

Clean State Before Tests:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "clean_before_build": true
  }
}

Reset Simulator State:

bash
# Use simulator-workflows skill
execute_simulator_command(operation: "erase", udid: <device-udid>)

Test Isolation Best Practices:

  1. Use setUp() and tearDown() methods
  2. Clear app state between tests
  3. Use unique test data per test
  4. Avoid shared static state
  5. Reset UserDefaults in setUp
  6. Clear keychain data
  7. Reset app permissions

Common Patterns

Test Scheme Configuration

Typical Test Scheme Setup:

  • Build Configuration: Debug (faster builds)
  • Test Plans: Separate unit/UI/smoke tests
  • Coverage: Enable code coverage collection
  • Diagnostics: Enable thread sanitizer for threading issues

Multiple Test Plans:

UnitTests.xctestplan       → Fast unit tests only
UITests.xctestplan         → UI automation tests
SmokeTests.xctestplan      → Critical path tests
RegressionTests.xctestplan → Full test suite
Test Data Management

Pattern 1: Test Fixtures

swift
class TestData {
    static let validUser = User(name: "Test", email: "test@example.com")
    static let invalidUser = User(name: "", email: "invalid")
}

Pattern 2: Factory Methods

swift
extension User {
    static func makeTestUser(name: String = "Test") -> User {
        return User(name: name, email: "\(name)@test.com")
    }
}

Pattern 3: Test Database

swift
class TestDatabase {
    func setupTestData() {
        // Create known test data
    }

    func teardownTestData() {
        // Clean up after tests
    }
}
Screenshot Capture on Failure

UI Test Screenshot Pattern:

swift
override func setUp() {
    continueAfterFailure = false
}

override func tearDown() {
    if let testRun = testRun, testRun.failureCount > 0 {
        let screenshot = XCUIScreen.main.screenshot()
        let attachment = XCTAttachment(screenshot: screenshot)
        attachment.lifetime = .keepAlways
        add(attachment)
    }
}

Execute Tests with Screenshots:

json
{
  "operation": "test",
  "scheme": "MyAppUITests",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "result_bundle_path": "./TestResults.xcresult"
  }
}
Performance Testing

XCTest Performance Measurement:

swift
func testPerformance() {
    measure {
        // Code to measure
        performExpensiveOperation()
    }
}

Performance Test Execution:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "only_testing": ["MyAppTests/PerformanceTests"]
  }
}

Troubleshooting

Common Test Failures
1. "Test crashed with signal SIGABRT"

Causes:

  • Force unwrapping nil values
  • Array index out of bounds
  • Precondition/assertion failures
  • Fatal errors in app code

Solutions:

  1. Check crash logs for stack trace
  2. Run test in debugger (Xcode)
  3. Add breakpoints at crash location
  4. Review force unwraps in test path
Show full SKILL.md (494 more words)Show less
2. "Failed to find element/button"

Causes:

  • Element not yet rendered
  • Animation not complete
  • Incorrect accessibility identifier
  • Element off-screen

Solutions:

  1. Increase timeout for element queries
  2. Wait for animations to complete
  3. Verify accessibility identifiers
  4. Scroll element into view
  5. Check element existence before interaction

Example Fix:

swift
// Bad: Immediate query may fail
app.buttons["Submit"].tap()

// Good: Wait for element
let submitButton = app.buttons["Submit"]
XCTAssert(submitButton.waitForExistence(timeout: 5))
submitButton.tap()
3. "Exceeded timeout of X seconds"

Causes:

  • Network requests too slow
  • Async operations not completing
  • Deadlocks or infinite loops
  • Expectations never fulfilled

Solutions:

  1. Increase expectation timeout
  2. Mock network requests
  3. Check for deadlocks
  4. Verify expectation fulfillment
  5. Use proper async testing patterns

Example Fix:

swift
// Bad: May timeout
wait(for: [expectation], timeout: 1.0)

// Good: Reasonable timeout
wait(for: [expectation], timeout: 10.0)
4. "Test failed due to app termination"

Causes:

  • Memory pressure
  • Watchdog timeout (app hung)
  • Background task limits
  • System resource constraints

Solutions:

  1. Profile memory usage
  2. Optimize test efficiency
  3. Break up long-running tests
  4. Check for memory leaks
  5. Reduce simulator load
Timeout Issues

UI Test Timeouts:

json
{
  "operation": "test",
  "scheme": "MyAppUITests",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "test_timeout": 600
  }
}

Common Timeout Scenarios:

  1. App Launch Timeout: App takes too long to launch

    • Solution: Optimize app startup, increase timeout
  2. Element Query Timeout: UI element not found

    • Solution: Wait for element existence, check identifiers
  3. Network Timeout: API requests fail

    • Solution: Mock network, increase timeout, fix connectivity
  4. Animation Timeout: Waiting for animation

    • Solution: Disable animations in tests, use proper waits
Simulator State Problems

Symptom: Tests fail due to simulator state

Common Issues:

  1. Previous app installation interfering
  2. Simulator storage full
  3. Corrupt simulator data
  4. Multiple tests modifying shared state

Solutions:

bash
# Erase simulator before tests
execute_simulator_command({
  "operation": "erase",
  "udid": "<simulator-udid>"
})

# Then run tests
execute_xcode_command({
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15"
})
Test Dependency Issues

Symptom: Tests pass individually but fail in suite

Causes:

  • Test execution order dependencies
  • Shared mutable state
  • Singleton pollution
  • Database state carryover

Solutions:

  1. Ensure Test Isolation:
swift
override func setUp() {
    super.setUp()
    // Reset all shared state
    AppState.shared.reset()
    clearDatabase()
}
  1. Avoid Singletons:
swift
// Bad: Shared state
class APIManager {
    static let shared = APIManager()
}

// Good: Dependency injection
class APIManager {
    // Inject per test
}
  1. Randomize Test Order:
json
{
  "operation": "test",
  "scheme": "MyApp",
  "options": {
    "test_order": "random"
  }
}

Best Practices

1. Test Isolation

Always isolate tests:

  • Each test should run independently
  • No shared state between tests
  • Clean up in tearDown()
  • Use unique test data

Example:

swift
class UserTests: XCTestCase {
    var sut: UserManager!

    override func setUp() {
        super.setUp()
        sut = UserManager()
    }

    override func tearDown() {
        sut = nil
        super.tearDown()
    }

    func testCreateUser() {
        // Test uses fresh sut instance
    }
}
2. Fast Test Execution

Optimize test speed:

  • Mock network requests
  • Use in-memory databases
  • Disable animations in UI tests
  • Avoid actual file I/O
  • Use test doubles (mocks/stubs)

UI Test Speed:

swift
// Disable animations for faster tests
app.launchArguments += ["DISABLE_ANIMATIONS"]
3. Readable Test Names

Use descriptive test names:

swift
// Bad
func test1() { }

// Good
func testLoginWithValidCredentialsSucceeds() { }
func testLoginWithInvalidPasswordShowsError() { }
func testCheckoutWithEmptyCartDisplaysWarning() { }
4. Arrange-Act-Assert Pattern

Structure tests clearly:

swift
func testAddItemToCart() {
    // Arrange
    let cart = ShoppingCart()
    let item = Product(name: "Test", price: 10)

    // Act
    cart.add(item)

    // Assert
    XCTAssertEqual(cart.items.count, 1)
    XCTAssertEqual(cart.total, 10)
}
5. Test Data Management

Use consistent test data:

swift
struct TestFixtures {
    static let validEmail = "test@example.com"
    static let invalidEmail = "invalid"
    static let testUser = User(name: "Test", email: validEmail)
}
6. CI/CD Integration

CI Test Workflow:

1. Clean build environment
2. Build app for testing
3. Boot fresh simulator
4. Run test suite
5. Collect code coverage
6. Parse test results
7. Archive test artifacts
8. Report results

CI Test Command:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "clean_before_build": true,
    "code_coverage": true,
    "result_bundle_path": "./TestResults.xcresult"
  }
}
7. Test Pyramid

Maintain proper test distribution:

      /\
     /UI\      ← Few, slow, broad
    /----\
   /Integ\     ← Some, medium, focused
  /------\
 /  Unit  \    ← Many, fast, isolated
/----------\

Recommended ratio:

  • 70% Unit tests
  • 20% Integration tests
  • 10% UI tests
8. Code Coverage

Enable coverage collection:

json
{
  "operation": "test",
  "scheme": "MyApp",
  "destination": "platform=iOS Simulator,name=iPhone 15",
  "options": {
    "code_coverage": true
  }
}

Coverage goals:

  • Critical paths: 90%+ coverage
  • Business logic: 80%+ coverage
  • UI code: 60%+ coverage
  • Overall: 75%+ coverage
9. Continuous Test Monitoring

Track test metrics:

  • Test execution time trends
  • Flaky test frequency
  • Test failure rate
  • Code coverage trends
  • Test suite growth

When to investigate:

  • Test execution time increases >20%
  • Flaky tests appear
  • Coverage drops
  • Failure rate increases
  • xcode-workflows: General build and test operations
  • simulator-workflows: Managing test simulators and devices
  • ui-automation-workflows: Advanced UI test interaction patterns
  • crash-debugging: Analyzing test crashes
  • xc://operations/test: Complete test operations reference
  • xc://reference/xctest: XCTest framework documentation
  • xc://reference/xcuitest: XCUITest framework documentation
  • xc://patterns/flaky-tests: Flaky test detection patterns

Tip: Isolate tests, mock dependencies, and run tests frequently during development.

© conorluddy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/ios-testing-patterns of conorluddy/xclaude-plugin.

Open the folder on GitHubat commit 6de4b2c

Compare with similar skills

iOS Testing Patterns 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.

iOS Testing Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
iOS Testing Patterns this skillconorluddy/xclaude-plugin183—~4.5kAutomated safety check: PassMIT
Orca iOS Simulator Controlstablyai/orca87k1 repos~584Automated safety check: PassApache-2.0
Limrun iOS Simulatorsuperset-sh/superset15k—~5.2kAutomated safety check: NotesCustom licence
Xcode Simulator TestEveryInc/compound-engineering-plugin25k—~519Automated safety check: PassMIT
Apple Crash Log .NET Symbolicationdotnet/skills5.6k1 repos~2.4kAutomated safety check: PassMIT
Update Swiftui APIsAvdLee/SwiftUI-Agent-Skill3.7k—~1.2kAutomated safety check: PassMIT

Similar skills

  • iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…

    87k GitHub starsUsed in 1 repo~584 tokens
    MobileAuto-check passed
  • Limrun iOS Simulator

    superset-sh/superset

    Drives an app on a Limrun cloud iOS simulator from any OS: launch, tap, type, read the accessibility tree and logs, take screenshots, record video and reach local services.

    15k GitHub stars~5.2k tokensUpdated today
    MobileAuto-check: notes
  • Xcode Simulator Test

    EveryInc/compound-engineering-plugin

    Builds an iOS app, exercises it on a simulator with XcodeBuildMCP and reports PASS, FAIL or PARTIAL with screenshots, logs and per-screen evidence.

    25k GitHub stars~519 tokensUpdated today
    MobileAuto-check passed
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    MobileAuto-check passed
  • Update Swiftui APIs

    AvdLee/SwiftUI-Agent-Skill

    Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.

    3.7k GitHub stars~1.2k tokensUpdated yesterday
    MobileAuto-check passed
  • iOS Simulator Skill

    conorluddy/ios-simulator-skill

    29 production-ready scripts for iOS app testing, building, and automation.

    1.3k GitHub stars~5.7k tokensUpdated yesterday
    MobileAuto-check passed

More from conorluddy/xclaude-plugin

All 8 skills in this repo
  • iOS Accessibility Testing

    conorluddy/xclaude-plugin

    Guides WCAG 2.1 and VoiceOver accessibility testing for iOS apps, working from the accessibility tree and not from screenshots.

    183 GitHub stars~5k tokensUpdated 25 days ago
    Auto-check passed
  • iOS Crash Log Debugging

    conorluddy/xclaude-plugin

    Walks through retrieving, symbolicating and diagnosing iOS crash logs, turning a cryptic stack trace into the function names that actually failed.

    183 GitHub stars~4.9k tokensUpdated 25 days ago
    Auto-check passed
  • iOS Simulator Workflows

    conorluddy/xclaude-plugin

    Manages iOS Simulator devices and apps through the execute_simulator_command MCP tool instead of raw simctl: boot, create and delete devices, install and launch apps, screenshots and diagnostics.

    183 GitHub stars~3.3k tokensUpdated 25 days ago
    Auto-check passed
  • xc-plugin State Management

    conorluddy/xclaude-plugin

    Teaches how xc-plugin saves tokens with progressive disclosure, cached responses and consistent configuration, so large device lists and build logs arrive as summaries first.

    183 GitHub stars~4k tokensUpdated 25 days ago
    Auto-check passed
  • UI Automation Workflows

    conorluddy/xclaude-plugin

    Accessibility-first UI automation using IDB. An agent skill from conorluddy/xclaude-plugin.

    183 GitHub stars~2.2k tokensUpdated 25 days ago
    Auto-check passed
  • Xcode Build Workflows

    conorluddy/xclaude-plugin

    Directs iOS build, test and clean operations through the execute_xcode_command MCP tool instead of raw xcodebuild in the shell, with parameter-level retries on failure.

    183 GitHub stars~3k tokensUpdated 25 days ago
    Auto-check passed

Categories

Questions about iOS Testing Patterns

What does iOS Testing Patterns do?

XCTest and XCUITest execution workflows and flaky test detection patterns. iOS Testing Patterns is an agent skill from conorluddy/xclaude-plugin.

When should I use iOS Testing Patterns?

iOS Testing Patterns fits situations like: tasks that involve Failing and flaky tests; tasks that involve Test strategy; tasks that involve Mobile testing and debugging.

How do I install iOS Testing Patterns in Claude Code?

Run `npx skills add conorluddy/xclaude-plugin --skill ios-testing-patterns -a claude-code`. Or copy the skill folder (skills/ios-testing-patterns in conorluddy/xclaude-plugin) into .claude/skills/ios-testing-patterns in your project. Claude Code loads it when a task matches its description.

How do I install iOS Testing Patterns in Codex?

Run `npx skills add conorluddy/xclaude-plugin --skill ios-testing-patterns -a codex`. Or copy the skill folder (skills/ios-testing-patterns in conorluddy/xclaude-plugin) into .agents/skills/ios-testing-patterns in your project. Codex loads it when a task matches its description.

Can I use iOS Testing Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add conorluddy/xclaude-plugin --skill ios-testing-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ios-testing-patterns, .gemini/skills/ios-testing-patterns, .github/skills/ios-testing-patterns and .opencode/skills/ios-testing-patterns in your project.

What does iOS Testing Patterns need to run?

SKILL.md names no scripts, command-line tools or credentials: iOS Testing Patterns is instructions for the agent only.

Does iOS Testing Patterns access the network?

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.

Is iOS Testing Patterns safe to install?

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.

What licence does iOS Testing Patterns use?

iOS Testing Patterns is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does iOS Testing Patterns use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to iOS Testing Patterns?

Skills that share tags, products or a category with iOS Testing Patterns: Orca iOS Simulator Control (stablyai/orca, 87k stars), Limrun iOS Simulator (superset-sh/superset, 15k stars), Xcode Simulator Test (EveryInc/compound-engineering-plugin, 25k stars) and Apple Crash Log .NET Symbolication (dotnet/skills, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains iOS Testing Patterns?

conorluddy (a GitHub user) maintains it in conorluddy/xclaude-plugin, which has 183 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 12, 2026.

Source: conorluddy/xclaude-plugin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.