narenreddy2302/swiff_ios
Overview
This skill is an expert assistant for Swiff iOS, a subscription and expense management app built with SwiftUI and SwiftData. It guides development across MVVM + Services, SwiftUI views, data persistence, widgets, notifications, security, accessibility, and performance. Use it to ensure consistent architecture, coding patterns, and production-ready features.
How this skill works
The skill inspects project context and recommends patterns from the established MVVM + Services architecture: clear separation of Views, ViewModels, and Services, explicit domain-to-persistence model conversion, and environment injection of data managers. It provides concrete guidance on SwiftUI structure, SwiftData queries and migrations, widget updates, notification handling, security measures, accessibility checks, and performance tuning. It also suggests testing approaches and code-review checkpoints tailored to Swiff iOS.
When to use it
- Starting a new feature or bug fix in Swiff iOS
- Implementing SwiftUI views, ViewModels, or services
- Working with subscriptions, transactions, group expenses, or analytics
- Adding WidgetKit widgets, notifications, or background tasks
- Performing data migrations, security hardening, or accessibility improvements
- Preparing PRs and writing tests or running performance profiles
Best practices
- Keep business logic in Services and domain models; Views should be declarative and thin
- Annotate UI-facing services with @MainActor and expose @Published properties for reactive updates
- Convert between SwiftData persistence models and domain models explicitly to avoid leaking persistence concerns
- Sanitize inputs, encrypt sensitive data at rest, and use biometric flows for sensitive operations
- Profile lists and queries; use lazy loading and efficient SwiftData predicates to minimize view updates
- Write unit tests for calculations and edge cases; mock services for isolated ViewModel tests
Example use cases
- Add a subscription renewal feature with a View, ViewModel, PersistenceService, and notification scheduling
- Implement group-split calculations and unit tests that validate rounding and balance flows
- Create a WidgetKit timeline that shows upcoming renewals using efficient SwiftData fetches
- Migrate SwiftData model with a clear mapping from old persistence schema to new domain models
- Harden storage of payment tokens: encrypt at rest and gate access behind biometrics
FAQ
Put core business rules, persistence, and external API coordination in Services. Use ViewModels for UI state composition and presentation-specific transformations.
How do I test SwiftData-dependent logic?
Mock or inject a lightweight in-memory persistence layer; separate domain logic from persistence conversions so calculations can be unit tested without disk I/O.