--- name: swift-standards description: Используй при написании, ревью и проверке кода на Swift (iOS/macOS) — структура проекта, запуск swiftformat/swiftlint, сборка и тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Swift-код, готовишь MR, а также в командах /bugfix, /feature и /review для Swift/iOS-репозиториев. --- # Стандарты Swift Один из наших языков — **Swift** (iOS/macOS). Ниже — общепринятые дефолты экосистемы; значения под M.Video заполнены дефолтами индустрии — тюним позже. ## Структура Ориентир (уточняется под компанию): ``` Package.swift # SwiftPM, или *.xcodeproj / *.xcworkspace Sources//... Tests/Tests/... ``` > Ориентир: SwiftPM-пакет (`Package.swift`), `Sources/` + `Tests/`. Эталон уточним. ## Линтеры и форматирование - Форматирование: **swiftformat** — `swiftformat --lint .` (автоформат `swiftformat .`). - Линтер: **swiftlint** — `swiftlint` (конфиг `.swiftlint.yml`), в CI `swiftlint --strict`. Дефолт: SwiftLint + SwiftFormat (дефолтные конфиги). Корпоративный пресет уточним. ## Тесты - SwiftPM: `swift test`. - Xcode-проект: `xcodebuild test -scheme -destination 'platform=iOS Simulator,name=iPhone 15'`. - Покрытие: `swift test --enable-code-coverage`, мягкий ориентир. (пороги уточним) ## Сборка и зависимости - Сборка: `swift build` (или `xcodebuild build -scheme `). - Зависимости: **SwiftPM** (`Package.resolved` коммитим); CocoaPods — только для легаси. ## Коммиты и MR - **Формат коммитов:** Conventional Commits (`feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `test:` …). - **Ветки и деплой:** фича-ветки — от `main` (в имя ветки желательно включать ключ тикета). Деплой управляется ветками/тегами: ветка `release-*` → раскатка на **stage**; тег `v*` → раскатка в **прод**. Ветки `release-*` и теги `v*` без необходимости не пушь — `permission-gate` переспросит. - **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые ветки запрещён — расширение `permission-gate` дополнительно переспросит. - Перед MR: `swiftformat --lint .`, `swiftlint --strict`, тесты — всё зелёное. - Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`). ## Чек-лист перед MR - [ ] `swiftformat --lint .` чисто - [ ] `swiftlint --strict` чисто - [ ] тесты зелёные, есть тесты на новую логику / фикс - [ ] нет секретов и закоммиченных ключей/`.env` - [ ] описание MR со ссылкой на тикет