Files
dev e04a2ddb72 docs(skills): fill language standards with industry defaults
Per decision to use common industry practice now and tune later:
- structures: standard layouts (go cmd/internal/pkg, python src-layout, rust cargo, ts pnpm workspaces, kotlin Gradle modules, swift SwiftPM)
- linters: default rulesets (golangci base, clippy -D warnings, ruff+mypy, typescript-eslint+prettier, ktlint+detekt, swiftlint+swiftformat)
- test runners: TS=vitest; coverage soft targets (~70-80%) marked '(пороги уточним)'
- swift deps: SwiftPM (Package.resolved), CocoaPods legacy-only
- reworded intros: values are industry defaults to be tuned, no raw TODO markers left

Verified: no TODO markers remain in *-standards; all six skills load via pi.
2026-07-16 13:25:18 +03:00

58 lines
3.4 KiB
Markdown

---
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/<Target>/...
Tests/<Target>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 <Scheme> -destination 'platform=iOS Simulator,name=iPhone 15'`.
- Покрытие: `swift test --enable-code-coverage`, мягкий ориентир. (пороги уточним)
## Сборка и зависимости
- Сборка: `swift build` (или `xcodebuild build -scheme <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 со ссылкой на тикет