@mmerterden/multi-agent-pipeline 20.6.0 → 20.8.0

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