uikit-guidelines-cursorrules-prompt-file — правило для Cursor
Набор инструкций по вёрстке интерфейсов UIKit на Swift без Storyboard. Задаёт вёрстку через SnapKit, разделение UI и моделей, а также передачу событий замыканиями.
.cursor/rules/uikit-guidelines-cursorrules-prompt-file.mdcЧто делает uikit-guidelines-cursorrules-prompt-file
Правило направляет генерацию кода под iOS на чистый UIKit без XIB и Storyboard. Любой интерфейс собирается кодом через UIView, UIButton и UITableViewCell. Для сборки автолейаута Cursor обязуется применять исключительно библиотеку SnapKit, избегая NSLayoutConstraint, и сохранять поддержку Dynamic Type вместе с Safe Area.
Компоненты интерфейса изолируются от прямых обращений к DTO и моделям данных. Вся привязка идёт через фабрики, паттерны Builder или контроллеры. События нажатий и жестов настраиваются через замыкания, куда передаётся self вызвавшего компонента. Без подключённого пакета SnapKit генерируемый код сборку не пройдёт. Комментарии в коде модель не удаляет.
Какие задачи решает
- отказаться от Storyboard и верстать экраны кодом
- заменить громоздкий NSLayoutConstraint на синтаксис SnapKit
- изолировать модели данных от компонентов представления
- передавать события от кнопок через замыкания со ссылкой на компонент
Примеры запросов агенту
- Создай экран профиля на UIKit с кнопкой редактирования и аватаром
- Собери ячейку таблицы для ленты новостей со связкой через фабрику
- Напиши кастомную кнопку с замыканием для обработки нажатия
Как установить uikit-guidelines-cursorrules-prompt-file
Вручную: положить файлы
.cursor/rules/uikit-guidelines-cursorrules-prompt-file.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/uikit-guidelines-cursorrules-prompt-file.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/uikit-guidelines-cursorrules-prompt-file.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/uikit-guidelines-cursorrules-prompt-file.mdВручную: положить файлы
.clinerules/uikit-guidelines-cursorrules-prompt-file.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о uikit-guidelines-cursorrules-prompt-file
Как установить uikit-guidelines-cursorrules-prompt-file в Cursor?
Создайте файл правила по пути .cursor/rules/uikit-guidelines-cursorrules-prompt-file.mdc в корне проекта и сохраните в него инструкции.
Что делает uikit-guidelines-cursorrules-prompt-file?
Инструктирует модель генерировать UI на Swift под UIKit исключительно программно, используя SnapKit для вёрстки и изолируя модели от представлений.
Обязательно ли использовать SnapKit с этим правилом?
Да, правило прямо запрещает NSLayoutConstraint и требует формировать все констрейнты только через библиотеку SnapKit.
Исходный текст
uikit-guidelines-cursorrules-prompt-file.mdc · CC0-1.0
--- description: "Cursor rules for UIKit development guidelines." globs: **/* alwaysApply: false --- you are an expert in coding with swift, iOS, UIKit. you always write maintainable code and clean code. focus on latest documentation and features. your descriptions should be short and concise. don't remove any comments. UIKit UI Design Principles: 1. Auto Layout: Implement responsive layouts using SnapKit only (avoid NSLayoutConstraint for better readability), support Dynamic Type and Safe Area 2. Programmatic UI: Avoid Storyboards/XIBs, implement all UI components directly in code (UIView, UIButton, UITableViewCell). Use view composition and custom view subclasses for reusability 3. UI Components must not directly access models or DTOs. Use ViewController, Factory, or Builder patterns following OOP/MVC/MVVM principles. Below are good and bad practice examples: good practice: ```swift let user = User(name: "Alice", email: "[email protected]") let factory = UserFactory() /// This way UserView doesn't access User model directly, following Apple's MVC principles let userView = factory.createUserView(user: user) ``` bad practice: ```swift let user = User(name: "Alice", email: "[email protected]") /// This exposes UserView to User model, violating MVC principles let userView = UserView(user: user) ``` 4. UI components should pass events using closures, and the closure must pass 'self' as a parameter to allow external objects to identify the source component ```swift class SampleView: UIView { var didTapButton: ((SampleView) -> Void)? private let button = UIButton() override init(frame: CGRect) { super.init(frame: frame) setupUI() button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) } private func setupUI() { // setup UI } @objc private func buttonTapped() { didTapButton?(self) } } ```
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules