swiftuimigrator
SKILL.md
SwiftUI Migrator
Overview
This is the orchestrator for incremental UIKit-to-SwiftUI migration. Use it to detect the current migration stage, apply global safety rules, and route work to the correct specialized subskill.
Core principle: keep UIKit ViewControllers running until the SwiftUI migration is fully complete and verified.
Migration Stages
- Project setup
Route to
swiftuimigrator-project-setup - Data migration and startup loading
Route to
swiftuimigrator-data-migration - Screen-by-screen migration
Route to
swiftuimigrator-screens - AdMob migration
Route to
swiftuimigrator-admob - Final cleanup
Route to
swiftuimigrator-cleanup
Stage Detection
Use swiftuimigrator-project-setup when:
- The project does not yet have a SwiftUI
Appentry point - Tuist deployment targets still need SwiftUI-compatible updates
SplashScreen.swiftand the app shell are not in placeAppDelegatestill owns launch-time window setup
Use swiftuimigrator-data-migration when:
- Startup logic still lives in
AppDelegate - Data migration or initialization must move into the SwiftUI startup path
SplashScreenshould show migration or loading progress- SwiftData container setup is part of the migration
Use swiftuimigrator-screens when:
- The app shell is stable enough to begin screen conversion
- A
ViewControllerneeds to become a SwiftUI screen - Features need to move incrementally from UIKit into SwiftUI
- Navigation must be rewritten with SwiftUI patterns
- A complex UIKit view may need a temporary
UIViewRepresentablebridge
Use swiftuimigrator-admob when:
- Core screen migration is already working
- The remaining work is specific to Google AdMob
SwiftUIAdManager, ad-unit migration, or native ad views still need SwiftUI equivalents
Use swiftuimigrator-cleanup when:
- All required screens and features are already migrated
- The remaining work is deleting legacy UIKit files and entry logic
- Final verification has already passed and cleanup is now safe
Routing Map
- Missing SwiftUI app shell:
swiftuimigrator-project-setup - Startup initialization or data migration work:
swiftuimigrator-data-migration - Root or secondary screen migration:
swiftuimigrator-screens - AdMob after the app is otherwise stable:
swiftuimigrator-admob - Final removal of UIKit migration scaffolding:
swiftuimigrator-cleanup
Global Rules
File Organization
- Screens: New SwiftUI screens that replace
UIViewControllerclasses belong inProjects/App/Sources/Screens/. - Views: Smaller reusable SwiftUI components belong in
Projects/App/Sources/Views/. - Naming: Do not use generic names like
ContentView.swift. Use descriptive names such asMainScreen.swift.
Migration Safety
- Migrate incrementally, one stage and one screen at a time.
- Keep all UIKit
ViewControllerimplementations until the full migration is verified. - Do not run AdMob migration before setup, startup flow, and screen migration are stable.
- Do not start cleanup until the SwiftUI app is fully verified end to end.
Debugging Principle
If the SwiftUI version has a problem you cannot solve, go back and re-read the original UIKit implementation.
Compare:
- initial state values
- lifecycle setup
- delegate behavior
- configuration and property observers
Example:
- If
TabViewdoes not open on the correct tab, check whether the UIKit implementation setselectedIndexand mirror that state explicitly in SwiftUI.
For detailed troubleshooting strategies, see guides/troubleshooting.md.
Recommended Flow
- Detect the current migration stage.
- Route to the appropriate specialized subskill.
- Complete that stage and verify it before moving on.
- Repeat until all screens and supporting systems are migrated.
- Run cleanup only after the full SwiftUI app is stable.
Weekly Installs
1
Repository
2sem/swiftui-mi…or-skillFirst Seen
8 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1