From cwb-app-icon
Generates professional app icons for React Native Expo apps using AI via SnapAI, with iOS 26 Liquid Glass and Android support.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cwb-app-icon:app-iconThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate professional app icons using AI and configure them for both iOS (with iOS 26 Liquid Glass support) and Android platforms in Expo apps.
Generate professional app icons using AI and configure them for both iOS (with iOS 26 Liquid Glass support) and Android platforms in Expo apps.
SnapAI is a free, open-source CLI built by the Code with Beto team. It calls the selected image provider directly using the user's API key. A key can be stored locally at ~/.snapai/config.json or supplied through an environment variable. SnapAI ships no telemetry and has no backend server.
Before attempting to generate icons, check if SnapAI is configured:
npx snapai config --show
If the config check fails or shows no API key:
If the user has an API key:
npx snapai config --openai-api-key "<their-api-key>"
SNAPAI_API_KEY or OPENAI_API_KEY in their shell or secret managernpx snapai config --show
If the user needs to get an API key:
Important Notes:
app.json to understand the app name and current icon configurationAsk the user what style they'd like for the icon. Available styles:
minimalism - Clean, Apple-inspired minimalism (2-3 colors max)glassy - Premium glass aesthetic with semi-transparent elementsgradient - Vibrant gradients, Instagram-inspiredneon - Cyberpunk, futuristic with glowing effectsmaterial - Google Material Designios-classic - Traditional iOS with subtle gradientspixel - Retro 8-bit/16-bit game art stylegeometric - Bold, angular compositionsOr let the user provide a custom style description.
Pre-flight check: Verify SnapAI is configured before running (see Step 0)
Generate a 1024x1024 icon with transparent background (critical for both platforms):
npx snapai icon --prompt "YOUR_PROMPT_HERE" --background transparent --output-format png --style STYLE_NAME
Important flags:
--background transparent - REQUIRED for iOS 26 and Android adaptive icons--output-format png - Ensures PNG format--style - Optional, enhances the visual style--quality high - Optional, for final production iconsThe icon will be saved to ./assets/icon-[timestamp].png
Create the new iOS 26 Liquid Glass icon format:
mkdir -p assets/app-icon.icon/Assets
cp assets/icon-[timestamp].png assets/app-icon.icon/Assets/icon.png
assets/app-icon.icon/icon.json with this basic configuration:{
"fill": "automatic",
"groups": [
{
"layers": [
{
"glass": false,
"image-name": "icon.png",
"name": "icon"
}
],
"shadow": {
"kind": "neutral",
"opacity": 0.5
},
"translucency": {
"enabled": true,
"value": 0.5
}
}
],
"supported-platforms": {
"circles": ["watchOS"],
"squares": "shared"
}
}
Android adaptive icons have a smaller safe area (~66% of the canvas) compared to iOS. The main icon generated by SnapAI is optimized for iOS safe areas, which means it may appear too large and get clipped on Android devices with circular or squircle masks.
To ensure your icon displays correctly on all Android device shapes (circles, squircles, rounded squares), create a scaled-down version:
Using ImageMagick (recommended):
# Scale the icon to 66% and center it on a 1024x1024 transparent canvas
magick assets/icon-[timestamp].png \
-resize 66% \
-gravity center \
-background transparent \
-extent 1024x1024 \
assets/android-icon.png
Alternative - Using sips + ImageMagick (macOS):
# Step 1: Resize to 66% (676x676)
sips -Z 676 assets/icon-[timestamp].png --out /tmp/icon-resized.png
# Step 2: Create the final centered image
magick -size 1024x1024 xc:transparent /tmp/icon-resized.png \
-gravity center -composite assets/android-icon.png
Note: If ImageMagick is not installed, install it with:
brew install imagemagick
Update the app.json to configure icons for both platforms:
{
"expo": {
"ios": {
"icon": "./assets/app-icon.icon"
}
}
}
Use the Android-optimized icon created in Step 4.5:
Option 1: Simple (with solid background color)
{
"expo": {
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/android-icon.png",
"backgroundColor": "#ffffff"
}
}
}
}
Option 2: Comprehensive (recommended) Since the icon has a transparent background, you can use it for all three Android adaptive icon fields:
{
"expo": {
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/android-icon.png",
"backgroundImage": "./assets/android-icon.png",
"monochromeImage": "./assets/android-icon.png"
}
}
}
}
Benefits of Option 2:
foregroundImage - Main icon displayedbackgroundImage - Provides layered depth effect on Android 8.0+monochromeImage - Used for themed icons on Android 13+ (automatically recolored by system)Note:
backgroundColor, or use white (#ffffff) as defaultls -la assets/app-icon.icon/
cat app.json | jq .
npx expo prebuild --clean
npx expo run:ios
npx expo run:android
.icon folder enables Liquid Glass effects on iOS 26+icon-[timestamp].png - Main icon optimized for iOS safe areas (used in .icon folder)android-icon.png - Scaled to 66% and centered for Android adaptive icon safe areasandroid-icon.png can be used for foregroundImage, backgroundImage, AND monochromeImage fields.icon folder name can be customized (e.g., app-icon.icon, myapp.icon)npx snapai config --openai-api-key "<key>" locally, or set SNAPAI_API_KEY / OPENAI_API_KEYnpx snapai (not just snapai)npx expo prebuild --clean to regenerate native projects after icon changesbrew install imagemagicknpx claudepluginhub code-with-beto/skills --plugin cwb-app-iconGenerates app icons for iOS, Android, PWA, and visionOS from a single master, handling platform-specific requirements like safe zones, alpha, and adaptive icons.
Generates square PNG icons with transparent backgrounds for app icons, favicons, and UI using Google Gemini. Supports flat/3D/line/glyph/gradient/minimal styles, sizes 128-1024px, batch sets, reference matching.
Generate, evaluate, and install iOS/macOS app icons from product context, including AppIcon.appiconset and .icns assets.