> swift-language
Apply Optionals, Protocols, Extensions, and Type Safety patterns in Swift. Use when working with Swift Optionals, Protocols, Extensions, or type-safe APIs. (triggers: **/*.swift, protocol, extension, optional, guard, enum)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/swift-language?format=md"Swift Language Standards
Priority: P0
Implementation Guidelines
Optionals & Safety
- Never Force Unwrap: Use guard let, if let, or nil coalescing (??) to safely unwrap.
- Nil Comparison: Use
value != nilinstead ofif let _ = value. - Implicitly Unwrapped: Avoid
Type!. Use properType?.
Protocols & Extensions
- Protocols as Blueprints: Protocols define a blueprint; classes inherit implementation.
- Composition over Inheritance: Prefer protocol composition with structs for better decoupling and performance.
- Extensions: Implement conformance in an extension:
extension MyType: MyProtocol { ... }. Use extensions for clean code organization, not storage (do not use extensions for stored properties). - Protocol Witnesses: Explicitly implement all required members to satisfy the witness table.
Type Safety
- Avoid
Any: Use generics or associated types instead for compile-time safety. - Enums: Prefer enums with associated values over multiple Optionals. Extract values via a switch statement (e.g.,
case .success(let value):). - Value Types: Default to struct for value semantics and thread safety. Use
classonly when reference identity is necessary or for inheritance. Structs are copied; classes are shared.
Anti-Patterns
- No ! operator: Use safe unwrapping.
- No -1 for failure: Use Optional.
- No force cast (as!): Use conditional cast (as?).
References
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)