@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +266 -267
- package/package.json +2 -2
- package/pipeline/scripts/_notices.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +68 -68
- package/pipeline/skills/shared/README.md +70 -70
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
|
@@ -3,41 +3,41 @@
|
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
5
|
"id": 1,
|
|
6
|
-
"prompt": "
|
|
7
|
-
"expected_output": "
|
|
6
|
+
"prompt": "Write a shell script for CI that builds our map app, runs it on a fresh simulator, and drives it along a custom walking route I define as coordinates (I don't have a GPX file). Tidy up afterwards.",
|
|
7
|
+
"expected_output": "Creates or looks up a device without hard-coding a UDID, boots and waits before installing the simulator .app, uses location start with waypoints, and clears location and removes the device in cleanup.",
|
|
8
8
|
"files": [],
|
|
9
9
|
"assertions": [
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"Boots before install
|
|
13
|
-
"
|
|
14
|
-
"Clears simulated location and shuts down
|
|
10
|
+
"Drives the route with `xcrun simctl location <device> start` and lat,lon waypoints (or stdin), not with run",
|
|
11
|
+
"Points out that `location run` only takes the names of scenarios that ship with the simulator, so a GPX path will not work there",
|
|
12
|
+
"Boots and waits (bootstatus -b) before install and launch, and installs the .app produced for the simulator, not an .ipa",
|
|
13
|
+
"Obtains the UDID from create output, a JSON lookup, or uses booted with a single simulator, instead of a literal UDID",
|
|
14
|
+
"Clears the simulated location and shuts down and deletes the simulator in a cleanup step, for example a trap on EXIT"
|
|
15
15
|
]
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"id": 2,
|
|
19
|
-
"prompt": "
|
|
20
|
-
"expected_output": "
|
|
19
|
+
"prompt": "Please review this test script. It starts our app via `xcrun simctl spawn booted env FEATURE_FLAG=1 /path/to/App`, treats a successful `xcrun simctl push` as proof that APNs works, and calls `privacy grant all` so that NSCameraUsageDescription and NSPhotoLibraryUsageDescription can be deleted from Info.plist. What would you change?",
|
|
20
|
+
"expected_output": "Replaces spawn with launch plus SIMCTL_CHILD_ variables, explains that simctl push is local and limited, lists payload rules, and keeps usage-description keys and real prompt testing.",
|
|
21
21
|
"files": [],
|
|
22
22
|
"assertions": [
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"States that
|
|
26
|
-
"
|
|
27
|
-
"
|
|
23
|
+
"Recommends `SIMCTL_CHILD_FEATURE_FLAG=1 xcrun simctl launch <device> <bundle-id>` to pass the variable to the app",
|
|
24
|
+
"Explains that spawn exists for running arbitrary executables (log stream, for example) and is the wrong tool for starting an installed app",
|
|
25
|
+
"States that simctl push delivers locally and proves nothing about device token registration, entitlements or server delivery, and supports only application remote pushes (not VoIP, complication or File Provider)",
|
|
26
|
+
"Gives the payload constraints: the root must be a JSON object, it must include a well-formed aps dictionary, and it may not exceed 4096 bytes",
|
|
27
|
+
"Keeps the usage-description keys, because granting permissions from the command line does not replace them, and keeps testing the real system prompt"
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"id": 3,
|
|
32
|
-
"prompt": "
|
|
33
|
-
"expected_output": "
|
|
32
|
+
"prompt": "Release-candidate test plan: which of these belong on the Simulator and which need a physical device? Capturing photos with the camera, pairing our BLE scale, altitude from the barometer, step counting from the accelerometer, the passcode fallback after Face ID fails, reacting to memory warnings, iCloud syncing, push notification delivery, and how fast our Metal renderer runs.",
|
|
33
|
+
"expected_output": "Assigns hardware-only checks to devices, keeps triggerable behaviors in the simulator, treats iCloud and push as split items, and states that simulator performance is not representative across processing, graphics, memory and networking.",
|
|
34
34
|
"files": [],
|
|
35
35
|
"assertions": [
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"Keeps
|
|
36
|
+
"Puts camera capture, BLE pairing, barometer and accelerometer/gyroscope checks on physical devices",
|
|
37
|
+
"Keeps the passcode fallback after a biometric failure, memory-warning handling and a hand-triggered iCloud sync on the simulator, and sends automatic iCloud propagation and conflicts to devices",
|
|
38
|
+
"Says simulator numbers do not stand in for device processing, graphics, memory, networking or Metal GPU performance, and schedules those measurements on hardware",
|
|
39
|
+
"Assigns APNs delivery to a physical device and describes simctl push as local-only",
|
|
40
|
+
"Keeps to where the simulator ends and hardware begins, without drifting into guides for Instruments, Core Motion, Core Bluetooth or a push server"
|
|
41
41
|
]
|
|
42
42
|
}
|
|
43
43
|
]
|
|
@@ -1,316 +1,223 @@
|
|
|
1
|
-
# simctl
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- [
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
# simctl command reference
|
|
2
|
+
|
|
3
|
+
Lookup tables for `xcrun simctl`. Workflows and the simulator-versus-hardware
|
|
4
|
+
boundary are in [the main skill](../SKILL.md). `<dev>` below means a UDID, or
|
|
5
|
+
`booted` when exactly one simulator is running. `xcrun simctl help <command>`
|
|
6
|
+
prints the authoritative usage for the installed Xcode.
|
|
7
|
+
|
|
8
|
+
## Devices
|
|
9
|
+
|
|
10
|
+
| Command | What it does |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `list [devices\|devicetypes\|runtimes\|pairs] [term\|available]` | Lists items; `-j` or `--json` for JSON; the `available` term hides unusable ones |
|
|
13
|
+
| `create <name> <device-type-id> [<runtime-id>]` | Makes a device and prints its UDID; without a runtime, the newest compatible one is used |
|
|
14
|
+
| `clone <dev> <new-name>` | Copies a device, installed apps and all |
|
|
15
|
+
| `delete <dev>\|unavailable\|all` | Removes devices; `unavailable` means devices the current Xcode SDK cannot run (for example, a missing runtime) |
|
|
16
|
+
| `rename <dev> <new-name>` | Renames |
|
|
17
|
+
| `erase <dev>\|all` | Wipes content and settings, keeps the device |
|
|
18
|
+
| `boot <dev>` | Starts the device's runtime |
|
|
19
|
+
| `bootstatus <dev> [-b]` | Waits until boot completes; `-b` starts the boot first if needed |
|
|
20
|
+
| `shutdown <dev>\|all` | Stops devices |
|
|
21
|
+
| `upgrade <dev> <runtime-id>` | Moves a device to a newer runtime |
|
|
22
|
+
| `pair <watch-dev> <phone-dev>` / `unpair <pair-id>` | Links a watchOS simulator to an iOS one, or removes the link |
|
|
23
|
+
|
|
24
|
+
Identifiers look like `com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro`
|
|
25
|
+
for device types and `com.apple.CoreSimulator.SimRuntime.iOS-26-0` for
|
|
26
|
+
runtimes. `create` and `upgrade` take these identifier strings; read the
|
|
27
|
+
exact values from `list devicetypes` and `list runtimes`.
|
|
28
|
+
|
|
29
|
+
## Apps
|
|
30
|
+
|
|
31
|
+
| Command | What it does |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `install <dev> <path-to.app>` | Installs a simulator build; the device must be booted and the path is an `.app` folder, not an `.ipa` |
|
|
34
|
+
| `uninstall <dev> <bundle-id>` | Removes the app and its data |
|
|
35
|
+
| `launch [--console\|--console-pty] [--terminate-running-process] [--stdout=<file>] [--stderr=<file>] <dev> <bundle-id> [args...]` | Starts the app; `--terminate-running-process` stops a running copy first |
|
|
36
|
+
| `terminate <dev> <bundle-id>` | Stops the running app |
|
|
37
|
+
| `spawn <dev> <binary> [args...]` | Runs any executable inside the simulator, which is how `log stream` runs |
|
|
38
|
+
| `get_app_container <dev> <bundle-id> [app\|data\|groups\|<group-id>]` | Prints a container path; `groups` lists every App Group container |
|
|
39
|
+
| `appinfo <dev> <bundle-id>` | Prints information from the app's Info.plist |
|
|
40
|
+
|
|
41
|
+
In scripts, prefer `bootstatus <dev> -b` followed by `install`. If a script
|
|
42
|
+
calls `boot` by itself, add `bootstatus <dev>` before any install, launch,
|
|
43
|
+
push or location command.
|
|
44
|
+
|
|
45
|
+
### Arguments and environment
|
|
46
|
+
|
|
47
|
+
- Extra words after the bundle ID reach the app as `CommandLine.arguments`.
|
|
48
|
+
- Force a language and region for one run:
|
|
49
|
+
`xcrun simctl launch "$SIM" org.example.pantry -AppleLanguages "(ko)" -AppleLocale "ko_KR"`.
|
|
50
|
+
- Environment variables for the launched app are taken from the calling
|
|
51
|
+
shell with a `SIMCTL_CHILD_` prefix, which simctl strips:
|
|
34
52
|
|
|
35
53
|
```bash
|
|
36
|
-
|
|
37
|
-
xcrun simctl list devicetypes
|
|
38
|
-
|
|
39
|
-
# Example output line:
|
|
40
|
-
# iPhone 16 Pro (com.apple.CoreSimulator.SimDeviceType.iPhone-16-Pro)
|
|
41
|
-
|
|
42
|
-
# List all runtimes
|
|
43
|
-
xcrun simctl list runtimes
|
|
44
|
-
|
|
45
|
-
# Example output line:
|
|
46
|
-
# iOS 18.4 - com.apple.CoreSimulator.SimRuntime.iOS-18-4
|
|
54
|
+
SIMCTL_CHILD_API_STAGE=beta SIMCTL_CHILD_VERBOSE_SYNC=1 xcrun simctl launch "$SIM" org.example.pantry
|
|
47
55
|
```
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## App Lifecycle Commands
|
|
57
|
+
`spawn` is for arbitrary processes such as `log stream`; it is not the way to
|
|
58
|
+
start an installed app with custom environment variables.
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
|---------|----------|-------|
|
|
55
|
-
| `install` | `simctl install <UDID> <path-to-.app>` | Device must be booted. Path is a `.app` directory, not `.ipa`. |
|
|
56
|
-
| `uninstall` | `simctl uninstall <UDID> <bundle-id>` | Removes app and its data. |
|
|
57
|
-
| `launch` | `simctl launch [--console] [--terminate-running-process] <UDID> <bundle-id> [args...]` | `--console` streams stdout/stderr. `--terminate-running-process` kills existing instance first. |
|
|
58
|
-
| `terminate` | `simctl terminate <UDID> <bundle-id>` | Sends SIGTERM to the running app. |
|
|
59
|
-
| `spawn` | `simctl spawn <UDID> <path-to-binary> [args...]` | Runs an arbitrary binary inside the simulator. Used for `log stream`. |
|
|
60
|
-
| `get_app_container` | `simctl get_app_container <UDID> <bundle-id> [app\|data\|groups\|<group-id>]` | Returns the filesystem path to the container. `groups` lists all App Group containers. |
|
|
61
|
-
| `appinfo` | `simctl appinfo <UDID> <bundle-id>` | Prints Info.plist-derived information as JSON. |
|
|
62
|
-
|
|
63
|
-
For scripts that boot a simulator before installing, prefer:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
xcrun simctl bootstatus <UDID> -b
|
|
67
|
-
xcrun simctl install <UDID> build/Build/Products/Debug-iphonesimulator/MyApp.app
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
`bootstatus -b` safely boots if needed and waits until the simulator finishes booting. If you call `simctl boot` separately, follow it with `xcrun simctl bootstatus <UDID>` before `install`, `launch`, `push`, or `location`.
|
|
71
|
-
|
|
72
|
-
### Launch Arguments and Environment
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
# Pass launch arguments (received as CommandLine.arguments)
|
|
76
|
-
xcrun simctl launch booted com.example.MyApp --reset-onboarding --debug-mode
|
|
77
|
-
|
|
78
|
-
# Override language and locale
|
|
79
|
-
xcrun simctl launch booted com.example.MyApp -AppleLanguages "(ja)" -AppleLocale "ja_JP"
|
|
80
|
-
|
|
81
|
-
# Set environment variables for the launched app
|
|
82
|
-
SIMCTL_CHILD_MY_VAR=value xcrun simctl launch booted com.example.MyApp
|
|
83
|
-
```
|
|
60
|
+
## Simulation
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
| Command | What it does |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `push <dev> [<bundle-id>] <payload.json\|->` | Delivers a local remote-notification payload; the bundle ID may be omitted when the payload names it in `Simulator Target Bundle` (an explicit argument wins) |
|
|
65
|
+
| `openurl <dev> <url>` | Opens a URL as if tapped |
|
|
66
|
+
| `location <dev> set\|clear\|list\|run\|start [...]` | Simulated location |
|
|
67
|
+
| `privacy <dev> grant\|revoke\|reset <service> [<bundle-id>]` | Permission state; some changes terminate the running app |
|
|
68
|
+
| `keychain <dev> add-root-cert\|add-cert\|reset [path]` | Adds a trusted root or other certificate, or resets the keychain |
|
|
69
|
+
| `status_bar <dev> override\|clear\|list [flags]` | Status bar overrides |
|
|
86
70
|
|
|
87
|
-
##
|
|
71
|
+
## Push payloads
|
|
88
72
|
|
|
89
|
-
|
|
90
|
-
|---------|----------|-------|
|
|
91
|
-
| `push` | `simctl push <UDID> [<bundle-id>] <payload.json\|->` | Simulates local push delivery. Use `-` for stdin. Bundle ID is optional when the payload contains `Simulator Target Bundle`. |
|
|
92
|
-
| `openurl` | `simctl openurl <UDID> <URL>` | Triggers universal links or custom URL schemes. |
|
|
93
|
-
| `location` | `simctl location <UDID> <set\|clear\|list\|run\|start> [args]` | `set <lat,lon>`, `run <scenario>`, `list`, `start`, or `clear`. |
|
|
94
|
-
| `privacy` | `simctl privacy <UDID> <grant\|revoke\|reset> <service> <bundle-id>` | See [Privacy Service Names](#privacy-service-names) for service values. |
|
|
95
|
-
| `keychain` | `simctl keychain <UDID> <add-root-cert\|add-cert\|reset> [cert-path]` | Manages trusted certificates in the simulator keychain. |
|
|
96
|
-
| `status_bar` | `simctl status_bar <UDID> <override\|clear> [flags]` | See [Status Bar Override Flags](#status-bar-override-flags). |
|
|
97
|
-
|
|
98
|
-
### Push Payload Format
|
|
99
|
-
|
|
100
|
-
The JSON payload mirrors the APNs payload format. The `Simulator Target Bundle` key is optional - when provided, the bundle ID argument can be omitted:
|
|
73
|
+
The payload follows the APNs format:
|
|
101
74
|
|
|
102
75
|
```json
|
|
103
76
|
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
},
|
|
111
|
-
"badge": 1,
|
|
112
|
-
"sound": "default",
|
|
113
|
-
"category": "ORDER_STATUS",
|
|
114
|
-
"thread-id": "order-1234",
|
|
115
|
-
"interruption-level": "time-sensitive"
|
|
77
|
+
"Simulator Target Bundle": "org.example.pantry",
|
|
78
|
+
"aps": {
|
|
79
|
+
"alert": {
|
|
80
|
+
"title": "Delivery window changed",
|
|
81
|
+
"subtitle": "Order 1182",
|
|
82
|
+
"body": "Your groceries now arrive between 6 and 7 pm."
|
|
116
83
|
},
|
|
117
|
-
"
|
|
84
|
+
"badge": 2,
|
|
85
|
+
"sound": "default",
|
|
86
|
+
"category": "DELIVERY_UPDATE",
|
|
87
|
+
"thread-id": "order-1182",
|
|
88
|
+
"interruption-level": "time-sensitive"
|
|
89
|
+
},
|
|
90
|
+
"orderID": "1182"
|
|
118
91
|
}
|
|
119
92
|
```
|
|
120
93
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
The `run` subcommand accepts predefined scenario names, not GPX file paths:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
# List available predefined scenarios
|
|
129
|
-
xcrun simctl location booted list
|
|
130
|
-
|
|
131
|
-
# Run a predefined scenario
|
|
132
|
-
xcrun simctl location booted run "City Run"
|
|
133
|
-
|
|
134
|
-
# Follow custom command-line waypoints
|
|
135
|
-
xcrun simctl location booted start --speed=15 --interval=1 \
|
|
136
|
-
37.3349,-122.0090 37.3317,-122.0307
|
|
137
|
-
|
|
138
|
-
# Read waypoints from stdin, one "lat,lon" pair per line
|
|
139
|
-
printf "37.3349,-122.0090\n37.3317,-122.0307\n" | \
|
|
140
|
-
xcrun simctl location booted start --distance=100 -
|
|
141
|
-
|
|
142
|
-
# Set a fixed coordinate
|
|
143
|
-
xcrun simctl location booted set 37.3349,-122.0090
|
|
144
|
-
|
|
145
|
-
# Clear the simulated location
|
|
146
|
-
xcrun simctl location booted clear
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Available scenarios include "City Run", "City Bicycle Ride", "Freeway Drive", and "Apple" (stationary at Apple Park). Use `list` to see all options on your system.
|
|
150
|
-
|
|
151
|
-
Use `start` for command-line waypoint routes. It accepts at least two latitude/longitude pairs, optional speed, and either distance- or interval-based update cadence. The command boundary matters: `simctl location run` accepts built-in scenario names, not GPX file paths; for custom routes already stored as GPX files, use Xcode's Debug > Simulate Location menu instead.
|
|
94
|
+
simctl checks three things: the top level is a JSON object, it contains a
|
|
95
|
+
valid `aps` dictionary, and the whole payload is 4096 bytes or less. Only
|
|
96
|
+
ordinary application remote notifications are supported; VoIP, complication,
|
|
97
|
+
File Provider and other push types are rejected.
|
|
152
98
|
|
|
153
|
-
##
|
|
99
|
+
## Location
|
|
154
100
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
101
|
+
- Built-in scenarios include "Freeway Drive", "City Run", "City Bicycle Ride"
|
|
102
|
+
and "Apple" (a fixed point at the company campus); `list` prints what the
|
|
103
|
+
local runtime offers.
|
|
104
|
+
- `start` needs at least two `lat,lon` waypoints and accepts
|
|
105
|
+
`--speed=<m/s>` (20 m/s when omitted) plus either `--distance=<meters>`
|
|
106
|
+
between updates or `--interval=<seconds>` between updates (1 s when neither
|
|
107
|
+
is given). Use `-` to read waypoints from stdin, one per line. Coordinates
|
|
108
|
+
use `.` for decimals and `,` between latitude and longitude.
|
|
109
|
+
- `run` accepts scenario names only. A stored GPX route is played through
|
|
110
|
+
Xcode's Debug > Simulate Location.
|
|
160
111
|
|
|
161
|
-
|
|
112
|
+
## Media and capture
|
|
162
113
|
|
|
163
|
-
|
|
|
164
|
-
|
|
165
|
-
| `ignored
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
114
|
+
| Command | Notes |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `io <dev> screenshot [--type=png\|jpeg\|tiff\|bmp\|gif] [--mask=ignored\|alpha\|black] <file>` | PNG unless a type is given; `-` writes to stdout |
|
|
117
|
+
| `io <dev> recordVideo [--codec=h264\|hevc] [--mask=ignored\|black] [--force] <file>` | HEVC by default; stop with Ctrl+C; `--force` overwrites an existing file |
|
|
118
|
+
| `addmedia <dev> <path> [path...]` | Imports photos, Live Photos (photo plus video), videos and vCard contacts; PNG, JPEG, GIF, MOV, MP4 and `.vcf` all work |
|
|
168
119
|
|
|
169
|
-
|
|
120
|
+
Mask policies for non-rectangular screens:
|
|
170
121
|
|
|
171
|
-
|
|
122
|
+
- `ignored` (default): the whole rectangular framebuffer.
|
|
123
|
+
- `alpha`: pixels outside the screen shape become transparent, so a PNG keeps
|
|
124
|
+
the rounded corners. Video does not support it and renders the mask black.
|
|
125
|
+
- `black`: pixels outside the screen shape are black; fine for JPEG.
|
|
172
126
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
jq -r '[.devices[][] | select(.state == "Booted")] | first | .udid'
|
|
176
|
-
```
|
|
127
|
+
`recordVideo` prints "Recording started" to stderr once the first frame is
|
|
128
|
+
captured, which scripts can wait for.
|
|
177
129
|
|
|
178
|
-
|
|
130
|
+
## JSON with jq
|
|
179
131
|
|
|
180
132
|
```bash
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
jq -r --arg rt "$RUNTIME" \
|
|
184
|
-
'.devices[$rt][] | select(.name == "iPhone 16 Pro") | .udid'
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### List All Available Runtimes
|
|
133
|
+
xcrun simctl list devices booted --json |
|
|
134
|
+
jq -r '[.devices[][] | select(.state == "Booted") | .udid] | first'
|
|
188
135
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
```
|
|
136
|
+
xcrun simctl list devices --json |
|
|
137
|
+
jq -r --arg rt com.apple.CoreSimulator.SimRuntime.iOS-26-0 \
|
|
138
|
+
'.devices[$rt][] | select(.name == "Checkout iPad") | .udid'
|
|
193
139
|
|
|
194
|
-
|
|
140
|
+
xcrun simctl list runtimes --json |
|
|
141
|
+
jq -r '.runtimes[] | select(.isAvailable) | "\(.name)\t\(.identifier)"'
|
|
195
142
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
jq -r --arg udid "$UDID" \
|
|
199
|
-
'[.devices[][] | select(.udid == $udid)] | first | .state'
|
|
143
|
+
xcrun simctl list devices --json |
|
|
144
|
+
jq -r --arg id "$SIM" '.devices[][] | select(.udid == $id) | .state'
|
|
200
145
|
```
|
|
201
146
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
|
209
|
-
|
|
210
|
-
| `
|
|
211
|
-
| `
|
|
212
|
-
| `
|
|
213
|
-
| `
|
|
214
|
-
| `
|
|
215
|
-
| `
|
|
216
|
-
| `
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
| Flag |
|
|
227
|
-
|
|
228
|
-
| `--time` |
|
|
229
|
-
| `--dataNetwork` |
|
|
230
|
-
| `--wifiMode` |
|
|
231
|
-
| `--wifiBars` |
|
|
232
|
-
| `--cellularMode` |
|
|
233
|
-
| `--cellularBars` |
|
|
234
|
-
| `--operatorName` |
|
|
235
|
-
| `--batteryState` |
|
|
236
|
-
| `--batteryLevel` |
|
|
237
|
-
|
|
238
|
-
|
|
147
|
+
In order: the UDID of the first booted device; a UDID by name and runtime;
|
|
148
|
+
installed runtimes that can be used, with their identifiers; and the state of
|
|
149
|
+
one device.
|
|
150
|
+
|
|
151
|
+
## Privacy services
|
|
152
|
+
|
|
153
|
+
| Service | Scope |
|
|
154
|
+
|---|---|
|
|
155
|
+
| `all` | Every service. `grant` and `revoke` still need a bundle ID; `reset` can omit it |
|
|
156
|
+
| `calendar` | Calendar events (EventKit) |
|
|
157
|
+
| `reminders` | Reminders (EventKit) |
|
|
158
|
+
| `contacts-limited` | Basic contact details |
|
|
159
|
+
| `contacts` | Full contact records |
|
|
160
|
+
| `location` | Location while in use |
|
|
161
|
+
| `location-always` | Location at all times |
|
|
162
|
+
| `photos-add` | Adding to the library only |
|
|
163
|
+
| `photos` | Full photo library |
|
|
164
|
+
| `media-library` | Music and media library |
|
|
165
|
+
| `microphone` | Audio input |
|
|
166
|
+
| `motion` | Motion and fitness data (Core Motion) |
|
|
167
|
+
| `siri` | Using the app with Siri |
|
|
168
|
+
|
|
169
|
+
## Status bar flags
|
|
170
|
+
|
|
171
|
+
| Flag | Accepted values |
|
|
172
|
+
|---|---|
|
|
173
|
+
| `--time` | Any string, for example `9:41`; a valid ISO date also sets the date |
|
|
174
|
+
| `--dataNetwork` | `wifi` or `hide`; cellular types `3g`, `4g`, `lte`, `lte-a`, `lte+`, and the 5G family `5g`, `5g+`, `5g-uc`, `5g-uwb` |
|
|
175
|
+
| `--wifiMode` | `searching`, `failed`, `active` |
|
|
176
|
+
| `--wifiBars` | 0 to 3 |
|
|
177
|
+
| `--cellularMode` | `notSupported`, `searching`, `failed`, `active` |
|
|
178
|
+
| `--cellularBars` | 0 to 4 |
|
|
179
|
+
| `--operatorName` | Any string; `''` for none |
|
|
180
|
+
| `--batteryState` | `charging`, `charged`, `discharging` |
|
|
181
|
+
| `--batteryLevel` | 0 to 100 |
|
|
182
|
+
|
|
183
|
+
A preset for store screenshots:
|
|
239
184
|
|
|
240
185
|
```bash
|
|
241
|
-
xcrun simctl status_bar
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
--cellularMode active \
|
|
246
|
-
--cellularBars 4 \
|
|
247
|
-
--wifiMode active \
|
|
248
|
-
--wifiBars 3 \
|
|
249
|
-
--dataNetwork wifi \
|
|
250
|
-
--operatorName ""
|
|
186
|
+
xcrun simctl status_bar "$SIM" override \
|
|
187
|
+
--dataNetwork wifi --wifiMode active --wifiBars 3 \
|
|
188
|
+
--cellularMode active --cellularBars 4 --operatorName '' \
|
|
189
|
+
--batteryState charged --batteryLevel 100 --time "9:41"
|
|
251
190
|
```
|
|
252
191
|
|
|
253
192
|
## Troubleshooting
|
|
254
193
|
|
|
255
|
-
|
|
194
|
+
**Device stuck while booting** (boot fails because the device is already in
|
|
195
|
+
the Booting state):
|
|
256
196
|
|
|
257
|
-
|
|
197
|
+
1. `xcrun simctl shutdown <dev>`, then `erase <dev>`, then `boot <dev>`.
|
|
198
|
+
2. Still failing: delete the device and create a new one.
|
|
199
|
+
3. Last resort: `xcrun simctl shutdown all` and remove
|
|
200
|
+
`~/Library/Developer/CoreSimulator/Caches`.
|
|
258
201
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
202
|
+
**Runtime missing** ("Invalid runtime", or nothing under `list runtimes`):
|
|
203
|
+
check `xcrun simctl list runtimes`, then install one with
|
|
204
|
+
`xcodebuild -downloadPlatform iOS` or from Xcode > Settings > Components.
|
|
205
|
+
Runtimes can be larger than 5 GB, so CI images should have them preinstalled.
|
|
262
206
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
# Step 3: boot again
|
|
267
|
-
xcrun simctl boot <UDID>
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
If erasing does not resolve it, delete and recreate the device. As a last resort, clear the CoreSimulator caches:
|
|
207
|
+
**CoreSimulator cache damage** shows up as boot failures, a stale
|
|
208
|
+
`simctl list`, or "Unable to determine simulator device status". Full reset:
|
|
271
209
|
|
|
272
210
|
```bash
|
|
273
211
|
xcrun simctl shutdown all
|
|
274
|
-
rm -rf ~/Library/Developer/CoreSimulator/Caches
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### Runtime Not Installed
|
|
278
|
-
|
|
279
|
-
`simctl create` or `simctl boot` fails with "Invalid runtime" or the runtime does not appear in `simctl list runtimes`.
|
|
280
|
-
|
|
281
|
-
```bash
|
|
282
|
-
# Check what's installed
|
|
283
|
-
xcrun simctl list runtimes
|
|
284
|
-
|
|
285
|
-
# Download a runtime via xcodebuild
|
|
286
|
-
xcodebuild -downloadPlatform iOS
|
|
287
|
-
|
|
288
|
-
# Or download via Xcode > Settings > Platforms
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
Runtime downloads can be large (5+ GB). In CI, pre-install runtimes in the base image.
|
|
292
|
-
|
|
293
|
-
### CoreSimulator Cache Corruption
|
|
294
|
-
|
|
295
|
-
Symptoms: devices fail to boot, `simctl list` shows stale data, or "Unable to determine simulator device status."
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
# Nuclear option - reset everything
|
|
299
|
-
xcrun simctl shutdown all
|
|
300
212
|
xcrun simctl erase all
|
|
301
|
-
rm -rf
|
|
302
|
-
|
|
303
|
-
launchctl kickstart -k gui/$(id -u)/com.apple.CoreSimulator.CoreSimulatorService 2>/dev/null || true
|
|
213
|
+
rm -rf "$HOME/Library/Developer/CoreSimulator/Caches"
|
|
214
|
+
launchctl kickstart -k "gui/$UID/com.apple.CoreSimulator.CoreSimulatorService" || true
|
|
304
215
|
```
|
|
305
216
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
### "Unable to boot device in current state: Shutdown"
|
|
217
|
+
Afterwards, custom devices may need to be created again; Xcode recreates its
|
|
218
|
+
default set by itself.
|
|
309
219
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
# If the runtime shows (unavailable), re-download it
|
|
315
|
-
xcodebuild -downloadPlatform iOS
|
|
316
|
-
```
|
|
220
|
+
**Boot fails from the Shutdown state** ("Unable to boot device in current
|
|
221
|
+
state: Shutdown"): usually the runtime is missing or damaged. Look for
|
|
222
|
+
"(unavailable)" next to it in `list runtimes` and download it again with
|
|
223
|
+
`xcodebuild -downloadPlatform iOS`.
|