SwiftUI iOS App taste — промпт для ChatGPT и Claude.ai: правила
Набор правил для SwiftUI-проекта: как строить экраны, где хранить состояние и что делать с устаревшими API. Пригодится, когда агент пишет новый код для iOS.
Открыть на GitHubЧто делает SwiftUI iOS App taste
Промпт задаёт агенту позицию senior iOS-разработчика. Новые экраны — на SwiftUI, а к UIKit он советует спускаться только через UIViewRepresentable, если в SwiftUI не хватает готового компонента. Вьюхи держите мелкими: как только body переваливает за 50 строк, часть выносится в отдельную вьюху.
Состояние живёт в @State у самой нижней вьюхи, которой оно нужно, дальше вниз идут биндинги — глобальные синглтоны не приветствуются. Для вью-моделей на iOS 17+ предписан @Observable из Observation, а не ObservableObject с @Published. Асинхронный код — только Swift Concurrency: async/await, акторы, структурные задачи; новые API на completion-handler и Combine не берём. Запускать работу советует через модификатор .task, чтобы она отменялась при исчезновении вьюхи.
Навигация строится на NavigationStack с типизированным путём через небольшой координатор. Нагрузка состояния описана enum-ом (idle, loading, loaded, failed) вместо набора булевых флагов. Есть и жёсткие требования: главный поток нельзя блокировать сетью, декодированием или диском, а токены и секреты хранятся в Keychain, не в UserDefaults и не в бандле. Из-за строгой проверки конкурентности (режим языка Swift 6) предупреждения о Sendable придётся разбирать сразу, иначе проект быстро зарастёт ошибками.
Какие задачи решает
- спроектировать новый экран на SwiftUI без расползания вьюхи
- перевести вью-модель с ObservableObject на @Observable
- запустить асинхронную загрузку с автоотменой при уходе с экрана
- описать состояния загрузки одним enum вместо флагов
- разложить фичу на локальные Swift-пакеты вместо CocoaPods
Примеры запросов агенту
- Собери экран профиля на SwiftUI: состояние в @State у нижней вьюхи, загрузку запусти через .task
- Перепиши эту вью-модель на @Observable для iOS 17+ и убери @Published
- Разбей этот body на подвьюхи и добавь #Preview с пустым, загруженным и ошибочным состоянием
Как установить SwiftUI iOS App taste
Как использовать
Вставьте текст в начало диалога или в инструкции проекта
Вручную: положить файлы
.claude/commands/prompts.csv.mdИз того же набора73
Весь набор →Похожие
Рядом в каталоге
Всё по теме «Мобильная разработка» →Вопросы о SwiftUI iOS App taste
Как установить SwiftUI iOS App taste в Claude?
Готовой команды установки нет: промпт вставляют в чат как обычный текст или кладут в системную инструкцию. Для Claude в репозитории лежит файл .claude/commands/prompts.csv.md.
Что делает SwiftUI iOS App taste?
Задаёт агенту правила senior iOS-разработчика: SwiftUI для новых экранов, Observation для вью-моделей, Swift Concurrency вместо completion-handler, Keychain для секретов.
Нужен ли этот промпт, если проект на UIKit?
Правила рассчитаны на SwiftUI-код и iOS 17+ для @Observable. В проекте без SwiftUI применимой остаётся только часть про конкурентность, Keychain и логирование.
Исходный текст
prompts.csv · CC0-1.0
# SwiftUI iOS App taste of a senior iOS developer - Build new screens in SwiftUI and drop to UIKit only through UIViewRepresentable for gaps. Confidence: 0.85 - Use the Observation framework (@Observable) for view models on iOS 17+, not ObservableObject with @Published. Confidence: 0.85 - Keep views small and composable; extract a subview once a body passes about 50 lines. Confidence: 0.80 - Own state with @State at the lowest view that needs it and pass bindings down instead of global singletons. Confidence: 0.85 - Use Swift Concurrency (async/await, actors, structured tasks) everywhere; no new completion-handler or Combine-based APIs. Confidence: 0.85 - Start async work with the .task modifier so it is cancelled automatically when the view disappears. Confidence: 0.90 - Turn on strict concurrency checking (Swift 6 language mode) and fix Sendable warnings early. Confidence: 0.80 - Drive navigation with NavigationStack and a typed path, routed through a small coordinator or router object. Confidence: 0.80 - Inject dependencies through initializers or the Environment so previews and tests can swap in fakes. Confidence: 0.85 - Split features into local Swift packages managed by Swift Package Manager; avoid CocoaPods for new projects. Confidence: 0.85 - Give every view a #Preview with realistic sample data, including empty, loading and error states. Confidence: 0.85 - Model loading state as an enum (idle, loading, loaded, failed) rather than several booleans. Confidence: 0.90 - Use SwiftData for simple local persistence and Core Data or GRDB when you need fine-grained migrations or performance. Confidence: 0.65 - Support Dynamic Type, Dark Mode and VoiceOver labels from the first commit. Confidence: 0.90 - Use SF Symbols and semantic system colors before adding custom assets. Confidence: 0.80 - Localize with String Catalogs from day one, even for a single-language launch. Confidence: 0.75 - Unit test view models and services with Swift Testing; keep UI tests to a few critical flows. Confidence: 0.80 - Profile with Instruments before optimizing and watch for unnecessary view body recomputation. Confidence: 0.75 - Never block the main thread with networking, decoding or disk I/O. Confidence: 0.95 - Store secrets and tokens in the Keychain, never in UserDefaults or the bundle. Confidence: 0.95 - Ship through Xcode Cloud or fastlane with automatic build numbers and TestFlight for every merge to main. Confidence: 0.75 - Use a structured Logger (os.Logger) with categories instead of print statements. Confidence: 0.85
© f · CC0-1.0 · f/prompts.chat