SkillsLLM
CategoriesBlogAI NewsAbout
HomeMCP Serversclaude-android-skill

claude-android-skill

by dpconde

Pending

Claude Code skill for building modern Android apps following best practices.

103stars
14forks
Python
Added 3/20/2026
View on GitHubDownload ZIP
MCP ServersSKILL.mdandroidclaude-codeclaude-skillmcp
Installation
# Add to your Claude Code skills
git clone https://github.com/dpconde/claude-android-skill
SKILL.md

name: android-development description: Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices. Use when building Android apps with Kotlin, Jetpack Compose, MVVM architecture, Hilt dependency injection, Room database, or multi-module projects. Triggers on requests to create Android projects, screens, ViewModels, repositories, feature modules, or when asked about Android architecture patterns.

Android Development

Build Android applications following Google's official architecture guidance, as demonstrated in the NowInAndroid reference app.

Quick Reference

| Task | Reference File | |------|----------------| | Project structure & modules | modularization.md | | Architecture layers (UI, Domain, Data) | architecture.md | | Jetpack Compose patterns | compose-patterns.md | | Gradle & build configuration | gradle-setup.md | | Testing approach | testing.md |

Workflow Decision Tree

Creating a new project? → Read modularization.md for project structure → Use templates in assets/templates/

Adding a new feature? → Create feature module with api and impl submodules → Follow patterns in architecture.md

Building UI screens? → Read compose-patterns.md → Create Screen + ViewModel + UiState

Setting up data layer? → Read data layer section in architecture.md → Create Repository + DataSource + DAO

Core Principles

  1. Offline-first: Local database is source of truth, sync with remote
  2. Unidirectional data flow: Events flow down, data flows up
  3. Reactive streams: Use Kotlin Flow for all data exposure
  4. Modular by feature: Each feature is self-contained with clear boundaries
README.md

[WIP] Android Development Skill for Claude Code

A production-ready skill that enables Claude Code to build Android applications following Google's official architecture guidance and best practices from the NowInAndroid reference app.

Overview

This skill provides Claude with comprehensive knowledge of modern Android development patterns, including:

  • Clean Architecture with UI, Domain, and Data layers
  • Jetpack Compose patterns and best practices
  • Multi-module project structure with convention plugins
  • Offline-first architecture with Room and reactive streams
  • Dependency injection with Hilt
  • Comprehensive testing strategies

Installation

  1. Clone this repository into your Claude Code skills directory:

    git clone https://github.com/dpconde/claude-android-skill.git
    
  2. Claude Code will automatically detect and load the skill when you work on Android projects.

Usage

The skill automatically activates when you request Android-related tasks. Simply ask Claude to:

  • "Create a new Android feature module for user settings"
  • "Build a Compose screen with MVVM pattern"
  • "Set up a Repository with offline-first architecture"
  • "Add navigation to my Android app"
  • "Configure multi-module Gradle setup"

Claude will follow the patterns and best practices defined in this skill.

Project Structure

Comments (0)
to leave a comment.

No comments yet. Be the first to share your thoughts!

Related Skills

n8n

by n8n-io

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
180,099
now-in-android
  • Testable by design: Use interfaces and test doubles, no mocking libraries
  • Architecture Layers

    ┌─────────────────────────────────────────┐
    │              UI Layer                    │
    │  (Compose Screens + ViewModels)          │
    ├─────────────────────────────────────────┤
    │           Domain Layer                   │
    │  (Use Cases - optional, for reuse)       │
    ├─────────────────────────────────────────┤
    │            Data Layer                    │
    │  (Repositories + DataSources)            │
    └─────────────────────────────────────────┘
    

    Module Types

    app/                    # App module - navigation, scaffolding
    feature/
      ├── featurename/
      │   ├── api/          # Navigation keys (public)
      │   └── impl/         # Screen, ViewModel, DI (internal)
    core/
      ├── data/             # Repositories
      ├── database/         # Room DAOs, entities
      ├── network/          # Retrofit, API models
      ├── model/            # Domain models (pure Kotlin)
      ├── common/           # Shared utilities
      ├── ui/               # Reusable Compose components
      ├── designsystem/     # Theme, icons, base components
      ├── datastore/        # Preferences storage
      └── testing/          # Test utilities
    

    Creating a New Feature

    1. Create feature:myfeature:api module with navigation key
    2. Create feature:myfeature:impl module with:
      • MyFeatureScreen.kt - Composable UI
      • MyFeatureViewModel.kt - State holder
      • MyFeatureUiState.kt - Sealed interface for states
      • MyFeatureNavigation.kt - Navigation setup
      • MyFeatureModule.kt - Hilt DI module

    Standard File Patterns

    ViewModel Pattern

    @HiltViewModel
    class MyFeatureViewModel @Inject constructor(
        private val myRepository: MyRepository,
    ) : ViewModel() {
    
        val uiState: StateFlow<MyFeatureUiState> = myRepository
            .getData()
            .map { data -> MyFeatureUiState.Success(data) }
            .stateIn(
                scope = viewModelScope,
                started = SharingStarted.WhileSubscribed(5_000),
                initialValue = MyFeatureUiState.Loading,
            )
        
        fun onAction(action: MyFeatureAction) {
            when (action) {
                is MyFeatureAction.ItemClicked -> handleItemClick(action.id)
            }
        }
    }
    

    UiState Pattern

    sealed interface MyFeatureUiState {
        data object Loading : MyFeatureUiState
        data class Success(val items: List<Item>) : MyFeatureUiState
        data class Error(val message: String) : MyFeatureUiState
    }
    

    Screen Pattern

    @Composable
    internal fun MyFeatureRoute(
        onNavigateToDetail: (String) -> Unit,
        viewModel: MyFeatureViewModel = hiltViewModel(),
    ) {
        val uiState by viewModel.uiState.collectAsStateWithLifecycle()
        MyFeatureScreen(
            uiState = uiState,
            onAction = viewModel::onAction,
            onNavigateToDetail = onNavigateToDetail,
        )
    }
    
    @Composable
    internal fun MyFeatureScreen(
        uiState: MyFeatureUiState,
        onAction: (MyFeatureAction) -> Unit,
        onNavigateToDetail: (String) -> Unit,
    ) {
        when (uiState) {
            is MyFeatureUiState.Loading -> LoadingIndicator()
            is MyFeatureUiState.Success -> ContentList(uiState.items, onAction)
            is MyFeatureUiState.Error -> ErrorMessage(uiState.message)
        }
    }
    

    Repository Pattern

    interface MyRepository {
        fun getData(): Flow<List<MyModel>>
        suspend fun updateItem(id: String, data: MyModel)
    }
    
    internal class OfflineFirstMyRepository @Inject constructor(
        private val localDataSource: MyDao,
        private val networkDataSource: MyNetworkApi,
    ) : MyRepository {
    
        override fun getData(): Flow<List<MyModel>> =
            localDataSource.getAll().map { entities ->
                entities.map { it.toModel() }
            }
        
        override suspend fun updateItem(id: String, data: MyModel) {
            localDataSource.upsert(data.toEntity())
        }
    }
    

    Key Dependencies

    // Gradle version catalog (libs.versions.toml)
    [versions]
    kotlin = "1.9.x"
    compose-bom = "2024.x.x"
    hilt = "2.48"
    room = "2.6.x"
    coroutines = "1.7.x"
    
    [libraries]
    androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
    hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
    room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
    

    Build Configuration

    Use convention plugins in build-logic/ for consistent configuration:

    • AndroidApplicationConventionPlugin - App modules
    • AndroidLibraryConventionPlugin - Library modules
    • AndroidFeatureConventionPlugin - Feature modules
    • AndroidComposeConventionPlugin - Compose setup
    • AndroidHiltConventionPlugin - Hilt setup

    See gradle-setup.md for complete build configuration.

    claude-android-skill/ ├── SKILL.md # Main skill definition and quick reference ├── references/ # Detailed documentation │ ├── architecture.md # UI, Domain, Data layers patterns │ ├── compose-patterns.md # Jetpack Compose best practices │ ├── gradle-setup.md # Build configuration & convention plugins │ ├── modularization.md # Multi-module project structure │ └── testing.md # Testing strategies and patterns ├── assets/ │ └── templates/ # Project templates │ ├── libs.versions.toml.template │ └── settings.gradle.kts.template └── scripts/ └── generate_feature.py # Feature module generator script

    Core Principles

    This skill teaches Claude to follow these key Android development principles:

    1. Offline-first: Local database as source of truth, synchronized with remote data
    2. Unidirectional data flow: Events flow down, data flows up (UDF pattern)
    3. Reactive streams: Use Kotlin Flow for all data exposure
    4. Modular by feature: Each feature is self-contained with clear API boundaries
    5. Testable by design: Use interfaces and test doubles, avoid mocking frameworks

    Reference Documentation

    Quick Navigation

    | Topic | File | Description | |-------|------|-------------| | Architecture | architecture.md | MVVM pattern, layers, repositories, use cases | | Compose UI | compose-patterns.md | Screens, state hoisting, side effects, theming | | Build Setup | ...

    55,975
    TypeScript
    MCP Serversaiapis
    View details
    everything-claude-code

    by affaan-m

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
    88,688
    11,616
    JavaScript
    AI Agentsai-agentsanthropic
    View details
    context7

    by upstash

    Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors
    49,820
    2,350
    TypeScript
    MCP Serversllmmcp
    View details
    TrendRadar

    by sansan0

    ⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
    49,372
    22,716
    Python
    MCP Serversaibark
    View details
    ui-ux-pro-max-skill

    by nextlevelbuilder

    An AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
    46,308
    4,485
    Python
    CLI Toolsai-skillsantigravity
    View details
    awesome-claude-skills

    by ComposioHQ

    A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows
    46,195
    4,700
    Python
    AI Agentsagent-skillsai-agents
    View details