Agent skill

Run Simulator

by rshankras in rshankras/claude-code-apple-skills

Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually.

MITAuto-check: notesMobile

Install Run Simulator

skills CLI
$ npx skills add rshankras/claude-code-apple-skills --skill run-simulator -a claude-code

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

GitHub CLI
$ gh skill install rshankras/claude-code-apple-skills run-simulator --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/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ios/run-simulator .claude/skills/run-simulator && 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
run-simulator
GitHub stars
783
Token cost
~1.7k tokens
SKILL.md length
710 words
Files
1
Skills in repo
41
Repo updated
First seen
Licence
MIT

At a glance

Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually.

  • Works in 6 steps: Discover the project and scheme → Pick a simulator destination → Build for the simulator → …
  • The user wants to run the app
  • SKILL.md covers When This Skill Activates, Process, Output Format and Reliability Notes (common…, plus 1 more section
  • Calls xcrun and xcodebuild

What it does

Run Simulator is an agent skill from rshankras/claude-code-apple-skills. Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Use when the user wants to run the app, see a change live, screenshot the running app, or confirm a UI fix actually works (not just that it compiles).

Its SKILL.md is about 1.7k 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 Mobile, covering iOS development. It works with iOS. The repository describes itself as: Claude Code skills for Apple platform development (iOS, macOS, iPadOS) — product validation, code generation, App Store optimization, and more. The licence is MIT.

When your agent uses it

  • The user wants to run the app
  • See a change live
  • Screenshot the running app
  • Confirm a UI fix actually works (not just that it compiles)

Example prompts

  • “/run-simulator”

Requirements

  • Pre-approved tools (allowed-tools): Bash, Read, Glob

Workflow steps

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

  1. Discover the project and scheme
  2. Pick a simulator destination
  3. Build for the simulator
  4. Resolve the built .app and its bundle id
  5. Boot, install, launch
  6. Screenshot and verify (and drive if needed)

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • xcrun
    • xcodebuild

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

  • Network

    Links to these hosts (documentation or services it may open):

    • developer.apple.com

    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

Run Simulator loads about 1.7k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 710 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Glob

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 rshankras/claude-code-apple-skills at commit 9ffb831, republished under its MIT licence (© rshankras). 710 words, ~1,694 tokens.

Download SKILL.mdSave it as .claude/skills/run-simulator/SKILL.md (or your agent's skills folder).
name
run-simulator
description
Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Use when the user wants to run the app, see a change live, screenshot the running app, or confirm a UI fix actually works (not just that it compiles).
allowed-tools
Bash, Read, Glob
last_verified
2026-07-16
review_by
2027-06-22

Run in Simulator

Launches the actual app in the iOS Simulator and drives it far enough to see what a user would see. Building proves the code compiles; this skill proves it runs. The payoff is a screenshot of the live app that you read back to confirm the change — a blank or crashed frame is a failure, not a pass.

This skill is generic. Nothing about a specific app is hardcoded — the scheme, simulator, product path, and bundle id are all discovered at runtime.

When This Skill Activates

Use this skill when the user:

  • Asks to "run", "launch", or "open" the app in the simulator
  • Wants to see a change working, not just compile it
  • Asks for a screenshot of the running app
  • Wants to verify a UI fix visually before committing or pushing
  • Says "does this actually work?" about a view/flow they just changed

Do not use it for unit/UI test runs (xcodebuild test) — that's a different goal. This is about meeting the app as a user would.

Process

Run the steps in order. Each step's output feeds the next, so don't hardcode values a previous step can discover.

1. Discover the project and scheme

Prefer a workspace over a bare project when both exist (CocoaPods/SPM setups often require the workspace):

bash
# Find the container
ls *.xcworkspace 2>/dev/null || ls *.xcodeproj 2>/dev/null

# List schemes (use -workspace X.xcworkspace OR -project X.xcodeproj)
xcodebuild -list -project <App>.xcodeproj 2>/dev/null

Pick the app scheme (usually matches the app name). If several schemes look plausible and none clearly matches, ask the user which to run rather than guessing.

2. Pick a simulator destination

Never hardcode a device name — the named device may not exist on this Mac (e.g. assuming "iPhone 16" when only "iPhone 17 Pro" is installed fails with "Unable to find a device matching the provided destination specifier"). List what's actually available and prefer one already booted:

bash
# Already-booted sim, if any (fastest — skip the boot wait)
xcrun simctl list devices booted

# Otherwise, available iPhones to choose from
xcrun simctl list devices available | grep -i iphone

Choose a booted device if present; otherwise pick a recent iPhone from the available list and remember its name for the destination string.

3. Build for the simulator
bash
xcodebuild build \
  -project <App>.xcodeproj \
  -scheme <Scheme> \
  -destination 'platform=iOS Simulator,name=<SimName>' \
  2>&1 | tail -5
  • Read the tail for ** BUILD SUCCEEDED **. Note that -quiet suppresses that success line, so either drop -quiet for the confirming run or grep for error: explicitly.
  • On failure, surface the error: lines — don't proceed to install a stale or nonexistent build.
4. Resolve the built .app and its bundle id

Don't guess the DerivedData path — ask the build system for it:

bash
# Product directory + name from the resolved build settings
eval $(xcodebuild -project <App>.xcodeproj -scheme <Scheme> \
  -destination 'platform=iOS Simulator,name=<SimName>' \
  -showBuildSettings 2>/dev/null \
  | awk -F' = ' '/ TARGET_BUILD_DIR =/{print "DIR=\""$2"\""} / FULL_PRODUCT_NAME =/{print "NAME=\""$2"\""}')
APP="$DIR/$NAME"
echo "APP: $APP"

# Bundle id straight from the built Info.plist
BID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "$APP/Info.plist")
echo "Bundle id: $BID"
5. Boot, install, launch
bash
SIM="<SimName>"
xcrun simctl boot "$SIM" 2>/dev/null   # no-op if already booted
open -a Simulator                      # bring the window forward
xcrun simctl bootstatus "$SIM" -b      # block until fully booted

xcrun simctl install "$SIM" "$APP"
xcrun simctl launch "$SIM" "$BID"

simctl launch prints <bundleid>: <pid> on success. A non-zero exit or an error string here means the app failed to start — investigate before screenshotting.

Show full SKILL.md (302 more words)Show less
6. Screenshot and verify (and drive if needed)
bash
xcrun simctl io "$SIM" screenshot /tmp/sim-shot.png

Then Read /tmp/sim-shot.png and actually look at it:

  • Blank/white frame, a crash dialog, or the launch screen stuck → failure.
  • The expected screen → success; describe what confirms the change.

If the change lives behind navigation, drive there before judging. Tap by point or describe to the user what to navigate to:

bash
# Tap a point (x y in points) — useful for hitting a known tab/button
xcrun simctl io "$SIM" tap <x> <y>          # (where supported)
# Re-screenshot after each interaction
xcrun simctl io "$SIM" screenshot /tmp/sim-shot-2.png

For deep links, xcrun simctl openurl "$SIM" "<scheme>://<path>". If precise tapping isn't available, take the screenshot at the landing screen and tell the user the exact taps to reach the target view.

Output Format

Report, concisely:

  1. What ran — scheme, simulator name/OS, bundle id.
  2. Build result — succeeded / failed (with the error tail if failed).
  3. Launch result — pid on success, or the failure reason.
  4. What the screenshot shows — the screen reached and whether it confirms the change. Embed/Read the screenshot so the user sees it too.
  5. Anything the user must do — e.g. taps needed to reach a gated screen.

Reliability Notes (common failure modes)

  • Wrong device name → "Unable to find a device matching the destination." Always list available sims (step 2) instead of assuming a model number.
  • Stale install → if behavior looks unchanged, xcrun simctl uninstall "$SIM" "$BID" then reinstall; or xcrun simctl shutdown "$SIM" && xcrun simctl erase "$SIM" for a clean slate (destroys sim data — confirm first).
  • Workspace vs project → if the build complains about missing packages/pods, re-run with -workspace <App>.xcworkspace instead of -project.
  • First boot is slow → simctl bootstatus -b blocks correctly; a fixed sleep does not and races the install.
  • Launch screen "stuck" → on a cold sim the app may still be initializing; re-screenshot after a short wait before declaring failure.

References

© rshankras, 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/run-simulator of rshankras/claude-code-apple-skills.

Open the folder on GitHubat commit 9ffb831

Compare with similar skills

Run Simulator 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.

Run Simulator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Run Simulator this skillrshankras/claude-code-apple-skills783—~1.7kAutomated safety check: NotesMIT
Hig Project Contextraintree-technology/hig-doctor1435 repos~1.2kAutomated safety check: PassMIT
Hig Components Contentraintree-technology/hig-doctor1435 repos~1.3kAutomated safety check: PassMIT
iOS Simulator Skilln0an/VivaDicta1311 repos~2.5kAutomated safety check: PassMIT
Inspector Implementationipedro/Inspector170—~729Automated safety check: PassMIT
Run iOS SimulatoriPlug2/iPlug2OOS158—~711Automated safety check: PassNone

Similar skills

  • Hig Project Context

    raintree-technology/hig-doctor

    Create or update a shared Apple design context document that other HIG skills use to tailor guidance.

    143 GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Hig Components Content

    raintree-technology/hig-doctor

    Apple Human Interface Guidelines for content display components.

    143 GitHub starsUsed in 5 repos~1.3k tokens
    MobileAuto-check passed
  • iOS Simulator Skill

    n0an/VivaDicta

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

    131 GitHub starsUsed in 1 repo~2.5k tokens
    MobileAuto-check passed
  • Inspector Implementation

    ipedro/Inspector

    A skill your agent uses when an agent needs to implement or modify the Inspector library itself — panel UI, hierarchy/runtime behavior, custom property models, macros, or Example-app dogfooding.

    170 GitHub stars~729 tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Run iOS Simulator

    iPlug2/iPlug2OOS

    Build and run an iPlug2 iOS app in the iOS Simulator. An agent skill from iPlug2/iPlug2OOS.

    158 GitHub stars~711 tokensUpdated 23 days ago
    MobileAuto-check passed
  • Official

    Evaluates a bitwarden/ios "Update SDK to" PR against the sdk-swift commit range for compile-time, runtime and serialization breaking changes, maps affected symbols to iOS call sites, and applies…

    695 GitHub stars~2.6k tokensUpdated today
    MobileAuto-check passed

More from rshankras/claude-code-apple-skills

All 41 skills in this repo
  • Accessibility Generator

    rshankras/claude-code-apple-skills

    Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features.

    783 GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check: notes
  • Animation Patterns

    rshankras/claude-code-apple-skills

    SwiftUI animation patterns including springs, transitions, PhaseAnimator, KeyframeAnimator, SF Symbol effects, scroll-driven effects, mesh gradients, text renderers, and shader effects.

    783 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check passed
  • App Description Writer

    rshankras/claude-code-apple-skills

    Generate compelling App Store descriptions that convert browsers into users.

    783 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • App Icon Generator

    rshankras/claude-code-apple-skills

    Generates an app icon for macOS or iOS — a fast CoreGraphics placeholder and/or flat layered source art to finish in Icon Composer (the Liquid Glass / iOS 26+ standard).

    783 GitHub stars~5.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • App Namer

    rshankras/claude-code-apple-skills

    Turn an app idea into validated, App-Store-ready name candidates.

    783 GitHub stars~3.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Bundles And Licensing

    rshankras/claude-code-apple-skills

    Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School &…

    783 GitHub stars~1.8k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Categories

Questions about Run Simulator

What does Run Simulator do?

Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Run Simulator is an agent skill from rshankras/claude-code-apple-skills. Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually.

When should I use Run Simulator?

Run Simulator fits situations like: the user wants to run the app; see a change live; screenshot the running app; confirm a UI fix actually works (not just that it compiles).

How do I install Run Simulator in Claude Code?

Run `npx skills add rshankras/claude-code-apple-skills --skill run-simulator -a claude-code`. Or copy the skill folder (skills/ios/run-simulator in rshankras/claude-code-apple-skills) into .claude/skills/run-simulator in your project. Claude Code loads it when a task matches its description.

How do I install Run Simulator in Codex?

Run `npx skills add rshankras/claude-code-apple-skills --skill run-simulator -a codex`. Or copy the skill folder (skills/ios/run-simulator in rshankras/claude-code-apple-skills) into .agents/skills/run-simulator in your project. Codex loads it when a task matches its description.

Can I use Run Simulator 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 rshankras/claude-code-apple-skills --skill run-simulator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-simulator, .gemini/skills/run-simulator, .github/skills/run-simulator and .opencode/skills/run-simulator in your project.

What does Run Simulator need to run?

Going by SKILL.md and its folder, Run Simulator needs the command-line tools its instructions call (xcrun and xcodebuild). Its frontmatter pre-approves these tools: Bash, Read, Glob.

Does Run Simulator access the network?

SKILL.md names 1 domain. As links in the text: developer.apple.com. This is read from the text; nothing was executed.

Is Run Simulator safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Run Simulator use?

Run Simulator 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 Run Simulator use?

About 1.7k tokens (SKILL.md is roughly 6.8k 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 Run Simulator?

Skills that share tags, products or a category with Run Simulator: Hig Project Context (raintree-technology/hig-doctor, 143 stars), Hig Components Content (raintree-technology/hig-doctor, 143 stars), iOS Simulator Skill (n0an/VivaDicta, 131 stars) and Inspector Implementation (ipedro/Inspector, 170 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Run Simulator?

rshankras (a GitHub user) maintains it in rshankras/claude-code-apple-skills, which has 783 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on July 24, 2026.

Source: rshankras/claude-code-apple-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.