構建 iOS 應用
說明用 Codex 做 iOS app 時的 CLI-first 路線,以及什麼時候引入 XcodeBuildMCP、skills 或外掛。
用 Codex 做 iOS app,建議保持 CLI-first:greenfield 場景先 scaffold SwiftUI app 和 build-and-launch script;已有 Xcode 專案裡,需要更深自動化時再加入 XcodeBuildMCP、SwiftUI skills 或 Build iOS Apps plugin。
iOS 任務的可信度來自可重複 build / launch / simulator loop。不要只交付程式碼檔案;要說明 scheme、device、命令和最小驗證結果。
官方頁面:https://developers.openai.com/codex/use-cases/native-ios-apps
適合什麼任務
| 場景 | Codex 應該做什麼 |
|---|---|
| 從零做 iPhone / iPad SwiftUI app | scaffold app 和 build loop |
| 已有 iOS project 需要 schemes、simulator output、screenshots 或 UI automation | 使用 XcodeBuildMCP 發現 targets、build、launch、截圖並迭代 |
| 團隊希望長時間 iOS UI 任務保持 agentic | 用 CLI-first loop,而不是依賴 Xcode GUI |
使用的能力
| 能力 | 用法 | 連結 |
|---|---|---|
build-ios-apps | 構建或重構 SwiftUI UI,採用 Liquid Glass 等現代 iOS patterns,審計 runtime performance,並用 XcodeBuildMCP-backed workflows 在 simulator 中除錯 | https://github.com/openai/plugins/tree/main/plugins/build-ios-apps |
相關官方說明:
- Model Context Protocol:https://developers.openai.com/codex/mcp
- Agent skills:https://developers.openai.com/codex/skills
- Local environments:https://developers.openai.com/codex/app/local-environments
起始提示詞
请 scaffold 一个 starter SwiftUI app,并添加一个 build-and-launch script,方便我接到本地环境的 `Build` action。
约束:
- 保持 CLI-first。优先使用 Apple 的 `xcodebuild`;如果更干净,可以使用 Tuist。
- 如果这个 repo 已经包含完整 Xcode project,请使用 XcodeBuildMCP 列出 targets,选择正确 scheme,build、launch,并在迭代时捕获 screenshots。
- 如果已有 models、navigation patterns 和 shared utilities,请复用。
- 除非我明确要求 shared Apple-platform implementation,否则 app 聚焦 iPhone 和 iPad。
- 每次改动后使用小而可信的 validation loop;只有窄检查通过后,才扩展到更大范围 build。
- 告诉我你把这个任务当作 greenfield scaffold,还是 existing-project change。
交付:
- app scaffold 或 requested feature slice
- 一个包含准确 commands 的小型 build-and-launch script
- 你运行过的最小相关 validation steps
- 使用的准确 scheme、simulator 和 checks這個 prompt 強調 CLI-first 和 small validation loop。Codex 應說明自己是在 greenfield scaffold,還是 existing-project change。
推薦技術面
| 需要 | 推薦預設值 | 原因 |
|---|---|---|
| UI framework | SwiftUI | 快速 prototype iPhone/iPad views、navigation、shared state,同時保持 UI code 可讀 |
| Build tooling | xcodebuild 或 Tuist | 都能把 native build loop 留在 terminal,不依賴 Xcode GUI |
| Project automation | XcodeBuildMCP | 需要 Codex inspect schemes/targets、launch app、capture screenshots、持續迭代時使用 |
| Distribution tooling | App Store Connect CLI | 讓 agent 留在 loop 裡,並把 app build 直接送到 App Store |
Scaffold App 和 Build Loop
greenfield work 先用 plain prompting。讓 Codex scaffold starter iOS SwiftUI app,並寫一個小的 build-and-launch script,可以接到 local environment 的 Build action。
保持 CLI-first:
xcodebuild可以 list schemes。- 可以執行 build、test、archive、
build-for-testing、test-without-building。 - Codex 可以留在 agentic loop,不用跳進 Xcode GUI。
如果你接受第三方專案生成工具,Tuist 是一個可選下一步。它能 generate 和 build Xcode projects,仍然讓 Codex 在 terminal 裡 build / launch。
當已經進入完整 Xcode project,且需要 schemes、targets、simulator control、screenshots、logs、UI interaction 時,使用 XcodeBuildMCP。
可用 Skills
第一版通常不需要 skill 或 MCP server。工作變專門後再加:
- SwiftUI expert:通用 SwiftUI skill,內建較多實踐規則。
- SwiftUI Pro:面向 modern APIs、maintainability、accessibility、performance 的 SwiftUI review skill。
- Liquid Glass expert:幫助採用 iOS 26 Liquid Glass APIs,並調整 custom components。
- SwiftUI performance:當 feature 感覺慢或 view update path 可疑時,掃描常見 SwiftUI mistakes。
- Swift concurrency expert:處理 Swift concurrency diagnostics、編譯錯誤和 warning。
- SwiftUI view refactor:讓 SwiftUI files 更小、更一致。
- SwiftUI patterns:隨著 app 成長,使用更可預測的
@Observable和@Environmentarchitecture patterns。
迭代方式
第一版能跑後,或你從 existing project 開始時,prompt 要明確:
- 這是 greenfield repo 還是 existing Xcode project。
- 哪些 iOS devices 或 deployment targets 必須繼續工作。
- 期望的 validation loop 是什麼。
- 每次改動後跑哪條最窄但可信的驗證命令。
實用建議
從基礎開始
greenfield work 先 plain prompting,讓 Codex scaffold app 和 build-and-launch script。第一輪通常不需要 skill 或 MCP server。
使用小而可信的驗證迴圈
每次變更後,先跑能證明當前契約的最窄命令。窄檢查透過後,再擴充套件到 broader builds。
保持 CLI-first
xcodebuild 能覆蓋 list schemes、build、test、archive、build-for-testing、test-without-building,讓 Codex 不用依賴 Xcode GUI。
需要深度自動化時用 XcodeBuildMCP
當 schemes、targets、simulator control、screenshots、logs 和 UI interaction 變重要時,plain shell commands 不夠,XcodeBuildMCP 更適合。