Skip to main content
skill CX Codex

uikit-max — Claude Code skill: UIKit code review

Reviews UIKit code for deprecated APIs, Auto Layout mistakes and retain cycles. Useful when you touch UIViewController or UITableView screens.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add tornikegomareli/UIKit-Agent-Skill --skill uikit-max -a claude-code
Open on GitHub

What uikit-max does

The skill walks Swift code through twelve areas: deprecated APIs, UIView lifecycle, layout, controller architecture, navigation, table and collection views, accessibility, performance, concurrency. Each area lives in its own file under references/, so a partial review loads only what it needs. Findings come grouped by file, with the line, the rule that was broken and a short before/after snippet. A prioritized summary closes the report.

The author suggests targeting iOS 17 as the minimum for new code and Swift 6.2 with modern concurrency. Your project may sit on an older target, and the skill then insists on checking API availability and wrapping newer calls in if #available. That is the practical catch: without a stated deployment target, suggestions built on recent APIs may not compile.

It will not push SwiftUI replacements unless you ask, and it does not pull in third-party frameworks on its own. SwiftUI-only projects and Combine-only logic with no UIKit dependency are out of scope. For new code the author prefers programmatic UI with layout anchors over Storyboards and XIBs, unless the project already leans on Interface Builder.

What it helps with

  • sweep out deprecated UIKit calls like UIAlertView
  • track down constraint conflicts from a missing translatesAutoresizingMaskIntoConstraints
  • break up a massive view controller
  • move table views onto diffable data sources
  • check Dynamic Type and VoiceOver before shipping

Example prompts for the agent

  • Review ProfileViewController.swift with uikit-max and list issues by line
  • Run uikit-max over the folder with my UITableView screens
  • Check this code for retain cycles using the uikit-max rules

How to install uikit-max

1Skills CLI (Vercel)

npx skills add tornikegomareli/UIKit-Agent-Skill --skill uikit-max -a claude-code

2Manually: put the files in place

~/.claude/skills/uikit-max/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/uikit-max/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about uikit-max

How do I install uikit-max in Claude?

Run npx skills add tornikegomareli/UIKit-Agent-Skill --skill uikit-max -a claude-code. The skill file then lands at ~/.claude/skills/uikit-max/SKILL.md.

What does uikit-max do?

It reviews UIKit code for deprecated APIs, Auto Layout problems, controller architecture, accessibility and performance, then returns a prioritized list of findings.

Does it work on a SwiftUI project?

No. SwiftUI-only projects and Combine-only logic without a UIKit dependency are outside what it covers.

Source text

SKILL.md · MIT
---
name: uikit-max
description: >-
  Comprehensively reviews UIKit code for best practices on modern APIs,
  architecture, and performance. Use when reading, writing, or reviewing
  UIKit-based iOS projects, including UIViewController, UITableView,
  UICollectionView, Auto Layout, or programmatic UI code. Also use when
  migrating legacy UIKit patterns to modern equivalents. Do not use for
  SwiftUI-only projects or Combine-only logic with no UIKit dependency.
license: MIT
metadata:
  author: tgomareli
  version: "1.0"
---

Review Swift and UIKit code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems — do not nitpick or invent issues.

Review process:

1. Check for deprecated API using `references/api.md`.
1. Check that views, subclassing, and composition patterns follow best practices using `references/views.md`.
1. Validate Auto Layout usage and constraint patterns using `references/layout.md`.
1. Ensure view controller lifecycle and architecture are correct using `references/controllers.md`.
1. Ensure navigation patterns are modern and maintainable using `references/navigation.md`.
1. Validate UITableView and UICollectionView usage using `references/tableview-collectionview.md`.
1. Ensure the code uses designs that are accessible and compliant with Apple's Human Interface Guidelines using `references/design.md`.
1. Validate accessibility compliance including Dynamic Type, VoiceOver, and traits using `references/accessibility.md`.
1. Ensure the code runs efficiently using `references/performance.md`.
1. Check concurrency and thread safety using `references/concurrency.md`.
1. Quick validation of Swift code using `references/swift.md`.
1. Final code hygiene check using `references/hygiene.md`.

If doing a partial review, load only the relevant reference files.


## Core Instructions

- iOS 26 exists and is the latest iOS version. Target iOS 17 or later as the minimum deployment target for new code, unless the project specifies otherwise.
- Target Swift 6.2 or later, using modern Swift concurrency.
- **Respect the project's deployment target.** Before suggesting a modern API, check its availability. If the project targets an older iOS version, recommend the best available alternative and wrap newer APIs in `if #available` checks. Reference files mark key APIs with their iOS version (e.g., "iOS 15+"). Do not suggest APIs unavailable at the project's minimum target without providing a fallback.
- As a UIKit developer, the user expects UIKit patterns. Do not suggest SwiftUI replacements unless explicitly requested.
- Do not introduce third-party frameworks without asking first.
- Break different types up into different Swift files rather than placing multiple classes, structs, or enums into a single file.
- Use a consistent project structure, with folder layout determined by app features.
- Prefer programmatic UI with Auto Layout anchors over Storyboards and XIBs for new code, unless the project already uses Interface Builder extensively.


## Output Format

Organize findings by file. For each issue:

1. State the file and relevant line(s).
2. Name the rule being violated (e.g., "Use `UIAlertController` instead of `UIAlertView`").
3. Show a brief before/after code fix.

Skip files with no issues. End with a prioritized summary of the most impactful changes to make first.

Example output:

### ProfileViewController.swift

**Line 8: Use `UIAlertController` instead of deprecated `UIAlertView`.**

```swift
// Before
let alert = UIAlertView(title: "Error", message: msg, delegate: self, cancelButtonTitle: "OK")
alert.show()

// After
let alert = UIAlertController(title: "Error", message: msg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default))
present(alert, animated: true)
```

**Line 24: Batch constraint activation with `NSLayoutConstraint.activate`.**

```swift
// Before
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
label.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true

// After
NSLayoutConstraint.activate([
    label.topAnchor.constraint(equalTo: view.topAnchor),
    label.leadingAnchor.constraint(equalTo: view.leadingAnchor)
])
```

**Line 42: Set `translatesAutoresizingMaskIntoConstraints = false` before adding constraints.**

```swift
// Before
view.addSubview(label)
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true

// After
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
NSLayoutConstraint.activate([
    label.topAnchor.constraint(equalTo: view.topAnchor)
])
```

### Summary

1. **Deprecated API (high):** `UIAlertView` on line 8 must be replaced with `UIAlertController`.
2. **Layout (medium):** Individual constraint activation on line 24 should use `NSLayoutConstraint.activate`.
3. **Layout (medium):** Missing `translatesAutoresizingMaskIntoConstraints` on line 42 causes constraint conflicts.

End of example.


## References

- `references/api.md` — deprecated UIKit APIs and their modern replacements.
- `references/views.md` — UIView lifecycle, composition, subclassing, and custom drawing.
- `references/layout.md` — Auto Layout, layout anchors, UIStackView, intrinsic content size, Safe Area.
- `references/controllers.md` — UIViewController lifecycle, container controllers, avoiding Massive View Controller.
- `references/navigation.md` — navigation controllers, tab bars, coordinator pattern, modal presentation.
- `references/tableview-collectionview.md` — diffable data sources, compositional layout, cell configuration, prefetching.
- `references/design.md` — Human Interface Guidelines, UIAppearance, trait collections, Dark Mode, adaptive layouts.
- `references/accessibility.md` — VoiceOver, Dynamic Type, accessibility traits, labels, and hints.
- `references/performance.md` — off-screen rendering, layer optimization, image caching, main thread performance.
- `references/concurrency.md` — main thread safety, async/await, DispatchQueue migration, background tasks.
- `references/swift.md` — modern Swift code, Swift concurrency, Objective-C interop.
- `references/hygiene.md` — memory management, retain cycles, KVO/notification cleanup, deinit patterns.

© tgomareli · MIT · tornikegomareli/UIKit-Agent-Skill

Similar skills

Everything for Mobile →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor