Install
openclaw skills install dev-skillGenerate SwiftUI iOS application code from PRD documents. Use when a PRD document is available and needs to be transformed into a working iOS application with proper architecture, UI components, and data management. This skill receives input from prd-skill and automatically triggers qa-skill after code generation.
openclaw skills install dev-skillThis skill transforms Product Requirements Documents (PRD) into fully functional SwiftUI iOS applications. It analyzes PRD requirements and generates production-ready code with proper architecture, UI components, data models, and business logic.
All generated code follows the Model-View-ViewModel pattern:
Create a complete Xcode project with:
ProjectName/
├── ProjectName.xcodeproj
├── ProjectName/
│ ├── Models/
│ │ ├── DataModel.swift
│ │ └── APIModels.swift
│ ├── ViewModels/
│ │ ├── MainViewModel.swift
│ │ └── [Feature]ViewModel.swift
│ ├── Views/
│ │ ├── ContentView.swift
│ │ ├── [Feature]View.swift
│ │ └── Components/
│ │ ├── ButtonStyles.swift
│ │ └── CustomViews.swift
│ ├── Services/
│ │ ├── APIService.swift
│ │ └── DataService.swift
│ └── Utilities/
│ ├── Extensions.swift
│ └── Constants.swift
└── ProjectNameTests/
└── [Feature]Tests.swift
struct Task: Identifiable, Codable {
let id: UUID
var title: String
var isCompleted: Bool
var dueDate: Date?
var category: String
var priority: Priority
}
enum Priority: String, Codable, CaseIterable {
case low, medium, high
}
class TaskViewModel: ObservableObject {
@Published var tasks: [Task] = []
@Published var selectedCategory: String?
private let dataService: DataService
init(dataService: DataService = .shared) {
self.dataService = dataService
loadTasks()
}
func addTask(_ task: Task) { ... }
func deleteTask(_ task: Task) { ... }
func toggleCompletion(_ task: Task) { ... }
}
struct TaskListView: View {
@StateObject private var viewModel = TaskViewModel()
@State private var showingAddTask = false
var body: some View {
NavigationView {
List {
ForEach(viewModel.tasks) { task in
TaskRowView(task: task)
}
.onDelete(perform: deleteTask)
}
.navigationTitle("Tasks")
.toolbar {
Button(action: { showingAddTask = true }) {
Image(systemName: "plus")
}
}
.sheet(isPresented: $showingAddTask) {
AddTaskView()
}
}
}
}
PRD Input: Todo app with categories, reminders, sharing
Generated Code:
After generating the iOS project, this skill automatically:
dev-output/ directoryqa-skill with the generated code as inputprd-skill