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.
3.9 KiB
3.9 KiB
name, description
| name | description |
|---|---|
| kotlin-standards | Используй при написании, ревью и проверке кода на Kotlin (Android и backend) — структура проекта, запуск ktlint/detekt, сборка и тесты через Gradle, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Kotlin-код, готовишь MR, а также в командах /bugfix, /feature и /review для Kotlin/Android-репозиториев. |
Стандарты Kotlin
Один из наших языков — Kotlin (в первую очередь Android). Ниже — общепринятые дефолты экосистемы; специфичное для компании заполнено дефолтами индустрии — тюним под M.Video позже.
Структура
Ориентир (уточняется под компанию):
settings.gradle.kts
build.gradle.kts
app/ # Android-модуль приложения
src/main/kotlin/...
src/test/... # unit-тесты
src/androidTest/... # инструментальные тесты
<feature-module>/ # модульная структура
Ориентир: модульный Android-проект на Gradle (Kotlin DSL), актуальные AGP/Gradle. Эталон уточним.
Линтеры и форматирование
- Стиль/формат: ktlint —
./gradlew ktlintCheck(автоформат./gradlew ktlintFormat). - Статический анализ: detekt —
./gradlew detekt(конфигdetekt.yml). - Android Lint:
./gradlew lint. Дефолт: ktlint (official code style) + стартовыйdetekt.yml. Корпоративный пресет добавим позже.
Тесты
- Unit:
./gradlew test. - Инструментальные (Android):
./gradlew connectedAndroidTest(нужен эмулятор/устройство). - Покрытие: замер через JaCoCo, мягкий ориентир; критичную логику — обязательно. (пороги уточним)
Сборка и зависимости
- Сборка:
./gradlew assembleDebug(релиз —assembleRelease). - Версии зависимостей — через version catalog (
gradle/libs.versions.toml), lock коммитим.
Коммиты и MR
- Формат коммитов: Conventional Commits (
feat:,fix:,chore:,docs:,refactor:,test:…). - Ветки и деплой: фича-ветки — от
main(в имя ветки желательно включать ключ тикета). Деплой управляется ветками/тегами: веткаrelease-*→ раскатка на stage; тегv*→ раскатка в прод. Веткиrelease-*и тегиv*без необходимости не пушь —permission-gateпереспросит. - MR обязателен (см. корпоративные правила из контекста сессии). Прямой push в защищённые
ветки запрещён — расширение
permission-gateдополнительно переспросит. - Перед MR:
ktlintCheck,detekt,test(иlint) — всё зелёное. - Описание MR: что и зачем, как проверено, ссылка на тикет (скилл
jira-workflow).
Чек-лист перед MR
./gradlew ktlintCheckчисто./gradlew detektчисто./gradlew testзелёные, есть тесты на новую логику / фикс./gradlew lintбез новых предупреждений- нет секретов и закоммиченных ключей/
.env - описание MR со ссылкой на тикет