programming-swift — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited programming-swift (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.
Use for Swift language implementation and review across packages, services, and apps. Keep platform UI, persistence, and distribution decisions in their platform context; focus here on values, APIs, concurrency, and explicit failures.
Value semantics control mutation; actor isolation controls access; task structure controls lifetime. None substitutes for the others. Make these contracts visible instead of quieting compiler diagnostics with unchecked annotations or detached tasks.
As of 2026-10: Swift 6.4 is the current release (September 2026, shipped in Xcode 27). Check the repository's toolchain, swift-tools-version, language mode, upcoming-feature flags, default isolation, and deployment targets separately. A Swift 6 compiler can compile in Swift 5 language mode.
NonisolatedNonsendingByDefault, under which nonisolated async functions inherit caller isolation. Read actual settings before inferring where a function runs. async does not mean background execution.@concurrent on supported toolchains explicitly moves eligible async work to the concurrent executor. Use it for computation that must leave an actor, not as an annotation on every async function.InlineArray and Span; use them for demonstrated fixed-storage or borrowing requirements. Swift 6.3 adds @c interoperability; prefer supported declarations over underscored attributes when the compiler and C contract permit them.withTaskCancellationShield (SE-0504) for cleanup that must finish despite cancellation, awaited async calls in defer (SE-0493), @diagnose for in-source warning control (SE-0522), module selectors (Module::name, SE-0491), and noncopyable containers (UniqueBox, UniqueArray). Shield only bounded cleanup, not ordinary work; don't use @diagnose to silence a diagnostic whose cause is unresolved.remove(at:) versus remove(_:)); expose minimal access and document non-obvious ownership, failure, or complexity contracts.some Protocol when one concrete type remains statically determined. Use any Protocol for a heterogeneous existential contract; neither guarantees value semantics.throws for failures and typed throws only when a stable error set benefits callers; don't replace informative failures with try?, sentinel values, or empty collections.await. Transfer data using Sendable values or valid ownership transfer, not unsafe shared references.async let and task groups for child work that belongs to the current operation. Bound large fan-out. A Task {} is unstructured and may inherit actor context; retain its handle when explicit cancellation or result observation is needed.Task.detached loses inherited context and structured cancellation. Use only for a deliberate independent boundary, with explicit lifetime and failure handling.defer for synchronous cleanup and deliberate asynchronous cleanup where necessary.@unchecked Sendable, nonisolated(unsafe), and force operations require a documented invariant; don't use them to bypass an unresolved ownership problem.XCTAssert works inside Swift Testing and #expect inside XCTest, so suites can migrate incrementally; don't migrate tests merely for syntax.Keep an actor's invariant inside a non-suspending operation:
actor Inventory {
private var available = 10
func reserve(_ quantity: Int) -> Bool {
guard quantity > 0, quantity <= available else { return false }
available -= quantity
return true
}
}A caller uses await inventory.reserve(2) across isolation. If remote authorization is added before mutation, state must be revalidated after that await or reserved with an explicit rollback protocol.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.