Agent Skills: Android App Icon

Generate Android adaptive icons from Iconify's 200k+ open source icons

UncategorizedID: hitoshura25/claude-devtools/android-app-icon

Install this agent skill to your local

pnpm dlx add-skill https://github.com/hitoshura25/claude-devtools/tree/HEAD/skills/android-app-icon

Skill Files

Browse the full folder contents for android-app-icon.

Download Skill

Loading file tree…

skills/android-app-icon/SKILL.md

Skill Metadata

Name
android-app-icon
Description
Generate Android adaptive icons from Iconify's 200k+ open source icons

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

  • [ ] Project has minSdk >= 26Verify
  • [ ] curl is installed
  • [ ] python3 is installed
  • [ ] rsvg-convert is installed → Install instructions

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/