.claude/skills/tooling/swift/SKILL.md
Project-specific Swift conventions for this macOS app. Not a language tutorial — covers only deviations from standard Swift.
npx skillsauth add brdohman/agile-maestro swift-patternsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
All service types use actor, not class. This is the project standard for thread safety.
actor ItemService: ItemServiceProtocol {
static let shared = ItemService()
// ...
}
Use domain-specific typed throws in services. Avoids catching any Error at call sites.
func fetchItems() throws(AppError) -> [Item]
Project targets Swift 6 strict concurrency. All types crossing async boundaries must be Sendable. Use @unchecked Sendable only on mock types in tests.
ViewModels use @Observable macro (macOS 14+). Never use ObservableObject/@Published. Views own ViewModels with @State private var viewModel = MyViewModel().
Use async/await exclusively. No Publisher, sink, or @Published in production code.
ObservableObject + @Published with @Observableasync throwsSendable conformance to value types used across tasksclass services with actortesting
XCTest patterns for macOS Swift apps. Unit tests, async tests, Core Data tests, mock patterns, and assertion reference. Use when writing or reviewing tests.
tools
How to transition workflow state between review stages. Rules for setting review_stage and review_result fields on Stories and Epics.
documentation
Comment structure and rules for task workflow updates. Use when adding any comment to a task during implementation, review, or fix cycles.
testing
Validate task/story/epic/bug/techdebt metadata against schema v2.0. Run after TaskCreate or TaskUpdate to verify compliance. Returns pass/fail with actionable details.