Android-разработка для Claude Code
dpconde/claude-android-skillСкилл для Claude Code, обучающий современным практикам Android-разработки: Clean Architecture, Jetpack Compose, многомодульные проекты, offline-first подход, Hilt и стратегии тестирования по образцу NowInAndroid.
Установка
git clone https://github.com/dpconde/claude-android-skill.gitREADME
[WIP] Скилл Android-разработки для Claude Code
Готовый к продакшену скилл, позволяющий Claude Code создавать Android-приложения в соответствии с официальными рекомендациями Google по архитектуре и лучшими практиками из референсного приложения NowInAndroid.
Обзор
Скилл предоставляет Claude исчерпывающие знания о современных паттернах Android-разработки, включая:
- Clean Architecture со слоями UI, Domain и Data
- Паттерны и лучшие практики Jetpack Compose
- Многомодульную структуру проекта с convention plugins
- Offline-first архитектуру с Room и реактивными потоками
- Внедрение зависимостей с Hilt
- Комплексные стратегии тестирования
Установка
-
Клонируйте репозиторий в директорию скиллов Claude Code:
git clone https://github.com/dpconde/claude-android-skill.git -
Claude Code автоматически обнаружит и загрузит скилл при работе с Android-проектами.
Использование
Скилл активируется автоматически при запросах, связанных с Android. Просто попросите Claude:
- «Создай новый модуль фичи Android для настроек пользователя»
- «Собери Compose-экран с паттерном MVVM»
- «Настрой Repository с offline-first архитектурой»
- «Добавь навигацию в моё Android-приложение»
- «Настрой многомодульный Gradle»
Claude будет следовать паттернам и лучшим практикам, определённым в этом скилле.
Структура проекта
claude-android-skill/
├── SKILL.md # Основное определение скилла и краткий справочник
├── references/ # Подробная документация
│ ├── architecture.md # Паттерны слоёв UI, Domain, Data
│ ├── compose-patterns.md # Лучшие практики Jetpack Compose
│ ├── gradle-setup.md # Конфигурация сборки и convention plugins
│ ├── modularization.md # Многомодульная структура проекта
│ └── testing.md # Стратегии и паттерны тестирования
├── assets/
│ └── templates/ # Шаблоны проектов
│ ├── libs.versions.toml.template
│ └── settings.gradle.kts.template
└── scripts/
└── generate_feature.py # Скрипт генерации модуля фичи
Основные принципы
Скилл обучает Claude следовать ключевым принципам Android-разработки:
- Offline-first: локальная база данных как источник истины, синхронизируемый с удалёнными данными
- Однонаправленный поток данных: события идут вниз, данные — вверх (паттерн UDF)
- Реактивные потоки: Kotlin Flow для всех операций с данными
- Модульность по фичам: каждая фича самодостаточна с чёткими границами API
- Тестируемость по дизайну: интерфейсы и тестовые дублёры вместо фреймворков мокирования
Справочная документация
Быстрая навигация
| Тема | Файл | Описание |
|---|---|---|
| Архитектура | architecture.md | Паттерн MVVM, слои, репозитории, use cases |
| Compose UI | compose-patterns.md | Экраны, state hoisting, side effects, темизация |
| Настройка сборки | gradle-setup.md | Convention plugins, каталоги версий, конфигурация |
| Модуляризация | modularization.md | Типы модулей, зависимости, структура фичи |
| Тестирование | testing.md | Юнит-тесты, UI-тесты, тестовые дублёры, стратегии |
Обзор архитектуры
┌─────────────────────────────────────────┐
│ UI Layer │
│ (Compose Screens + ViewModels) │
├─────────────────────────────────────────┤
│ Domain Layer │
│ (Use Cases - optional, for reuse) │
├─────────────────────────────────────────┤
│ Data Layer │
│ (Repositories + DataSources) │
└─────────────────────────────────────────┘
Типы модулей
app/ # Модуль приложения
feature/
├── featurename/
│ ├── api/ # Публичные контракты навигации
│ └── impl/ # Внутренняя реализация
core/
├── data/ # Репозитории
├── database/ # Room DAOs и сущности
├── network/ # Retrofit и модели API
├── model/ # Доменные модели
├── ui/ # Переиспользуемые компоненты
├── designsystem/ # Тема и дизайн-токены
└── testing/ # Утилиты для тестирования
Возможности
Генерация кода
Скилл включает Python-скрипт для генерации модулей фич:
python scripts/generate_feature.py settings \
--package com.example.app \
--path /path/to/projectСкрипт создаёт полноценный модуль фичи с:
- API-модулем с определениями навигации
- Модулем реализации с Screen, ViewModel, UiState
- Gradle-файлами сборки с нужными зависимостями
- Настройкой внедрения зависимостей через Hilt
Шаблоны
Предварительно настроенные шаблоны для типовых файлов Android-проекта:
libs.versions.toml.template— каталог версий Gradlesettings.gradle.kts.template— настройки проекта
Стандартные паттерны
Паттерн ViewModel
@HiltViewModel
class MyFeatureViewModel @Inject constructor(
private val repository: MyRepository,
) : ViewModel() {
val uiState: StateFlow<MyFeatureUiState> = repository
.getData()
.map { MyFeatureUiState.Success(it) }
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
initialValue = MyFeatureUiState.Loading,
)
}Паттерн Screen
@Composable
internal fun MyFeatureRoute(
viewModel: MyFeatureViewModel = hiltViewModel(),
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
MyFeatureScreen(uiState = uiState)
}Паттерн Repository
interface MyRepository {
fun getData(): Flow<List<MyModel>>
}
internal class OfflineFirstMyRepository @Inject constructor(
private val dao: MyDao,
private val api: MyNetworkApi,
) : MyRepository {
override fun getData(): Flow<List<MyModel>> =
dao.getAll().map { it.toModel() }
}