Claude-skill-registry android-app-icon

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

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/android-app-icon" ~/.claude/skills/majiayu000-claude-skill-registry-android-app-icon && rm -rf "$T"
manifest: skills/data/android-app-icon/SKILL.md
safety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
  • uses sudo
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content

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/

ScriptPurpose
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.xml
    colors.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/