tddworks/claude-skills/ios-app-scaffold

Trust tier 2
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Scaffold iOS apps with Tuist and layered architecture (Domain, Infrastructure, App). Use when: (1) Creating a new iOS app project, (2) Setting up Tuist project structure, (3) User asks to "create an iOS app", "scaffold an app", or "set up a new Swift project", (4) User wants layered/clean architecture for iOS, (5) User mentions Tuist setup.

Install

npx vskill@latest install tddworks/claude-skills/ios-app-scaffold

SKILL.md

iOS App Scaffold

Scaffold iOS apps with Tuist, Swift 6, and layered architecture.

Quick Start

Run the scaffold script:

bash
python3 scripts/scaffold.py <AppName> <output-directory> [--bundle-id <id>] [--team-id <id>]

Example:

bash
python3 scripts/scaffold.py MyApp /Users/me/projects --bundle-id com.mycompany.myapp --team-id ABC123

Then generate and open:

bash
cd /Users/me/projects/MyApp
tuist generate
open MyApp.xcworkspace

Generated Structure

AppName/
├── Sources/
│ ├── App/ # SwiftUI views, app entry
│ │ ├── Views/
│ │ ├── Resources/
│ │ │ ├── Assets.xcassets
│ │ │ ├── XCConfig/ # Build configuration
│ │ │ │ ├── shared.xcconfig
│ │ │ │ ├── debug.xcconfig
│ │ │ │ └── release.xcconfig
│ │ │ └── en.lproj/
│ │ ├── Application/
│ │ ├── Info.plist
│ │ └── AppNameApp.swift
│ ├── Domain/ # Business logic (no dependencies)
│ │ ├── Models/
│ │ ├── Protocols/ # @Mockable repository interfaces
│ │ └── Utils/
│ └── Infrastructure/ # Persistence implementations
│ └── Local/ # SwiftData repositories
├── Tests/
│ ├── DomainTests/
│ └── InfrastructureTests/
├── Project.swift # Tuist configuration
├── Tuist.swift
├── .gitignore
└── README.md

Architecture

LayerPurposeDependencies
DomainModels, protocols, business logicNone
InfrastructureSwiftData persistenceDomain
AppSwiftUI views, app entryDomain, Infrastructure

For detailed patterns, see references/architecture.md.

After Scaffolding

  1. Replace example files: Edit Example.swift, ExampleRepository.swift, LocalExampleRepository.swift
  2. Add domain models: Create models in Sources/Domain/Models/
  3. Define protocols: Add repository protocols in Sources/Domain/Protocols/
  4. Implement persistence: Add SwiftData entities in Sources/Infrastructure/Local/
  5. Build UI: Create views in Sources/App/Views/

Adding Dependencies

Edit Project.swift packages array:

swift
packages: [
.remote(url: "https://github.com/Kolos65/Mockable.git", requirement: .upToNextMajor(from: "0.5.0")),
// Add more packages here
],

Then add to target dependencies:

swift
dependencies: [
.package(product: "PackageName"),
]

Key Patterns

Domain models are rich - Include computed properties and business logic:

swift
public struct Order: Identifiable, Codable, Sendable {
public var items: [Item]
public var total: Decimal { items.reduce(0) { $0 + $1.price } }
}

Protocols use @Mockable - Enables testing without real persistence:

swift
@Mockable
public protocol OrderRepository: Sendable {
func fetchAll() async throws -> [Order]
}

Views consume Domain directly - No ViewModel layer needed:

swift
struct OrdersView: View {
let orders: [Order] // Domain model directly
}

Version Management

Version numbers are managed in Project.swift build settings:

swift
settings: .settings(
base: [
"MARKETING_VERSION": "1.0.0", // App Store version
"CURRENT_PROJECT_VERSION": "1", // Build number
],
...
)

The Info.plist references these via build setting variables:

  • CFBundleShortVersionString → $(MARKETING_VERSION)
  • CFBundleVersion → $(CURRENT_PROJECT_VERSION)

To bump version, edit Project.swift:

swift
"MARKETING_VERSION": "1.1.0",
"CURRENT_PROJECT_VERSION": "2",

XCConfig

Build settings are managed via xcconfig files in Sources/App/Resources/XCConfig/:

FilePurpose
shared.xcconfigCommon settings (bundle ID, team ID, deployment target)
debug.xcconfigDebug configuration (Apple Development signing)
release.xcconfigRelease configuration (Apple Development signing)

Edit shared.xcconfig to customize:

PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.app
DEVELOPMENT_TEAM = YOUR_TEAM_ID
IPHONEOS_DEPLOYMENT_TARGET = 18.0

Security

  • Security scanPassed, 98 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
34
Repository forks
6
7-day trend score
18

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 5 May 2026, 5 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/tddworks/claude-skills/ios-app-scaffold/badge)](https://verified-skill.com/skills/tddworks/claude-skills/ios-app-scaffold)

Something wrong with this skill or its page? Tell us.