From e98e4ca9ae6b3d8fa76a871526556c0dd318af95 Mon Sep 17 00:00:00 2001 From: Aleksey Shakhmatov Date: Thu, 16 Jul 2026 12:31:12 +0300 Subject: [PATCH] feat(skills): add kotlin-standards + swift-standards for mobile profile - kotlin-standards: gradle build/test, ktlint/detekt, Android lint; company specifics TODO - swift-standards: SwiftPM/xcodebuild, swiftformat/swiftlint, XCTest; company specifics TODO - wire mobile profile -> kotlin+swift; 'all' now includes both; README matrix updated - verified all six *-standards skills load via pi RPC --- README.md | 5 ++- install.sh | 6 ++-- skills/kotlin-standards/SKILL.md | 60 ++++++++++++++++++++++++++++++++ skills/swift-standards/SKILL.md | 54 ++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+), 6 deletions(-) create mode 100644 skills/kotlin-standards/SKILL.md create mode 100644 skills/swift-standards/SKILL.md diff --git a/README.md b/README.md index b6b89c4..7c1eb9b 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ PI_KIT_PROFILE=backend curl -fsSL https://git.codelab.vc/ai/pi-kit/-/raw/main/in | `frontend` | typescript | frontend-design | | `backend` | go, rust, python | — | | `qa` | python, typescript | — | -| `mobile` | — (TODO: kotlin/swift) | — | +| `mobile` | kotlin, swift | — | Сменить профиль позже: `PI_KIT_PROFILE=frontend ./install.sh` (или перезапусти установку). @@ -159,8 +159,7 @@ pi-kit/ Чтобы поменять маппинг профиль→скилы — правь блок `case "$PROFILE"` и `COMMON_PUBLIC_SKILLS` в `install.sh`. Языковой скилл добавляется как обычный (см. ниже) и подключается к нужному -профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile` (последний пока без -языковых стандартов — TODO kotlin/swift). +профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile`. ### Как добавить шаблон-команду diff --git a/install.sh b/install.sh index 15ecfbb..2154db2 100755 --- a/install.sh +++ b/install.sh @@ -118,11 +118,11 @@ case "$PROFILE" in qa) # TODO: уточнить стек тестировщиков; по умолчанию — Python и TS (автотесты) LANG_BUNDLED="python-standards typescript-standards" ;; - mobile) # TODO: добавить kotlin-standards/swift-standards и мобильные скилы - LANG_BUNDLED="" + mobile) # Android (Kotlin) + iOS (Swift) + LANG_BUNDLED="kotlin-standards swift-standards" ;; *) # all: не гейтим, включаем все языковые скилы - LANG_BUNDLED="go-standards rust-standards python-standards typescript-standards" + LANG_BUNDLED="go-standards rust-standards python-standards typescript-standards kotlin-standards swift-standards" ;; esac diff --git a/skills/kotlin-standards/SKILL.md b/skills/kotlin-standards/SKILL.md new file mode 100644 index 0000000..8ee9039 --- /dev/null +++ b/skills/kotlin-standards/SKILL.md @@ -0,0 +1,60 @@ +--- +name: kotlin-standards +description: Используй при написании, ревью и проверке кода на Kotlin (Android и backend) — структура проекта, запуск ktlint/detekt, сборка и тесты через Gradle, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Kotlin-код, готовишь MR, а также в командах /bugfix, /feature и /review для Kotlin/Android-репозиториев. +--- + +# Стандарты Kotlin + +Один из наших языков — **Kotlin** (в первую очередь Android). Ниже — общепринятые дефолты +экосистемы; специфичное для компании помечено `TODO` — уточняй, не выдумывай. + +## Структура + +Ориентир (уточняется под компанию): + +``` +settings.gradle.kts +build.gradle.kts +app/ # Android-модуль приложения + src/main/kotlin/... + src/test/... # unit-тесты + src/androidTest/... # инструментальные тесты +/ # модульная структура +``` + + + +## Линтеры и форматирование + +- Стиль/формат: **ktlint** — `./gradlew ktlintCheck` (автоформат `./gradlew ktlintFormat`). +- Статический анализ: **detekt** — `./gradlew detekt` (конфиг `detekt.yml`). +- Android Lint: `./gradlew lint`. + + +## Тесты + +- Unit: `./gradlew test`. +- Инструментальные (Android): `./gradlew connectedAndroidTest` (нужен эмулятор/устройство). +- Требования к покрытию / обязательные виды тестов: ``. + +## Сборка и зависимости + +- Сборка: `./gradlew assembleDebug` (релиз — `assembleRelease`). +- Версии зависимостей — через version catalog (`gradle/libs.versions.toml`), lock коммитим. + +## Коммиты и MR + +- **Формат коммитов:** ``. +- **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые + ветки запрещён — расширение `permission-gate` дополнительно переспросит. +- Перед MR: `ktlintCheck`, `detekt`, `test` (и `lint`) — всё зелёное. +- Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`). + +## Чек-лист перед MR + +- [ ] `./gradlew ktlintCheck` чисто +- [ ] `./gradlew detekt` чисто +- [ ] `./gradlew test` зелёные, есть тесты на новую логику / фикс +- [ ] `./gradlew lint` без новых предупреждений +- [ ] нет секретов и закоммиченных ключей/`.env` +- [ ] описание MR со ссылкой на тикет diff --git a/skills/swift-standards/SKILL.md b/skills/swift-standards/SKILL.md new file mode 100644 index 0000000..673ba6a --- /dev/null +++ b/skills/swift-standards/SKILL.md @@ -0,0 +1,54 @@ +--- +name: swift-standards +description: Используй при написании, ревью и проверке кода на Swift (iOS/macOS) — структура проекта, запуск swiftformat/swiftlint, сборка и тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Swift-код, готовишь MR, а также в командах /bugfix, /feature и /review для Swift/iOS-репозиториев. +--- + +# Стандарты Swift + +Один из наших языков — **Swift** (iOS/macOS). Ниже — общепринятые дефолты экосистемы; +специфичное для компании помечено `TODO` — уточняй, не выдумывай. + +## Структура + +Ориентир (уточняется под компанию): + +``` +Package.swift # SwiftPM, или *.xcodeproj / *.xcworkspace +Sources//... +Tests/Tests/... +``` + + + +## Линтеры и форматирование + +- Форматирование: **swiftformat** — `swiftformat --lint .` (автоформат `swiftformat .`). +- Линтер: **swiftlint** — `swiftlint` (конфиг `.swiftlint.yml`), в CI `swiftlint --strict`. + + +## Тесты + +- SwiftPM: `swift test`. +- Xcode-проект: `xcodebuild test -scheme -destination 'platform=iOS Simulator,name=iPhone 15'`. +- Требования к покрытию / обязательные виды тестов: ``. + +## Сборка и зависимости + +- Сборка: `swift build` (или `xcodebuild build -scheme `). +- Зависимости: `` — lock (`Package.resolved`/`Podfile.lock`) коммитим. + +## Коммиты и MR + +- **Формат коммитов:** ``. +- **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые + ветки запрещён — расширение `permission-gate` дополнительно переспросит. +- Перед MR: `swiftformat --lint .`, `swiftlint --strict`, тесты — всё зелёное. +- Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`). + +## Чек-лист перед MR + +- [ ] `swiftformat --lint .` чисто +- [ ] `swiftlint --strict` чисто +- [ ] тесты зелёные, есть тесты на новую логику / фикс +- [ ] нет секретов и закоммиченных ключей/`.env` +- [ ] описание MR со ссылкой на тикет