apple-three-piece-analytics — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited apple-three-piece-analytics (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
PrivacyInfo.xcprivacy.Owns the source-selection decision and its PrivacyInfo/ATT consequence. Does NOT own MetricKit wiring or payload interpretation → ios-performance-engineering; sink code → telemetry-facade-pattern; App Review privacy-label parity → app-store-review-rejections.
| Source | What it provides | Where to view |
|---|---|---|
| App Store Connect Analytics | Downloads, sessions, active devices, retention, sources, store conversion | App Store Connect web |
MetricKit (MXMetricPayload, MXDiagnosticPayload) | Performance & diagnostics: crash / hang / launch time / jank / energy / memory | The App receives them → persist to log / optionally upload later |
MetricKit, iOS / macOS 27+ (MetricManager().metricReports / .diagnosticReports, for await) | Same coverage; MXMetricManager / MXMetricPayload / MXMetricManagerSubscriber are deprecated starting iOS / macOS 27 | Same — catalog default is iOS 26, so no forced migration yet |
| Game Center (if it's a game) | Leaderboards / achievement completion / peer-player comparison | Game Center API / Game Center app |
macOS caveat: Apple's API listsMXMetricManagerSubscriberon macOS 12 and later; which payloads a Mac actually delivers is not documented. Verify delivery on a device at your macOS floor, and fall back to App Store Connect Analytics + targetedOSSignpostertraces if payloads don't arrive.
UserDefaults, file-modification timestamps, system boot time, disk-space APIs, or active-keyboards APIs each requires a declared entry in NSPrivacyAccessedAPITypes (e.g. UserDefaults → reason CA92.1); otherwise Apple sends a missing-reason email, and since 2024-05-01 such uploads aren't accepted by App Store Connect (details in app-store-review-rejections's privacy-manifest reference). Almost every app uses UserDefaults, so the manifest needs at least that entry plus NSPrivacyTracking: false.import. (The required-reason API entries above are still needed — they come from the App's own code, not a third-party SDK.)PrivacyInfo.xcprivacy since 10.22.0 (2024-03); the reason to prefer TelemetryDeck is the smaller data-collection disclosure surface (tracking domains, more collected-data-type entries) and build size.TrackingSink implementation via telemetry-facade-pattern; call sites change nothing.MXDiagnosticPayload persistence still isn't enough for the incident workflow.PrivacyInfo.xcprivacy exists and passes App Store Connect validation.import Firebase* / import Sentry / import Amplitude, etc.MXMetricManager.shared.add(...); iOS 27+: MetricManager() and for await over metricReports / diagnosticReports).telemetry-facade-pattern: the sink implementations for each piece.oslog-logger-defaults: MetricKit payloads persist via OSLog.apple-public-repo-security: "no PII / no third-party SDK" is one of the public-repo commitments.references/official-docs.md.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.