android-app-icon

SKILL.md

Android App Icon

Generate Android adaptive icons using VectorDrawables from Iconify's 200k+ icon library.

How This Skill Works

This skill uses executable scripts for reliable, deterministic icon generation. The agent's role is to:

  1. Run scripts with user-confirmed parameters
  2. Present results and wait for user decisions
  3. Verify output

Scripts location: ~/claude-devtools/skills/android-app-icon/scripts/

Script Purpose
search-icons.sh <term> Search Iconify for icons
generate-app-icons.sh <icon-id> Generate all icon assets

Checklist

Prerequisites

Steps

  • Step 1: Check for existing legacy icons → Details
  • ⏸️ WAIT: If legacy icons found, ask user whether to delete them
  • Step 2: Get search term from user → Details
  • ⏸️ WAIT: User confirms or provides search term
  • Step 3: Run search script → Details
  • ⏸️ WAIT: User selects icon from results
  • Step 4: Run generate script → Details
  • Step 5: Verify build → Details

Completion Criteria

  • All legacy icons removed (if user confirmed)
  • app/src/main/res/drawable/ic_launcher_foreground.xml exists
  • app/src/main/res/drawable/ic_launcher_background.xml exists
  • app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml exists
  • app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml exists
  • fastlane/metadata/android/en-US/images/icon.png exists
  • ./gradlew assembleDebug succeeds

Reference Details

Verifying minSdk

Check app/build.gradle.kts or app/build.gradle:

android {
    defaultConfig {
        minSdk = 26  // Must be 26 or higher
    }
}

Installing rsvg-convert

macOS:

brew install librsvg

Ubuntu/Debian:

sudo apt install librsvg2-bin

Verify:

rsvg-convert --version

Step 1: Check for Existing Legacy Icons

Check for legacy raster icons that are not needed for minSdk 26+:

find app/src/main/res/mipmap-mdpi app/src/main/res/mipmap-hdpi \
     app/src/main/res/mipmap-xhdpi app/src/main/res/mipmap-xxhdpi \
     app/src/main/res/mipmap-xxxhdpi \
     \( -name "ic_launcher*.webp" -o -name "ic_launcher*.png" \) \
     2>/dev/null

If files are found, present to user:

"I found existing legacy icon files:

  • mipmap-mdpi/ic_launcher.webp
  • mipmap-hdpi/ic_launcher.webp
  • ... (list all)

These are not needed for minSdk 26+ (VectorDrawables are used instead).

Would you like me to delete them? (y/n)"

If user confirms deletion:

find app/src/main/res/mipmap-mdpi app/src/main/res/mipmap-hdpi \
     app/src/main/res/mipmap-xhdpi app/src/main/res/mipmap-xxhdpi \
     app/src/main/res/mipmap-xxxhdpi \
     \( -name "ic_launcher*.webp" -o -name "ic_launcher*.png" \) \
     -delete 2>/dev/null

Step 2: Get Search Term

Auto-detect from project context:

# From package name in build.gradle.kts
grep -E 'namespace|applicationId' app/build.gradle.kts 2>/dev/null

# From app name in strings.xml
grep 'name="app_name"' app/src/main/res/values/strings.xml 2>/dev/null

Present to user:

"Based on your project, I suggest searching for: {detected_term}

Would you like to:

  1. Use {detected_term}
  2. Enter a different search term"

Step 3: Search for Icons

Run the search script with the confirmed search term:

~/claude-devtools/skills/android-app-icon/scripts/search-icons.sh "<search-term>"

Present results to user:

"Found icons matching '{search-term}':

  1. mdi:heart-pulse - Material Design Icons (Apache 2.0)
  2. healthicons:health-worker - Health Icons (MIT)
  3. ...

Preview: https://icon-sets.iconify.design/mdi/heart-pulse/

Enter a number to select, or type a different search term:"


Step 4: Generate Icons

Run the generate script from the project root:

cd /path/to/android/project
~/claude-devtools/skills/android-app-icon/scripts/generate-app-icons.sh "<icon-id>"

The script auto-detects:

  • Background color from themes.xmlcolors.xml
  • Scale factor (default 1.15)
  • Output paths

Optional overrides (if user requests):

ICON_BACKGROUND="#2196F3" ICON_SCALE="1.2" \
  ~/claude-devtools/skills/android-app-icon/scripts/generate-app-icons.sh <icon-id>

Step 5: Verify

./gradlew assembleDebug

Check all files exist:

test -f app/src/main/res/drawable/ic_launcher_foreground.xml && echo "✓ foreground"
test -f app/src/main/res/drawable/ic_launcher_background.xml && echo "✓ background"
test -f app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml && echo "✓ ic_launcher"
test -f app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml && echo "✓ ic_launcher_round"
test -f fastlane/metadata/android/en-US/images/icon.png && echo "✓ play store icon"

Troubleshooting

Icon appears cut off

Reduce scale: ICON_SCALE=1.0 generate-app-icons.sh <icon>

rsvg-convert not found

See Installing rsvg-convert

Icon not found

Verify icon ID at https://icon-sets.iconify.design/

Weekly Installs
5
GitHub Stars
1
First Seen
Feb 28, 2026
Installed on
gemini-cli5
github-copilot5
codex5
amp5
cline5
kimi-cli5