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
This commit is contained in:
@@ -39,7 +39,7 @@ PI_KIT_PROFILE=backend curl -fsSL https://git.codelab.vc/ai/pi-kit/-/raw/main/in
|
|||||||
| `frontend` | typescript | frontend-design |
|
| `frontend` | typescript | frontend-design |
|
||||||
| `backend` | go, rust, python | — |
|
| `backend` | go, rust, python | — |
|
||||||
| `qa` | python, typescript | — |
|
| `qa` | python, typescript | — |
|
||||||
| `mobile` | — (TODO: kotlin/swift) | — |
|
| `mobile` | kotlin, swift | — |
|
||||||
|
|
||||||
Сменить профиль позже: `PI_KIT_PROFILE=frontend ./install.sh` (или перезапусти установку).
|
Сменить профиль позже: `PI_KIT_PROFILE=frontend ./install.sh` (или перезапусти установку).
|
||||||
|
|
||||||
@@ -159,8 +159,7 @@ pi-kit/
|
|||||||
|
|
||||||
Чтобы поменять маппинг профиль→скилы — правь блок `case "$PROFILE"` и `COMMON_PUBLIC_SKILLS`
|
Чтобы поменять маппинг профиль→скилы — правь блок `case "$PROFILE"` и `COMMON_PUBLIC_SKILLS`
|
||||||
в `install.sh`. Языковой скилл добавляется как обычный (см. ниже) и подключается к нужному
|
в `install.sh`. Языковой скилл добавляется как обычный (см. ниже) и подключается к нужному
|
||||||
профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile` (последний пока без
|
профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile`.
|
||||||
языковых стандартов — TODO kotlin/swift).
|
|
||||||
|
|
||||||
### Как добавить шаблон-команду
|
### Как добавить шаблон-команду
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -118,11 +118,11 @@ case "$PROFILE" in
|
|||||||
qa) # TODO: уточнить стек тестировщиков; по умолчанию — Python и TS (автотесты)
|
qa) # TODO: уточнить стек тестировщиков; по умолчанию — Python и TS (автотесты)
|
||||||
LANG_BUNDLED="python-standards typescript-standards"
|
LANG_BUNDLED="python-standards typescript-standards"
|
||||||
;;
|
;;
|
||||||
mobile) # TODO: добавить kotlin-standards/swift-standards и мобильные скилы
|
mobile) # Android (Kotlin) + iOS (Swift)
|
||||||
LANG_BUNDLED=""
|
LANG_BUNDLED="kotlin-standards swift-standards"
|
||||||
;;
|
;;
|
||||||
*) # all: не гейтим, включаем все языковые скилы
|
*) # 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
|
esac
|
||||||
|
|
||||||
|
|||||||
@@ -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/... # инструментальные тесты
|
||||||
|
<feature-module>/ # модульная структура
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- TODO: заполнить реальной эталонной структурой проекта/модулей и версией AGP/Gradle -->
|
||||||
|
|
||||||
|
## Линтеры и форматирование
|
||||||
|
|
||||||
|
- Стиль/формат: **ktlint** — `./gradlew ktlintCheck` (автоформат `./gradlew ktlintFormat`).
|
||||||
|
- Статический анализ: **detekt** — `./gradlew detekt` (конфиг `detekt.yml`).
|
||||||
|
- Android Lint: `./gradlew lint`.
|
||||||
|
<!-- TODO: корпоративные конфиги ktlint/detekt (общий пресет), если есть -->
|
||||||
|
|
||||||
|
## Тесты
|
||||||
|
|
||||||
|
- Unit: `./gradlew test`.
|
||||||
|
- Инструментальные (Android): `./gradlew connectedAndroidTest` (нужен эмулятор/устройство).
|
||||||
|
- Требования к покрытию / обязательные виды тестов: `<!-- TODO -->`.
|
||||||
|
|
||||||
|
## Сборка и зависимости
|
||||||
|
|
||||||
|
- Сборка: `./gradlew assembleDebug` (релиз — `assembleRelease`).
|
||||||
|
- Версии зависимостей — через version catalog (`gradle/libs.versions.toml`), lock коммитим.
|
||||||
|
|
||||||
|
## Коммиты и MR
|
||||||
|
|
||||||
|
- **Формат коммитов:** `<!-- TODO: например Conventional Commits или свой -->`.
|
||||||
|
- **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые
|
||||||
|
ветки запрещён — расширение `permission-gate` дополнительно переспросит.
|
||||||
|
- Перед MR: `ktlintCheck`, `detekt`, `test` (и `lint`) — всё зелёное.
|
||||||
|
- Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`).
|
||||||
|
|
||||||
|
## Чек-лист перед MR
|
||||||
|
|
||||||
|
- [ ] `./gradlew ktlintCheck` чисто
|
||||||
|
- [ ] `./gradlew detekt` чисто
|
||||||
|
- [ ] `./gradlew test` зелёные, есть тесты на новую логику / фикс
|
||||||
|
- [ ] `./gradlew lint` без новых предупреждений
|
||||||
|
- [ ] нет секретов и закоммиченных ключей/`.env`
|
||||||
|
- [ ] описание MR со ссылкой на тикет
|
||||||
@@ -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/<Target>/...
|
||||||
|
Tests/<Target>Tests/...
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- TODO: заполнить реальной эталонной структурой (SwiftPM vs Xcodeproj, менеджер зависимостей: SPM/CocoaPods) -->
|
||||||
|
|
||||||
|
## Линтеры и форматирование
|
||||||
|
|
||||||
|
- Форматирование: **swiftformat** — `swiftformat --lint .` (автоформат `swiftformat .`).
|
||||||
|
- Линтер: **swiftlint** — `swiftlint` (конфиг `.swiftlint.yml`), в CI `swiftlint --strict`.
|
||||||
|
<!-- TODO: корпоративные конфиги swiftformat/swiftlint (общий пресет), если есть -->
|
||||||
|
|
||||||
|
## Тесты
|
||||||
|
|
||||||
|
- SwiftPM: `swift test`.
|
||||||
|
- Xcode-проект: `xcodebuild test -scheme <Scheme> -destination 'platform=iOS Simulator,name=iPhone 15'`.
|
||||||
|
- Требования к покрытию / обязательные виды тестов: `<!-- TODO -->`.
|
||||||
|
|
||||||
|
## Сборка и зависимости
|
||||||
|
|
||||||
|
- Сборка: `swift build` (или `xcodebuild build -scheme <Scheme>`).
|
||||||
|
- Зависимости: `<!-- TODO: SwiftPM / CocoaPods -->` — lock (`Package.resolved`/`Podfile.lock`) коммитим.
|
||||||
|
|
||||||
|
## Коммиты и MR
|
||||||
|
|
||||||
|
- **Формат коммитов:** `<!-- TODO: например Conventional Commits или свой -->`.
|
||||||
|
- **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые
|
||||||
|
ветки запрещён — расширение `permission-gate` дополнительно переспросит.
|
||||||
|
- Перед MR: `swiftformat --lint .`, `swiftlint --strict`, тесты — всё зелёное.
|
||||||
|
- Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`).
|
||||||
|
|
||||||
|
## Чек-лист перед MR
|
||||||
|
|
||||||
|
- [ ] `swiftformat --lint .` чисто
|
||||||
|
- [ ] `swiftlint --strict` чисто
|
||||||
|
- [ ] тесты зелёные, есть тесты на новую логику / фикс
|
||||||
|
- [ ] нет секретов и закоммиченных ключей/`.env`
|
||||||
|
- [ ] описание MR со ссылкой на тикет
|
||||||
Reference in New Issue
Block a user