swift-patterns

Enforce actor-based services, typed throws, and strict concurrency in Swift 6 macOS apps.

Updated Apr 9, 2026
One-click install
npx skills add https://github.com/productengineered/parsely --skill swift-patterns-productengineered
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: swift-patterns
Source: https://github.com/productengineered/parsely/tree/main/.claude/skills/tooling/swift
Command: npx skills add https://github.com/productengineered/parsely --skill swift-patterns-productengineered

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Project-specific Swift conventions for this macOS app, ensuring consistency and avoiding common pitfalls across the codebase.

Core Features & Use Cases

  • Services Must Be Actors: all service types use actor for thread safety.
  • Typed Throws (Swift 6+): enables domain-specific typed throws.
  • Strict Concurrency: targets Swift 6 strict concurrency across async boundaries.
  • @Observable Over ObservableObject: ViewModels use @Observable; avoid ObservableObject.
  • No Combine: use async/await, no Combine in production.

Quick Start

Implement these conventions across the codebase to adopt actor-based services, typed throws, and modern concurrency.

Frequently Asked Questions about swift-patterns

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enforce Swift 6 strict concurrency across async boundaries in a macOS app?

Swift 6 strict concurrency across async boundaries is enforced by adopting actor-based services for thread safety and utilizing modern async/await patterns to standardize coding practices across the macOS app.

Why use @Observable instead of ObservableObject for Swift view models?

Using @Observable instead of ObservableObject for Swift view models modernizes state observation, aligning view models with Swift 6+ conventions while eliminating the need for Combine in production code.

What is the best way to implement domain-specific typed throws in Swift 6?

The best way to implement domain-specific typed throws in Swift 6 is to apply project-specific Swift conventions that enforce typed throws across services, guiding architecture and style choices in common scenarios.

Can I standardize Swift code to use actors for all services instead of classes?

Yes, you can standardize Swift code to use actors for all services, enforcing project-specific conventions that require actor-based service types to ensure thread safety and strict concurrency.

When should I avoid using Combine in Swift 6 async-first code?

You should avoid using Combine in Swift 6 async-first code when standardizing coding practices, replacing it entirely with async/await to eliminate Combine usage in production environments.