claude/skills/ios-uikit/SKILL.md
This skill MUST be invoked when the user says "UIKit", "iOS geliştirme", "programmatic UI", "table view", "collection view", "Auto Layout", "UIViewController", "UINavigationController", "Core Animation", "UIKit review", "UIKit build", "iOS view controller", "UIKit pattern", "programmatic layout", or any variation requesting UIKit development, review, or improvement. Covers programmatic UIKit with Auto Layout, table/collection views, navigation, animation, networking, architecture, and 20 reference documents with production-ready patterns.
npx skillsauth add kilimcininkoroglu/cli-tweaks ios-uikitInstall 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.
Build, review, and improve programmatic UIKit applications following production-ready patterns. All UI is built in code — no Storyboards.
/ios-uikit review # Review existing UIKit code for issues
/ios-uikit build # Implement new UIKit feature
/ios-uikit improve # Modernize existing UIKit code
/ios-uikit # Auto-detect mode from context
translatesAutoresizingMaskIntoConstraints = false.NSLayoutConstraint.activate([...]) for batch constraint activation.style(), layout(), and protocol conformances.weak references for delegates and [weak self] in closures to prevent retain cycles.async/await for new code; Result<Success, Error> for completion handler APIs.@MainActor or MainActor.run {}./ios-uikit review)weak delegates, missing [weak self])beginUpdates/endUpdates when Diffable is available)@MainActor on UI-updating async code/ios-uikit build)/ios-uikit improve)@MainActor annotations to ViewModel and UI-updating codeResult types or throwsConsult the reference file for each topic relevant to the current task:
| Topic | Reference |
|------------------------|----------------------------------------|
| UITableView | references/uitableview.md |
| UICollectionView | references/uicollectionview.md |
| UINavigationController | references/uinavigationcontroller.md |
| UIScrollView | references/uiscrollview.md |
| Core Animation | references/core-animation.md |
| Core Graphics | references/core-graphics.md |
| Auto Layout Animation | references/auto-layout-animation.md |
| Communication Patterns | references/communication-patterns.md |
| Architecture Patterns | references/architecture-patterns.md |
| View Extraction | references/view-extraction.md |
| Navigation Patterns | references/navigation-patterns.md |
| Design Patterns (UI) | references/design-patterns.md |
| Networking | references/networking.md |
| Factory Functions | references/factory-patterns.md |
| Nib / XIB Patterns | references/nib-patterns.md |
| NSAttributedString | references/nsattributedstring.md |
| Gesture Recognizers | references/gesture-recognizers.md |
| Custom Controls | references/custom-controls.md |
| Currency Formatting | references/currency-formatting.md |
| Deep Linking | references/deep-linking.md |
Hard rules — violations are always bugs:
translatesAutoresizingMaskIntoConstraints = falseNSLayoutConstraint.activate() is used instead of isActive = true one-by-onetranslatesAutoresizingMaskIntoConstraints already falseintrinsicContentSize when they have a natural sizeweak var delegate: SomeDelegate?[weak self] when referencing the owning objectSet<AnyCancellable> with store(in:)performBatchUpdates used (not beginUpdates/endUpdates) for iOS 11+Hashable with stable identifiersUICollectionView.CellRegistration or register(_:forCellWithReuseIdentifier:)DispatchQueue.main or use @MainActorasync functions that update UI are marked @MainActorperformBackgroundTask or performaddChild(), addSubview(), didMove(toParent:)willMove(toParent: nil), removeFromSuperview(), removeFromParent()viewDidLayoutSubviewsasync/await URLSession APIs for new codeResult<T, Error> return type| Symptom | Likely Cause | Reference |
|---------|-------------|-----------|
| View doesn't appear | Missing translatesAutoresizingMaskIntoConstraints = false | references/view-extraction.md |
| Table view crashes on insert | Data source count mismatch with batch updates | references/uitableview.md |
| Animation snaps to final state | Model layer not updated after CA animation | references/core-animation.md |
| Retain cycle / memory leak | Missing weak on delegate or [weak self] | references/communication-patterns.md |
| Scroll view doesn't scroll | Missing content size or broken constraint chain | references/uiscrollview.md |
| Shadow clipped by view | masksToBounds = true on layer | references/core-animation.md |
| Gradient/shadow wrong size | Set bounds-dependent layers in viewDidLayoutSubviews | references/core-animation.md |
| Collection view empty | Forgot to register cell or data source nil | references/uicollectionview.md |
| Core Data threading crash | Accessing managed object on wrong queue | references/networking.md |
| Nav bar title missing | Not setting title or navigationItem.title | references/uinavigationcontroller.md |
| Async callback UI freeze | Missing @MainActor or DispatchQueue.main dispatch | references/architecture-patterns.md |
| Combine subscription no fire | Subscriber deallocated — store in cancellables | references/communication-patterns.md |
When working with UIKit in modern Swift (2025+):
DispatchQueue.main.async for UI thread safetydevelopment
This skill MUST be invoked when the user says "version update skill oluştur", "create version update skill", "versiyon skill'i oluştur", "update-version skill", "version-update skill yap" or any variation requesting creation of a project-local version update skill. SHOULD also invoke when user mentions "versiyon güncelleme skill'i kur", "setup version bumping", or asks to automate version management for the current project. Scans the project for version files, build commands, and changelog, then generates a tailored version-update skill in .factory/skills/.
development
This skill MUST be invoked when the user says "task-plan", "görev planla", "break down this PRD", "create tasks from spec", "PRD'yi parçala", "görevleri oluştur" or any variation requesting task breakdown from a specification document. SHOULD also invoke when user mentions "feature breakdown", "sprint planning", "task tracking", or wants to manage a structured development workflow with features and tasks.
testing
This skill MUST be invoked when the user says "commit tarihlerini değiştir", "redate commits", "spread commits", "backdate" or any variation requesting git commit date rewriting across a date range. Rewrites both author and committer dates using git filter-branch, distributing commits realistically across the specified period.
development
This skill MUST be invoked when the user says "UIKit", "iOS geliştirme", "programmatic UI", "table view", "collection view", "Auto Layout", "UIViewController", "UINavigationController", "Core Animation", "UIKit review", "UIKit build", "iOS view controller", "UIKit pattern", "programmatic layout", or any variation requesting UIKit development, review, or improvement. Covers programmatic UIKit with Auto Layout, table/collection views, navigation, animation, networking, architecture, and 20 reference documents with production-ready patterns.