Skip to content

feat(setup): platform-aware wizard — platform selection, smart workflow pre-seeding, macOS-only simulator/device skip #280

@ichoosetoaccept

Description

@ichoosetoaccept

The xcodebuildmcp setup wizard has no awareness of which Apple platforms a project targets. As a result:

  • Workflow selection is a flat list with no smart defaults — users don't know which workflows are relevant for their platform.
  • The simulator prompt appears even for macOS-only projects that don't need one.
  • There's no platform written to sessionDefaults, so the agent has to guess the platform on every command.

Proposed changes

Platform selection step — a multi-select prompt asking which platforms the project targets (macOS, iOS, tvOS, watchOS, visionOS). Previous choices are pre-loaded on re-run, inferred from sessionDefaults.platform, sessionDefaults.simulatorPlatform, or the existing workflow set.

Smart workflow pre-selection — based on the selected platforms, the wizard pre-seeds the workflow selection with the appropriate set (e.g. macOS-only gets the macOS + common workflows; iOS gets the simulator workflow set). Users can override freely.

Skip simulator and device prompts for macOS-only — when macOS is the only selected platform, both the simulator and physical device selection prompts are skipped entirely.

platform written to sessionDefaults — for single-platform selections, platform is persisted to config.yaml. For multi-platform projects it is omitted so the agent can choose per-command. On macOS-only, stale simulatorId/simulatorName/deviceId are cleaned up from the config.

--format mcp-json includes XCODEBUILDMCP_PLATFORM — when a single platform is selected, the ready-to-paste MCP config JSON block includes XCODEBUILDMCP_PLATFORM.


Note: #269 originally tracked this feature and was closed pointing to #272, but the platform wizard described there was not part of that PR. This issue picks up the remaining work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions