@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.1

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