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".
Best use case
app-icon-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
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".
Teams using app-icon-generator 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/app-icon-generator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How app-icon-generator Compares
| Feature / Agent | app-icon-generator | 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?
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".
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
# App Icon Generator
Generates app icons in all required sizes for iOS, Android, PWA, and web from a single source image.
## When to Use
- "Generate app icons for iOS"
- "Create Android app icons"
- "Generate all icon sizes"
- "Create favicon"
- "PWA icons"
- "App icon set"
## Instructions
### 1. Verify Source Image
Check for source icon file:
```bash
# Look for icon source
find . -name "*icon*.png" -o -name "*logo*.png"
```
**Source image requirements:**
- Minimum 1024x1024 pixels (recommended)
- Square (1:1 aspect ratio)
- PNG format with transparency (if needed)
- High quality, not compressed
- No text too close to edges (safe area: center 70%)
Present findings and ask for source if not found.
### 2. Check for Image Processing Tools
Verify available tools:
```bash
# Check for ImageMagick
which convert || echo "ImageMagick not found"
# Check for sharp-cli
which sharp || echo "sharp-cli not found"
# Check for sips (macOS)
which sips || echo "sips not found (macOS only)"
```
**Installation guide if needed:**
```bash
# macOS
brew install imagemagick
# Ubuntu/Debian
sudo apt-get install imagemagick
# Node.js (cross-platform, recommended)
npm install -g sharp-cli
```
### 3. Generate iOS Icons
**iOS requires multiple sizes:**
```bash
# iOS App Icons (all required sizes)
declare -a ios_sizes=(
"20" # iPhone Notification (2x, 3x)
"29" # iPhone Settings (2x, 3x)
"40" # iPhone Spotlight (2x, 3x)
"60" # iPhone App (2x, 3x)
"76" # iPad App (1x, 2x)
"83.5" # iPad Pro App (2x)
"1024" # App Store
)
# Generate using ImageMagick
for size in "${ios_sizes[@]}"; do
convert icon-source.png -resize ${size}x${size} "ios/icon-${size}.png"
# Generate 2x
size2x=$((size * 2))
convert icon-source.png -resize ${size2x}x${size2x} "ios/icon-${size}@2x.png"
# Generate 3x (for relevant sizes)
if [[ $size -eq 20 || $size -eq 29 || $size -eq 40 || $size -eq 60 ]]; then
size3x=$((size * 3))
convert icon-source.png -resize ${size3x}x${size3x} "ios/icon-${size}@3x.png"
fi
done
```
**Or using sharp-cli:**
```bash
# Generate all iOS sizes
sharp -i icon-source.png -o ios/icon-{size}.png \
resize 20 40 60 58 80 87 120 180 76 152 167 1024
```
**Contents.json for Xcode:**
```json
{
"images": [
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-40.png",
"scale": "2x"
},
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-60.png",
"scale": "3x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-58.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-87.png",
"scale": "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-80.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-120.png",
"scale": "3x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-120.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-180.png",
"scale": "3x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "icon-1024.png",
"scale": "1x"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}
```
### 4. Generate Android Icons
**Android adaptive icons:**
Android uses adaptive icons with separate foreground and background layers.
```bash
# Android icon sizes (in dp)
# mdpi = 1x, hdpi = 1.5x, xhdpi = 2x, xxhdpi = 3x, xxxhdpi = 4x
# mipmap-mdpi (48x48)
convert icon-source.png -resize 48x48 android/mipmap-mdpi/ic_launcher.png
# mipmap-hdpi (72x72)
convert icon-source.png -resize 72x72 android/mipmap-hdpi/ic_launcher.png
# mipmap-xhdpi (96x96)
convert icon-source.png -resize 96x96 android/mipmap-xhdpi/ic_launcher.png
# mipmap-xxhdpi (144x144)
convert icon-source.png -resize 144x144 android/mipmap-xxhdpi/ic_launcher.png
# mipmap-xxxhdpi (192x192)
convert icon-source.png -resize 192x192 android/mipmap-xxxhdpi/ic_launcher.png
# Play Store (512x512)
convert icon-source.png -resize 512x512 android/playstore-icon.png
```
**Adaptive icon XML:**
```xml
<!-- res/mipmap-anydpi-v26/ic_launcher.xml -->
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
```
**Round icon variant:**
```bash
# Generate round icons (same sizes)
for size in 48 72 96 144 192; do
density=$(get_density $size) # mdpi, hdpi, etc.
convert icon-source.png -resize ${size}x${size} \
\( +clone -threshold -1 -negate -fill white -draw "circle $((size/2)),$((size/2)) $((size/2)),0" \) \
-alpha off -compose copy_opacity -composite \
"android/mipmap-${density}/ic_launcher_round.png"
done
```
### 5. Generate PWA Icons
**Progressive Web App icons:**
```bash
# PWA icon sizes
sharp -i icon-source.png -o pwa/icon-{size}.png \
resize 72 96 128 144 152 192 384 512
# Also generate maskable icons (with safe area)
# Maskable icons need 40% safe area
sharp -i icon-source.png -o pwa/icon-{size}-maskable.png \
resize 72 96 128 144 152 192 384 512 \
--extend top=10 bottom=10 left=10 right=10
```
**manifest.json:**
```json
{
"name": "My App",
"short_name": "App",
"icons": [
{
"src": "/icons/icon-72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "/icons/icon-96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "/icons/icon-128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "/icons/icon-144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "/icons/icon-152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon-384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "/icons/icon-192-maskable.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/icons/icon-512-maskable.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}
```
### 6. Generate Favicons
**Web favicons (multiple sizes):**
```bash
# Standard sizes
convert icon-source.png -resize 16x16 favicon-16.png
convert icon-source.png -resize 32x32 favicon-32.png
convert icon-source.png -resize 48x48 favicon-48.png
# Create multi-size .ico file
convert favicon-16.png favicon-32.png favicon-48.png favicon.ico
# Apple touch icon
convert icon-source.png -resize 180x180 apple-touch-icon.png
# Microsoft tile
convert icon-source.png -resize 144x144 mstile-144.png
```
**HTML head tags:**
```html
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48.png">
<link rel="shortcut icon" href="/favicon.ico">
<!-- Apple touch icon -->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<!-- Android -->
<link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192.png">
<link rel="icon" type="image/png" sizes="512x512" href="/android-chrome-512.png">
<!-- Microsoft -->
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/mstile-144.png">
```
### 7. Generate React Native Icons
**For React Native apps:**
```bash
# iOS (place in ios/AppName/Images.xcassets/AppIcon.appiconset/)
# Same as iOS native above
# Android (place in android/app/src/main/res/)
# Same as Android native above
```
**Or use react-native-make:**
```bash
npx react-native set-icon --path icon-source.png
```
### 8. Generate Flutter Icons
**Using flutter_launcher_icons:**
```yaml
# pubspec.yaml
dev_dependencies:
flutter_launcher_icons: ^0.13.1
flutter_launcher_icons:
android: "launcher_icon"
ios: true
image_path: "assets/icon.png"
adaptive_icon_background: "#ffffff"
adaptive_icon_foreground: "assets/icon-foreground.png"
```
```bash
# Generate icons
flutter pub get
flutter pub run flutter_launcher_icons
```
### 9. Create Automated Script
**Complete icon generation script:**
```bash
#!/bin/bash
# generate-icons.sh
SOURCE_ICON="icon-source.png"
OUTPUT_DIR="generated-icons"
# Check if source exists
if [ ! -f "$SOURCE_ICON" ]; then
echo "Error: Source icon not found: $SOURCE_ICON"
exit 1
fi
# Create directories
mkdir -p "$OUTPUT_DIR"/{ios,android,pwa,web}
echo "🎨 Generating app icons..."
# iOS icons
echo "📱 iOS icons..."
for size in 40 60 58 87 80 120 180 76 152 167 1024; do
convert "$SOURCE_ICON" -resize ${size}x${size} \
"$OUTPUT_DIR/ios/icon-${size}.png"
echo " ✓ ${size}x${size}"
done
# Android icons
echo "🤖 Android icons..."
convert "$SOURCE_ICON" -resize 48x48 "$OUTPUT_DIR/android/mdpi.png"
convert "$SOURCE_ICON" -resize 72x72 "$OUTPUT_DIR/android/hdpi.png"
convert "$SOURCE_ICON" -resize 96x96 "$OUTPUT_DIR/android/xhdpi.png"
convert "$SOURCE_ICON" -resize 144x144 "$OUTPUT_DIR/android/xxhdpi.png"
convert "$SOURCE_ICON" -resize 192x192 "$OUTPUT_DIR/android/xxxhdpi.png"
convert "$SOURCE_ICON" -resize 512x512 "$OUTPUT_DIR/android/playstore.png"
echo " ✓ All densities generated"
# PWA icons
echo "🌐 PWA icons..."
for size in 72 96 128 144 152 192 384 512; do
convert "$SOURCE_ICON" -resize ${size}x${size} \
"$OUTPUT_DIR/pwa/icon-${size}.png"
echo " ✓ ${size}x${size}"
done
# Favicons
echo "🔖 Favicons..."
convert "$SOURCE_ICON" -resize 16x16 "$OUTPUT_DIR/web/favicon-16.png"
convert "$SOURCE_ICON" -resize 32x32 "$OUTPUT_DIR/web/favicon-32.png"
convert "$SOURCE_ICON" -resize 48x48 "$OUTPUT_DIR/web/favicon-48.png"
convert "$OUTPUT_DIR/web/favicon-"{16,32,48}.png "$OUTPUT_DIR/web/favicon.ico"
convert "$SOURCE_ICON" -resize 180x180 "$OUTPUT_DIR/web/apple-touch-icon.png"
echo " ✓ All favicons generated"
echo "✅ Icon generation complete!"
echo "📁 Icons saved to: $OUTPUT_DIR"
```
### 10. Provide Integration Instructions
**iOS (Xcode):**
1. Open Xcode project
2. Navigate to Assets.xcassets
3. Right-click → New App Icon
4. Drag generated icons to appropriate slots
**Android (Android Studio):**
1. Right-click res folder
2. New → Image Asset
3. Select generated icons
4. Configure adaptive icon layers
**Web:**
1. Copy icons to public/icons/ folder
2. Update manifest.json with icon paths
3. Add favicon links to index.html
**React Native:**
1. Copy iOS icons to `ios/AppName/Images.xcassets/AppIcon.appiconset/`
2. Copy Android icons to `android/app/src/main/res/mipmap-*/`
3. Update Contents.json for iOS
### Best Practices
**Design Guidelines:**
- Keep important content in center 80%
- Avoid thin lines (minimum 2px)
- Test on dark and light backgrounds
- Use simple, recognizable shapes
- Avoid text (too small on icons)
- Use bold colors for visibility
**Technical Guidelines:**
- Source: 1024x1024 minimum
- Format: PNG with transparency
- Color space: sRGB
- No compression on source
- Square aspect ratio
- Safe area for maskable: 40% padding
**Testing:**
- Test on actual devices
- Check all sizes render correctly
- Verify transparency works
- Test dark mode appearance
- Check adaptive icon animations (Android)
### Size Reference
**iOS:**
- 20pt (40x40, 60x60)
- 29pt (58x58, 87x87)
- 40pt (80x80, 120x120)
- 60pt (120x120, 180x180)
- 76pt (76x76, 152x152)
- 83.5pt (167x167)
- 1024x1024 (App Store)
**Android:**
- mdpi: 48x48
- hdpi: 72x72
- xhdpi: 96x96
- xxhdpi: 144x144
- xxxhdpi: 192x192
- Play Store: 512x512
**PWA:**
- 72x72, 96x96, 128x128
- 144x144, 152x152, 192x192
- 384x384, 512x512
**Web:**
- 16x16, 32x32 (favicon)
- 180x180 (Apple touch)
- 192x192, 512x512 (Android)Related Skills
presentation-generator
Google Slides presentation creation for PM deliverables. Use when creating presentations from PRDs, pitching ideas, stakeholder updates, or product roadmaps. Triggers on "presentation", "slides", "pitch deck", "stakeholder meeting", "Google Slides".
prd-generator
Generate comprehensive Product Requirements Documents with interactive discovery, progress tracking, and True Ralph Loop support for autonomous implementation. Use when user wants to (1) create a PRD for a new project/feature, (2) implement a PRD autonomously with fresh Claude sessions, (3) track implementation progress, (4) recover context after session loss. Creates docs/PRD.md and docs/PROGRESS.md.
android-app-icon
Generate Android adaptive icons from Iconify's 200k+ open source icons
bac-presentation-generator
Transforms markdown files into brand-compliant BAC HTML presentations with professional styling, proper typography, and integrated branding. Supports manual browser-based PDF export.
angular-component-generator
Generate Angular components with TypeScript, templates, and styles. Triggers on "create angular component", "generate ng component", "angular module", "ng generate".
ai-image-asset-generator
This skill should be used when generating AI image assets for websites, landing pages, or applications. It automatically analyzes page requirements, generates images using Gemini API, removes backgrounds, converts to SVG for interactivity, and places assets in frontend code. Ideal for creating hero images, icons, backgrounds, product mockups, and infographic elements. Use this skill when users need image assets for their web projects.
readme-generator
Generate a production-quality README.md by analyzing project structure, framework, and code
Onboarding Guide Generator
Generate onboarding guides for new team members based on project structure
changelog-generator
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
agent-context-generator
Generate project-level AGENTS.md guides that capture conventions, workflows, and required follow-up tasks. Use when a repository needs clear agent onboarding covering structure, tooling, testing, task flow, README expectations, and conventional commit summaries.
adr-generator
Specialized skill for generating and managing Architecture Decision Records (ADRs). Supports Nygard, MADR, and custom templates with auto-numbering, linking, and status management.
ln-731-docker-generator
Generates Docker and docker-compose configuration for multi-container development