swift-code-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited swift-code-review (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.
Read every file mentioned or pasted before writing any comments. Do not review code you have not fully read.
If reviewing a PR, ask for:
Architecture (MVVM)
URLSession.shared, UserDefaults.standard, or Date() called directly from ViewsonAppear without ViewModel delegationSwift Quality
!) in production pathsthrows or Result — not silently swallowedlet preferred over var where value does not changeConcurrency
async/await used for all new async code (not completion handlers)@MainActor applied to ViewModel and any type that updates UI stateDispatchQueue.main.async in ViewModel or Service layerssleep() anywhereSendable conformance considered for types crossing actor boundariesTask objects are stored and cancelled if the parent scope is deallocatedTesting
Naming
UpperCamelCaselowerCamelCaseisLoading, hasError, canSubmit, isPremium)url, id, api)test_when_<Condition>_should_<ExpectedOutcome>()Protocol suffix (prefer UserRepository over UserRepositoryProtocol where unambiguous, but Protocol suffix is acceptable for clarity)SwiftUI Specific
@StateObject / @State used in the View that owns the instance@ObservedObject / @Binding used for passed-in instances@EnvironmentObject used for types that should be injected explicitly#Preview compiles and shows correct contentUIKit Specific
IBOutlet and IBAction limited to UI wiring only[weak self])viewDidLoad that belongs in a dedicated setup methodGroup by severity. Be specific. Include file name and line number or code excerpt.
## Code Review: [File or Feature Name]
### Critical — Must Fix
These block approval. Fix before merge.
- **[Issue title]** in `FileName.swift`// Problematic code
**Why**: [Clear explanation of the problem and risk]
**Fix**:// Suggested fix
### Suggested — Should Fix
Strong recommendations that improve correctness, testability, or maintainability.
- [Issue] — [file] — [brief explanation and fix direction]
### Minor — Nice to Have
Style, preference, or low-risk improvements. Non-blocking.
- [Note]
### Approved
What is done well — acknowledge good patterns explicitly.
- [What works well and why]End with one of:
User says: "Review my LoginViewModel"
Actions:
LoginViewModel.swiftLoginViewModelTests.swift (if it exists)User says: "Review my PR for the checkout feature — here are the changed files"
Actions:
User says: "Is this code correct?"
Actions:
Too many issues to list: Focus on Critical and top Suggested. List remaining Minor issues as a bullet group: "Additional minor style notes: [list]". Do not overwhelm with exhaustive nit-picking.
Reviewer disagreement on style: If the project has a style guide (CLAUDE.md or linting config), defer to it. Otherwise, note it as Minor and avoid blocking on pure preference.
Legacy code with known issues: When reviewing a small change in a large legacy file, focus the review scope on the changed lines. Do not audit the entire file — note "broader refactoring needed in this file" as a separate future work item.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.