skills/mobile/ios/SKILL.md
iOS root: SDK, app lifecycle scene-based, permissions NSUsageDescription, HIG guidelines
npx skillsauth add alphaonedev/openclaw-graph iosInstall 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.
This skill handles core iOS development tasks using Apple's SDK, focusing on app lifecycle management (scene-based), permissions via NSUsageDescription in Info.plist, and adherence to Human Interface Guidelines (HIG) for UI/UX consistency.
xcodegen or create via Xcode UI, then add dependencies via Swift Package Manager.xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' build.xcodebuild for building: xcodebuild -workspace MyApp.xcworkspace -scheme MyApp clean build. For archiving: xcodebuild -scheme MyApp -configuration Release archive.AVCaptureDevice.requestAccess(for: .video) for camera permission.import AVFoundation
AVCaptureDevice.requestAccess(for: .video) { granted in
if granted { print("Access granted") } else { print("Denied") }
}
func sceneDidBecomeActive(_ scene: UIScene) {
// Resume tasks, e.g., start timers
}
func sceneWillResignActive(_ scene: UIScene) {
// Pause tasks
}
<key>NSCameraUsageDescription</key>
<string>This app uses the camera for photo capture.</string>
<key>com.apple.security.application-groups</key><string>group.com.example</string>).pod install) or packages in Package.swift.$APPLE_API_KEY and reference in scripts (e.g., xcrun altool --upload-app --file MyApp.ipa --username $APPLE_USERNAME --password $APPLE_API_KEY).#if os(iOS) in Swift).actions/checkout then run xcodebuild in a macOS runner.swift package resolve.AVAuthorizationStatus.authorized and prompt users via UIAlertController if needed.xcodebuild by parsing output: Look for "Command PhaseScriptExecution failed" and fix scripts; use xcodebuild -verbose for details.print("Scene error: \(error)") in sceneWillEnterForeground).do { try AVAudioSession.sharedInstance().setCategory(.playAndRecord) } catch { print(error.localizedDescription) }.Example 1: Basic App with Camera Permission Create a new Xcode project, add NSCameraUsageDescription to Info.plist, and implement permission request in ViewController.swift:
import UIKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad(); requestCamera() }
func requestCamera() { AVCaptureDevice.requestAccess(for: .video) { granted in if granted { /* Proceed */ } } }
}
Build and run with xcodebuild -scheme MyApp build to test on simulator.
Example 2: Managing App Lifecycle In a scene-based app, handle state changes in SceneDelegate.swift:
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func sceneDidBecomeActive(_ scene: UIScene) { print("App active") }
func sceneWillEnterForeground(_ scene: UIScene) { /* Reload data */ }
}
Use xcodebuild test to verify lifecycle events during app testing.
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui