> swift-error-handling
Standards for throwing functions, Result type, and Never. Use when implementing Swift error throwing, designing error hierarchies, using Result types, or adding do-catch blocks. (triggers: **/*.swift, throws, try, catch, Result, Error)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/swift-error-handling?format=md"Swift Error Handling
Priority: P0
Workflow: Add Error Handling to a Swift Function
- Define a custom error enum conforming to
Error - Mark the function
throws(orasync throws) - Use
do-catchat the call site with specific catch clauses - Map domain errors to user-facing messages at the presentation layer
Implementation Guidelines
Throwing Functions
- Propagate Errors: Use
throwsfor recoverable errors andasync throwsfor modern concurrency. - Do-Catch: Handle errors close to source with specific catch clauses for each error type. Catch-all
catchshould be the last resort. - Error Types: Define custom errors as enums conforming to
Error:
See implementation examples for custom error enums, do-catch patterns, and Result type usage.
- Optional Try: Use
try?only for non-critical errors where nil is acceptable.
Result Type
- Async Alternatives: Use
throwsfor synchronous code. UseResultfor callbacks and non-async deferred error states. - Transformations: Use
.map(),.flatMap()for functional composition. - Conversion: Use
.get()to convertResultto throwing for use intry-catch.
Never Type & Preconditions
- Fatalisms: Use
Neverreturn type only for unrecoverable crash scenarios or to indicate unreachable code. Never for expected errors. - Preconditions: Use
precondition(),assert(), andfatalError()for programmer errors. UseassertionFailure()for debug-only checks.
Anti-Patterns
- No try!: Use
try?ordo-catch. - No try? without nil check: Handle or log.
- No Error(message): Use typed errors.
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)