swift-performance-pro — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited swift-performance-pro (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.
Find and fix performance problems with evidence, not guesses. Measure first.
Trigger: /swift-performance-pro.
Leaks), not intuition.
body cheap and pure; recomputation is frequent.Keep body free of side effects and heavy compute.
❌ Sorting on every render
var body: some View {
List(items.sorted { $0.date > $1.date }) { Row($0) } // re-sorts each pass
}✅ Sort once in the model
// model exposes already-sorted `items`
var body: some View { List(model.items) { Row($0) } }Narrow observation so unrelated changes don't redraw everything. Split big views into small subviews so SwiftUI can diff precisely.
LazyVStack/List for long content, not eager VStack in a ScrollView.Identifiable IDs — index-based identity forces full rebuilds.AnyView in row builders; it defeats SwiftUI's diffing.❌ Strong self capture in a stored closure
manager.onUpdate = { self.refresh() } // cycle: manager → closure → self✅
manager.onUpdate = { [weak self] in self?.refresh() }Verify deinit runs. Use Instruments → Leaks / Allocations to confirm.
❌
let image = UIImage(data: hugeData) // decode on main → dropped frames✅
let image = await Task.detached { UIImage(data: hugeData) }.valueDownsample large images to the display size instead of loading full-resolution.
init/onAppear; load it in .task.body.VStack where LazyVStack/List is needed.AnyView in hot row builders.self in stored closures (retain cycle).Per issue: file:line, the cost, before/after, and which Instrument confirms it. Lead with main-thread blockers.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.