| name | mobile-skills |
| description | Master iOS development with Swift, Android development with Kotlin, React Native, Flutter, and cross-platform mobile technologies. |
| sasmp_version | 1.3.0 |
| skill_type | atomic |
| version | 2.0.0 |
| parameters | {"platform":{"type":"string","enum":["ios","android","cross-platform"],"default":"cross-platform"},"framework":{"type":"string","enum":["swift","kotlin","react-native","flutter"],"default":"react-native"}} |
| validation_rules | [{"pattern":"^[A-Z][a-zA-Z0-9]*$","target":"component_names","message":"Components must be PascalCase"},{"pattern":".*\\.bundle$","target":"ios_bundle_id","message":"Bundle ID must end with domain"}] |
| retry_config | {"max_attempts":3,"backoff":"exponential","initial_delay_ms":500} |
| logging | {"on_entry":"[Mobile] Starting: {task}","on_success":"[Mobile] Completed: {task}","on_error":"[Mobile] Failed: {task} - {error}"} |
| dependencies | {"agents":["mobile-developer"]} |
Mobile Development Skills
iOS Development (Swift)
import SwiftUI
struct ContentView: View {
@State private var count = 0
@State private var isLoading = false
@State private var error: Error?
var body: some View {
VStack {
if isLoading {
ProgressView()
} else if let error = error {
ErrorView(error: error, retry: loadData)
} else {
Text("Count: \(count)")
.font(.headline)
Button(action: { count += 1 }) {
Text("Increment")
}
}
}
.task { await loadData() }
}
func loadData() async {
isLoading = true
defer { isLoading = false }
do {
} catch {
self.error error
}
}
}
: {
items: [] []
error: ?
isLoading
() {
isLoading
{ isLoading }
{
items .getItems()
} {
.error error
}
}
}