@mmerterden/multi-agent-pipeline 20.6.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 (326) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +0 -10
  3. package/docs/facts.json +1 -1
  4. package/manifest.json +328 -329
  5. package/package.json +2 -2
  6. package/pipeline/multi-agent-refs/features/design-conformance.md +62 -64
  7. package/pipeline/scripts/_notices.mjs +12 -1
  8. package/pipeline/scripts/gen-skills-index.mjs +1 -1
  9. package/pipeline/skills/.skill-manifest.json +106 -106
  10. package/pipeline/skills/shared/README.md +71 -71
  11. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +1 -0
  12. package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
  13. package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
  14. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
  15. package/pipeline/skills/shared/external/android-architecture/SKILL.md +2 -0
  16. package/pipeline/skills/shared/external/android-performance/SKILL.md +2 -0
  17. package/pipeline/skills/shared/external/android-security/SKILL.md +2 -0
  18. package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
  19. package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
  20. package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
  21. package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
  22. package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
  23. package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
  24. package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
  25. package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
  26. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
  27. package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
  28. package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
  29. package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
  30. package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
  31. package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
  32. package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
  33. package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
  34. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
  35. package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
  36. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
  37. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
  38. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
  39. package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
  40. package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
  41. package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
  42. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
  43. package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
  44. package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
  45. package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
  46. package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
  47. package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
  48. package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
  49. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
  50. package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
  51. package/pipeline/skills/shared/external/backlog/SKILL.md +56 -33
  52. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
  53. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
  54. package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
  55. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -0
  56. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
  57. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
  58. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
  59. package/pipeline/skills/shared/external/compose-components/SKILL.md +2 -0
  60. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +3 -2
  61. package/pipeline/skills/shared/external/compose-testing/SKILL.md +2 -0
  62. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
  63. package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
  64. package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
  65. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
  66. package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
  67. package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
  68. package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
  69. package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
  70. package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
  71. package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
  72. package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
  73. package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
  74. package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
  75. package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
  76. package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
  77. package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
  78. package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
  79. package/pipeline/skills/shared/external/council/SKILL.md +1 -0
  80. package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
  81. package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
  82. package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
  83. package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -0
  84. package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -0
  85. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
  86. package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
  87. package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
  88. package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
  89. package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
  90. package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
  91. package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
  92. package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
  93. package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
  94. package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
  95. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
  96. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
  97. package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
  98. package/pipeline/skills/shared/external/evidence-github/SKILL.md +2 -0
  99. package/pipeline/skills/shared/external/evidence-registry/SKILL.md +2 -0
  100. package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +2 -0
  101. package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
  102. package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
  103. package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
  104. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
  105. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
  106. package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
  107. package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -0
  108. package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -0
  109. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
  110. package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
  111. package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
  112. package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
  113. package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
  114. package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +1 -0
  115. package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
  116. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
  117. package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
  118. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
  119. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +1 -0
  120. package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
  121. package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
  122. package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
  123. package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
  124. package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
  125. package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
  126. package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
  127. package/pipeline/skills/shared/external/ios-security/SKILL.md +2 -0
  128. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
  129. package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
  130. package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
  131. package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
  132. package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
  133. package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
  134. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +91 -283
  135. package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +119 -151
  136. package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +60 -90
  137. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +119 -156
  138. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +726 -787
  139. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +253 -288
  140. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +243 -304
  141. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +88 -104
  142. package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +181 -235
  143. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-key-shots.py +198 -263
  144. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +461 -466
  145. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +145 -151
  146. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +123 -141
  147. package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +146 -157
  148. package/pipeline/skills/shared/external/localization-reuse-map/scripts/snapshot-resources.sh +22 -19
  149. package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +156 -140
  150. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
  151. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
  152. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
  153. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
  154. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
  155. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
  156. package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
  157. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
  158. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
  159. package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
  160. package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
  161. package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
  162. package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
  163. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -0
  164. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
  165. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
  166. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
  167. package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
  168. package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
  169. package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
  170. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
  171. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
  172. package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
  173. package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
  174. package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
  175. package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
  176. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
  177. package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
  178. package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
  179. package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
  180. package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
  181. package/pipeline/skills/shared/external/play-store-review/SKILL.md +2 -0
  182. package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
  183. package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
  184. package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
  185. package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
  186. package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -0
  187. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
  188. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
  189. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
  190. package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
  191. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -0
  192. package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +2 -0
  193. package/pipeline/skills/shared/external/room-database/SKILL.md +2 -0
  194. package/pipeline/skills/shared/external/search-first/SKILL.md +1 -0
  195. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
  196. package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
  197. package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
  198. package/pipeline/skills/shared/external/signal-community/SKILL.md +2 -0
  199. package/pipeline/skills/shared/external/skill-creator/SKILL.md +80 -41
  200. package/pipeline/skills/shared/external/skill-creator/audit.md +63 -59
  201. package/pipeline/skills/shared/external/skill-creator/checklist.md +28 -20
  202. package/pipeline/skills/shared/external/skill-creator/examples.md +40 -40
  203. package/pipeline/skills/shared/external/skill-creator/label-check.md +48 -36
  204. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +91 -100
  205. package/pipeline/skills/shared/external/skill-creator/template.md +51 -39
  206. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
  207. package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
  208. package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
  209. package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
  210. package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
  211. package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
  212. package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
  213. package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
  214. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
  215. package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
  216. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
  217. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
  218. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
  219. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
  220. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
  221. package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
  222. package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
  223. package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
  224. package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
  225. package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
  226. package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
  227. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
  228. package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
  229. package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
  230. package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
  231. package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
  232. package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
  233. package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
  234. package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
  235. package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
  236. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
  237. package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
  238. package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
  239. package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
  240. package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
  241. package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
  242. package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
  243. package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
  244. package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
  245. package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
  246. package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
  247. package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
  248. package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
  249. package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
  250. package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
  251. package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
  252. package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
  253. package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
  254. package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
  255. package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
  256. package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
  257. package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
  258. package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
  259. package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
  260. package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
  261. package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
  262. package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
  263. package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
  264. package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
  265. package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
  266. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
  267. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
  268. package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
  269. package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
  270. package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
  271. package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
  272. package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
  273. package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
  274. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
  275. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
  276. package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
  277. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
  278. package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
  279. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
  280. package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
  281. package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
  282. package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
  283. package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
  284. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
  285. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
  286. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
  287. package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
  288. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
  289. package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
  290. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
  291. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
  292. package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
  293. package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
  294. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
  295. package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
  296. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
  297. package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
  298. package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
  299. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
  300. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
  301. package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
  302. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
  303. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
  304. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
  305. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
  306. package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
  307. package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
  308. package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
  309. package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
  310. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -0
  311. package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -0
  312. package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
  313. package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
  314. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -0
  315. package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
  316. package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
  317. package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
  318. package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -0
  319. package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
  320. package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
  321. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
  322. package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -0
  323. package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -0
  324. package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
  325. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
  326. 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`.