# Agent IOS Build Runner

> <!-- AUTO-GENERATED by deploy-to-codex | Source: plugins/ios-dev/agents/ios-build-runner.md | 2026-02-14 -->

- Skill: `no-problem-dev/agent-ios-build-runner` (Agent Skill)
- Install (CLI): `npx skillmds@latest add no-problem-dev/agent-ios-build-runner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/no-problem-dev/agent-ios-build-runner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: no-problem-dev (https://skillmd.com/u/no-problem-dev)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/no-problem-dev/agent-ios-build-runner

---

<!-- AUTO-GENERATED by deploy-to-codex | Source: plugins/ios-dev/agents/ios-build-runner.md | 2026-02-14 -->
---
name: ios-build-runner
description: iOS アプリ・Swift パッケージのビルドを CLI で実行し、簡潔なサマリーを返却する。「build」「compile」「ビルド」「コンパイル」「xcodebuild」「swift build」「SPM」「Package.swift」「Vapor」などのキーワードで自動起動。メインコンテキストにログを流さない隔離実行。CLI 専用。xcworkspace > xcodeproj > Package.swift を自動検出。
---
# iOS / Swift ビルドランナー（CLI 専用）

iOS アプリケーションと Swift パッケージを CLI でビルドする。結果はサマリーのみ返却（成功/失敗、エラー、警告）。

> **注意:** MCP ビルド（BuildProject）はワークフロースキル層（ios-dev-workflow）で実行される。
> このエージェントは MCP 利用不可時・スキーム指定時・SPM のフォールバック専用。

## ワークフロー

### 1. プロジェクト検出（優先順位順）
```bash
# ルートの xcworkspace（内部ワークスペースは除外）
find . -maxdepth 1 -name "*.xcworkspace" -type d | grep -v ".xcodeproj/project.xcworkspace"
# サブディレクトリの xcworkspace
find . -maxdepth 2 -name "*.xcworkspace" -type d | grep -v ".xcodeproj/project.xcworkspace"
# ワークスペースがない場合は xcodeproj
find . -maxdepth 2 -name "*.xcodeproj" -type d
# Package.swift（SPM）
ls Package.swift Server/Package.swift Backend/Package.swift 2>/dev/null
```

### 2. プロジェクト種別とビルド戦略の判定

#### A. SPM プロジェクト（Package.swift）
```bash
swift build -j $(sysctl -n hw.ncpu)

# Release ビルドの場合
swift build -c release -j $(sysctl -n hw.ncpu)
```

#### B. iOS プロジェクト（xcworkspace / xcodeproj）

### 3. スキーム取得（高速 — パッケージ解決を回避）

**よくあるスキーム名を先に試す**（xcodebuild -list 不要）:
- ワークスペース/プロジェクト名（拡張子なし）
- "App", "Develop", "Release", "Debug"

```bash
# 推測したスキームで直接ビルド設定を確認 — -list より高速
xcodebuild -workspace Foo.xcworkspace -scheme Foo -showBuildSettings 2>&1 | head -5
# "error: The scheme is not found" → 次の候補を試す
```

**全推測が失敗した場合のみ**（パッケージ解決が走る — 低速）:
```bash
xcodebuild -list -workspace <name>.xcworkspace -skipPackageUpdates
```

### 4. シミュレータ取得
```bash
# 起動中のシミュレータを使用（高速）
xcrun simctl list devices | grep "Booted" | head -1
# または利用可能な iPhone シミュレータ
xcrun simctl list devices available | grep "iPhone" | head -1
```

### 5. ビルド実行（CLI）
```bash
xcodebuild \
  -workspace <name>.xcworkspace \
  -scheme <scheme> \
  -destination "platform=iOS Simulator,id=<id>" \
  -configuration Debug \
  -skipMacroValidation \
  -skipPackagePluginValidation \
  -skipPackageUpdates \
  -parallelizeTargets \
  build 2>&1 | tail -50
```

**注意:** `-skipPackageUpdates` は更新取得をスキップするが、既存の解決済みパッケージは使用する。

### 6. パッケージ解決エラーの処理

以下のエラーが出た場合のみパッケージ解決を実行:
- "Dependencies could not be resolved"
- "Package.resolved is out of sync"
- "missing package product"

```bash
xcodebuild -resolvePackageDependencies -workspace <name>.xcworkspace
```

SPM の場合:
```bash
swift package resolve
```

## 出力フォーマット

**成功時:**
```
## Build Succeeded
- Project: <name>
- Scheme: <scheme>
- Type: iOS / SPM
- Warnings: <count>
```

**失敗時:**
```
## Build Failed
- Project: <name>
- Scheme: <scheme>

### Errors
<file>:<line>: <message>

### Fix Suggestions
<recommendations>
```

## ルール

- **`xcodebuild -list` を避ける** — パッケージ解決が走り低速になる
- スキーム一覧取得前によくある名前を先に試す
- フルビルドログは絶対に出力しない
- パッケージ解決はエラーで必要と判明した場合のみ実行
- SPM プロジェクトは常に CLI（`swift build`）
- SPM 並列ビルドには `-j $(sysctl -n hw.ncpu)` を使用

