@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,283 +1,198 @@
1
- # Rules, Suppressions, and Baselines
1
+ # Rules, Suppressions and Baselines
2
2
 
3
- Guidance on SwiftLint rule categories, inline suppression syntax, baseline workflows, and false-positive handling.
3
+ Back to [SKILL.md](../SKILL.md). Every identifier is indexed in the
4
+ [rule reference](rule-reference.md).
4
5
 
5
- ## Contents
6
+ ## The three kinds of rule
6
7
 
7
- - [Rule Categories](#rule-categories)
8
- - [Browsing Rules](#browsing-rules)
9
- - [Suppression Syntax](#suppression-syntax)
10
- - [Suppression Policy](#suppression-policy)
11
- - [Baselines](#baselines)
12
- - [False Positives](#false-positives)
13
- - [Generated Code and Test Targets](#generated-code-and-test-targets)
8
+ **Default.** On out of the box because nearly every Swift codebase already
9
+ agrees with them, for example `force_cast`, `line_length` and
10
+ `trailing_semicolon`. Turn one off with `disabled_rules`.
14
11
 
15
- ---
16
-
17
- ## Rule Categories
18
-
19
- SwiftLint rules fall into three categories:
20
-
21
- ### Default rules
22
-
23
- Enabled automatically. These cover widely agreed-upon conventions (e.g., `line_length`, `force_cast`, `trailing_semicolon`). Disable specific ones via `disabled_rules` in `.swiftlint.yml`.
24
-
25
- ### Opt-in rules
26
-
27
- Disabled by default because they are more opinionated or may not suit every project. Enable selectively via `opt_in_rules`:
12
+ **Opt-in.** Off out of the box because they take a stronger position. A fuller
13
+ opt-in list than the starter config:
28
14
 
29
15
  ```yaml
30
16
  opt_in_rules:
31
- - empty_count
17
+ - accessibility_label_for_image
18
+ - accessibility_trait_for_button
32
19
  - closure_spacing
33
- - force_unwrapping
34
- - sorted_imports
35
- - contains_over_filter_count
36
- - first_where
37
- - last_where
38
- - modifier_order
39
- - vertical_whitespace_opening_braces
20
+ - empty_count
40
21
  - explicit_init
22
+ - force_unwrapping
41
23
  - joined_default_parameter
42
- - redundant_nil_coalescing
43
24
  - private_swiftui_state
25
+ - redundant_nil_coalescing
26
+ - sorted_imports
44
27
  - unhandled_throwing_task
45
- - accessibility_label_for_image
46
- - accessibility_trait_for_button
28
+ - vertical_whitespace_opening_braces
47
29
  ```
48
30
 
49
- ### Analyzer rules
31
+ **Analyzer.** Need type information from the compiler, so they only run under
32
+ `swiftlint analyze` fed with compiler logs. See
33
+ [custom rules and analyze](custom-rules-and-analyze.md).
50
34
 
51
- Require the Swift compiler's AST information. Must be run via `swiftlint analyze` with compiler logs. See the custom rules and analyze reference linked from SKILL.md.
35
+ ## Looking rules up
52
36
 
53
- ```yaml
54
- analyzer_rules:
55
- - unused_import
56
- - unused_declaration
37
+ ```bash
38
+ swiftlint rules # all rules, with enabled / disabled / correctable columns
39
+ swiftlint rules --enabled # just the enabled ones
40
+ swiftlint rules --disabled # just the disabled ones
41
+ swiftlint rules force_unwrapping # one rule in detail
57
42
  ```
58
43
 
59
- ## Browsing Rules
44
+ ## Rules you will meet early
45
+
46
+ ### Default rules with options
47
+
48
+ | Rule | Checks | Options |
49
+ |---|---|---|
50
+ | `line_length` | characters per line | `warning`, `error`, `ignores_urls`, `ignores_comments`, `ignores_interpolated_strings` |
51
+ | `file_length` | lines per file | `warning`, `error`, `ignore_comment_only_lines` |
52
+ | `type_body_length` | lines inside a type body | `warning`, `error` |
53
+ | `function_body_length` | lines inside a function body | `warning`, `error` |
54
+ | `function_parameter_count` | number of parameters | `warning`, `error`, `ignores_default_parameters` |
55
+ | `cyclomatic_complexity` | branching complexity | `warning`, `error`, `ignores_case_statements` |
56
+ | `nesting` | how deep types and functions nest | `type_level`, `function_level` |
57
+ | `blanket_disable_command` | a `swiftlint:disable` that silences the rest of the file | `allowed_rules`, `always_blanket_disable` |
58
+ | `identifier_name` | identifier length and casing | `min_length`, `max_length`, `excluded` (short names such as `id`, `x`, `i`) |
59
+ | `type_name` | type name length and casing | `min_length`, `max_length`, `excluded` |
60
+ | `large_tuple` | tuple arity | `warning`, `error` |
61
+ | `force_cast` | `as!` | severity only |
62
+ | `force_try` | `try!` | severity only |
63
+ | `todo` | `// TODO:` and `// FIXME:` | severity only |
64
+ | `trailing_whitespace` | spaces at line end | `ignores_empty_lines`, `ignores_comments` |
65
+ | `trailing_comma` | commas after the last element | `mandatory_comma` (`true` demands them) |
66
+ | `vertical_whitespace` | runs of blank lines | `max_empty_lines` |
67
+ | `opening_brace` | `{` kept on the declaration line | `allow_multiline_func` |
68
+ | `colon` | spacing around colons | `flexible_right_spacing`, `apply_to_dictionaries` |
69
+ | `deployment_target` | `@available` / `#available` checks the deployment target already guarantees | `iOS_deployment_target`, `macOS_deployment_target`, and siblings |
70
+
71
+ ### Opt-in rules worth considering
72
+
73
+ | Rule | Why turn it on |
74
+ |---|---|
75
+ | `force_unwrapping` | Every `!` is a potential crash. Relax it for tests in a child config. |
76
+ | `private_swiftui_state` | `@State`, `@StateObject` and `@FocusState` must be `private`, so nothing outside the view can mutate its state. |
77
+ | `unhandled_throwing_task` | `Task { try ... }` with no `do/catch` drops its error on the floor. |
78
+ | `sorted_imports` | Alphabetical imports mean fewer merge conflicts. Correctable. |
79
+ | `modifier_order` | Declaration modifiers always in the same order. Correctable. |
80
+ | `accessibility_label_for_image` | Images must carry an accessibility label. |
81
+ | `accessibility_trait_for_button` | Tappable elements must carry a button trait. |
82
+ | `empty_count` | `.isEmpty` rather than `.count == 0`. |
83
+ | `closure_spacing` | Spaces just inside closure braces. |
84
+ | `contains_over_filter_count` | `.contains` rather than `.filter { }.count`. |
85
+ | `first_where` / `last_where` | `.first(where:)` rather than `.filter { }.first`. |
86
+ | `redundant_nil_coalescing` | Catches `value ?? nil`. |
87
+ | `implicit_return` | Single-expression bodies drop the `return`. |
88
+ | `self_binding` | One consistent name when rebinding `self` (`guard let self`); option `bind_identifier`. |
89
+ | `shorthand_optional_binding` | `if let name` over `if let name = name` (Swift 5.7 and later). |
90
+ | `expiring_todo` | TODO/FIXME comments carrying a date escalate to warnings, then errors, once overdue; thresholds and severities configurable. |
60
91
 
61
- List all rules and their status:
92
+ ### Analyzer rules
62
93
 
63
- ```sh
64
- swiftlint rules # all rules with enabled/disabled/correctable status
65
- swiftlint rules --enabled # only currently enabled rules
66
- swiftlint rules --disabled # only currently disabled rules
67
- swiftlint rules <rule_identifier> # detailed info for one rule
68
- ```
94
+ | Rule | Finds |
95
+ |---|---|
96
+ | `unused_import` | imports nothing in the file needs; correctable |
97
+ | `unused_declaration` | private declarations that nothing references |
98
+ | `capture_variable` | mutable variables captured by a closure |
99
+ | `explicit_self` | instance member access without `self.` |
100
+ | `typesafe_array_init` | `Array(items.map { ... })` where the `map` result is already an array |
69
101
 
70
- The official [rule directory](https://realm.github.io/SwiftLint/rule-directory.html) provides descriptions, configuration options, and examples for every rule.
71
-
72
- Do not memorize or transcribe the rule directory. Look up specific rules when needed.
73
-
74
- ## Commonly Encountered Rules Quick Reference
75
-
76
- An agent writing or reviewing Swift code should understand what these frequently triggered rules enforce. Each rule can be configured in `.swiftlint.yml` using the rule identifier as a key.
77
-
78
- ### Default rules (enabled automatically)
79
-
80
- | Rule | What it enforces | Key config options |
81
- | ------ | ------------------ | -------------------- |
82
- | `line_length` | Max characters per line | `warning`, `error`, `ignores_urls`, `ignores_comments`, `ignores_interpolated_strings` |
83
- | `file_length` | Max lines per file | `warning`, `error`, `ignore_comment_only_lines` |
84
- | `type_body_length` | Max lines in a type body | `warning`, `error` |
85
- | `function_body_length` | Max lines in a function body | `warning`, `error` |
86
- | `function_parameter_count` | Max parameters per function | `warning`, `error`, `ignores_default_parameters` |
87
- | `cyclomatic_complexity` | Max branching complexity | `warning`, `error`, `ignores_case_statements` |
88
- | `nesting` | Max nesting depth | `type_level`, `function_level` |
89
- | `blanket_disable_command` | Prevents `swiftlint:disable` from disabling rules for the rest of the file | `allowed_rules`, `always_blanket_disable` |
90
- | `identifier_name` | Naming length and conventions | `min_length`, `max_length`, `excluded` (list of allowed short names like `id`, `x`, `i`) |
91
- | `type_name` | Type naming length and conventions | `min_length`, `max_length`, `excluded` |
92
- | `large_tuple` | Max tuple size | `warning`, `error` |
93
- | `force_cast` | Flags `as!` | severity only |
94
- | `force_try` | Flags `try!` | severity only |
95
- | `todo` | Flags `// TODO:` and `// FIXME:` | severity only |
96
- | `trailing_whitespace` | Trailing spaces on lines | `ignores_empty_lines`, `ignores_comments` |
97
- | `trailing_comma` | Trailing commas in collections | `mandatory_comma` (when `true`, *requires* trailing commas) |
98
- | `vertical_whitespace` | Max consecutive blank lines | `max_empty_lines` |
99
- | `opening_brace` | Brace placement (`{` on same line) | `allow_multiline_func` |
100
- | `colon` | Spacing around colons | `flexible_right_spacing`, `apply_to_dictionaries` |
101
- | `deployment_target` | Flags `@available` / `#available` checks that use versions already satisfied by the deployment target | `iOS_deployment_target`, `macOS_deployment_target`, etc. |
102
-
103
- ### High-value opt-in rules
104
-
105
- | Rule | What it enforces | Why enable it |
106
- | ------ | ------------------ | --------------- |
107
- | `force_unwrapping` | Flags `!` unwraps | Catches crashes; relax in tests via child config |
108
- | `private_swiftui_state` | `@State`, `@StateObject`, `@FocusState` must be `private` | Prevents accidental external mutation of view state |
109
- | `unhandled_throwing_task` | `Task { try ... }` without `do/catch` | Silently swallowed errors in async contexts |
110
- | `sorted_imports` | Import statements in alphabetical order | Reduces merge conflicts; auto-correctable |
111
- | `modifier_order` | Consistent declaration modifier ordering | Readability; auto-correctable |
112
- | `accessibility_label_for_image` | Images must have accessibility labels | Accessibility compliance |
113
- | `accessibility_trait_for_button` | Buttons must have accessibility traits | Accessibility compliance |
114
- | `empty_count` | Use `.isEmpty` instead of `.count == 0` | Performance and clarity |
115
- | `closure_spacing` | Spaces inside closure braces | Formatting consistency |
116
- | `contains_over_filter_count` | `.contains` instead of `.filter { }.count` | Performance |
117
- | `first_where` / `last_where` | `.first(where:)` instead of `.filter { }.first` | Performance |
118
- | `redundant_nil_coalescing` | Flags `x ?? nil` | Dead code |
119
- | `implicit_return` | Single-expression returns don't need `return` | Modern Swift style |
120
- | `self_binding` | Consistent `guard let self` naming | Configurable: `bind_identifier` |
121
- | `shorthand_optional_binding` | `if let x` instead of `if let x = x` | Swift 5.7+ style |
122
- | `expiring_todo` | TODOs/FIXMEs with dates become warnings or errors after expiry | Project hygiene with configurable thresholds and severities |
123
-
124
- ### Analyzer rules (require compiler logs)
125
-
126
- | Rule | What it enforces |
127
- | ------ | ------------------ |
128
- | `unused_import` | Flags unnecessary `import` statements; auto-correctable |
129
- | `unused_declaration` | Flags private declarations never referenced |
130
- | `capture_variable` | Flags mutable variables captured by closures |
131
- | `explicit_self` | Requires `self.` for instance members |
132
- | `typesafe_array_init` | Flags `Array(x.map { ... })` → use `x.map { ... }` directly |
133
-
134
- ### Per-rule configuration pattern
135
-
136
- Every rule that accepts configuration uses its identifier as the YAML key:
102
+ ## Configuring one rule
103
+
104
+ Each configurable rule takes its identifier as a YAML key:
137
105
 
138
106
  ```yaml
139
- # Threshold-based rules use warning/error:
140
- line_length:
107
+ line_length: # thresholds
141
108
  warning: 140
142
109
  error: 200
143
110
 
144
- # Boolean option rules:
145
- trailing_comma:
111
+ trailing_comma: # boolean option
146
112
  mandatory_comma: true
147
113
 
148
- # Rules with excluded identifiers:
149
- identifier_name:
150
- excluded:
151
- - id
152
- - x
153
- - y
114
+ identifier_name: # identifiers exempt from the rule
115
+ excluded: [id, x, y]
154
116
 
155
- # Rules with a single severity override:
156
- force_cast: error # shorthand for severity: error
117
+ force_cast: error # shorthand for severity: error
157
118
 
158
- # Deployment target rule:
159
- deployment_target:
119
+ deployment_target: # minimum versions already guaranteed
160
120
  iOS_deployment_target: "16.0"
161
121
  ```
162
122
 
163
- Run `swiftlint rules <rule_identifier>` to see all available configuration keys for any rule.
164
-
165
- ## Suppression Syntax
166
-
167
- ### Single-line suppressions
123
+ ## Suppression syntax
168
124
 
169
125
  ```swift
170
- // swiftlint:disable:next force_cast
171
- let view = object as! UIView
126
+ // swiftlint:disable:next force_unwrapping
127
+ let icon = iconsByKind[kind]! // next line
172
128
 
173
- let value = dict["key"]! // swiftlint:disable:this force_unwrapping
129
+ let port = Int(raw)! // swiftlint:disable:this force_unwrapping // same line
174
130
 
175
- // swiftlint:disable:previous large_tuple
131
+ let host = hosts[0]!
132
+ // swiftlint:disable:previous force_unwrapping // previous line
176
133
  ```
177
134
 
178
- - `:next` - suppresses on the next line
179
- - `:this` - suppresses on the same line
180
- - `:previous` - suppresses on the previous line
181
-
182
- ### Region suppressions
135
+ A region can name several rules separated by spaces:
183
136
 
184
137
  ```swift
185
138
  // swiftlint:disable cyclomatic_complexity function_body_length
186
- func complexLegacyFunction() {
187
- // ... long function ...
139
+ func migrate(_ record: LegacyRecord) {
140
+ // many branches
188
141
  }
189
142
  // swiftlint:enable cyclomatic_complexity function_body_length
190
143
  ```
191
144
 
192
- Multiple rules can be listed in one directive, separated by spaces.
145
+ Leaving out `// swiftlint:enable all` after `// swiftlint:disable all` switches
146
+ the linter off for the remainder of the file.
193
147
 
194
- ### Disable all rules
195
-
196
- ```swift
197
- // swiftlint:disable all
198
- // ... entire block is unlinted ...
199
- // swiftlint:enable all
200
- ```
148
+ ## Suppression policy
201
149
 
202
- If you forget `// swiftlint:enable all`, the rest of the file is unlinted. This is a common mistake.
150
+ - `disable all` is reserved for generated code that the config genuinely
151
+ cannot exclude.
152
+ - Put a short justification after the directive:
203
153
 
204
- ## Suppression Policy
154
+ ```swift
155
+ // swiftlint:disable:next force_cast - storyboard guarantees this cell class
156
+ let cell = collection.dequeueReusableCell(withReuseIdentifier: "Tile", for: path) as! TileCell
157
+ ```
205
158
 
206
- - **Target specific rules.** Never use `// swiftlint:disable all` unless the block is generated code that cannot be excluded via config.
207
- - **Add a reason.** Follow the suppression with a brief comment explaining why:
208
-
209
- ```swift
210
- // swiftlint:disable:next force_cast - guaranteed by Interface Builder outlet type
211
- let cell = tableView.dequeueReusableCell(...) as! CustomCell
212
- ```
213
-
214
- - **Re-enable after regions.** Always pair `disable` with `enable`.
215
- - **Prefer config-level exclusion** for entire files or directories of generated code.
216
- - **Review suppressions in code review.** Inline suppressions should be as scrutinized as the code they protect.
217
- - **Treat suppressions as tech debt.** Track and reduce them over time.
159
+ - Every `disable` has an `enable`.
160
+ - Whole generated files or folders go in `excluded`, not behind comments.
161
+ - Review suppressions as carefully as the code around them.
162
+ - Count them as technical debt; track them and bring the number down.
218
163
 
219
164
  ## Baselines
220
165
 
221
- Baselines record all existing violations so only new violations are reported.
222
-
223
- ### Creating a baseline
224
-
225
- ```sh
226
- swiftlint --write-baseline .swiftlint.baseline
227
- ```
228
-
229
- This creates a JSON file listing every current violation by file, line, and rule. Commit this file to the repository.
230
-
231
- ### Using a baseline
232
-
233
- ```sh
234
- swiftlint --baseline .swiftlint.baseline
235
- ```
236
-
237
- Violations matching the baseline are suppressed. New violations (new files, new lines, new rules) are reported normally.
238
-
239
- ### Updating a baseline
240
-
241
- After fixing violations, regenerate:
242
-
243
- ```sh
244
- swiftlint --write-baseline .swiftlint.baseline
245
- ```
246
-
247
- The new baseline will be smaller. Commit the update.
248
-
249
- ### Baseline in CI
250
-
251
- ```sh
252
- swiftlint --strict --baseline .swiftlint.baseline --reporter github-actions-logging
253
- ```
254
-
255
- This fails the build only on new violations not present in the baseline.
256
-
257
- ### Baseline vs suppressions
258
-
259
- | Approach | When to use |
260
- | -------- | ----------- |
261
- | Baseline | Adopting SwiftLint in a large existing codebase |
262
- | Inline suppression | Specific intentional deviation from a rule |
263
- | `disabled_rules` | Team disagrees with a rule project-wide |
264
- | `excluded` paths | Generated or vendored code |
265
- | Child config | Different rules for test vs production code |
166
+ - `swiftlint --write-baseline .swiftlint.baseline` writes a JSON file listing
167
+ every current violation with its file, line and rule. Commit it.
168
+ - `swiftlint --baseline .swiftlint.baseline` hides violations that match an
169
+ entry. New files, new lines and newly triggered rules still report.
170
+ - After fixing some violations, run `--write-baseline` again and commit the
171
+ smaller file.
172
+ - CI that only fails on new violations:
173
+ `swiftlint --strict --baseline .swiftlint.baseline --reporter github-actions-logging`
266
174
 
267
- ## False Positives
175
+ ### Choosing a tool
268
176
 
269
- When SwiftLint flags code incorrectly:
177
+ | Situation | Reach for |
178
+ |---|---|
179
+ | Switching lint on in a large existing codebase | baseline |
180
+ | One deliberate exception in one place | inline suppression with a reason |
181
+ | The team disagrees with a rule everywhere | `disabled_rules` |
182
+ | Generated or vendored sources | `excluded` |
183
+ | Tests need different limits than production | child config |
270
184
 
271
- 1. **Check if it's a real false positive** by reading the rule description in the [rule directory](https://realm.github.io/SwiftLint/rule-directory.html).
272
- 2. **Check your config** - threshold tuning may resolve it (e.g., raising `line_length` for a file with long URLs).
273
- 3. **Suppress with a reason** if it's genuinely incorrect.
274
- 4. **File an issue** at [realm/SwiftLint](https://github.com/realm/SwiftLint/issues) if the false positive is reproducible and affects others.
185
+ ## False positives
275
186
 
276
- ## Generated Code and Test Targets
187
+ 1. Read the rule's page in the directory to confirm it really misfired.
188
+ 2. Try tuning instead of silencing, for example a higher `line_length` for
189
+ lines dominated by long URLs.
190
+ 3. If it is still wrong, suppress with a reason.
191
+ 4. Report a minimal reproduction to the realm/SwiftLint issue tracker.
277
192
 
278
- ### Generated code
193
+ ## Generated code and tests
279
194
 
280
- Exclude generated code directories in `.swiftlint.yml`:
195
+ Keep generated sources out of the lint pass entirely:
281
196
 
282
197
  ```yaml
283
198
  excluded:
@@ -286,21 +201,20 @@ excluded:
286
201
  - "**/*.generated.swift"
287
202
  ```
288
203
 
289
- This is preferable to inline `// swiftlint:disable all` markers because it keeps generated files completely out of the lint pass.
204
+ That is cleaner than a `disable all` at the top of each file.
290
205
 
291
- ### Test targets
292
-
293
- Tests legitimately use patterns that production code should avoid (force unwraps, long functions, etc.). Use a child `.swiftlint.yml` in the test directory:
206
+ Tests get a looser child config instead of an exclusion:
294
207
 
295
208
  ```yaml
296
209
  # Tests/.swiftlint.yml
297
210
  disabled_rules:
298
- - force_unwrapping
299
- - force_try
211
+ - file_length
300
212
  - force_cast
213
+ - force_try
214
+ - force_unwrapping
301
215
  - function_body_length
302
216
  - type_body_length
303
- - file_length
304
217
  ```
305
218
 
306
- This is better than excluding tests entirely, because tests still benefit from formatting rules, naming conventions, and other applicable checks.
219
+ Tests still benefit from formatting, naming and the rest of the rules, which a
220
+ full exclusion would throw away.