@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +0 -10
  3. package/docs/facts.json +1 -1
  4. package/manifest.json +285 -285
  5. package/package.json +3 -3
  6. package/pipeline/lib/redact.mjs +3 -2
  7. package/pipeline/scripts/_notices.mjs +1 -1
  8. package/pipeline/scripts/gen-skills-index.mjs +13 -1
  9. package/pipeline/scripts/pre-commit-check.sh +4 -0
  10. package/pipeline/skills/.skill-manifest.json +69 -69
  11. package/pipeline/skills/shared/README.md +70 -70
  12. package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
  13. package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
  14. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
  15. package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
  16. package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
  17. package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
  18. package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
  19. package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
  20. package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
  21. package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
  22. package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
  23. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +345 -277
  24. package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
  25. package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +107 -121
  26. package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +145 -165
  27. package/pipeline/skills/shared/external/app-store-review/SKILL.md +306 -326
  28. package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
  29. package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
  30. package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
  31. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +335 -360
  32. package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
  33. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
  34. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
  35. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
  36. package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
  37. package/pipeline/skills/shared/external/authentication/SKILL.md +277 -381
  38. package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
  39. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +135 -178
  40. package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
  41. package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
  42. package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
  43. package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
  44. package/pipeline/skills/shared/external/background-processing/SKILL.md +274 -384
  45. package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
  46. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +173 -321
  47. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
  48. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
  49. package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
  50. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
  51. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
  52. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
  53. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
  54. package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
  55. package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
  56. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +228 -376
  57. package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
  58. package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
  59. package/pipeline/skills/shared/external/core-data/SKILL.md +302 -368
  60. package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
  61. package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
  62. package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
  63. package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
  64. package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
  65. package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
  66. package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
  67. package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
  68. package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
  69. package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
  70. package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
  71. package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
  72. package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
  73. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
  74. package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
  75. package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
  76. package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
  77. package/pipeline/skills/shared/external/device-integrity/SKILL.md +236 -353
  78. package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
  79. package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
  80. package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
  81. package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
  82. package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
  83. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
  84. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
  85. package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
  86. package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
  87. package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
  88. package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
  89. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
  90. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
  91. package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
  92. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
  93. package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
  94. package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
  95. package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
  96. package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
  97. package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
  98. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
  99. package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
  100. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
  101. package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
  102. package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
  103. package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
  104. package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
  105. package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
  106. package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
  107. package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
  108. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
  109. package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
  110. package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
  111. package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
  112. package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
  113. package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
  114. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +3 -3
  115. package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +1 -1
  116. package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +8 -7
  117. package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +2 -2
  118. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +5 -2
  119. package/pipeline/skills/shared/external/localization-reuse-map/scripts/_shared.py +100 -0
  120. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +45 -26
  121. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +14 -16
  122. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +12 -5
  123. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +2 -1
  124. package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +6 -5
  125. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +44 -18
  126. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +5 -2
  127. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +10 -11
  128. package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +4 -33
  129. package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +12 -59
  130. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +297 -267
  131. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
  132. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
  133. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
  134. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
  135. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
  136. package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
  137. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
  138. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
  139. package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
  140. package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
  141. package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
  142. package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
  143. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
  144. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
  145. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
  146. package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
  147. package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
  148. package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
  149. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
  150. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
  151. package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
  152. package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
  153. package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
  154. package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
  155. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
  156. package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
  157. package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
  158. package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
  159. package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
  160. package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
  161. package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
  162. package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
  163. package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
  164. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
  165. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
  166. package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
  167. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
  168. package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
  169. package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
  170. package/pipeline/skills/shared/external/skill-creator/template.md +7 -1
  171. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
  172. package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
  173. package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
  174. package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
  175. package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
  176. package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
  177. package/pipeline/skills/shared/external/storekit/references/core-patterns.md +302 -241
  178. package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
  179. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
  180. package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
  181. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
  182. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
  183. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
  184. package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
  185. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
  186. package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
  187. package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
  188. package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
  189. package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
  190. package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
  191. package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
  192. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +304 -351
  193. package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
  194. package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
  195. package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
  196. package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
  197. package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
  198. package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
  199. package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
  200. package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
  201. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
  202. package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
  203. package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
  204. package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
  205. package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
  206. package/pipeline/skills/shared/external/swift-security/SKILL.md +183 -162
  207. package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
  208. package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
  209. package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +411 -476
  210. package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
  211. package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
  212. package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
  213. package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
  214. package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
  215. package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
  216. package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +375 -491
  217. package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
  218. package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
  219. package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
  220. package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +397 -457
  221. package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
  222. package/pipeline/skills/shared/external/swift-testing/SKILL.md +191 -175
  223. package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
  224. package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +81 -84
  225. package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
  226. package/pipeline/skills/shared/external/swiftdata/SKILL.md +394 -256
  227. package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
  228. package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
  229. package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
  230. package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
  231. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
  232. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
  233. package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
  234. package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
  235. package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
  236. package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
  237. package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
  238. package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
  239. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
  240. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
  241. package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
  242. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
  243. package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
  244. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
  245. package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
  246. package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
  247. package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
  248. package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
  249. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
  250. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
  251. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +201 -168
  252. package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
  253. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +134 -133
  254. package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
  255. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +111 -138
  256. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
  257. package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
  258. package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
  259. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
  260. package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
  261. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
  262. package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
  263. package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
  264. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
  265. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
  266. package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
  267. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
  268. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
  269. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
  270. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
  271. package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
  272. package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
  273. package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
  274. package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
  275. package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
  276. package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
  277. package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
  278. package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
  279. package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
  280. package/pipeline/skills/shared/external/weatherkit/SKILL.md +160 -315
  281. package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
  282. package/pipeline/skills/shared/external/widgetkit/SKILL.md +224 -288
  283. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +416 -719
  284. package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
@@ -1,191 +1,171 @@
1
1
  # Product Page Variants
2
2
 
3
- Custom Product Pages, product page optimization (A/B testing), and in-app event configuration for App Store discoverability and conversion.
4
-
5
- ## Contents
6
-
7
- - [Custom Product Pages](#custom-product-pages)
8
- - [Product Page Optimization Tests](#product-page-optimization-tests)
9
- - [In-App Event Configuration](#in-app-event-configuration)
10
- - [Screenshot Caption Copywriting](#screenshot-caption-copywriting)
3
+ Limits below are App Store Connect values as Apple's documentation stated them
4
+ at the time of writing; confirm them in App Store Connect Help before quoting.
11
5
 
12
6
  ## Custom Product Pages
13
7
 
14
- ### Setup in App Store Connect
15
-
16
- 1. Navigate to **App Store Connect > App > Custom Product Pages**.
17
- 2. Create a new Custom Product Page -- each page needs a reference name (internal only) and a locale.
18
- 3. Customize screenshots, app preview videos, promotional text, and assigned keywords for the target audience.
19
- 4. Submit the page for review -- Custom Product Pages go through App Review like regular submissions.
20
- 5. Once approved, the page is visible through its unique URL and, if configured, through assigned App Store search keywords.
8
+ ### Setting one up
21
9
 
22
- ### URL structure
10
+ 1. In App Store Connect, open the app and choose Custom Product Pages.
11
+ 2. Give the page a reference name (only your team sees it) and pick a locale.
12
+ 3. Decide what differs from the default page: screenshots, preview videos,
13
+ promotional text, search keywords.
14
+ 4. Submit it. App Review checks custom pages the same way it checks versions.
15
+ 5. After approval the page is reachable through its own URL and, when keywords
16
+ are assigned, through search.
23
17
 
24
- Custom Product Pages use the format:
18
+ ### URL
25
19
 
26
20
  ```
27
21
  https://apps.apple.com/app/id{APP_ID}?ppid={CUSTOM_PAGE_ID}
28
22
  ```
29
23
 
30
- The `ppid` parameter directs users to the custom page instead of the default product page. Use these URLs in:
31
-
32
- - Apple Search Ads ad group URLs
33
- - Social media campaign links
34
- - Email marketing campaigns
35
- - Web landing pages
36
- - QR codes in physical marketing
37
-
38
- ### Search visibility and deep links
39
-
40
- - You can create up to 70 Custom Product Pages per app.
41
- - Assign keywords from the latest approved app version to make an approved, visible custom page appear for matching App Store searches instead of the default page.
42
- - Use unique keyword sets per custom page so App Store search can choose the most relevant page.
43
- - Optional app deep links can send users on iOS 18 or iPadOS 18 or later to specific in-app content after they tap Open. Deep links must be approved with the custom page before they work for users.
44
-
45
- ### Campaign-to-page mapping
46
-
47
- Plan Custom Product Pages around distinct acquisition channels:
48
-
49
- | Channel | Page name convention | Screenshot strategy |
50
- |---------|---------------------|---------------------|
51
- | Search Ads -- brand terms | `Search-Brand` | Highlight brand trust and breadth |
52
- | Search Ads -- feature terms | `Search-{Feature}` | Lead with the specific feature the user searched for |
53
- | Search Ads -- competitor terms | `Search-Competitor` | Emphasize differentiators vs. category norms |
54
- | Social -- Instagram/TikTok | `Social-Visual` | Visual-first screenshots matching social creative style |
55
- | Social -- Twitter/X | `Social-Utility` | Feature-focused, less visual polish |
56
- | Email -- existing users | `Email-Upgrade` | New feature highlights for re-engagement |
57
- | Web -- blog/PR | `Web-Editorial` | Award badges, press quotes, credibility signals |
58
-
59
- ### Management
24
+ The `ppid` parameter picks the custom page. Put the URL in Apple Ads ad groups,
25
+ social posts, email campaigns, landing pages and printed QR codes.
60
26
 
61
- - Audit Custom Product Pages quarterly. Remove pages for ended campaigns.
62
- - Track performance per page in App Analytics -- compare conversion rates against the default page.
63
- - App Analytics reports custom page metrics after the page receives at least five first-time downloads.
64
- - Custom Product Pages count toward the 70-page limit per app. Reserve capacity for seasonal or ad-hoc campaigns.
27
+ ### Limits and search
65
28
 
66
- ## Product Page Optimization Tests
29
+ - Up to 70 custom pages per app.
30
+ - Assigned keywords must come from the keyword set of the most recently
31
+ approved app version. A matching
32
+ search can then show the approved, visible custom page in place of the
33
+ default one.
34
+ - Give each page its own keyword set so search can choose the best match.
35
+ - A page can carry a deep link that sends people running iOS 18,
36
+ iPadOS 18 or newer straight to a given screen in the app when they tap Open. The deep link is
37
+ approved together with the page.
67
38
 
68
- ### Test design patterns
39
+ ### One page per channel
69
40
 
70
- Each test compares the original product page against up to three treatments. For clearer results, design each test around one hypothesis even when you create multiple treatments.
41
+ | Channel | Page name | Emphasis |
42
+ |---|---|---|
43
+ | Apple Ads, brand terms | `Search-Brand` | Trust in the brand, breadth of features |
44
+ | Apple Ads, feature terms | `Search-{Feature}` | The searched feature first |
45
+ | Apple Ads, competitor-category terms | `Search-Alternative` | What sets the app apart from category norms |
46
+ | Short-video and photo social platforms | `Social-Visual` | Strong visuals first |
47
+ | Text-first social platforms | `Social-Utility` | Features and utility, less polish |
48
+ | Email to current users | `Email-Upgrade` | What is new, reasons to come back |
49
+ | Blog posts and press | `Web-Editorial` | Awards, press quotes, credibility |
71
50
 
72
- #### Icon test
51
+ ### Upkeep
73
52
 
74
- - **Hypothesis:** A revised icon with [specific change] will increase tap-through rate by improving shelf appeal.
75
- - **Treatment:** Alternate app icon that [describes the specific difference].
76
- - **Duration:** 7-14 days minimum.
77
- - **Success metric:** Conversion rate (impressions to first-time downloads).
53
+ - Review custom pages every quarter and remove those for finished campaigns.
54
+ - In App Analytics, compare each page's conversion with the default page;
55
+ figures show up after five or more first-time downloads are credited to it.
56
+ - Leave room below the 70-page limit for seasonal and one-off campaigns.
78
57
 
79
- #### Screenshot order test
58
+ ## Product Page Optimization tests
80
59
 
81
- - **Hypothesis:** Leading with [screen X] instead of [screen Y] will increase conversion by showing the primary value proposition sooner.
82
- - **Treatment:** Reorder the first 3 screenshots.
83
- - **Duration:** 7-14 days minimum.
84
- - **Success metric:** Conversion rate.
60
+ A test compares the original page with up to three treatments. Keep to one
61
+ hypothesis per test so the result is readable.
85
62
 
86
- #### Screenshot content test
63
+ ### Test patterns
87
64
 
88
- - **Hypothesis:** Benefit-oriented captions will outperform feature-descriptive captions.
89
- - **Treatment:** Replace captions on the first 3 screenshots with benefit-focused copy.
90
- - **Duration:** 7-14 days minimum.
91
- - **Success metric:** Conversion rate.
65
+ | Test | Hypothesis | Treatment | Run for | Metric |
66
+ |---|---|---|---|---|
67
+ | Icon | A different icon stands out more in search and on shelves | An alternate app icon | At least 7 to 14 days | Conversion from impression to first-time download |
68
+ | Screenshot order | Leading with a different feature converts better | The first three screenshots reordered | At least 7 to 14 days | Conversion rate |
69
+ | Screenshot copy | Benefit captions beat feature captions | New captions on the first three screenshots | At least 7 to 14 days | Conversion rate |
92
70
 
93
71
  ### Running a test
94
72
 
95
- 1. In App Store Connect, go to **Product Page Optimization**.
96
- 2. Choose up to three treatments and the element to test (icon, screenshots, or preview video).
73
+ 1. Open Product Page Optimization in App Store Connect.
74
+ 2. Create up to three treatments and pick what they change: icon, screenshots
75
+ or preview video.
97
76
  3. Upload the treatment assets.
98
- 4. Set the traffic proportion. App Store Connect splits that treatment traffic evenly across treatments.
99
- 5. Select the localizations to include; all supported localizations are selected by default.
100
- 6. Start the test and monitor App Analytics. A test runs for up to 90 days or until manually stopped.
101
-
102
- ### Interpreting results
103
-
104
- - App Store Connect reports conversion rate for control vs. treatment with a confidence interval.
105
- - Results appear after at least five first-time downloads are associated with the test.
106
- - Do not apply a treatment until the result shows 90%+ confidence.
107
- - A 2-5% conversion lift is meaningful at scale -- do not dismiss small wins.
108
- - If App Store Connect marks a test as likely inconclusive, the current traffic and lift may not be enough to reach confidence within the 90-day window. Consider a stronger creative change or a higher-traffic period.
109
- - After applying a winner, wait at least one release cycle before starting the next test to establish a clean baseline.
110
-
111
- ### Limitations
112
-
113
- - Only one test at a time per app.
114
- - Product Page Optimization tests are unavailable for Custom Product Pages, Apple Watch product pages, and iMessage product pages.
115
- - Low-traffic apps may need longer to reach 90% confidence, and some tests may remain inconclusive.
116
- - App icons used in treatments must be included in the app binary for the current App Store version. Applying a treatment applies screenshots and previews; make an icon the default in a future app version if that icon should persist broadly.
117
-
118
- ## In-App Event Configuration
119
-
120
- ### Event metadata template
121
-
122
- | Field | Limit | Guidelines |
123
- |-------|-------|-----------|
124
- | **Event name** | 30 chars | Keyword-rich, action-oriented. "Spring Fitness Challenge" not "Our Spring Event" |
125
- | **Short description** | 50 chars | One compelling sentence visible on the event card |
126
- | **Long description** | 120 chars | Expand on what the user will experience or win |
127
- | **Event card image** | 1920x1080 (16:9) | High-contrast, legible at small sizes, no text smaller than 24pt |
128
- | **Badge** | Preset options | Match badge type to event nature (see SKILL.md table) |
129
- | **Deep link** | URL | Optional. Links to the in-app event content |
130
-
131
- ### Scheduling strategy
132
-
133
- Plan events to maintain continuous App Store visibility:
134
-
135
- ```
136
- Week 1-2: [Event A -- "Spring Challenge" (Challenge badge)]
137
- Week 3-4: [Event B -- "New Workout Library" (Major Update badge)]
138
- Week 5-6: [Event C -- "Summer Kickoff" (Special Event badge)]
139
- ```
140
-
141
- Overlap the end of one event with the start of the next by 1-2 days. This prevents gaps where the app has no event card in search results.
142
-
143
- ### Event timing rules
144
-
145
- - Events can be published up to 14 days before they start.
146
- - Events must run at least 15 minutes and can run for up to 31 days.
147
- - You can publish up to 10 In-App Events on the App Store at a time and keep up to 15 approved events per app in App Store Connect.
148
- - Events are visible in search results and on the product page during their active window.
149
- - Ended events are removed from the store automatically.
150
- - Schedule events around real moments (feature releases, content drops, seasonal relevance) -- manufactured events without real in-app content feel hollow and may be rejected by App Review.
151
-
152
- ### Maximizing search impact
153
-
154
- - Use the event name and short description as visible search-result copy. Include terms that match the event's real content and user intent.
155
- - Choose a badge type that matches the actual event nature -- the badge appears prominently on the event card.
156
- - In-app events can appear on the Today tab, in search results, and on the app's product page. Apple's editorial team curates which events are featured.
157
-
158
- ## Screenshot Caption Copywriting
159
-
160
- ### Benefit-oriented vs. feature-descriptive
161
-
162
- | Feature-descriptive (weak) | Benefit-oriented (strong) |
163
- |---------------------------|--------------------------|
164
- | Calendar View | Never miss a deadline |
165
- | Dark Mode | Easy on your eyes, day or night |
166
- | Cloud Sync | Your data, everywhere |
167
- | Analytics Dashboard | See what is working |
168
- | Collaboration Tools | Build together in real time |
169
- | Offline Mode | Works without internet |
170
- | Custom Themes | Make it yours |
171
- | Push Notifications | Stay in the loop |
172
-
173
- ### Caption structure
174
-
175
- The strongest captions follow one of three patterns:
176
-
177
- 1. **Outcome-first:** State the result the user gets. "Track every mile" > "GPS Running Tracker".
178
- 2. **Problem-solver:** Name the pain point and imply the solution. "No more forgotten passwords" > "Password Manager".
179
- 3. **Social proof:** Imply scale or trust. "Join 10M users" > "Popular App".
180
-
181
- ### Per-audience caption variants
182
-
183
- Different Custom Product Pages should use different captions for the same screenshots:
184
-
185
- | Screenshot | Search Ads -- fitness terms | Social -- visual audience | Email -- lapsed users |
186
- |-----------|---------------------------|--------------------------|----------------------|
187
- | Workout screen | "Hit your goals every week" | "Your workout, beautifully tracked" | "We added 50 new workouts" |
188
- | Progress chart | "See your streak grow" | "Watch your progress unfold" | "Your history is still here" |
189
- | Social feature | "Challenge your friends" | "Share your wins" | "Your friends are still active" |
190
-
191
- Tailor the emotional angle to the acquisition channel while keeping the screenshot content consistent.
77
+ 4. Set the share of traffic in the test; it is split evenly among treatments.
78
+ 5. Pick the localizations; all are included by default.
79
+ 6. Start the test and follow it in App Analytics.
80
+
81
+ ### Reading results
82
+
83
+ - A test runs for at most 90 days or until you stop it.
84
+ - App Store Connect reports conversion for the original and each treatment with
85
+ a confidence interval, after the test has been credited with five or more
86
+ first-time downloads.
87
+ - Do not apply a treatment that has not reached 90% confidence.
88
+ - At scale, a lift of 2 to 5% in conversion is worth having.
89
+ - If App Store Connect marks the test as likely inconclusive, the traffic or
90
+ the difference is too small to reach confidence within 90 days. Try a bolder
91
+ change or a period with more traffic.
92
+ - After applying a winner, let at least one release cycle pass before testing
93
+ again.
94
+
95
+ ### Constraints
96
+
97
+ - An app can run only one test at any moment.
98
+ - Custom pages, Apple Watch product pages and iMessage product pages cannot be
99
+ tested.
100
+ - Apps with little traffic may take a long time to reach 90% confidence or
101
+ never get there.
102
+ - A treatment icon must already be in the binary of the version live on the
103
+ store.
104
+ - Applying a treatment applies its screenshots and previews. An icon that wins
105
+ only becomes the default for everyone when a later app version makes it the
106
+ primary icon.
107
+
108
+ ## In-App Event configuration
109
+
110
+ | Field | Limit | Advice |
111
+ |---|---|---|
112
+ | Event name | 30 characters | Specific and active: "Autumn Trail Challenge" beats "Our Autumn Event" |
113
+ | Short description | 50 characters | One sentence that sells the event on its card |
114
+ | Long description | 120 characters | What happens and what participants get |
115
+ | Event card media | 16:9, 1920 x 1080 | High contrast, readable at small size; avoid text smaller than about 24 pt |
116
+ | Event details page media | 9:16, 1080 x 1920 | Shown when someone opens the event |
117
+ | Badge | Preset list | The type that matches the event (see the badge list in SKILL.md) |
118
+ | Deep link | Optional URL | Opens the event content inside the app |
119
+
120
+ ### Scheduling
121
+
122
+ Run events back to back so there is always one live:
123
+
124
+ | Weeks | Event | Badge |
125
+ |---|---|---|
126
+ | 1 and 2 | Step count challenge | Challenge |
127
+ | 3 and 4 | New route planner release | Major Update |
128
+ | 5 and 6 | Seasonal trail collection | Special Event |
129
+
130
+ - Let consecutive events overlap by a day or two so there is no gap without a
131
+ card.
132
+ - Publishing can happen as early as 14 days ahead of the start time.
133
+ - An event lasts at least 15 minutes and at most 31 days.
134
+ - Up to 10 events can be published on the store at once, and up to 15 approved
135
+ events can be kept in App Store Connect.
136
+ - Events show in search and on the product page while active and disappear
137
+ automatically when they end.
138
+ - App Review may reject events that have no real content behind them.
139
+
140
+ ### Being found
141
+
142
+ - The name and short description are the visible search copy; use words that
143
+ match the real content and what people look for.
144
+ - The badge sits prominently on the card, so it must describe the event
145
+ honestly.
146
+ - Beyond search and the product page, events may be picked by Apple's editors
147
+ for the Today tab.
148
+
149
+ ## Writing screenshot captions
150
+
151
+ | Feature label | Benefit caption |
152
+ |---|---|
153
+ | Calendar View | Every deadline, on time |
154
+ | Dark Mode | Comfortable to read at any hour |
155
+ | Cloud Sync | Your files on every device |
156
+ | Analytics Dashboard | Know what is working |
157
+ | Collaboration Tools | Edit together in real time |
158
+ | Offline Mode | Keeps working with no signal |
159
+ | Custom Themes | Make it look like yours |
160
+ | Push Notifications | Hear about it first |
161
+
162
+ Three patterns that work:
163
+
164
+ 1. **Say the result.** "Finish every run stronger" beats "GPS Run Tracker".
165
+ 2. **Name the pain.** "No more lost receipts" beats "Receipt Scanner".
166
+ 3. **Show the crowd.** "Trusted by 5M cooks" beats "Popular Recipes".
167
+
168
+ The same screenshots can carry different captions on different custom pages:
169
+ goal-driven lines for a fitness search page, mood and look for a visual social
170
+ page, and "what is new since you left" for an email to lapsed users. Change the
171
+ emotional angle for the channel and keep the screen content the same.