Build + run on a connected iOS device

SkillDev tools

This skill should be used when the user invokes "/xcode-run-device" to build the current Xcode project, install the app on a connected iOS device, and launch it.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Build + run on a connected iOS device skill

What this skill tells your AI

The instructions your AI receives, as published by xenodium/emacs-skills in skills/xcode-run-device/SKILL.md and read by ahel’s review.

Build the Xcode workspace or project under the current working directory and launch it on a wired-connected iOS device via Xcode 15+ devicectl. Requires a configured signing team in the project and a trusted, paired device.

How to run

The shared agent-skill-xcode.el lives in the sibling xcode-shared directory at skills/xcode-shared/agent-skill-xcode.el in the emacs-skills plugin. All four /xcode-* skills load it from there.

emacsclient --eval "(progn (load \"/path/to/skills/xcode-shared/agent-skill-xcode.el\" nil t) (agent-skill-xcode-run-device :project-dir \"$(pwd)\"))"

The function:

  • Locates the workspace/project and picks a scheme.
  • Locates the first connected device via xcrun devicectl list devices -j.
  • Runs xcodebuild build against the device's specific UDID.
  • Reads BUILT_PRODUCTS_DIR / WRAPPER_NAME / PRODUCT_BUNDLE_IDENTIFIER from -showBuildSettings -json.
  • Installs (xcrun devicectl device install app) and launches (xcrun devicectl device process launch).
  • Returns a multi-line status string. On build failure, returns the same error format as /xcode-build-device.

Rules

  • Pass the agent's current working directory as :project-dir via $(pwd).
  • The shared elisp lives under xcode-shared/agent-skill-xcode.el — load it from there.
  • Run via the Bash tool with a single emacsclient --eval invocation. Builds can take minutes; consider extending the Bash timeout if known to be slow.
  • Report the returned status string verbatim.
  • If the function signals "No connected iOS device found", tell the user to plug in a device and trust the Mac on it.
  • If the build fails with a code-signing error, point them at Xcode → target → Signing & Capabilities → Team. Don't try to fix signing automatically.
  • Requires Xcode 15+ for devicectl. If xcrun devicectl is missing, tell the user to update Xcode.

Signals

GitHub stars
135
Forks
17
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
xcode-run-device
Source
github.com/xenodium/emacs-skills