--- name: kotlin-standards description: Используй при написании, ревью и проверке кода на 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/... # инструментальные тесты / # модульная структура ``` > Ориентир: модульный 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 со ссылкой на тикет