Agent skill

Android Native Dev

by HHU3637kr in HHU3637kr/skills

A skill your agent uses when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility…

MITAuto-check passedMobile

Install Android Native Dev

skills CLI
$ npx skills add HHU3637kr/skills --skill android-native-dev -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install HHU3637kr/skills android-native-dev --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/HHU3637kr/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/android-native-dev .claude/skills/android-native-dev && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
android-native-dev
GitHub stars
145
Token cost
~5.6k tokens
SKILL.md length
1,053 words
Files
9 (incl. references)
Skills in repo
37
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility…

  • Works in 7 steps: Project Scenario Assessment → Project Configuration → Kotlin Development Standards → …
  • The user is developing
  • SKILL.md covers 1. Project Scenario Assessment, 2. Project Configuration, 3. Kotlin Development Standards and 4. Jetpack Compose Standards, plus 3 more sections
  • Calls adb and gradle

What it does

Android Native Dev is an agent skill from HHU3637kr/skills. Use when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility, Play quality, or Android UI layout. Do not use for React Native/Flutter-only tasks, iOS apps, or general mobile product design without Android implementation.

Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including reference files (for example `references/accessibility.md`, `references/adaptive-screens.md` and `references/design-style-guide.md`).

It sits in Mobile, covering Android development and Cross-platform mobile apps. It works with Android, Gradle, Kotlin and Flutter. The licence is MIT.

When your agent uses it

  • The user is developing
  • Troubleshooting a native Android app
  • Especially Kotlin/Compose
  • Material Design 3

Example prompts

  • “/android-native-dev”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Project Scenario Assessment
  2. Project Configuration
  3. Kotlin Development Standards
  4. Jetpack Compose Standards
  5. Resources & Icons
  6. Build Error Diagnosis & Fixes
  7. Material Design 3 Guidelines

What it can do on your machine

Read from SKILL.md and the folder at commit a2cccf6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • adb
    • gradle

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Android Native Dev loads about 5.6k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,053 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~5.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~19k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from HHU3637kr/skills at commit a2cccf6, republished under its MIT licence (© HHU3637kr). 1,053 words, ~5,619 tokens.

Download SKILL.mdSave it as .claude/skills/android-native-dev/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
android-native-dev
description
Use when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility, Play quality, or Android UI layout. Do not use for React Native/Flutter-only tasks, iOS apps, or general mobile product design without Android implementation.
disable-model-invocation
true
license
MIT
metadata.version
1.0.0
metadata.category
mobile
metadata.sources
Material Design 3 Guidelines (material.io), Android Developer Documentation (developer.android.com), Google Play Quality Guidelines, WCAG Accessibility…

1. Project Scenario Assessment

Before starting development, assess the current project state:

ScenarioCharacteristicsApproach
Empty DirectoryNo files presentFull initialization required, including Gradle Wrapper
Has Gradle Wrappergradlew and gradle/wrapper/ existUse ./gradlew directly for builds
Android Studio ProjectComplete project structure, may lack wrapperCheck wrapper, run gradle wrapper if needed
Incomplete ProjectPartial files presentCheck missing files, complete configuration

Key Principles:

  • Before writing business logic, ensure ./gradlew assembleDebug succeeds
  • If gradle.properties is missing, create it first and configure AndroidX
1.1 Required Files Checklist
MyApp/
├── gradle.properties          # Configure AndroidX and other settings
├── settings.gradle.kts
├── build.gradle.kts           # Root level
├── gradle/wrapper/
│   └── gradle-wrapper.properties
├── app/
│   ├── build.gradle.kts       # Module level
│   └── src/main/
│       ├── AndroidManifest.xml
│       ├── java/com/example/myapp/
│       │   └── MainActivity.kt
│       └── res/
│           ├── values/
│           │   ├── strings.xml
│           │   ├── colors.xml
│           │   └── themes.xml
│           └── mipmap-*/       # App icons

2. Project Configuration

2.1 gradle.properties
properties
# Required configuration
android.useAndroidX=true
android.enableJetifier=true

# Build optimization
org.gradle.parallel=true
kotlin.code.style=official

# JVM memory settings (adjust based on project size)
# Small projects: 2048m, Medium: 4096m, Large: 8192m+
# org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8

Note: If you encounter OutOfMemoryError during build, increase -Xmx value. Large projects with many dependencies may require 8GB or more.

2.2 Dependency Declaration Standards
kotlin
dependencies {
    // Use BOM to manage Compose versions
    implementation(platform("androidx.compose:compose-bom:2024.02.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material3:material3")
    
    // Activity & ViewModel
    implementation("androidx.activity:activity-compose:1.8.2")
    implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0")
}
2.3 Build Variants & Product Flavors

Product Flavors allow you to create different versions of your app (e.g., free/paid, dev/staging/prod).

Configuration in app/build.gradle.kts:

kotlin
android {
    // Define flavor dimensions
    flavorDimensions += "environment"
    
    productFlavors {
        create("dev") {
            dimension = "environment"
            applicationIdSuffix = ".dev"
            versionNameSuffix = "-dev"
            
            // Different config values per flavor
            buildConfigField("String", "API_BASE_URL", "\"https://dev-api.example.com\"")
            buildConfigField("Boolean", "ENABLE_LOGGING", "true")
            
            // Different resources
            resValue("string", "app_name", "MyApp Dev")
        }
        
        create("staging") {
            dimension = "environment"
            applicationIdSuffix = ".staging"
            versionNameSuffix = "-staging"
            
            buildConfigField("String", "API_BASE_URL", "\"https://staging-api.example.com\"")
            buildConfigField("Boolean", "ENABLE_LOGGING", "true")
            resValue("string", "app_name", "MyApp Staging")
        }
        
        create("prod") {
            dimension = "environment"
            // No suffix for production
            
            buildConfigField("String", "API_BASE_URL", "\"https://api.example.com\"")
            buildConfigField("Boolean", "ENABLE_LOGGING", "false")
            resValue("string", "app_name", "MyApp")
        }
    }
    
    buildTypes {
        debug {
            isDebuggable = true
            isMinifyEnabled = false
        }
        release {
            isDebuggable = false
            isMinifyEnabled = true
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
}

Build Variant Naming: {flavor}{BuildType} → e.g., devDebug, prodRelease

Gradle Build Commands:

bash
# List all available build variants
./gradlew tasks --group="build"

# Build specific variant (flavor + buildType)
./gradlew assembleDevDebug        # Dev flavor, Debug build
./gradlew assembleStagingDebug    # Staging flavor, Debug build
./gradlew assembleProdRelease     # Prod flavor, Release build

# Build all variants of a specific flavor
./gradlew assembleDev             # All Dev variants (debug + release)
./gradlew assembleProd            # All Prod variants

# Build all variants of a specific build type
./gradlew assembleDebug           # All flavors, Debug build
./gradlew assembleRelease         # All flavors, Release build

# Install specific variant to device
./gradlew installDevDebug
./gradlew installProdRelease

# Build and install in one command
./gradlew installDevDebug && adb shell am start -n com.example.myapp.dev/.MainActivity

Access BuildConfig in Code:

Note: Starting from AGP 8.0, BuildConfig is no longer generated by default. You must explicitly enable it in your build.gradle.kts:

kotlin
android {
    buildFeatures {
        buildConfig = true
    }
}
kotlin
// Use build config values in your code
val apiUrl = BuildConfig.API_BASE_URL
val isLoggingEnabled = BuildConfig.ENABLE_LOGGING

if (BuildConfig.DEBUG) {
    // Debug-only code
}

Flavor-Specific Source Sets:

app/src/
├── main/           # Shared code for all flavors
├── dev/            # Dev-only code and resources
│   ├── java/
│   └── res/
├── staging/        # Staging-only code and resources
├── prod/           # Prod-only code and resources
├── debug/          # Debug build type code
└── release/        # Release build type code

Multiple Flavor Dimensions (e.g., environment + tier):

kotlin
android {
    flavorDimensions += listOf("environment", "tier")
    
    productFlavors {
        create("dev") { dimension = "environment" }
        create("prod") { dimension = "environment" }
        
        create("free") { dimension = "tier" }
        create("paid") { dimension = "tier" }
    }
}
// Results in: devFreeDebug, devPaidDebug, prodFreeRelease, etc.

3. Kotlin Development Standards

3.1 Naming Conventions
TypeConventionExample
Class/InterfacePascalCaseUserRepository, MainActivity
Function/VariablecamelCasegetUserName(), isLoading
ConstantSCREAMING_SNAKEMAX_RETRY_COUNT
Packagelowercasecom.example.myapp
ComposablePascalCase@Composable fun UserCard()
3.2 Code Standards (Important)

Null Safety:

kotlin
// ❌ Avoid: Non-null assertion !! (may crash)
val name = user!!.name

// ✅ Recommended: Safe call + default value
val name = user?.name ?: "Unknown"

// ✅ Recommended: let handling
user?.let { processUser(it) }

Exception Handling:

kotlin
// ❌ Avoid: Random try-catch in business layer swallowing exceptions
fun loadData() {
    try {
        val data = api.fetch()
    } catch (e: Exception) {
        // Swallowing exception, hard to debug
    }
}

// ✅ Recommended: Let exceptions propagate, handle at appropriate layer
suspend fun loadData(): Result<Data> {
    return try {
        Result.success(api.fetch())
    } catch (e: Exception) {
        Result.failure(e)  // Wrap and return, let caller decide handling
    }
}

// ✅ Recommended: Unified handling in ViewModel
viewModelScope.launch {
    runCatching { repository.loadData() }
        .onSuccess { _uiState.value = UiState.Success(it) }
        .onFailure { _uiState.value = UiState.Error(it.message) }
}
3.3 Threading & Coroutines (Critical)

Thread Selection Principles:

Operation TypeThreadDescription
UI UpdatesDispatchers.MainUpdate View, State, LiveData
Network RequestsDispatchers.IOHTTP calls, API requests
File I/ODispatchers.IOLocal storage, database operations
Compute IntensiveDispatchers.DefaultJSON parsing, sorting, encryption

Correct Usage:

kotlin
// In ViewModel
viewModelScope.launch {
    // Default Main thread, can update UI State
    _uiState.value = UiState.Loading
    
    // Switch to IO thread for network request
    val result = withContext(Dispatchers.IO) {
        repository.fetchData()
    }
    
    // Automatically returns to Main thread, update UI
    _uiState.value = UiState.Success(result)
}

// In Repository (suspend functions should be main-safe)
suspend fun fetchData(): Data = withContext(Dispatchers.IO) {
    api.getData()
}

Common Mistakes:

kotlin
// ❌ Wrong: Updating UI on IO thread
viewModelScope.launch(Dispatchers.IO) {
    val data = api.fetch()
    _uiState.value = data  // Crash or warning!
}

// ❌ Wrong: Executing time-consuming operation on Main thread
viewModelScope.launch {
    val data = api.fetch()  // Blocking main thread! ANR
}

// ✅ Correct: Fetch on IO, update on Main
viewModelScope.launch {
    val data = withContext(Dispatchers.IO) { api.fetch() }
    _uiState.value = data
}
3.4 Visibility Rules
kotlin
// Default is public, declare explicitly when needed
class UserRepository {           // public
    private val cache = mutableMapOf<String, User>()  // Visible only within class
    internal fun clearCache() {} // Visible only within module
}

// data class properties are public by default, be careful when used across modules
data class User(
    val id: String,       // public
    val name: String
)
3.5 Common Syntax Pitfalls
kotlin
// ❌ Wrong: Accessing uninitialized lateinit
class MyViewModel : ViewModel() {
    lateinit var data: String
    fun process() = data.length  // May crash
}

// ✅ Correct: Use nullable or default value
class MyViewModel : ViewModel() {
    var data: String? = null
    fun process() = data?.length ?: 0
}

// ❌ Wrong: Using return in lambda
list.forEach { item ->
    if (item.isEmpty()) return  // Returns from outer function!
}

// ✅ Correct: Use return@forEach
list.forEach { item ->
    if (item.isEmpty()) return@forEach
}
3.6 Server Response Data Class Fields Must Be Nullable
kotlin
// ❌ Wrong: Fields declared as non-null (server may not return them)
data class UserResponse(
    val id: String = "",
    val name: String = "",
    val avatar: String = ""
)

// ✅ Correct: All fields declared as nullable
data class UserResponse(
    @SerializedName("id")
    val id: String? = null,
    @SerializedName("name")
    val name: String? = null,
    @SerializedName("avatar")
    val avatar: String? = null
)
3.7 Lifecycle Resource Management
kotlin
// ❌ Wrong: Only adding Observer, not removing
class MyView : View {
    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        activity?.lifecycle?.addObserver(this)
    }
    // Memory leak!
}

// ✅ Correct: Paired add and remove
class MyView : View {
    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        activity?.lifecycle?.addObserver(this)
    }

    override fun onDetachedFromWindow() {
        activity?.lifecycle?.removeObserver(this)
        super.onDetachedFromWindow()
    }
}
3.8 Logging Level Usage
kotlin
import android.util.Log

// Info: Key checkpoints in normal flow
Log.i(TAG, "loadData: started, userId = $userId")

// Warning: Abnormal but recoverable situations
Log.w(TAG, "loadData: cache miss, fallback to network")

// Error: Failure/error situations
Log.e(TAG, "loadData failed: ${error.message}")
LevelUse Case
i (Info)Normal flow, method entry, key parameters
w (Warning)Recoverable exceptions, fallback handling, null returns
e (Error)Request failures, caught exceptions, unrecoverable errors

4. Jetpack Compose Standards

4.1 @Composable Context Rules
kotlin
// ❌ Wrong: Calling Composable from non-Composable function
fun showError(message: String) {
    Text(message)  // Compile error!
}

// ✅ Correct: Mark as @Composable
@Composable
fun ErrorMessage(message: String) {
    Text(message)
}

// ❌ Wrong: Using suspend outside LaunchedEffect
@Composable
fun MyScreen() {
    val data = fetchData()  // Error!
}

// ✅ Correct: Use LaunchedEffect
@Composable
fun MyScreen() {
    var data by remember { mutableStateOf<Data?>(null) }
    LaunchedEffect(Unit) {
        data = fetchData()
    }
}
4.2 State Management
kotlin
// Basic State
var count by remember { mutableStateOf(0) }

// Derived State (avoid redundant computation)
val isEven by remember { derivedStateOf { count % 2 == 0 } }

// Persist across recomposition (e.g., scroll position)
val scrollState = rememberScrollState()

// State in ViewModel
class MyViewModel : ViewModel() {
    private val _uiState = MutableStateFlow(UiState())
    val uiState: StateFlow<UiState> = _uiState.asStateFlow()
}
4.3 Common Compose Mistakes
kotlin
// ❌ Wrong: Creating objects in Composable (created on every recomposition)
@Composable
fun MyScreen() {
    val viewModel = MyViewModel()  // Wrong!
}

// ✅ Correct: Use viewModel() or remember
@Composable
fun MyScreen(viewModel: MyViewModel = viewModel()) {
    // ...
}

5. Resources & Icons

5.1 App Icon Requirements

Must provide multi-resolution icons:

DirectorySizePurpose
mipmap-mdpi48x48Baseline
mipmap-hdpi72x721.5x
mipmap-xhdpi96x962x
mipmap-xxhdpi144x1443x
mipmap-xxxhdpi192x1924x

Recommended: Use Adaptive Icon (Android 8+):

xml
<!-- res/mipmap-anydpi-v26/ic_launcher.xml -->
<adaptive-icon>
    <background android:drawable="@color/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
5.2 Resource Naming Conventions
TypePrefixExample
Layoutlayout_layout_main.xml
Imageic_, img_, bg_ic_user.png
Colorcolor_color_primary
String-app_name, btn_submit
5.3 Avoid Android Reserved Names (Important)

Variable names, resource IDs, colors, icons, and XML elements must not use Android reserved words or system resource names. Using reserved names causes build errors or resource conflicts.

Common Reserved Names to Avoid:

CategoryReserved Names (Do NOT Use)
Colorsbackground, foreground, transparent, white, black
Icons/Drawablesicon, logo, image, drawable
Viewsview, text, button, layout, container
Attributesid, name, type, style, theme, color
Systemapp, android, content, data, action

Examples:

xml
<!-- ❌ Wrong: Using reserved names -->
<color name="background">#FFFFFF</color>
<color name="icon">#000000</color>

<!-- ✅ Correct: Add prefix or specific naming -->
<color name="app_background">#FFFFFF</color>
<color name="icon_primary">#000000</color>
kotlin
// ❌ Wrong: Variable names conflict with system
val icon = R.drawable.my_icon
val background = Color.White

// ✅ Correct: Use descriptive names
val appIcon = R.drawable.my_icon
val screenBackground = Color.White
xml
<!-- ❌ Wrong: Drawable name conflicts -->
<ImageView android:src="@drawable/icon" />

<!-- ✅ Correct: Add prefix -->
<ImageView android:src="@drawable/ic_home" />

6. Build Error Diagnosis & Fixes

6.1 Common Error Quick Reference
Error KeywordCauseFix
Unresolved referenceMissing import or undefinedCheck imports, verify dependencies
Type mismatchType incompatibilityCheck parameter types, add conversion
Cannot accessVisibility issueCheck public/private/internal
@Composable invocationsComposable context errorEnsure caller is also @Composable
Duplicate classDependency conflictUse ./gradlew dependencies to investigate
AAPT: errorResource file errorCheck XML syntax and resource references
6.2 Fix Best Practices
  1. Read the complete error message first: Locate file and line number
  2. Check recent changes: Problems usually in latest modifications
  3. Clean Build: ./gradlew clean assembleDebug
  4. Check dependency versions: Version conflicts are common causes
  5. Refresh dependencies if needed: Clear cache and rebuild
6.3 Debugging Commands
bash
# Clean and build
./gradlew clean assembleDebug

# View dependency tree (investigate conflicts)
./gradlew :app:dependencies

# View detailed errors
./gradlew assembleDebug --stacktrace

# Refresh dependencies
./gradlew --refresh-dependencies

7. Material Design 3 Guidelines

Review Android UI files for compliance with Material Design 3 Guidelines and Android best practices.

Design Philosophy
M3 Core Principles
PrincipleDescription
PersonalDynamic color based on user preferences and wallpaper
AdaptiveResponsive across all screen sizes and form factors
ExpressiveBold colors and typography with personality
AccessibleInclusive design for all users
Show full SKILL.md (409 more words)Show less
M3 Expressive (Latest)

The latest evolution adds emotion-driven UX through:

  • Vibrant, dynamic colors
  • Intuitive motion physics
  • Adaptive components
  • Flexible typography
  • Contrasting shapes (35 new shape options)
App Style Selection

Critical Decision: Match visual style to app category and target audience.

App CategoryVisual StyleKey Characteristics
Utility/ToolMinimalistClean, efficient, neutral colors
Finance/BankingProfessional TrustConservative colors, security-focused
Health/WellnessCalm & NaturalSoft colors, organic shapes
Kids (3-5)Playful SimpleBright colors, large targets (56dp+)
Kids (6-12)Fun & EngagingVibrant, gamified feedback
Social/EntertainmentExpressiveBrand-driven, gesture-rich
ProductivityClean & FocusedMinimal, high contrast
E-commerceConversion-focusedClear CTAs, scannable

See Design Style Guide for detailed style profiles.

Quick Reference: Key Specifications
Color Contrast Requirements
ElementMinimum Ratio
Body text4.5:1
Large text (18sp+)3:1
UI components3:1
Touch Targets
TypeSize
Minimum48 × 48dp
Recommended (primary actions)56 × 56dp
Kids apps56dp+
Spacing between targets8dp minimum
8dp Grid System
TokenValueUsage
xs4dpIcon padding
sm8dpTight spacing
md16dpDefault padding
lg24dpSection spacing
xl32dpLarge gaps
xxl48dpScreen margins
Typography Scale (Summary)
CategorySizes
Display57sp, 45sp, 36sp
Headline32sp, 28sp, 24sp
Title22sp, 16sp, 14sp
Body16sp, 14sp, 12sp
Label14sp, 12sp, 11sp
Animation Duration
TypeDuration
Micro (ripples)50-100ms
Short (simple)100-200ms
Medium (expand/collapse)200-300ms
Long (complex)300-500ms
Component Dimensions
ComponentHeightMin Width
Button40dp64dp
FAB56dp56dp
Text Field56dp280dp
App Bar64dp-
Bottom Nav80dp-
Anti-Patterns (Must Avoid)
UI Anti-Patterns
  • More than 5 bottom navigation items
  • Multiple FABs on same screen
  • Touch targets smaller than 48dp
  • Inconsistent spacing (non-8dp multiples)
  • Missing dark theme support
  • Text on colored backgrounds without contrast check
Performance Anti-Patterns
  • Startup time > 2 seconds without progress indicator
  • Frame rate < 60 FPS (> 16ms per frame)
  • Crash rate > 1.09% (Google Play threshold)
  • ANR rate > 0.47% (Google Play threshold)
Accessibility Anti-Patterns
  • Missing contentDescription on interactive elements
  • Element type in labels (e.g., "Save button" instead of "Save")
  • Complex gestures in kids apps
  • Text-only buttons for non-readers
Review Checklist
  • 8dp spacing grid compliance
  • 48dp minimum touch targets
  • Proper typography scale usage
  • Color contrast compliance (4.5:1+ for text)
  • Dark theme support
  • contentDescription on all interactive elements
  • Startup < 2 seconds or shows progress
  • Visual style matches app category
Design References
TopicReference
Colors, Typography, Spacing, ShapesVisual Design
Animation & TransitionsMotion System
Accessibility GuidelinesAccessibility
Large Screens & FoldablesAdaptive Screens
Android Vitals & PerformancePerformance & Stability
Privacy & SecurityPrivacy & Security
Audio, Video, NotificationsFunctional Requirements
App Style by CategoryDesign Style Guide

© HHU3637kr, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (references) in android-native-dev of HHU3637kr/skills.

  • SKILL.md
  • references/accessibility.md
  • references/adaptive-screens.md
  • references/design-style-guide.md
  • references/functional-requirements.md
  • references/motion-system.md
  • references/performance-stability.md
  • references/privacy-security.md
  • references/visual-design.md

Open the folder on GitHubat commit a2cccf6

Compare with similar skills

Android Native Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Android Native Dev compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Android Native Dev this skillHHU3637kr/skills145—~5.6kAutomated safety check: PassMIT
Claude Android NinjaDrjacky/claude-android-ninja124—~5.2kAutomated safety check: PassApache-2.0
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Android Audio E2Ehyochan/react-native-nitro-sound961—~814Automated safety check: PassMIT
Upgrade React NativeShopify/flash-list7.2k—~1.9kAutomated safety check: PassMIT
Mobile Apps Createforcedotcom/sf-skills1.1k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Claude Android Ninja

    Drjacky/claude-android-ninja

    Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.

    124 GitHub stars~5.2k tokensUpdated 8 days ago
    MobileAuto-check passed
  • Expo Brownfield Integration

    mweinbach/agent-coworker

    Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.

    156 GitHub starsUsed in 2 repos~900 tokens
    MobileAuto-check: notes
  • Android Audio E2E

    hyochan/react-native-nitro-sound

    Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…

    961 GitHub stars~814 tokensUpdated 8 days ago
    MobileAuto-check passed
  • Upgrade React Native

    Shopify/flash-list

    Official

    Upgrade the React Native fixture app to a new version. An agent skill from Shopify/flash-list.

    7.2k GitHub stars~1.9k tokensUpdated 6 days ago
    MobileAuto-check passed
  • Mobile Apps Create

    forcedotcom/sf-skills

    The entry point for building any Salesforce native mobile app on iOS or Android.

    1.1k GitHub stars~1.4k tokensUpdated 4 days ago
    MobileAuto-check passed
  • Mobile App Builder

    revfactory/harness-100

    Full mobile app development pipeline. An agent skill from revfactory/harness-100.

    1.3k GitHub stars~1.8k tokensUpdated 6 mo ago
    MobileAuto-check passed

More from HHU3637kr/skills

All 37 skills in this repo
  • Gif Sticker Maker

    HHU3637kr/skills

    Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions.

    145 GitHub starsUsed in 3 repos~1.3k tokens
    Auto-check passed
  • Agent Browser

    HHU3637kr/skills

    Headless browser automation for AI agents using agent-browser CLI.

    145 GitHub stars~1.9k tokensUpdated 14 days ago
    Auto-check passed
  • Darwin Skill

    HHU3637kr/skills

    Darwin Skill (达尔文.skill): autonomous skill optimizer inspired by Karpathy's autoresearch.

    145 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Token Efficiency

    HHU3637kr/skills

    Cross-platform token audit and optimization for AI coding agents (Cursor, Codex, Claude Code, Hermes, Windsurf, Cline, OpenClaw, Gemini CLI, Aider).

    145 GitHub stars~842 tokensUpdated 14 days ago
    Auto-check passed
  • Guizang Ppt Skill

    HHU3637kr/skills

    生成横向翻页网页 PPT(单 HTML 文件),含 WebGL 背景、章节幕封、数据大字报、图片网格等模板。提供两种风格:① "电子杂志 × 电子墨水"(衬线 + 流体背景 + 暖色) ② "瑞士国际主义"(无衬线 + 网格点阵 + IKB/柠檬黄/柠檬绿/安全橙高亮)。当用户需要制作分享 / 演讲 / 发布会风格的网页 PPT,或提到"杂志风 PPT"、"瑞士风 PPT"、"Swiss…

    145 GitHub starsUsed in 1 repo~4.7k tokens
    Auto-check passed
  • Huashu Nuwa

    HHU3637kr/skills

    女娲造人:输入人名/主题/甚至只是模糊需求,自动深度调研→思维框架提炼→生成可运行的人物Skill. An agent skill from HHU3637kr/skills.

    145 GitHub starsUsed in 1 repo~4k tokens
    Auto-check passed

Categories

Questions about Android Native Dev

What does Android Native Dev do?

A skill your agent uses when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility…. Android Native Dev is an agent skill from HHU3637kr/skills. Use when the user is developing, reviewing, or troubleshooting a native Android app, especially Kotlin/Compose, Material Design 3, Gradle project setup, Android accessibility, Play quality, or Android UI layout.

When should I use Android Native Dev?

Android Native Dev fits situations like: the user is developing; troubleshooting a native Android app; especially Kotlin/Compose; material Design 3.

How do I install Android Native Dev in Claude Code?

Run `npx skills add HHU3637kr/skills --skill android-native-dev -a claude-code`. Or copy the skill folder (android-native-dev in HHU3637kr/skills) into .claude/skills/android-native-dev in your project. Claude Code loads it when a task matches its description.

How do I install Android Native Dev in Codex?

Run `npx skills add HHU3637kr/skills --skill android-native-dev -a codex`. Or copy the skill folder (android-native-dev in HHU3637kr/skills) into .agents/skills/android-native-dev in your project. Codex loads it when a task matches its description.

Can I use Android Native Dev in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HHU3637kr/skills --skill android-native-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/android-native-dev, .gemini/skills/android-native-dev, .github/skills/android-native-dev and .opencode/skills/android-native-dev in your project.

What does Android Native Dev need to run?

Going by SKILL.md and its folder, Android Native Dev needs the command-line tools its instructions call (adb and gradle).

Does Android Native Dev access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Android Native Dev safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Android Native Dev use?

Android Native Dev is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Android Native Dev use?

About 5.6k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.

What are the alternatives to Android Native Dev?

Skills that share tags, products or a category with Android Native Dev: Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars), Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars), Android Audio E2E (hyochan/react-native-nitro-sound, 961 stars) and Upgrade React Native (Shopify/flash-list, 7.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Android Native Dev?

HHU3637kr (a GitHub user) maintains it in HHU3637kr/skills, which has 145 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on September 23, 2026.

Source: HHU3637kr/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.