# Xcode Build Device

> This skill should be used when the user invokes "/xcode-build-device" to build the current Xcode project for a physical iOS device (generic destination).

- Skill: `xenodium/xcode-build-device` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xenodium/xcode-build-device`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xenodium/xcode-build-device/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xenodium (https://skillmd.com/u/xenodium)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xenodium/xcode-build-device

---


# Build Xcode project for iOS device

Build the Xcode workspace or project under the current working directory for a physical iOS device. Uses a *generic* device destination (no specific UDID). Requires a configured signing team in the project — otherwise `xcodebuild` will fail with a code-signing error.

## How to build

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.

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

The function:
- Locates the first `.xcworkspace` (preferred) or `.xcodeproj` in `:project-dir`.
- Picks a scheme via `xcodebuild -list -json`.
- Runs `xcodebuild build -destination 'generic/platform=iOS'`.
- Returns `"Build succeeded: ..."` on success, or `"Build FAILED: ...\n--- last 40 lines ---\n..."` on failure.

## Rules

- Pass the agent's current working directory as `:project-dir` via `$(pwd)`. Do not assume a hard-coded path.
- The shared elisp lives under `xcode-shared/agent-skill-xcode.el` — load it from there, not from this skill's directory.
- Run via the Bash tool with a single `emacsclient --eval` invocation.
- Report the returned status string verbatim on failure.
- If the failure mentions code signing, point the user to Xcode → target → Signing & Capabilities → Team. Don't try to fix signing automatically.
- If the user wants to also run the app on-device, suggest `/xcode-run-device`.

