@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +0 -10
  3. package/docs/facts.json +1 -1
  4. package/manifest.json +266 -267
  5. package/package.json +2 -2
  6. package/pipeline/scripts/_notices.mjs +1 -1
  7. package/pipeline/skills/.skill-manifest.json +68 -68
  8. package/pipeline/skills/shared/README.md +70 -70
  9. package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
  10. package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
  11. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
  12. package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
  13. package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
  14. package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
  15. package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
  16. package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
  17. package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
  18. package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
  19. package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
  20. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
  21. package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
  22. package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
  23. package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
  24. package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
  25. package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
  26. package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
  27. package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
  28. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
  29. package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
  30. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
  31. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
  32. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
  33. package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
  34. package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
  35. package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
  36. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
  37. package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
  38. package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
  39. package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
  40. package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
  41. package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
  42. package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
  43. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
  44. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
  45. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
  46. package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
  47. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
  48. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
  49. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
  50. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
  51. package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
  52. package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
  53. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
  54. package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
  55. package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
  56. package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
  57. package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
  58. package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
  59. package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
  60. package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
  61. package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
  62. package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
  63. package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
  64. package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
  65. package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
  66. package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
  67. package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
  68. package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
  69. package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
  70. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
  71. package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
  72. package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
  73. package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
  74. package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
  75. package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
  76. package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
  77. package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
  78. package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
  79. package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
  80. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
  81. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
  82. package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
  83. package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
  84. package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
  85. package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
  86. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
  87. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
  88. package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
  89. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
  90. package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
  91. package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
  92. package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
  93. package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
  94. package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
  95. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
  96. package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
  97. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
  98. package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
  99. package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
  100. package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
  101. package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
  102. package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
  103. package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
  104. package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
  105. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
  106. package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
  107. package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
  108. package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
  109. package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
  110. package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
  111. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
  112. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
  113. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
  114. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
  115. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
  116. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
  117. package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
  118. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
  119. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
  120. package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
  121. package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
  122. package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
  123. package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
  124. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
  125. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
  126. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
  127. package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
  128. package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
  129. package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
  130. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
  131. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
  132. package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
  133. package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
  134. package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
  135. package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
  136. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
  137. package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
  138. package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
  139. package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
  140. package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
  141. package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
  142. package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
  143. package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
  144. package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
  145. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
  146. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
  147. package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
  148. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
  149. package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
  150. package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
  151. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
  152. package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
  153. package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
  154. package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
  155. package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
  156. package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
  157. package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
  158. package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
  159. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
  160. package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
  161. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
  162. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
  163. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
  164. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
  165. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
  166. package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
  167. package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
  168. package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
  169. package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
  170. package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
  171. package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
  172. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
  173. package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
  174. package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
  175. package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
  176. package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
  177. package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
  178. package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
  179. package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
  180. package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
  181. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
  182. package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
  183. package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
  184. package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
  185. package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
  186. package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
  187. package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
  188. package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
  189. package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
  190. package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
  191. package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
  192. package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
  193. package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
  194. package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
  195. package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
  196. package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
  197. package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
  198. package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
  199. package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
  200. package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
  201. package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
  202. package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
  203. package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
  204. package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
  205. package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
  206. package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
  207. package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
  208. package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
  209. package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
  210. package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
  211. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
  212. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
  213. package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
  214. package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
  215. package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
  216. package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
  217. package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
  218. package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
  219. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
  220. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
  221. package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
  222. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
  223. package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
  224. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
  225. package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
  226. package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
  227. package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
  228. package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
  229. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
  230. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
  231. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
  232. package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
  233. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
  234. package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
  235. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
  236. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
  237. package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
  238. package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
  239. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
  240. package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
  241. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
  242. package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
  243. package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
  244. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
  245. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
  246. package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
  247. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
  248. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
  249. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
  250. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
  251. package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
  252. package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
  253. package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
  254. package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
  255. package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
  256. package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
  257. package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
  258. package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
  259. package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
  260. package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
  261. package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
  262. package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
  263. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
  264. package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
@@ -1,90 +1,87 @@
1
- # List and Section
1
+ # Lists
2
2
 
3
- ## Intent
3
+ List recipes for the `swiftui-layout-components` skill.
4
4
 
5
- Use `List` for feed-style content and settings-style rows where built-in row reuse, selection, and accessibility matter.
5
+ ## When to use List
6
6
 
7
- ## Core patterns
7
+ `List` is the default for long vertical runs of similar rows. `Section`
8
+ headers break the rows into groups.
8
9
 
9
- - Prefer `List` for long, vertically scrolling content with repeated rows.
10
- - Use `Section` headers to group related rows.
11
- - Use `ScrollPosition` with `.scrollPosition($scrollPosition)` for scroll-to-top or jump-to-id.
12
- - Use `.listStyle(.plain)` for modern feed layouts.
13
- - Use `.listStyle(.grouped)` for multi-section discovery/search pages where section grouping helps.
14
- - Apply `.scrollContentBackground(.hidden)` + a custom background when you need a themed surface.
15
- - Use `.listRowInsets(...)` and `.listRowSeparator(.hidden)` to tune row spacing and separators.
16
- - Use `.environment(\.defaultMinListRowHeight, ...)` to control dense list layouts.
10
+ - `.listStyle(.grouped)` suits discovery or search pages with several sections.
11
+ - `.environment(\.defaultMinListRowHeight, 1)` removes the minimum row height
12
+ for very dense layouts.
13
+ - Stable row ids keep insert and delete animations and scroll positioning
14
+ correct.
17
15
 
18
- ## Example: feed list with scroll-to-top
16
+ ## Feed with scroll to top
19
17
 
20
18
  ```swift
21
- @MainActor
22
- struct TimelineListView: View {
23
- @Environment(\.selectedTabScrollToTop) private var selectedTabScrollToTop
24
- @State private var scrollPosition = ScrollPosition(idType: String.self)
25
-
26
- var body: some View {
27
- List {
28
- ForEach(items) { item in
29
- TimelineRow(item: item)
30
- .id(item.id)
31
- .listRowInsets(.init(top: 12, leading: 16, bottom: 12, trailing: 16))
32
- .listRowSeparator(.hidden)
33
- }
19
+ struct ActivityFeed: View {
20
+ let events: [ActivityEvent]
21
+ @Environment(\.jumpToTop) private var jumpToTop
22
+ @State private var position = ScrollPosition(idType: ActivityEvent.ID.self)
23
+
24
+ var body: some View {
25
+ List {
26
+ ForEach(events) { event in
27
+ ActivityRow(event: event)
28
+ .id(event.id)
29
+ .listRowInsets(EdgeInsets(top: 10, leading: 16, bottom: 10, trailing: 16))
30
+ .listRowSeparator(.hidden)
31
+ }
32
+ }
33
+ .listStyle(.plain)
34
+ .scrollPosition($position)
35
+ .onChange(of: jumpToTop) {
36
+ withAnimation { position.scrollTo(edge: .top) }
37
+ }
34
38
  }
35
- .listStyle(.plain)
36
- .environment(\.defaultMinListRowHeight, 1)
37
- .scrollPosition($scrollPosition)
38
- .onChange(of: selectedTabScrollToTop) {
39
- withAnimation {
40
- scrollPosition.scrollTo(edge: .top)
41
- }
42
- }
43
- }
44
39
  }
45
40
  ```
46
41
 
47
- ## Example: settings-style list
42
+ `jumpToTop` stands for any signal, such as a counter the tab bar bumps when
43
+ its tab is tapped again, passed down through a custom environment value.
44
+
45
+ ## Settings list
48
46
 
49
47
  ```swift
50
- @MainActor
51
- struct SettingsView: View {
52
- var body: some View {
53
- List {
54
- Section("General") {
55
- NavigationLink("Display") { DisplaySettingsView() }
56
- NavigationLink("Haptics") { HapticsSettingsView() }
57
- }
58
- Section("Account") {
59
- Button("Sign Out", role: .destructive) {}
60
- }
48
+ struct PrivacySettings: View {
49
+ var body: some View {
50
+ List {
51
+ Section("Data") {
52
+ NavigationLink("Location", value: PrivacyPage.location)
53
+ NavigationLink("Contacts", value: PrivacyPage.contacts)
54
+ }
55
+ Section {
56
+ Button("Delete Account", role: .destructive) { confirmDeletion() }
57
+ }
58
+ }
59
+ .listStyle(.insetGrouped)
61
60
  }
62
- .listStyle(.insetGrouped)
63
- }
61
+
62
+ private func confirmDeletion() {}
64
63
  }
65
64
  ```
66
65
 
67
- ## Design choices to keep
66
+ ## Swipe actions on rows
68
67
 
69
- - Use `List` for dynamic feeds, settings, and any UI where row semantics help.
70
- - Use stable IDs for rows to keep animations and scroll positioning reliable.
71
- - Prefer `.contentShape(Rectangle())` on rows that should be tappable end-to-end.
72
- - Use `.refreshable` for pull-to-refresh feeds when the data source supports it.
68
+ Swipe actions are a `List` row feature; the full guide with an example is in
69
+ the parent skill under [Swipe actions](../SKILL.md#swipe-actions). Short version: put
70
+ `.swipeActions(edge:allowsFullSwipe:content:)` on the row inside `ForEach`,
71
+ use `role: .destructive` for delete, `.tint(_:)` for other actions, and
72
+ mirror the actions in a context menu.
73
73
 
74
- ## iOS 26 Scroll Edge Effects
75
-
76
- Apply edge effects to lists for modern scroll behavior:
74
+ ## Edge effect (iOS 26)
77
75
 
78
76
  ```swift
79
- List {
80
- // rows
81
- }
82
- .scrollEdgeEffectStyle(.soft, for: .top)
77
+ List(items) { ItemRow(item: $0) }
78
+ .scrollEdgeEffectStyle(.soft, for: .top)
83
79
  ```
84
80
 
85
- See `scrollview.md` for the full scroll edge effect and `backgroundExtensionEffect()` API reference.
81
+ The full edge-effect API is covered in the
82
+ [scroll view reference](scrollview.md).
86
83
 
87
84
  ## Pitfalls
88
85
 
89
- - Avoid heavy custom layouts inside a `List` row; use `ScrollView` + `LazyVStack` instead.
90
- - Be careful mixing `List` and nested `ScrollView`; it can cause gesture conflicts.
86
+ - Heavy custom layouts inside rows; switch to `ScrollView` with `LazyVStack`.
87
+ - A `ScrollView` nested in a `List` fights over gestures.
@@ -1,192 +1,152 @@
1
- # ScrollView and Lazy stacks
1
+ # Scroll Views
2
2
 
3
- ## Contents
3
+ Scroll view guidance for the `swiftui-layout-components` skill.
4
4
 
5
- - [Intent](#intent)
6
- - [Core patterns](#core-patterns)
7
- - [Example: vertical custom feed](#example-vertical-custom-feed)
8
- - [ScrollPosition capabilities](#scrollposition-capabilities)
9
- - [Example: horizontal chips](#example-horizontal-chips)
10
- - [Example: adaptive grid](#example-adaptive-grid)
11
- - [Design choices to keep](#design-choices-to-keep)
12
- - [iOS 26 Scroll Edge Effects](#ios-26-scroll-edge-effects)
13
- - [Pitfalls](#pitfalls)
5
+ ## When to use ScrollView
14
6
 
15
- ## Intent
7
+ Pair `ScrollView` with `LazyVStack`, `LazyHStack` or `LazyVGrid` when you need
8
+ a custom layout, mixed content, or horizontal or grid scrolling.
16
9
 
17
- Use `ScrollView` with `LazyVStack`, `LazyHStack`, or `LazyVGrid` when you need custom layout, mixed content, or horizontal/ grid-based scrolling.
10
+ - Chat and custom feeds: `ScrollView` + `LazyVStack`.
11
+ - Chips, tags, avatars, media strips: `ScrollView(.horizontal)` + `LazyHStack`.
12
+ - Grids: `LazyVGrid`, with adaptive columns as the first choice.
13
+ - Jumping to an item, to an edge or to a point: `ScrollPosition`.
14
+ - An input bar that stays above the keyboard: `safeAreaInset(edge:)`.
18
15
 
19
- ## Core patterns
20
-
21
- - Prefer `ScrollView` + `LazyVStack` for chat-like or custom feed layouts.
22
- - Use `ScrollView(.horizontal)` + `LazyHStack` for chips, tags, avatars, and media strips.
23
- - Use `LazyVGrid` for icon/media grids; prefer adaptive columns when possible.
24
- - Use `ScrollPosition` for programmatic scrolling: scroll-to-id, scroll-to-edge, and point-based offsets.
25
- - Use `safeAreaInset(edge:)` for input bars that should stick above the keyboard.
26
-
27
- ## Example: vertical custom feed
16
+ ## Conversation screen
28
17
 
29
18
  ```swift
30
- @MainActor
31
- struct ConversationView: View {
32
- @State private var scrollPosition = ScrollPosition(edge: .bottom)
33
-
34
- var body: some View {
35
- ScrollView {
36
- LazyVStack {
37
- ForEach(messages) { message in
38
- MessageRow(message: message)
19
+ struct SupportChat: View {
20
+ let lines: [ChatLine]
21
+ @State private var draft = ""
22
+ @State private var position = ScrollPosition(edge: .bottom)
23
+
24
+ var body: some View {
25
+ ScrollView {
26
+ LazyVStack(alignment: .leading) {
27
+ ForEach(lines) { ChatLineView(line: $0) }
28
+ }
29
+ .scrollTargetLayout()
30
+ .padding(.horizontal)
39
31
  }
40
- }
41
- .scrollTargetLayout()
42
- .padding(.horizontal, .layoutPadding)
43
- }
44
- .scrollPosition($scrollPosition)
45
- .safeAreaInset(edge: .bottom) {
46
- MessageInputBar()
47
- }
48
- .onChange(of: messages.last?.id) {
49
- withAnimation { scrollPosition.scrollTo(edge: .bottom) }
50
- }
51
- }
52
- }
53
- ```
54
-
55
- ## ScrollPosition capabilities
56
-
57
- `ScrollPosition` (iOS 18+) replaces `ScrollViewReader` for programmatic scrolling. It is declarative, supports bidirectional position tracking, and does not require a closure wrapper.
58
-
59
- **Setup:** Declare state and attach to the scroll view. Apply `.scrollTargetLayout()` to the inner layout container so SwiftUI can track individual view identities.
60
-
61
- ```swift
62
- @State private var scrollPosition = ScrollPosition(idType: Message.ID.self)
63
-
64
- ScrollView {
65
- LazyVStack {
66
- ForEach(messages) { message in
67
- MessageRow(message: message)
32
+ .scrollPosition($position)
33
+ .onChange(of: lines.last?.id) {
34
+ withAnimation { position.scrollTo(edge: .bottom) }
35
+ }
36
+ .safeAreaInset(edge: .bottom) {
37
+ HStack {
38
+ TextField("Reply", text: $draft)
39
+ Button("Send", systemImage: "paperplane.fill") { send() }
40
+ }
41
+ .padding()
42
+ .background(.bar)
68
43
  }
69
44
  }
70
- .scrollTargetLayout()
45
+
46
+ private func send() {}
71
47
  }
72
- .scrollPosition($scrollPosition)
73
48
  ```
74
49
 
75
- **Scroll to a specific item:**
50
+ ## ScrollPosition
76
51
 
77
- ```swift
78
- scrollPosition.scrollTo(id: message.id, anchor: .top)
79
- ```
52
+ `ScrollPosition` arrived in iOS 18 and takes over from `ScrollViewReader`. It
53
+ is a value you bind, it works in both directions, and there is no reader
54
+ closure to wrap your content in.
80
55
 
81
- **Scroll to an edge:**
56
+ 1. Store it: `@State private var position = ScrollPosition(idType: Track.ID.self)`.
57
+ 2. Put `.scrollTargetLayout()` on the lazy stack so item identities are tracked.
58
+ 3. Bind it on the scroll view: `.scrollPosition($position)`.
82
59
 
83
- ```swift
84
- scrollPosition.scrollTo(edge: .bottom)
85
- ```
86
-
87
- **Read the current position:**
60
+ | Goal | Call |
61
+ |------|------|
62
+ | Scroll to an item | `position.scrollTo(id: track.id, anchor: .top)` |
63
+ | Scroll to an edge | `position.scrollTo(edge: .bottom)` |
64
+ | Read the item at the anchor | `position.viewID(type: Track.ID.self)` |
65
+ | Know the user moved it | `position.isPositionedByUser` |
88
66
 
89
67
  ```swift
90
- if let currentID = scrollPosition.viewID(type: Message.ID.self) {
91
- // The view with this ID is currently at the scroll anchor
68
+ .onChange(of: position.isPositionedByUser) { _, byUser in
69
+ showJumpToLatest = byUser
92
70
  }
93
71
  ```
94
72
 
95
- **Detect user-initiated scrolls:**
73
+ Keep ids stable; if they change, the position jumps. Wrap `scrollTo(id:)` in
74
+ `withAnimation` when the move should be visible.
96
75
 
97
- ```swift
98
- .onChange(of: scrollPosition.isPositionedByUser) { _, byUser in
99
- if byUser {
100
- // User scrolled manually -- show "scroll to bottom" button
101
- }
102
- }
103
- ```
104
-
105
- ## Example: horizontal chips
76
+ ## More shapes
106
77
 
107
78
  ```swift
108
79
  ScrollView(.horizontal, showsIndicators: false) {
109
- LazyHStack {
110
- ForEach(chips) { chip in
111
- ChipView(chip: chip)
80
+ LazyHStack(spacing: 8) {
81
+ ForEach(tags) { TagChip(tag: $0) }
112
82
  }
113
- }
83
+ .padding(.horizontal)
114
84
  }
115
- ```
116
-
117
- ## Example: adaptive grid
118
-
119
- ```swift
120
- let columns = [GridItem(.adaptive(minimum: 120))]
121
85
 
122
86
  ScrollView {
123
- LazyVGrid(columns: columns) {
124
- ForEach(items) { item in
125
- GridItemView(item: item)
87
+ LazyVGrid(columns: [GridItem(.adaptive(minimum: 120))]) {
88
+ ForEach(albums) { AlbumTile(album: $0) }
126
89
  }
127
- }
128
- .padding()
90
+ .padding()
129
91
  }
130
92
  ```
131
93
 
132
- ## Design choices to keep
133
-
134
- - Use `Lazy*` stacks when item counts are large or unknown.
135
- - Use non-lazy stacks for small, fixed-size content to avoid lazy overhead.
136
- - Keep IDs stable for `ScrollPosition` tracking; changing IDs causes position jumps.
137
- - Prefer explicit animations (`withAnimation`) when scrolling to an ID.
94
+ Choose lazy stacks for large or unknown counts, plain stacks for small fixed
95
+ content where lazy bookkeeping is wasted.
138
96
 
139
- ## iOS 26 Scroll Edge Effects
97
+ ## Scroll edge effects (iOS 26)
140
98
 
141
- ### scrollEdgeEffectStyle
142
-
143
- Configure the visual treatment at scroll view edges (iOS 26+):
99
+ `.scrollEdgeEffectStyle(_:for:)` sets the effect per edge:
144
100
 
145
101
  ```swift
146
- ScrollView {
147
- content
148
- }
149
- .scrollEdgeEffectStyle(.soft, for: .top) // Soft fading edge at top
150
- .scrollEdgeEffectStyle(.hard, for: .bottom) // Hard cutoff at bottom
102
+ ScrollView { ArticleBody() }
103
+ .scrollEdgeEffectStyle(.soft, for: .top)
104
+ .scrollEdgeEffectStyle(.hard, for: .bottom)
151
105
  ```
152
106
 
153
- `ScrollEdgeEffectStyle` values:
154
- - `.automatic` -- platform default
155
- - `.soft` -- soft fading edge effect
156
- - `.hard` -- hard cutoff with dividing line
107
+ | `ScrollEdgeEffectStyle` | Look |
108
+ |-------------------------|------|
109
+ | `.automatic` | Platform default |
110
+ | `.soft` | Content fades out at the edge |
111
+ | `.hard` | Sharp cutoff with a dividing line |
157
112
 
158
- Use `scrollEdgeEffectHidden(_:for:)` to hide the edge effect entirely.
113
+ `.scrollEdgeEffectHidden(true, for: .top)` removes the effect on that edge.
114
+ Apply these modifiers to the scroll view itself, not to views inside it.
159
115
 
160
- ### backgroundExtensionEffect
116
+ ### Background extension
161
117
 
162
- Duplicates, mirrors, and blurs the view to extend behind safe area edges (iOS 26+):
118
+ `.backgroundExtensionEffect()` (iOS 26) copies a view, mirrors it and blurs it
119
+ into the area behind safe-area edges, for example a hero image under the
120
+ sidebar of a split view:
163
121
 
164
122
  ```swift
165
123
  NavigationSplitView {
166
- sidebar
124
+ SidebarList()
167
125
  } detail: {
168
- BannerView()
126
+ Image("coastline")
127
+ .resizable()
128
+ .aspectRatio(contentMode: .fill)
169
129
  .backgroundExtensionEffect()
170
130
  }
171
131
  ```
172
132
 
173
- Use sparingly -- Apple recommends only a single instance for visual clarity and performance. The modifier clips the view to prevent mirror overlap.
133
+ Apple advises a single instance per screen for clarity and performance. The
134
+ modifier clips the view so the mirrored copies do not overlap it.
174
135
 
175
- ### safeAreaBar
136
+ ### Safe area bars
176
137
 
177
- Attach a bar view to the safe area edge, integrating with scroll edge effects (iOS 26+):
138
+ `.safeAreaBar(edge:)` (iOS 26) attaches a bar that takes part in the scroll
139
+ edge effect, unlike a plain inset:
178
140
 
179
141
  ```swift
180
- content
181
- .safeAreaBar(edge: .top) {
182
- FilterBar()
183
- }
142
+ ScrollView { ResultsGrid() }
143
+ .safeAreaBar(edge: .top) { FilterStrip() }
184
144
  ```
185
145
 
186
146
  ## Pitfalls
187
147
 
188
- - Avoid nesting scroll views of the same axis; it causes gesture conflicts.
189
- - Don't combine `List` and `ScrollView` in the same hierarchy without a clear reason.
190
- - Overuse of `LazyVStack` for tiny content can add unnecessary complexity.
191
- - Apply `scrollEdgeEffectStyle` on the ScrollView, not on inner content.
192
- - Use `backgroundExtensionEffect()` on only one view per screen.
148
+ - Two scroll views on the same axis, one inside the other.
149
+ - `List` and `ScrollView` combined without a strong reason.
150
+ - `LazyVStack` for three rows: extra machinery for nothing.
151
+ - `scrollEdgeEffectStyle` placed on inner content instead of the scroll view.
152
+ - More than one `backgroundExtensionEffect()` on a screen.