android-app-icon

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

16 stars

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

$curl -o ~/.claude/skills/android-app-icon/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/fullstack-web/android-app-icon/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/android-app-icon/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How android-app-icon Compares

Feature / Agentandroid-app-iconStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

16
from diegosouzapw/awesome-omni-skill

Generate GitHub Actions workflows for production deployment with staged rollout

android-store-listing

16
from diegosouzapw/awesome-omni-skill

Create feature graphic and complete store listing metadata

android-product-shaping

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

Android Java development with MVVM, ViewBinding, and Espresso testing

android-service-account-guide

16
from diegosouzapw/awesome-omni-skill

Step-by-step guide for creating Google Cloud service account for Play Store API access

android-release-notes-structure

16
from diegosouzapw/awesome-omni-skill

Create Play Store release notes directory structure with locale templates (Fastlane metadata)

android-screen-capture

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

Complete Play Store setup - orchestrates scanning, privacy policy, version management, Fastlane, and workflows (Internal track only)

android-playstore-pipeline

16
from diegosouzapw/awesome-omni-skill

Complete end-to-end Android Play Store deployment pipeline setup in one command

android-fastlane-setup

16
from diegosouzapw/awesome-omni-skill

Setup Fastlane for Play Store deployment with supply and screengrab

android-espresso-dependencies

16
from diegosouzapw/awesome-omni-skill

Add Espresso and AndroidX Test dependencies to Android project