@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.
Files changed (264) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +0 -10
  3. package/docs/facts.json +1 -1
  4. package/manifest.json +266 -267
  5. package/package.json +2 -2
  6. package/pipeline/scripts/_notices.mjs +1 -1
  7. package/pipeline/skills/.skill-manifest.json +68 -68
  8. package/pipeline/skills/shared/README.md +70 -70
  9. package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
  10. package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
  11. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
  12. package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
  13. package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
  14. package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
  15. package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
  16. package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
  17. package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
  18. package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
  19. package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
  20. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
  21. package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
  22. package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
  23. package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
  24. package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
  25. package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
  26. package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
  27. package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
  28. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
  29. package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
  30. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
  31. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
  32. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
  33. package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
  34. package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
  35. package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
  36. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
  37. package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
  38. package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
  39. package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
  40. package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
  41. package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
  42. package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
  43. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
  44. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
  45. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
  46. package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
  47. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
  48. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
  49. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
  50. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
  51. package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
  52. package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
  53. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
  54. package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
  55. package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
  56. package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
  57. package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
  58. package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
  59. package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
  60. package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
  61. package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
  62. package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
  63. package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
  64. package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
  65. package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
  66. package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
  67. package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
  68. package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
  69. package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
  70. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
  71. package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
  72. package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
  73. package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
  74. package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
  75. package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
  76. package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
  77. package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
  78. package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
  79. package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
  80. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
  81. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
  82. package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
  83. package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
  84. package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
  85. package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
  86. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
  87. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
  88. package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
  89. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
  90. package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
  91. package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
  92. package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
  93. package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
  94. package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
  95. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
  96. package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
  97. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
  98. package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
  99. package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
  100. package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
  101. package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
  102. package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
  103. package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
  104. package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
  105. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
  106. package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
  107. package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
  108. package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
  109. package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
  110. package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
  111. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
  112. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
  113. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
  114. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
  115. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
  116. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
  117. package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
  118. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
  119. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
  120. package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
  121. package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
  122. package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
  123. package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
  124. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
  125. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
  126. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
  127. package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
  128. package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
  129. package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
  130. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
  131. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
  132. package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
  133. package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
  134. package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
  135. package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
  136. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
  137. package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
  138. package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
  139. package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
  140. package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
  141. package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
  142. package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
  143. package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
  144. package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
  145. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
  146. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
  147. package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
  148. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
  149. package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
  150. package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
  151. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
  152. package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
  153. package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
  154. package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
  155. package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
  156. package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
  157. package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
  158. package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
  159. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
  160. package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
  161. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
  162. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
  163. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
  164. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
  165. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
  166. package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
  167. package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
  168. package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
  169. package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
  170. package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
  171. package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
  172. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
  173. package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
  174. package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
  175. package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
  176. package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
  177. package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
  178. package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
  179. package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
  180. package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
  181. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
  182. package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
  183. package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
  184. package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
  185. package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
  186. package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
  187. package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
  188. package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
  189. package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
  190. package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
  191. package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
  192. package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
  193. package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
  194. package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
  195. package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
  196. package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
  197. package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
  198. package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
  199. package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
  200. package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
  201. package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
  202. package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
  203. package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
  204. package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
  205. package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
  206. package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
  207. package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
  208. package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
  209. package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
  210. package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
  211. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
  212. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
  213. package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
  214. package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
  215. package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
  216. package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
  217. package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
  218. package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
  219. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
  220. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
  221. package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
  222. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
  223. package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
  224. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
  225. package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
  226. package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
  227. package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
  228. package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
  229. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
  230. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
  231. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
  232. package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
  233. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
  234. package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
  235. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
  236. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
  237. package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
  238. package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
  239. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
  240. package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
  241. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
  242. package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
  243. package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
  244. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
  245. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
  246. package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
  247. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
  248. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
  249. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
  250. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
  251. package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
  252. package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
  253. package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
  254. package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
  255. package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
  256. package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
  257. package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
  258. package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
  259. package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
  260. package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
  261. package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
  262. package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
  263. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
  264. 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": "I need a command-line iOS Simulator test script for a maps feature. It should create or pick a simulator, boot it, install a simulator-built app, drive a custom route between two coordinates without using a GPX file, and clean up afterward. What simctl commands and caveats should I use?",
7
- "expected_output": "A simctl-focused workflow that uses available device/runtime lookup, boots a simulator, installs a .app built for the simulator, uses simctl location start for custom command-line waypoints, clears location state, and shuts down or deletes test devices during cleanup.",
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
- "Uses `xcrun simctl location <device> start` for custom command-line waypoint routes instead of claiming only predefined scenarios are possible.",
11
- "Explains that `location run` accepts predefined scenario names and does not take GPX file paths.",
12
- "Boots before install or launch and installs a simulator-built `.app` rather than an `.ipa`.",
13
- "Uses explicit UDID lookup or `booted` appropriately instead of hardcoding a simulator UDID.",
14
- "Clears simulated location and shuts down or deletes simulator devices during cleanup."
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": "Review this Simulator launch plan: pass FEATURE_FLAG=1 by running `xcrun simctl spawn booted env FEATURE_FLAG=1 /path/MyApp.app/MyApp`, use `simctl push` to prove APNs works for all notification types, and grant every privacy service in CI so we can remove usage description keys.",
20
- "expected_output": "A correction-focused review that uses SIMCTL_CHILD_ environment variables with simctl launch, limits simctl push to local application remote notification simulation, preserves real-device APNs testing, and warns that simctl privacy can mask missing Info.plist usage descriptions.",
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
- "Replaces the `spawn env` app launch pattern with `SIMCTL_CHILD_FEATURE_FLAG=1 xcrun simctl launch ...` or equivalent `SIMCTL_CHILD_` guidance.",
24
- "Clarifies that `simctl spawn` is for arbitrary simulator processes, not the preferred path for launching an installed app with environment variables.",
25
- "States that `simctl push` simulates local application remote push delivery only and does not prove APNs token registration, entitlements, server delivery, or unsupported push types.",
26
- "Includes the `simctl push` payload constraints: top-level object, valid `aps`, and 4096-byte size limit.",
27
- "Warns that `simctl privacy` does not remove the need for valid Info.plist usage description keys and normal prompt-flow testing."
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": "We are deciding which tests can stay in iOS Simulator for a release candidate: camera capture, BLE pairing, barometer elevation, accelerometer controls, Face ID fallback, memory warnings, iCloud sync, push notifications, and Metal performance. Give the boundary and what must move to hardware.",
33
- "expected_output": "A Simulator-versus-device boundary review grounded in Apple docs: hardware-only features move to real devices, simulated scenarios stay in Simulator where supported, and performance or APNs conclusions are verified on hardware.",
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
- "Routes camera, Bluetooth/BLE, barometer, and accelerometer/gyroscope-dependent behavior to real hardware testing.",
37
- "Treats Face ID/Touch ID fallback, memory warnings, and manual iCloud sync trigger as Simulator-supported scenarios.",
38
- "States that Simulator is not an accurate performance proxy for processing, graphics, memory, networking, or Metal GPU behavior.",
39
- "States that real APNs delivery must be verified on a device and `simctl push` is only local payload/display handling.",
40
- "Keeps the answer focused on iOS Simulator boundaries instead of turning it into an Instruments, Core Motion, Core Bluetooth, or push server implementation guide."
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 Command Reference
2
-
3
- Common `xcrun simctl` subcommands with syntax, flags, and examples. For workflows and patterns, see the main [SKILL.md](../SKILL.md).
4
-
5
- ## Contents
6
-
7
- - [Device Management Commands](#device-management-commands)
8
- - [App Lifecycle Commands](#app-lifecycle-commands)
9
- - [Testing and Simulation Commands](#testing-and-simulation-commands)
10
- - [Media and IO Commands](#media-and-io-commands)
11
- - [JSON Output Parsing](#json-output-parsing)
12
- - [Privacy Service Names](#privacy-service-names)
13
- - [Status Bar Override Flags](#status-bar-override-flags)
14
- - [Troubleshooting](#troubleshooting)
15
-
16
- ## Device Management Commands
17
-
18
- | Command | Synopsis | Notes |
19
- |---------|----------|-------|
20
- | `list` | `simctl list [devices\|devicetypes\|runtimes\|pairs] [search-term]` | Add `-j` for JSON. Add `available` to filter to usable devices. |
21
- | `create` | `simctl create <name> <device-type-id> [<runtime-id>]` | Returns the new UDID. Omitting runtime selects the newest compatible one. |
22
- | `clone` | `simctl clone <UDID> <new-name>` | Copies device state including installed apps. |
23
- | `delete` | `simctl delete <UDID\|unavailable\|all>` | `unavailable` removes devices whose runtime is missing. |
24
- | `rename` | `simctl rename <UDID> <new-name>` | |
25
- | `erase` | `simctl erase <UDID\|all>` | Factory reset - wipes apps and data, keeps the device. |
26
- | `boot` | `simctl boot <UDID>` | Starts the device runtime. |
27
- | `bootstatus` | `simctl bootstatus <UDID> [-b]` | Waits until the device finishes booting. Use `-b` in scripts to boot if needed and block until ready. |
28
- | `shutdown` | `simctl shutdown <UDID\|all>` | Stops the device runtime. |
29
- | `upgrade` | `simctl upgrade <UDID> <runtime-id>` | Upgrades device to a newer runtime. |
30
- | `pair` | `simctl pair <watch-UDID> <phone-UDID>` | Pairs a watchOS simulator with an iOS simulator. |
31
- | `unpair` | `simctl unpair <pair-UDID>` | Removes a watch/phone pairing. |
32
-
33
- ### Device Type and Runtime IDs
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
- # List all device types - use the identifier column
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
- Use the identifier strings (e.g., `com.apple.CoreSimulator.SimDeviceType.iPhone-16-Pro`) in `create` and `upgrade` commands.
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
- | Command | Synopsis | Notes |
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
- Use the `SIMCTL_CHILD_` prefix for environment variables passed to `simctl launch`. Use `simctl spawn` for arbitrary processes inside the simulator, such as `log stream`, not as the default way to launch an installed app with environment.
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
- ## Testing and Simulation Commands
71
+ ## Push payloads
88
72
 
89
- | Command | Synopsis | Notes |
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
- "Simulator Target Bundle": "com.example.MyApp",
105
- "aps": {
106
- "alert": {
107
- "title": "Order Update",
108
- "subtitle": "Order #1234",
109
- "body": "Your order has been shipped"
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
- "orderID": "1234"
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
- The payload must be a top-level JSON object, include a valid `aps` dictionary, and be 4096 bytes or less. `simctl push` supports only application remote push notifications; it does not support VoIP, Complication, File Provider, or other push types.
122
-
123
- ### Location Scenarios
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
- ## Media and IO Commands
99
+ ## Location
154
100
 
155
- | Command | Synopsis | Notes |
156
- |---------|----------|-------|
157
- | `io screenshot` | `simctl io <UDID> screenshot [--type png\|jpeg\|tiff\|bmp\|gif] [--mask ignored\|alpha\|black] <path>` | Default type is png. |
158
- | `io recordVideo` | `simctl io <UDID> recordVideo [--codec h264\|hevc] [--mask ignored\|alpha\|black] [--force] <path>` | Ctrl+C to stop. `--force` overwrites existing files. |
159
- | `addmedia` | `simctl addmedia <UDID> <path> [path...]` | Adds photos, live photos, videos, or contacts to the device. Supports PNG, JPEG, GIF, MOV, MP4, and vCard. |
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
- ### Mask Options
112
+ ## Media and capture
162
113
 
163
- | Value | Effect |
164
- |-------|--------|
165
- | `ignored` | No mask applied (default). Full rectangular capture. |
166
- | `alpha` | Transparent pixels where the device bezel would be. Produces PNG with alpha channel. Not supported for video recording - falls back to `black`. |
167
- | `black` | Black pixels where the device bezel would be. Works with JPEG. |
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
- ## JSON Output Parsing
120
+ Mask policies for non-rectangular screens:
170
121
 
171
- ### Find a Booted Device UDID
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
- ```bash
174
- xcrun simctl list -j devices booted | \
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
- ### Find a Device by Name and Runtime
130
+ ## JSON with jq
179
131
 
180
132
  ```bash
181
- RUNTIME="com.apple.CoreSimulator.SimRuntime.iOS-18-4"
182
- xcrun simctl list -j devices available | \
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
- ```bash
190
- xcrun simctl list -j runtimes | \
191
- jq -r '.runtimes[] | select(.isAvailable == true) | "\(.name) - \(.identifier)"'
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
- ### Get Device State
140
+ xcrun simctl list runtimes --json |
141
+ jq -r '.runtimes[] | select(.isAvailable) | "\(.name)\t\(.identifier)"'
195
142
 
196
- ```bash
197
- xcrun simctl list -j devices | \
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
- ## Privacy Service Names
203
-
204
- Service names accepted by `simctl privacy grant|revoke|reset`:
205
-
206
- | Service | Description |
207
- |---------|-------------|
208
- | `all` | All services. `grant` and `revoke` require a bundle identifier; `reset` may omit it. |
209
- | `calendar` | EventKit calendar access |
210
- | `contacts-limited` | Limited contacts access |
211
- | `contacts` | Full contacts access |
212
- | `location` | When-in-use location access |
213
- | `location-always` | Always location access |
214
- | `photos-add` | Add-only photo library access |
215
- | `photos` | Full photo library access |
216
- | `media-library` | Apple Music / media library |
217
- | `microphone` | Microphone access |
218
- | `motion` | Core Motion activity data |
219
- | `reminders` | EventKit reminders access |
220
- | `siri` | Siri integration |
221
-
222
- ## Status Bar Override Flags
223
-
224
- All flags for `simctl status_bar <UDID> override`:
225
-
226
- | Flag | Type | Example |
227
- |------|------|---------|
228
- | `--time` | String | `"9:41"` |
229
- | `--dataNetwork` | String | `hide`, `wifi`, `3g`, `4g`, `lte`, `lte-a`, `lte+`, `5g`, `5g+`, `5g-uc`, `5g-uwb` |
230
- | `--wifiMode` | String | `searching`, `failed`, `active` |
231
- | `--wifiBars` | Integer | `0`-`3` |
232
- | `--cellularMode` | String | `notSupported`, `searching`, `failed`, `active` |
233
- | `--cellularBars` | Integer | `0`-`4` |
234
- | `--operatorName` | String | `""` (empty for clean screenshots) |
235
- | `--batteryState` | String | `charging`, `charged`, `discharging` |
236
- | `--batteryLevel` | Integer | `0`-`100` |
237
-
238
- ### App Store Screenshot Preset
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 booted override \
242
- --time "9:41" \
243
- --batteryState charged \
244
- --batteryLevel 100 \
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
- ### Stuck "Booting" State
194
+ **Device stuck while booting** (boot fails because the device is already in
195
+ the Booting state):
256
196
 
257
- The device shows state "Booting" and `simctl boot` returns "Unable to boot device in current state: Booting."
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
- ```bash
260
- # Step 1: force shutdown
261
- xcrun simctl shutdown <UDID>
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
- # Step 2: erase the device
264
- xcrun simctl erase <UDID>
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 ~/Library/Developer/CoreSimulator/Caches
302
- # Restart CoreSimulatorService
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
- After clearing caches, you may need to re-create custom devices. Default devices are recreated automatically by Xcode.
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
- This usually means the required runtime is not fully installed or is corrupted. Verify the runtime is available and re-download if needed:
311
-
312
- ```bash
313
- xcrun simctl list runtimes
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`.