@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.
- package/CHANGELOG.md +9 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +266 -267
- package/package.json +2 -2
- package/pipeline/scripts/_notices.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +68 -68
- package/pipeline/skills/shared/README.md +70 -70
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
|
@@ -3,41 +3,41 @@
|
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
5
|
"id": 1,
|
|
6
|
-
"prompt": "
|
|
7
|
-
"expected_output": "A
|
|
6
|
+
"prompt": "Our language-learning app is universal (iPhone and iPad), sells monthly and yearly subscriptions, bundles an analytics SDK and serves personalized ads. The privacy manifest only lists CA92.1. We plan to upload in May 2026. What will block us?",
|
|
7
|
+
"expected_output": "A blocker-first readiness audit that separates upload and review blockers from cleanup and covers toolchain, ATT, SDK manifests, IAP terms and screenshot sets.",
|
|
8
8
|
"files": [],
|
|
9
9
|
"expectations": [
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
10
|
+
"States that uploads after April 28, 2026 must be built with Xcode 26 or later against a 26 SDK",
|
|
11
|
+
"Requires an ATT request with NSUserTrackingUsageDescription before any personalized-ad tracking, with no tracking before authorization",
|
|
12
|
+
"Says the analytics and ad SDKs need their own privacy manifests and that one CA92.1 entry does not cover them",
|
|
13
|
+
"Requires IAP for the subscriptions with price, duration, renewal and trial terms shown before purchase, a working restore, and no external purchase route",
|
|
14
|
+
"Requires a 6.9-inch iPhone screenshot set and a 13-inch iPad set"
|
|
15
15
|
]
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"id": 2,
|
|
19
|
-
"prompt": "
|
|
20
|
-
"expected_output": "A
|
|
19
|
+
"prompt": "Which required-reason codes do we declare? We store user settings in UserDefaults, check free disk space before downloading lessons, show modification dates for files picked with the document picker, and a vendor SDK wraps UserDefaults for us.",
|
|
20
|
+
"expected_output": "A code-per-use mapping with the SDK declaration placed in the SDK's own manifest and a warning to re-check Apple's list.",
|
|
21
21
|
"files": [],
|
|
22
22
|
"expectations": [
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"Warns
|
|
23
|
+
"Maps app-only settings in UserDefaults to CA92.1",
|
|
24
|
+
"Maps the free-space check before writing downloads to E174.1",
|
|
25
|
+
"Maps timestamps of user-picked files to 3B52.1",
|
|
26
|
+
"Assigns C56D.1 to the SDK wrapper and places it in the SDK's own manifest, not the app's",
|
|
27
|
+
"Warns against invented or convenience reasons and says to re-check the current reason list before release"
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"id": 3,
|
|
32
|
-
"prompt": "
|
|
33
|
-
"expected_output": "
|
|
32
|
+
"prompt": "Can you review our App Store name, subtitle, keywords and screenshot captions and tell us how to rank higher?",
|
|
33
|
+
"expected_output": "Compliance guardrails only, with ranking and conversion work routed to app-store-optimization.",
|
|
34
34
|
"files": [],
|
|
35
35
|
"expectations": [
|
|
36
|
-
"
|
|
37
|
-
"Gives
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"Does not
|
|
36
|
+
"Routes keyword research, ranking and conversion optimization to an ASO pass rather than doing it",
|
|
37
|
+
"Gives guardrails: an accurate name, screenshots of the real UI, no features that do not exist, no prices, no competitor or unrelated keywords",
|
|
38
|
+
"States the 30, 30 and 100 character limits and the comma-separated, no-space keyword rule",
|
|
39
|
+
"Names the 6.9-inch iPhone and 13-inch iPad screenshot sets",
|
|
40
|
+
"Does not produce a full keyword plan or rewrite the marketing copy"
|
|
41
41
|
]
|
|
42
42
|
}
|
|
43
43
|
]
|
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
# Privacy Manifest
|
|
1
|
+
# Privacy Manifest (PrivacyInfo.xcprivacy)
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
- When a Privacy Manifest Is Required
|
|
5
|
-
- Privacy Manifest Structure
|
|
6
|
-
- Required API Reason Codes
|
|
7
|
-
- Privacy Manifest Keys Reference
|
|
8
|
-
- Third-Party SDK Manifests
|
|
9
|
-
- Collected Data Types Declaration
|
|
10
|
-
- Sources To Re-Check
|
|
3
|
+
## When Required
|
|
11
4
|
|
|
12
|
-
|
|
5
|
+
A bundle needs a privacy manifest when its code calls an API in one of the
|
|
6
|
+
required-reason categories, or when it collects data or tracks. The category
|
|
7
|
+
identifiers are:
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
| Category | Identifier |
|
|
10
|
+
|---|---|
|
|
11
|
+
| File timestamps | `NSPrivacyAccessedAPICategoryFileTimestamp` |
|
|
12
|
+
| System boot time | `NSPrivacyAccessedAPICategorySystemBootTime` |
|
|
13
|
+
| Disk space | `NSPrivacyAccessedAPICategoryDiskSpace` |
|
|
14
|
+
| User defaults | `NSPrivacyAccessedAPICategoryUserDefaults` |
|
|
15
|
+
| Active keyboards | `NSPrivacyAccessedAPICategoryActiveKeyboards` |
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- User defaults (`NSPrivacyAccessedAPICategoryUserDefaults`)
|
|
20
|
-
- Active keyboard APIs (`NSPrivacyAccessedAPICategoryActiveKeyboards`)
|
|
17
|
+
Apple adds and adjusts categories and reasons. Before each release, read the
|
|
18
|
+
current reference pages for `NSPrivacyAccessedAPIType` and
|
|
19
|
+
`NSPrivacyAccessedAPITypeReasons` rather than trusting a copied table.
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
## Structure
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
The file is an ordinary XML property list (Xcode adds the usual XML prolog and
|
|
24
|
+
Apple plist DOCTYPE when it creates one; they are omitted below) with a
|
|
25
|
+
dictionary at the root. This one belongs to
|
|
26
|
+
an app that tracks nothing, collects nothing, and reads its own preferences
|
|
27
|
+
from `UserDefaults`:
|
|
25
28
|
|
|
26
29
|
```xml
|
|
27
|
-
<!-- PrivacyInfo.xcprivacy -->
|
|
28
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
29
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
|
30
|
-
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
31
30
|
<plist version="1.0">
|
|
32
31
|
<dict>
|
|
33
32
|
<key>NSPrivacyTracking</key>
|
|
@@ -35,9 +34,7 @@ Apple updates required-reason API coverage over time. Before final submission or
|
|
|
35
34
|
<key>NSPrivacyTrackingDomains</key>
|
|
36
35
|
<array/>
|
|
37
36
|
<key>NSPrivacyCollectedDataTypes</key>
|
|
38
|
-
<array
|
|
39
|
-
<!-- Declare every data type you collect -->
|
|
40
|
-
</array>
|
|
37
|
+
<array/>
|
|
41
38
|
<key>NSPrivacyAccessedAPITypes</key>
|
|
42
39
|
<array>
|
|
43
40
|
<dict>
|
|
@@ -53,61 +50,102 @@ Apple updates required-reason API coverage over time. Before final submission or
|
|
|
53
50
|
</plist>
|
|
54
51
|
```
|
|
55
52
|
|
|
53
|
+
Each entry in `NSPrivacyAccessedAPITypes` pairs one category string with an
|
|
54
|
+
array of reason codes.
|
|
55
|
+
|
|
56
56
|
## Required API Reason Codes
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
Choose the code whose wording matches what the feature does, including what
|
|
59
|
+
happens to any value derived from the API. If none fits, the use is probably not
|
|
60
|
+
allowed; do not stretch a code to cover it.
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
File timestamps:
|
|
61
63
|
|
|
62
|
-
|
|
|
63
|
-
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
|
72
|
-
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
|
64
|
+
| Code | Allowed use |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `DDA9.1` | Displaying a file's dates to the user of the device |
|
|
67
|
+
| `C617.1` | Reading timestamps, size or other metadata of files inside the app container, an app group container or the app's CloudKit container |
|
|
68
|
+
| `3B52.1` | Reading timestamps, size or metadata of files or folders the user explicitly granted access to, for example through a document picker |
|
|
69
|
+
| `0A2A.1` | An SDK offering the app a thin wrapper over these APIs, invoked only by the app |
|
|
70
|
+
|
|
71
|
+
System boot time:
|
|
72
|
+
|
|
73
|
+
| Code | Allowed use |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `35F9.1` | Measuring time elapsed between events in the app |
|
|
76
|
+
| `8FFB.1` | Computing absolute timestamps for events that happen in the app |
|
|
77
|
+
| `3D61.1` | Including boot time in a bug report the user chooses to submit |
|
|
78
|
+
|
|
79
|
+
Disk space:
|
|
80
|
+
|
|
81
|
+
| Code | Allowed use |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `85F4.1` | Showing disk space figures to the user |
|
|
84
|
+
| `E174.1` | Checking free or low space before writing files, or to decide when to clean up |
|
|
85
|
+
| `7D9E.1` | Including disk information in a bug report the user chooses to submit |
|
|
86
|
+
| `B728.1` | A health research app detecting low space that would stop research data collection |
|
|
87
|
+
|
|
88
|
+
Active keyboards:
|
|
89
|
+
|
|
90
|
+
| Code | Allowed use |
|
|
91
|
+
|---|---|
|
|
92
|
+
| `3EC4.1` | A custom keyboard app checking which keyboards are active |
|
|
93
|
+
| `54BD.1` | Changing the visible UI depending on the active keyboards |
|
|
94
|
+
|
|
95
|
+
User defaults:
|
|
96
|
+
|
|
97
|
+
| Code | Allowed use |
|
|
98
|
+
|---|---|
|
|
99
|
+
| `CA92.1` | Reading and writing data that only the app itself can access |
|
|
100
|
+
| `1C8F.1` | Reading and writing data shared only inside the same App Group |
|
|
101
|
+
| `C56D.1` | An SDK offering the app a thin wrapper over `UserDefaults`, invoked only by the app |
|
|
102
|
+
| `AC6B.1` | Reading managed app configuration or writing managed feedback keys for MDM |
|
|
103
|
+
|
|
104
|
+
Worked mapping:
|
|
105
|
+
|
|
106
|
+
- A settings screen persisted in the app's own defaults: `CA92.1`.
|
|
107
|
+
- A download manager that checks free space before fetching: `E174.1`.
|
|
108
|
+
- Showing the modified date of a file the user opened from Files: `3B52.1`.
|
|
109
|
+
- A vendor library whose preferences helper the app calls: `C56D.1`, declared in
|
|
110
|
+
the library's manifest, not the app's.
|
|
111
|
+
|
|
112
|
+
## Keys Reference
|
|
113
|
+
|
|
114
|
+
| Key | Type | Meaning |
|
|
85
115
|
|---|---|---|
|
|
86
|
-
| `NSPrivacyTracking` | Boolean |
|
|
87
|
-
| `NSPrivacyTrackingDomains` | Array of strings |
|
|
88
|
-
| `NSPrivacyCollectedDataTypes` | Array of
|
|
89
|
-
| `NSPrivacyAccessedAPITypes` | Array of
|
|
116
|
+
| `NSPrivacyTracking` | Boolean | The bundle tracks users as ATT defines it; `true` means the ATT prompt is required |
|
|
117
|
+
| `NSPrivacyTrackingDomains` | Array of strings | Hosts the bundle contacts to track. When the user has not allowed tracking, the system blocks connections to them |
|
|
118
|
+
| `NSPrivacyCollectedDataTypes` | Array of dictionaries | One entry per collected data type: purposes, identity linkage, tracking use |
|
|
119
|
+
| `NSPrivacyAccessedAPITypes` | Array of dictionaries | Every required-reason API category the bundle calls, with its codes |
|
|
90
120
|
|
|
91
121
|
## Third-Party SDK Manifests
|
|
92
122
|
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
123
|
+
- A vendor framework, helper executable or dylib calling required-reason APIs
|
|
124
|
+
carries its own `PrivacyInfo.xcprivacy` inside its own bundle, with codes that
|
|
125
|
+
match what that SDK does.
|
|
126
|
+
- If an SDK version lacks a manifest, or its reasons are missing, move to a
|
|
127
|
+
version that has them. Do not paste the SDK's declarations into the app's
|
|
128
|
+
manifest; the app manifest covers app code and app-level data and tracking.
|
|
97
129
|
|
|
98
130
|
## Collected Data Types Declaration
|
|
99
131
|
|
|
100
|
-
Each `NSPrivacyCollectedDataTypes`
|
|
132
|
+
Each item in `NSPrivacyCollectedDataTypes` is a dictionary with four keys:
|
|
101
133
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
134
|
+
| Key | Content |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `NSPrivacyCollectedDataType` | The data type identifier, for example email address or crash data |
|
|
137
|
+
| `NSPrivacyCollectedDataTypeLinked` | Whether the data is tied to the user's identity |
|
|
138
|
+
| `NSPrivacyCollectedDataTypeTracking` | Whether it is used for tracking |
|
|
139
|
+
| `NSPrivacyCollectedDataTypePurposes` | The purposes, for example app functionality or analytics |
|
|
106
140
|
|
|
107
|
-
|
|
141
|
+
If these entries disagree with the nutrition label, with what an SDK sends, or
|
|
142
|
+
with the features in the app, expect a rejection.
|
|
108
143
|
|
|
109
144
|
## Sources To Re-Check
|
|
110
145
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
146
|
+
Start from the bundle resources documentation on developer.apple.com and open
|
|
147
|
+
these pages:
|
|
148
|
+
|
|
149
|
+
- the article that explains how to declare required-reason API use
|
|
150
|
+
- the `NSPrivacyAccessedAPIType` key page
|
|
151
|
+
- the `NSPrivacyAccessedAPITypeReasons` key page, which carries the live code list
|
|
@@ -1,120 +1,133 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Review Checklists
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- Privacy Manifest Checklist
|
|
6
|
-
- In-App Purchase Checklist
|
|
7
|
-
- Screenshot and App Preview Checklist
|
|
8
|
-
- HIG Compliance Checklist
|
|
9
|
-
- Pre-Submission Checklist
|
|
3
|
+
Working lists for a submission audit. Tick each line against the build that
|
|
4
|
+
will actually be uploaded, not against a debug build.
|
|
10
5
|
|
|
11
6
|
## App Review Information Checklist
|
|
12
7
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- [ ]
|
|
16
|
-
|
|
17
|
-
- [ ]
|
|
18
|
-
- [ ]
|
|
19
|
-
|
|
20
|
-
- [ ] No broken links
|
|
21
|
-
- [ ]
|
|
8
|
+
- [ ] Login required: a working username and password sit in the notes field of
|
|
9
|
+
App Review Information.
|
|
10
|
+
- [ ] Credentials impractical, or the needed account state is hard to recreate:
|
|
11
|
+
the app has a demo mode and the notes say how to enter it.
|
|
12
|
+
- [ ] The demo account signs in and reaches every feature, not a trimmed tier.
|
|
13
|
+
- [ ] Notes explain anything gated by login, role, region or hardware, and any
|
|
14
|
+
feature a reviewer would not stumble on alone.
|
|
15
|
+
- [ ] Every screen has real content. No broken links, no dead ends.
|
|
16
|
+
- [ ] Features that need particular hardware have a fallback or step-by-step
|
|
17
|
+
instructions for the reviewer.
|
|
22
18
|
|
|
23
19
|
## Privacy Manifest Checklist
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- [ ]
|
|
28
|
-
|
|
29
|
-
- [ ] `NSPrivacyTracking` is true only if
|
|
30
|
-
- [ ]
|
|
31
|
-
|
|
32
|
-
- [ ]
|
|
21
|
+
- [ ] A `PrivacyInfo.xcprivacy` exists in every bundle that needs one: app,
|
|
22
|
+
SDKs, executables, dynamic libraries.
|
|
23
|
+
- [ ] Every required-reason category used by app code or bundled SDK code is
|
|
24
|
+
declared with an approved code that matches the use.
|
|
25
|
+
- [ ] `NSPrivacyTracking` is `true` only if the app really tracks.
|
|
26
|
+
- [ ] Each third-party SDK that collects data, calls required-reason APIs, turns
|
|
27
|
+
on collection or contacts tracking domains ships its own current manifest.
|
|
28
|
+
- [ ] Runtime traffic and SDK transmissions were captured and compared with the
|
|
29
|
+
nutrition label, the manifests, the privacy policy and the ATT state.
|
|
33
30
|
|
|
34
31
|
## In-App Purchase Checklist
|
|
35
32
|
|
|
36
|
-
- [ ] Digital goods and subscriptions
|
|
37
|
-
|
|
38
|
-
- [ ]
|
|
39
|
-
-
|
|
40
|
-
- [ ]
|
|
41
|
-
- [ ]
|
|
33
|
+
- [ ] Digital goods and subscriptions are sold through StoreKit unless a current rule or
|
|
34
|
+
approved entitlement allows another route.
|
|
35
|
+
- [ ] Before purchase the user sees price, duration, billing frequency,
|
|
36
|
+
auto-renewal and, for trials, trial length and the price afterwards.
|
|
37
|
+
- [ ] Restore Purchases is present and works.
|
|
38
|
+
- [ ] No external purchase calls to action unless allowed for the storefront.
|
|
39
|
+
- [ ] Purchases waiting on a parent, and purchases cut off midway, are handled.
|
|
40
|
+
- [ ] Purchases are verified with StoreKit 2 or on the server.
|
|
42
41
|
|
|
43
42
|
## Screenshot and App Preview Checklist
|
|
44
43
|
|
|
45
|
-
- [ ] 1
|
|
46
|
-
|
|
47
|
-
- [ ] 6.5-inch
|
|
48
|
-
|
|
49
|
-
- [ ]
|
|
50
|
-
- [ ]
|
|
44
|
+
- [ ] 1 to 10 screenshots per platform and localization. As of May 2026 the
|
|
45
|
+
6.9-inch iPhone set is the primary one.
|
|
46
|
+
- [ ] A 6.5-inch set only when there is no 6.9-inch set, or when you choose to
|
|
47
|
+
tune that fallback by hand.
|
|
48
|
+
- [ ] A 13-inch iPad set for any app that supports iPad.
|
|
49
|
+
- [ ] Screenshots and previews show the real UI.
|
|
50
|
+
- [ ] Previews last 30 seconds or less, and the poster frame makes sense on its
|
|
51
|
+
own when autoplay is off.
|
|
51
52
|
|
|
52
53
|
## HIG Compliance Checklist
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- [ ]
|
|
62
|
-
- [ ]
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- [ ]
|
|
67
|
-
- [ ]
|
|
68
|
-
- [ ]
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- [ ]
|
|
74
|
-
- [ ]
|
|
75
|
-
- [ ] Live Activities
|
|
76
|
-
- [ ]
|
|
55
|
+
These are design-quality items. Most will not cause a rejection alone, but
|
|
56
|
+
reviewers notice them and they compound other findings.
|
|
57
|
+
|
|
58
|
+
Navigation:
|
|
59
|
+
|
|
60
|
+
- [ ] `NavigationStack`, not the deprecated `NavigationView`.
|
|
61
|
+
- [ ] The system back chevron, not a custom back icon.
|
|
62
|
+
- [ ] At most five tab bar items; overflow goes to a More tab.
|
|
63
|
+
- [ ] No hamburger menu as the main navigation.
|
|
64
|
+
|
|
65
|
+
Modals:
|
|
66
|
+
|
|
67
|
+
- [ ] Sheets have a visible way to dismiss.
|
|
68
|
+
- [ ] Full-screen modals have Close or Done.
|
|
69
|
+
- [ ] Alerts use the system styles.
|
|
70
|
+
|
|
71
|
+
System features:
|
|
72
|
+
|
|
73
|
+
- [ ] Dark Mode renders correctly.
|
|
74
|
+
- [ ] Dynamic Type scales without clipping.
|
|
75
|
+
- [ ] iPad multitasking (Slide Over, Split View) works.
|
|
76
|
+
- [ ] Dynamic Island and Live Activities render correctly when the app uses them.
|
|
77
|
+
- [ ] System gestures are not disabled.
|
|
78
|
+
|
|
79
|
+
Widgets and Live Activities:
|
|
80
|
+
|
|
81
|
+
- [ ] Widgets display live data; no placeholder content ships.
|
|
82
|
+
- [ ] Timelines update in a way the user can see is meaningful.
|
|
83
|
+
- [ ] Live Activities carry time-sensitive information only.
|
|
84
|
+
- [ ] Lock Screen widgets stay legible at small sizes.
|
|
77
85
|
|
|
78
86
|
## Pre-Submission Checklist
|
|
79
87
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- [ ]
|
|
83
|
-
- [ ]
|
|
84
|
-
- [ ]
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- [ ]
|
|
90
|
-
- [ ]
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- [ ]
|
|
97
|
-
- [ ]
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
- [ ]
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- [ ]
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- [ ]
|
|
108
|
-
- [ ]
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- [ ]
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- [ ]
|
|
116
|
-
- [ ]
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- [ ]
|
|
88
|
+
Completeness:
|
|
89
|
+
|
|
90
|
+
- [ ] No placeholder or test content.
|
|
91
|
+
- [ ] Every feature works without special hardware, or the notes explain it.
|
|
92
|
+
- [ ] Demo credentials or demo mode, with notes.
|
|
93
|
+
- [ ] No dead ends.
|
|
94
|
+
|
|
95
|
+
Metadata:
|
|
96
|
+
|
|
97
|
+
- [ ] The name matches what the app does.
|
|
98
|
+
- [ ] Screenshots are real and at the current required sizes.
|
|
99
|
+
- [ ] No prices or competitor names in the description.
|
|
100
|
+
- [ ] The category is correct.
|
|
101
|
+
|
|
102
|
+
Privacy:
|
|
103
|
+
|
|
104
|
+
- [ ] Manifest present with approved reason codes.
|
|
105
|
+
- [ ] SDK manifests checked.
|
|
106
|
+
- [ ] Privacy policy URL set and reachable.
|
|
107
|
+
- [ ] Runtime and SDK audit agrees with labels, manifest and policy.
|
|
108
|
+
- [ ] ATT prompt only if the app tracks.
|
|
109
|
+
|
|
110
|
+
Payments:
|
|
111
|
+
|
|
112
|
+
- [ ] IAP for digital content.
|
|
113
|
+
- [ ] Full subscription and trial terms visible before purchase.
|
|
114
|
+
- [ ] No external payment calls to action unless allowed.
|
|
115
|
+
- [ ] Free trial terms are clear.
|
|
116
|
+
- [ ] Restore implemented.
|
|
117
|
+
|
|
118
|
+
Design:
|
|
119
|
+
|
|
120
|
+
- [ ] Standard navigation.
|
|
121
|
+
- [ ] Dark Mode and Dynamic Type.
|
|
122
|
+
- [ ] No custom alerts that imitate system alerts.
|
|
123
|
+
- [ ] The launch screen is not an advertisement.
|
|
124
|
+
- [ ] Empty states tell the user what to do next.
|
|
125
|
+
|
|
126
|
+
Technical:
|
|
127
|
+
|
|
128
|
+
- [ ] Uploads after April 28, 2026 built with Xcode 26+ and SDK 26+.
|
|
129
|
+
- [ ] No private APIs.
|
|
130
|
+
- [ ] No code downloaded and executed to change features.
|
|
131
|
+
- [ ] Every entitlement justified, with usage descriptions.
|
|
132
|
+
- [ ] Every background mode justified and in use.
|
|
133
|
+
- [ ] Deployment target chosen on purpose and tested on the oldest supported OS.
|