@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
@@ -1,319 +1,287 @@
1
1
  ---
2
2
  name: swiftui-liquid-glass
3
- description: "Implement, review, or improve SwiftUI Liquid Glass effects for iOS 26+. Covers glassEffect modifier, GlassEffectContainer, glass button styles, glass toolbar, glass tab bar, morphing transitions, translucent material, vibrancy, tinting, interactive glass, ToolbarSpacer, scrollEdgeEffectStyle, backgroundExtensionEffect, and availability gating. Use when asked about Liquid Glass, glass buttons, glassEffect, GlassEffectContainer, GlassEffectTransition, glassEffectID, glassEffectUnion, scroll edge effects, or adopting iOS 26 design."
3
+ description: "Liquid Glass in SwiftUI (iOS 26+): glassEffect, Glass tint/interactive variants, GlassEffectContainer, glassEffectID morphing, glassEffectUnion, GlassEffectTransition, glass and glassProminent button styles, glass toolbars and tab bars, ToolbarSpacer, scrollEdgeEffectStyle, backgroundExtensionEffect, material, vibrancy, tinting, availability gating with fallbacks. Use when implementing, reviewing or improving Liquid Glass, building glass buttons or controls, adding morphing or scroll edge effects, or adopting the iOS 26 design."
4
4
  metadata:
5
- source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
5
+ source: multi-agent-pipeline
6
6
  ---
7
7
 
8
8
  # SwiftUI Liquid Glass
9
9
 
10
- Liquid Glass is the dynamic translucent material introduced in iOS 26 (and iPadOS 26,
11
- macOS 26, tvOS 26, watchOS 26). It blurs content behind it, reflects surrounding color
12
- and light, and reacts to touch and pointer interactions. Standard SwiftUI components
13
- (tab bars, toolbars, navigation bars, sheets) adopt Liquid Glass automatically when
14
- built with the iOS 26 SDK. Use the APIs below for custom views and controls.
10
+ Apple's 26 releases (iOS and iPadOS, macOS, tvOS, watchOS) introduced a new
11
+ material called Liquid Glass. It blurs what lies behind it, picks up color and light
12
+ from its surroundings, and responds to touch and pointer input.
15
13
 
16
- See [references/liquid-glass.md](references/liquid-glass.md) for the full API reference with additional examples.
17
-
18
- ## Contents
19
-
20
- - [Workflow](#workflow)
21
- - [Core API Summary](#core-api-summary)
22
- - [Code Examples](#code-examples)
23
- - [Common Mistakes](#common-mistakes)
24
- - [Review Checklist](#review-checklist)
25
- - [References](#references)
14
+ System chrome gets it for free: once an app compiles against the 26 SDK, its
15
+ tab bars, toolbars, navigation bars and sheets are glass already. The APIs below are for your own
16
+ views and controls. Full signatures, conformances, performance and
17
+ accessibility notes are in [references/liquid-glass.md](references/liquid-glass.md).
26
18
 
27
19
  ## Workflow
28
20
 
29
- Choose the path that matches the request:
21
+ ### 1. Implement a new feature
30
22
 
31
- ### 1. Implement a new feature with Liquid Glass
23
+ 1. List which surfaces should become glass (cards, chips, floating controls,
24
+ bars you draw yourself).
25
+ 2. For each one, decide the shape, how prominent it is, and whether it is
26
+ interactive.
27
+ 3. Put glass elements that sit together inside one `GlassEffectContainer`.
28
+ 4. Add `.glassEffect()` once padding, frame and styling are in place.
29
+ 5. Add `.interactive()` only to elements that can be tapped or focused.
30
+ 6. Where elements appear, disappear or rearrange with animation, give them
31
+ `glassEffectID(_:in:)` so they morph.
32
+ 7. Wrap all of it in an `#available(iOS 26, *)` check, with a fallback look.
32
33
 
33
- 1. Identify target surfaces (cards, chips, floating controls, custom bars).
34
- 2. Decide shape, prominence, and whether each element needs interactivity.
35
- 3. Wrap grouped glass elements in a `GlassEffectContainer`.
36
- 4. Apply `.glassEffect()` **after** layout and appearance modifiers.
37
- 5. Add `.interactive()` only to tappable/focusable elements.
38
- 6. Add morphing transitions with `glassEffectID(_:in:)` where the view hierarchy
39
- changes with animation.
40
- 7. Gate with `if #available(iOS 26, *)` and provide a fallback for earlier versions.
34
+ ### 2. Improve an existing feature
41
35
 
42
- ### 2. Improve an existing feature with Liquid Glass
36
+ 1. Swap hand-built blur or material backgrounds for `.glassEffect()`.
37
+ 2. Group sibling glass elements in a container, which both blends them and
38
+ renders them together.
39
+ 3. Buttons that imitate glass by hand become `.buttonStyle(.glass)` or
40
+ `.buttonStyle(.glassProminent)`.
41
+ 4. Wherever items animate in or out, add morphing.
43
42
 
44
- 1. Find custom blur/material backgrounds that can be replaced with `.glassEffect()`.
45
- 2. Wrap sibling glass elements in `GlassEffectContainer` for blending and performance.
46
- 3. Replace custom glass-like buttons with `.buttonStyle(.glass)` or `.buttonStyle(.glassProminent)`.
47
- 4. Add morphing transitions where animated insertion/removal occurs.
43
+ ### 3. Review
48
44
 
49
- ### 3. Review existing Liquid Glass usage
45
+ Go through the checklist below, item by item.
50
46
 
51
- Run through the Review Checklist below and verify each item.
52
-
53
- ## Core API Summary
47
+ ## Core API summary
54
48
 
55
49
  ### glassEffect(_:in:)
56
50
 
57
- Applies Liquid Glass behind a view. Default: `.regular` variant in a `Capsule` shape.
51
+ A `nonisolated` view modifier taking a `Glass` value (default `.regular`) and a shape (default
52
+ `DefaultGlassEffectShape()`, a capsule). Called bare, it gives regular glass in
53
+ a capsule.
58
54
 
59
- ```swift
60
- nonisolated func glassEffect(
61
- _ glass: Glass = .regular,
62
- in shape: some Shape = DefaultGlassEffectShape()
63
- ) -> some View
64
- ```
55
+ ### Glass
65
56
 
66
- ### Glass struct
57
+ | Variant | Meaning |
58
+ | --- | --- |
59
+ | `.regular` | The standard material |
60
+ | `.clear` | Lighter, with minimal tint, for use over rich media |
61
+ | `.identity` | No effect at all; useful for switching glass off conditionally |
67
62
 
68
- | Property / Method | Purpose |
69
- |---|---|
70
- | `.regular` | Standard glass material |
71
- | `.clear` | Clear variant (minimal tint) |
72
- | `.identity` | No visual effect (pass-through) |
73
- | `.tint(_:)` | Add a color tint for prominence |
74
- | `.interactive(_:)` | React to touch and pointer interactions |
63
+ Modifiers return a new `Glass` and chain: `.tint(_:)` adds color for
64
+ prominence, `.interactive(_:)` makes it respond to touch and pointer.
75
65
 
76
- Chain them: `.regular.tint(.blue).interactive()`
66
+ ```swift
67
+ .glassEffect(.regular.tint(.teal).interactive())
68
+ ```
77
69
 
78
70
  ### GlassEffectContainer
79
71
 
80
- Wraps multiple glass views for shared rendering, blending, and morphing.
72
+ `GlassEffectContainer(spacing:)` lets its children share one rendering pass, so
73
+ they can blend into each other and morph between shapes.
81
74
 
82
- ```swift
83
- GlassEffectContainer(spacing: 24) {
84
- // child views with .glassEffect()
85
- }
86
- ```
75
+ `spacing` is the distance at which neighbouring shapes start to blend. Set it
76
+ equal to or larger than the spacing of the layout inside, so shapes merge while
77
+ they move but stay separate at rest.
87
78
 
88
- The `spacing` controls when nearby glass shapes begin to blend. Match or exceed
89
- the interior layout spacing so shapes merge during animated transitions but remain
90
- separate at rest.
79
+ ### Morphing and transitions
91
80
 
92
- ### Morphing & Transitions
81
+ | API | Purpose |
82
+ | --- | --- |
83
+ | `glassEffectID(_:in:)` | Names a shape within a namespace so animation can morph it |
84
+ | `glassEffectUnion(id:namespace:)` | Several views drawn as one combined glass shape |
85
+ | `glassEffectTransition(_:)` | How glass appears and disappears |
93
86
 
94
- | Modifier | Purpose |
95
- |---|---|
96
- | `glassEffectID(_:in:)` | Stable identity for morphing during view hierarchy changes |
97
- | `glassEffectUnion(id:namespace:)` | Merge multiple views into one glass shape |
98
- | `glassEffectTransition(_:)` | Control how glass appears/disappears |
87
+ `GlassEffectTransition` values:
99
88
 
100
- Transition types: `.matchedGeometry` (default when within spacing), `.materialize`
101
- (fade content + animate glass in/out), `.identity` (no transition).
89
+ - `.matchedGeometry`: morph into or out of a nearby shape (the default when
90
+ shapes are within the container's spacing).
91
+ - `.materialize`: fade the content and animate the glass in or out, without
92
+ matching geometry.
93
+ - `.identity`: no transition.
102
94
 
103
- ### Button Styles
95
+ ### Button styles
104
96
 
105
97
  ```swift
106
- Button("Action") { }
107
- .buttonStyle(.glass) // standard glass button
98
+ Button("Send", systemImage: "paperplane") { send() }
99
+ .buttonStyle(.glass)
108
100
 
109
- Button("Primary") { }
110
- .buttonStyle(.glassProminent) // prominent glass button
101
+ Button("Book now") { book() }
102
+ .buttonStyle(.glassProminent)
111
103
  ```
112
104
 
113
- ### Scroll Edge Effects and Background Extension (iOS 26+)
114
-
115
- These complement Liquid Glass when building custom toolbars and scroll views:
105
+ ### Edge effects and extended backgrounds (iOS 26+)
116
106
 
117
107
  ```swift
118
- ScrollView {
119
- content
120
- }
121
- .scrollEdgeEffectStyle(.soft, for: .top) // Configures edge effect at scroll boundaries
122
-
123
- // Duplicate view into mirrored copies at safe area edges with blur (e.g., under sidebars)
124
- content
125
- .backgroundExtensionEffect()
108
+ ScrollView { feed }
109
+ .scrollEdgeEffectStyle(.soft, for: .top)
126
110
  ```
127
111
 
128
- ### ToolbarSpacer (iOS 26+)
112
+ `.scrollEdgeEffectStyle(_:for:)` sets how content fades or cuts off where it
113
+ meets a floating bar at a scroll edge.
129
114
 
130
- Creates a visual break between items in toolbars:
115
+ `.backgroundExtensionEffect()` extends a view past the safe area by drawing
116
+ mirrored, blurred copies of it at the edges. A hero image in a split view's
117
+ detail column can then continue underneath the sidebar.
118
+
119
+ ### ToolbarSpacer (iOS 26+)
131
120
 
132
121
  ```swift
133
122
  .toolbar {
134
- ToolbarItem { Button("Edit") { } }
123
+ ToolbarItem { Button("Revert", systemImage: "clock.arrow.circlepath") { revert() } }
135
124
  ToolbarSpacer(.fixed)
136
- ToolbarItem { Button("Share") { } }
125
+ ToolbarItem { Button("Done") { finish() } }
137
126
  }
138
127
  ```
139
128
 
140
- ## Code Examples
129
+ A fixed spacer splits the items into separate glass groups.
141
130
 
142
- ### Basic glass effect with availability gate
131
+ ## Code examples
132
+
133
+ ### A gated glass card
143
134
 
144
135
  ```swift
145
- if #available(iOS 26, *) {
146
- Text("Status")
147
- .padding()
148
- .glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))
149
- } else {
150
- Text("Status")
151
- .padding()
152
- .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))
153
- }
154
- ```
136
+ struct StatusCard: View {
137
+ let title: String
155
138
 
156
- ### Grouped glass elements in a container
139
+ var body: some View {
140
+ let label = Text(title).font(.headline).padding(20)
157
141
 
158
- ```swift
159
- GlassEffectContainer(spacing: 24) {
160
- HStack(spacing: 24) {
161
- ForEach(tools) { tool in
162
- Image(systemName: tool.icon)
163
- .frame(width: 56, height: 56)
164
- .glassEffect(.regular.interactive())
142
+ if #available(iOS 26, *) {
143
+ let tappable = Glass.regular.interactive()
144
+ label.glassEffect(tappable, in: .rect(cornerRadius: 18))
145
+ } else {
146
+ label.background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 18))
165
147
  }
166
148
  }
167
149
  }
168
150
  ```
169
151
 
170
- ### Morphing transition
152
+ ### A row of glass controls
153
+
154
+ Container spacing matches the stack spacing so the circles blend only when they
155
+ move toward each other.
171
156
 
172
157
  ```swift
173
- @State private var isExpanded = false
174
- @Namespace private var ns
175
-
176
- var body: some View {
177
- GlassEffectContainer(spacing: 40) {
178
- HStack(spacing: 40) {
179
- Image(systemName: "pencil")
180
- .frame(width: 80, height: 80)
181
- .glassEffect()
182
- .glassEffectID("pencil", in: ns)
183
-
184
- if isExpanded {
185
- Image(systemName: "eraser.fill")
186
- .frame(width: 80, height: 80)
187
- .glassEffect()
188
- .glassEffectID("eraser", in: ns)
158
+ @available(iOS 26, *)
159
+ struct PlaybackControls: View {
160
+ private let symbols = ["backward.fill", "play.fill", "forward.fill"]
161
+ private let gap: CGFloat = 20
162
+
163
+ var body: some View {
164
+ GlassEffectContainer(spacing: gap) {
165
+ HStack(spacing: gap) {
166
+ ForEach(symbols, id: \.self) { symbol in
167
+ Image(systemName: symbol)
168
+ .font(.title2)
169
+ .frame(width: 60, height: 60)
170
+ .glassEffect(.regular.interactive())
171
+ }
189
172
  }
190
173
  }
191
174
  }
192
-
193
- Button("Toggle") {
194
- withAnimation { isExpanded.toggle() }
195
- }
196
- .buttonStyle(.glass)
197
175
  }
198
176
  ```
199
177
 
200
- ### Unioning views into a single glass shape
178
+ ### Morphing between states
201
179
 
202
180
  ```swift
203
- @Namespace private var ns
204
-
205
- GlassEffectContainer(spacing: 20) {
206
- HStack(spacing: 20) {
207
- ForEach(items.indices, id: \.self) { i in
208
- Image(systemName: items[i])
209
- .frame(width: 80, height: 80)
210
- .glassEffect()
211
- .glassEffectUnion(id: i < 2 ? "group1" : "group2", namespace: ns)
181
+ @available(iOS 26, *)
182
+ struct ExpandingActions: View {
183
+ @Namespace private var glassSpace
184
+ @State private var expanded = false
185
+
186
+ var body: some View {
187
+ let gap: CGFloat = 36
188
+ return GlassEffectContainer(spacing: gap) {
189
+ HStack(spacing: gap) {
190
+ Button("Compose", systemImage: "square.and.pencil") {
191
+ withAnimation(.bouncy) { expanded.toggle() }
192
+ }
193
+ .buttonStyle(.glass)
194
+ .glassEffectID("compose", in: glassSpace)
195
+
196
+ if expanded {
197
+ Button("Attach", systemImage: "paperclip") { }
198
+ .buttonStyle(.glass)
199
+ .glassEffectID("attach", in: glassSpace)
200
+ }
201
+ }
212
202
  }
213
203
  }
214
204
  }
215
205
  ```
216
206
 
217
- ### Tinted glass badge
207
+ ### Merging selected shapes with a union
218
208
 
219
209
  ```swift
220
- struct GlassBadge: View {
221
- let icon: String
222
- let tint: Color
210
+ @available(iOS 26, *)
211
+ struct FilterChips: View {
212
+ @Namespace private var chipSpace
213
+ let filters = ["Today", "Week", "Month", "Year"]
223
214
 
224
215
  var body: some View {
225
- Image(systemName: icon)
226
- .font(.title2)
227
- .padding()
228
- .glassEffect(.regular.tint(tint), in: .rect(cornerRadius: 12))
216
+ let gap: CGFloat = 12
217
+ return GlassEffectContainer(spacing: gap) {
218
+ HStack(spacing: gap) {
219
+ ForEach(filters.indices, id: \.self) { index in
220
+ Text(filters[index])
221
+ .padding(.horizontal, 14)
222
+ .padding(.vertical, 8)
223
+ .glassEffect()
224
+ .glassEffectUnion(id: index < 2 ? "short" : "long", namespace: chipSpace)
225
+ }
226
+ }
227
+ }
229
228
  }
230
229
  }
231
230
  ```
232
231
 
233
- ## Common Mistakes
232
+ Chips 0 and 1 render as one glass shape and chips 2 and 3 as another.
234
233
 
235
- ### DON'T: Apply Liquid Glass to every surface
236
-
237
- Overuse distracts from content. Glass should emphasize key interactive elements, not decorate everything.
234
+ ### A tinted badge
238
235
 
239
236
  ```swift
240
- // WRONG: Glass on everything
241
- VStack {
242
- Text("Title").glassEffect()
243
- Text("Subtitle").glassEffect()
244
- Divider().glassEffect()
245
- Text("Body").glassEffect()
246
- }
247
-
248
- // CORRECT: Glass on primary interactive elements only
249
- VStack {
250
- Text("Title").font(.title)
251
- Text("Subtitle").font(.subheadline)
252
- Divider()
253
- Text("Body")
254
- }
255
- .padding()
256
- .glassEffect()
257
- ```
258
-
259
- ### DON'T: Nest GlassEffectContainer inside another
260
-
261
- Nested containers cause undefined rendering behavior.
237
+ @available(iOS 26, *)
238
+ struct CountBadge: View {
239
+ let count: Int
240
+ let accent: Color
262
241
 
263
- ```swift
264
- // WRONG
265
- GlassEffectContainer {
266
- GlassEffectContainer {
267
- content.glassEffect()
242
+ var body: some View {
243
+ Text(count, format: .number)
244
+ .font(.caption.bold())
245
+ .padding(.horizontal, 10)
246
+ .padding(.vertical, 4)
247
+ .glassEffect(.regular.tint(accent), in: .rect(cornerRadius: 10))
268
248
  }
269
249
  }
270
-
271
- // CORRECT: Single container wrapping all glass views
272
- GlassEffectContainer {
273
- content.glassEffect()
274
- }
275
- ```
276
-
277
- ### DON'T: Add .interactive() to non-interactive elements
278
-
279
- `.interactive()` adds visual affordance suggesting tappability. Using it on decorative glass misleads users.
280
-
281
- ### DON'T: Apply .glassEffect() before layout modifiers
282
-
283
- Glass calculates its shape from the final frame. Applying it before padding/frame produces incorrect bounds.
284
-
285
- ```swift
286
- // WRONG: Glass applied before padding
287
- Text("Label").glassEffect().padding()
288
-
289
- // CORRECT: Glass applied after layout
290
- Text("Label").padding().glassEffect()
291
250
  ```
292
251
 
293
- ### DON'T: Forget accessibility testing
294
-
295
- Always test with Reduce Transparency and Reduce Motion enabled. Glass degrades gracefully but verify content remains readable.
296
-
297
- ### DON'T: Skip availability checks
298
-
299
- Liquid Glass requires iOS 26+. Gate with `if #available(iOS 26, *)` and provide a fallback.
300
-
301
- ## Review Checklist
302
-
303
- - [ ] **Availability**: `if #available(iOS 26, *)` present with fallback UI.
304
- - [ ] **Container**: Multiple glass views wrapped in `GlassEffectContainer`.
305
- - [ ] **Modifier order**: `.glassEffect()` applied after layout/appearance modifiers.
306
- - [ ] **Interactivity**: `.interactive()` used only where user interaction exists.
307
- - [ ] **Transitions**: `glassEffectID` used with `@Namespace` for morphing animations.
308
- - [ ] **Transition type**: `.matchedGeometry` for nearby effects; `.materialize` for distant ones.
309
- - [ ] **Consistency**: Shapes, tints, and spacing are uniform across related elements.
310
- - [ ] **Performance**: Glass effects are limited in number; container used for grouping.
311
- - [ ] **Accessibility**: Tested with Reduce Transparency and Reduce Motion enabled.
312
- - [ ] **Button styles**: Standard `.glass` / `.glassProminent` used for buttons.
313
- - [ ] Ensure types driving Liquid Glass effects are Sendable; apply glass effects on @MainActor context
252
+ ## Common mistakes
253
+
254
+ 1. **Glass everywhere.** Too much glass competes for attention. Put it on the
255
+ key interactive elements; for a padded group of labels, use one glass
256
+ surface for the group, not one per label.
257
+ 2. **Nested containers.** A `GlassEffectContainer` inside another gives
258
+ undefined rendering. Use one container per group.
259
+ 3. **`.interactive()` on decoration.** It tells the user the element can be
260
+ pressed. Leave it off anything that cannot.
261
+ 4. **Glass before padding or frame.** The effect sizes its shape from the
262
+ frame at the point where it is applied; add it before `.padding()` or
263
+ `.frame()` and the shape comes out too small.
264
+ 5. **Skipping accessibility settings.** Turn on Reduce Transparency, then
265
+ Reduce Motion, and confirm text stays readable in each.
266
+ 6. **No availability gate.** Every one of these APIs needs iOS 26. Gate it and
267
+ give older systems a fallback.
268
+
269
+ ## Review checklist
270
+
271
+ - [ ] `#available(iOS 26, *)` gate with a fallback
272
+ - [ ] Multiple glass views grouped in a `GlassEffectContainer`
273
+ - [ ] `.glassEffect()` placed after layout and appearance modifiers
274
+ - [ ] `.interactive()` only where the user can interact
275
+ - [ ] `glassEffectID` paired with a `@Namespace` for morphing
276
+ - [ ] `.matchedGeometry` for nearby shapes, `.materialize` for distant ones
277
+ - [ ] Related elements share shapes, tints and spacing
278
+ - [ ] Glass kept to a small number of surfaces, grouped by containers
279
+ - [ ] Checked once with Reduce Transparency on and once with Reduce Motion on
280
+ - [ ] Buttons use `.glass` or `.glassProminent` rather than hand-built glass
281
+ - [ ] Values that drive glass (IDs, tints) are `Sendable`, and the effects are applied from main-actor view code
314
282
 
315
283
  ## References
316
284
 
317
- - Full API guide: [references/liquid-glass.md](references/liquid-glass.md)
318
- - Apple docs: [Applying Liquid Glass to custom views](https://sosumi.ai/documentation/swiftui/Applying-Liquid-Glass-to-custom-views)
319
- - Apple docs: [Adopting Liquid Glass](https://sosumi.ai/documentation/technologyoverviews/adopting-liquid-glass)
285
+ - [references/liquid-glass.md](references/liquid-glass.md): signatures, transitions, performance, accessibility
286
+ - [Article: glass on custom views](https://developer.apple.com/documentation/swiftui/applying-liquid-glass-to-custom-views)
287
+ - [Overview: adopting the new material](https://developer.apple.com/documentation/technologyoverviews/adopting-liquid-glass)