tddworks/claude-skills
Overview
This skill scaffolds a new iOS app using Tuist, Swift 6, and a layered architecture (Domain, Infrastructure, App). It creates a ready-to-generate Xcode workspace, Swift package entries, xcconfig-based build settings, and example files to jumpstart development. Use it to enforce clean separation of concerns and accelerate project setup.
How this skill works
The scaffold script generates a Tuist Project.swift, Tuist.swift, and a Sources/ tree organized into Domain, Infrastructure, and App layers, plus Tests. It seeds example models, protocols annotated for @Mockable, SwiftData repository stubs, SwiftUI app entry points, and xcconfig files for signing and version management. After running the script you run tuist generate and open the workspace to start implementing features.
When to use it
- Creating a brand new iOS app project with Tuist
- Setting up a layered/clean architecture (Domain, Infrastructure, App)
- Bootstrapping Swift 6 projects with SwiftData and SwiftUI examples
- Initializing consistent build settings and versioning via xcconfig and Project.swift
- When you want testable repository protocols with @Mockable support
Best practices
- Replace and rename example files immediately (Example.swift, ExampleRepository.swift) to match your domain
- Keep Domain layer business logic dependency-free and testable
- Declare repository protocols in Domain and implement persistence in Infrastructure only
- Manage app versions and build numbers in Project.swift, reference them in Info.plist via build settings
- Add external Swift packages in Project.swift and wire them into target dependencies
- Use xcconfig files (shared/debug/release) for signing, bundle id, and deployment target to keep configurations reproducible
Example use cases
- Scaffold a new consumer app called MyApp with bundle and team IDs and immediately run tuist generate
- Create a prototype where Domain models contain business rules and the Infrastructure layer uses SwiftData for persistence
- Set up CI that bumps MARKETING_VERSION and CURRENT_PROJECT_VERSION in Project.swift before building
- Start a test-driven workflow using @Mockable repository protocols and DomainTests
- Standardize new internal projects with uniform xcconfig signing and deployment targets
FAQ
Yes. Run the scaffold script to create the project, then use tuist generate to produce the workspace. Tuist must be installed and available on your PATH.
Where do I change the bundle id and team id?
Pass --bundle-id and --team-id to the scaffold script or edit Sources/App/Resources/XCConfig/shared.xcconfig to set PRODUCT_BUNDLE_IDENTIFIER and DEVELOPMENT_TEAM.
How do I add third-party packages?
Add package declarations to the packages array in Project.swift, then include the package product in the target dependencies section for the relevant target.
3 skills
This skill scaffolds iOS apps with Tuist and a layered Domain, Infrastructure, App architecture to accelerate project setup.
This skill helps you create interactive iOS UX prototypes as self-contained HTML with phone frames and annotations to visualize flows.
This skill helps manage iOS/macOS .strings files in Tuist-based projects, validate keys, and synchronize translations across locales.