{"id":46131115,"url":"https://github.com/ivan-magda/uikit-expert-skill","last_synced_at":"2026-03-06T07:01:34.125Z","repository":{"id":340953595,"uuid":"1168306260","full_name":"ivan-magda/uikit-expert-skill","owner":"ivan-magda","description":"Agent skill for writing correct, modern UIKit code in Swift. Covers lifecycle, memory, concurrency, collection views, and iOS 13-26 APIs.","archived":false,"fork":false,"pushed_at":"2026-02-27T14:32:08.000Z","size":268,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-04T06:59:51.235Z","etag":null,"topics":["agent-skills","agents-md","claude-code","claude-plugin","cursor-rules","ios","ios-development","skills","swift","uikit"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivan-magda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-27T08:33:17.000Z","updated_at":"2026-03-02T22:33:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ivan-magda/uikit-expert-skill","commit_stats":null,"previous_names":["ivan-magda/uikit-expert-skill"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ivan-magda/uikit-expert-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-magda%2Fuikit-expert-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-magda%2Fuikit-expert-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-magda%2Fuikit-expert-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-magda%2Fuikit-expert-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivan-magda","download_url":"https://codeload.github.com/ivan-magda/uikit-expert-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-magda%2Fuikit-expert-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30111779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skills","agents-md","claude-code","claude-plugin","cursor-rules","ios","ios-development","skills","swift","uikit"],"created_at":"2026-03-02T03:37:51.681Z","updated_at":"2026-03-05T06:00:45.679Z","avatar_url":"https://github.com/ivan-magda.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# UIKit Expert Skill\n\nAn AI Agent Skill for writing correct, performant, and modern UIKit code in Swift. Designed to work with Claude, Cursor, Windsurf, Copilot, and other AI coding assistants that support the Agent Skills / AGENTS.md format.\n\n\u003cimg src=\"demo.gif\" alt=\"Install uikit-expert skill\" width=\"600\"\u003e\n\n## Philosophy\n\nThis skill focuses on **facts and best practices**, not architectural opinions:\n\n**Covered:**\n\n- Correctness — lifecycle ordering, retain cycle prevention, thread safety\n- Performance — constraint churn avoidance, scroll optimization, image downsampling\n- Modern APIs — diffable data sources, compositional layout, cell configuration, Observation\n\n**Intentionally excluded:**\n\n- No architecture mandates — no MVVM/VIPER/Coordinator enforcement\n- No formatting rules — no property ordering or file structure requirements\n\n## Structure\n\n```\nuikit-expert-skill/\n├── .claude-plugin/\n│   ├── plugin.json                             # Claude Code plugin manifest\n│   └── marketplace.json                        # Claude Code marketplace catalog\n├── AGENTS.md                                   # Meta-rules for AI agents\n└── uikit-expert/\n    ├── SKILL.md                                # Decision tree router (entry point)\n    └── references/\n        ├── view-controller-lifecycle.md        # Lifecycle ordering, viewIsAppearing\n        ├── auto-layout.md                      # Batch activation, constraint churn, animation\n        ├── modern-collection-views.md          # Diffable, compositional, CellRegistration\n        ├── cell-configuration.md               # UIContentConfiguration, configurationUpdateHandler\n        ├── list-performance.md                 # Prefetching, cell reuse, scroll performance\n        ├── navigation-patterns.md              # Bar appearance, concurrent transitions, deep links\n        ├── animation-patterns.md               # UIView.animate, PropertyAnimator, CAAnimation\n        ├── memory-management.md                # Retain cycles, [weak self], delegate ownership\n        ├── concurrency-main-thread.md          # @MainActor, Task lifecycle, Swift 6\n        ├── uikit-swiftui-interop.md            # UIHostingController, UIViewRepresentable\n        ├── image-loading.md                    # Downsampling, decoded bitmap math, cell race condition\n        ├── keyboard-scroll.md                  # UIKeyboardLayoutGuide, scroll insets\n        ├── adaptive-appearance.md              # Traits, Dynamic Type, dark mode, VoiceOver\n        └── modern-uikit-apis.md                # Observation, updateProperties(), .flushUpdates, UIScene\n```\n\n## How It Works\n\n**SKILL.md** acts as a decision tree router. Based on user intent (review / improve / implement), it directs the AI agent to the relevant reference documents. Each reference document is self-contained with:\n\n- Concrete correct and incorrect Swift code examples\n- \"Why\" explanations for each recommendation\n- Summary checklists at the bottom\n\n## Coverage\n\n| Domain             | Key Topics                                                                                       |\n| ------------------ | ------------------------------------------------------------------------------------------------ |\n| Lifecycle          | `viewIsAppearing` (iOS 13+), child VC containment, deallocation verification                     |\n| Auto Layout        | Batch activation, zero-churn patterns, constraint animation, `.flushUpdates` (iOS 26)            |\n| Collection Views   | Diffable data sources, stable identity, compositional layout, list configuration                 |\n| Cell Configuration | `UIContentConfiguration`, `UIBackgroundConfiguration`, `configurationUpdateHandler`              |\n| List Performance   | Prefetching with Swift concurrency, cell reuse race condition, `reconfigureItems`                |\n| Navigation         | 4-slot `UINavigationBarAppearance`, concurrent transition guards, iOS 26 Liquid Glass            |\n| Animation          | API selection guide, `UIViewPropertyAnimator` state machine, spring animations                   |\n| Memory             | 4 retain cycle traps (Timer, NotificationCenter, CADisplayLink, nested closures), Task retention |\n| Concurrency        | `@MainActor`, Task lifecycle, Swift 6 migration, `Task.detached` pitfalls                        |\n| Interop            | `UIHostingController` containment, `sizingOptions`, `UIViewRepresentable` lifecycle              |\n| Images             | ImageIO downsampling, decoded bitmap math, cancel/clear/verify pattern                           |\n| Keyboard           | `UIKeyboardLayoutGuide`, iPad floating keyboard, scroll view sync                                |\n| Adaptive           | `registerForTraitChanges`, Dynamic Type, CGColor dark mode trap, VoiceOver                       |\n| Modern APIs        | Observation framework, `updateProperties()`, `.flushUpdates`, UIScene mandatory                  |\n\n## iOS Version Coverage\n\n- **iOS 13+**: `viewIsAppearing` (back-deployed), `UINavigationBarAppearance`\n- **iOS 14+**: `UIContentConfiguration`, `CellRegistration`, compositional layout list configuration\n- **iOS 15+**: `UIKeyboardLayoutGuide`, `reconfigureItems`, `scrollEdgeAppearance` changes\n- **iOS 17+**: `registerForTraitChanges`, custom traits, spring animation API\n- **iOS 18+**: `UIObservationTrackingEnabled` (opt-in), automatic trait tracking\n- **iOS 26+**: `updateProperties()`, `.flushUpdates`, UIScene mandatory, Liquid Glass\n\n## How to Use This Skill\n\n### Option A: Using skills.sh (recommended)\n\nInstall this skill with a single command:\n\n```bash\nnpx skills add https://github.com/ivan-magda/uikit-expert-skill --skill uikit-expert\n```\n\nFor more information, [visit the skills.sh platform page](https://skills.sh/ivan-magda/uikit-expert-skill/uikit-expert).\n\nThen use the skill in your AI agent, for example:\n\n\u003e Use the uikit expert skill and review the current UIKit code for lifecycle, memory management, and performance improvements\n\n### Option B: Claude Code Plugin\n\n#### Personal Usage\n\nTo install this Skill for your personal use in Claude Code:\n\nAdd the marketplace:\n\n```bash\n/plugin marketplace add ivan-magda/uikit-expert-skill\n```\n\nInstall the Skill:\n\n```bash\n/plugin install uikit-expert@uikit-expert-skill\n```\n\n#### Project Configuration\n\nTo automatically provide this Skill to everyone working in a repository, configure the repository's `.claude/settings.json`:\n\n```json\n{\n  \"enabledPlugins\": {\n    \"uikit-expert@uikit-expert-skill\": true\n  },\n  \"extraKnownMarketplaces\": {\n    \"uikit-expert-skill\": {\n      \"source\": {\n        \"source\": \"github\",\n        \"repo\": \"ivan-magda/uikit-expert-skill\"\n      }\n    }\n  }\n}\n```\n\nWhen team members open the project, Claude Code will prompt them to install the Skill.\n\n### Option C: Manual install\n\n1. **Clone** this repository.\n2. **Install or symlink** the skill folder following your tool's official skills installation docs (see links below).\n3. **Use your AI tool** as usual and ask it to use the \"uikit-expert\" skill for UIKit tasks.\n\n#### Where to Save Skills\n\nFollow your tool's official documentation, here are a few popular ones:\n\n- **Codex:** [Where to save skills](https://developers.openai.com/codex/skills/#where-to-save-skills)\n- **Claude:** [Using Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview#using-skills)\n- **Cursor:** [Enabling Skills](https://cursor.com/docs/context/skills#enabling-skills)\n\n**How to verify**:\n\nYour agent should reference the workflow/checklists in `SKILL.md` and jump into the relevant reference file for your task.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-magda%2Fuikit-expert-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivan-magda%2Fuikit-expert-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-magda%2Fuikit-expert-skill/lists"}