android-app-icon
Generate Android adaptive icons from Iconify's 200k+ open source icons
Best use case
android-app-icon is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate Android adaptive icons from Iconify's 200k+ open source icons
Teams using android-app-icon should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/android-app-icon/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How android-app-icon Compares
| Feature / Agent | android-app-icon | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate Android adaptive icons from Iconify's 200k+ open source icons
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 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 >= 26` → [Verify](#verifying-minsdk)
- [ ] `curl` is installed
- [ ] `python3` is installed
- [ ] `rsvg-convert` is installed → [Install instructions](#installing-rsvg-convert)
### Steps
- [ ] **Step 1:** Check for existing legacy icons → [Details](#step-1-check-for-existing-legacy-icons)
- [ ] ⏸️ **WAIT:** If legacy icons found, ask user whether to delete them
- [ ] **Step 2:** Get search term from user → [Details](#step-2-get-search-term)
- [ ] ⏸️ **WAIT:** User confirms or provides search term
- [ ] **Step 3:** Run search script → [Details](#step-3-search-for-icons)
- [ ] ⏸️ **WAIT:** User selects icon from results
- [ ] **Step 4:** Run generate script → [Details](#step-4-generate-icons)
- [ ] **Step 5:** Verify build → [Details](#step-5-verify)
### 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`:
```kotlin
android {
defaultConfig {
minSdk = 26 // Must be 26 or higher
}
}
```
### Installing rsvg-convert
**macOS:**
```bash
brew install librsvg
```
**Ubuntu/Debian:**
```bash
sudo apt install librsvg2-bin
```
**Verify:**
```bash
rsvg-convert --version
```
---
### Step 1: Check for Existing Legacy Icons
Check for legacy raster icons that are not needed for minSdk 26+:
```bash
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:**
```bash
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:
```bash
# 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:
```bash
~/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:
```bash
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):**
```bash
ICON_BACKGROUND="#2196F3" ICON_SCALE="1.2" \
~/claude-devtools/skills/android-app-icon/scripts/generate-app-icons.sh <icon-id>
```
---
### Step 5: Verify
```bash
./gradlew assembleDebug
```
Check all files exist:
```bash
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](#installing-rsvg-convert)
### Icon not found
Verify icon ID at https://icon-sets.iconify.design/Related Skills
android-workflow-production
Generate GitHub Actions workflows for production deployment with staged rollout
android-store-listing
Create feature graphic and complete store listing metadata
android-product-shaping
This skill is used to turn Android app ideas into small, well-bounded product slices with clear value, ready for UX and implementation.
app-icon-generator
Generates app icons in all required sizes for iOS, Android, and PWA from a single source image. Use when user asks to "generate app icons", "create ios icons", "android app icons", "favicon", or "pwa icons".
android-java
Android Java development with MVVM, ViewBinding, and Espresso testing
android-service-account-guide
Step-by-step guide for creating Google Cloud service account for Play Store API access
android-release-notes-structure
Create Play Store release notes directory structure with locale templates (Fastlane metadata)
android-screen-capture
Start Android screen mirroring using scrcpy. Displays device screen in real-time on Mac with optional console logs. Use when viewing Android screen, mirroring device, or monitoring app with logs.
android-playstore-setup
Complete Play Store setup - orchestrates scanning, privacy policy, version management, Fastlane, and workflows (Internal track only)
android-playstore-pipeline
Complete end-to-end Android Play Store deployment pipeline setup in one command
android-fastlane-setup
Setup Fastlane for Play Store deployment with supply and screengrab
android-espresso-dependencies
Add Espresso and AndroidX Test dependencies to Android project