kendex.ai

Marketplaces / vanillagreencom/kendex / xcode-run

xcode-run

Load to install or dispatch a macOS GitHub Actions build, test or simulator screenshot run for an Xcode project.

skill · testing · @ 8ee7099

Supported tools: all tools

Install in kendex: kendex add --skill xcode-run after subscribing to vanillagreencom/kendex.

Xcode run

Install this skill in project scope and consent to its repository effects. kendex runs scripts/install.sh to add templates/mac-run.yml as .github/workflows/mac-run.yml. The installer preserves an existing workflow. Commit the workflow to the default branch so GitHub can dispatch it.

Consumer configuration

Edit the top-level env values in .github/workflows/mac-run.yml:

ValueMeaning
XCODE_SCHEMEA shared Xcode scheme. Replace the App placeholder.
XCODE_DESTINATIONAn Xcode destination available on macos-latest. Replace the example with a simulator supported by the selected Xcode. Screenshots require a concrete simulator, not a generic destination.

The workflow runs xcodebuild from the repository root. A workspace, multiple projects or a project in a subdirectory needs the corresponding path or working directory in the installed workflow. The screenshot scheme must build one simulator application target. The workflow reads its app path and simulator identifier from xcodebuild -showBuildSettings -json. It reads the bundle identifier from the built app's Info.plist.

Dispatch

workflow_dispatch is the only trigger. Its only input is step:

stepOperation
buildxcodebuild build. This is the default.
testxcodebuild test. The scheme must have a test action.
screenshotsBoot the selected simulator, build, install and launch the app, then capture screenshots/launch.png.
gh workflow run mac-run.yml -f step=build
gh workflow run mac-run.yml -f step=test
gh workflow run mac-run.yml -f step=screenshots

Screenshots capture the launch view after a short wait. They do not navigate the app or assert that its UI is ready.

Artifact

Each run uploads one artifact named mac-run:

  • logs/<step>.log: combined command output for the selected operation.
  • screenshots/*.png: simulator images from a screenshot run.

The upload runs with if: always(). A failing command fails the run and keeps its log for upload. A failed checkout or runner interruption can prevent log creation or upload.

The workflow disables code signing. It does not archive, export or deploy an app.