npx skills add ...
npx skills add code-with-beto/skills --skill app-icon
Generate app icons for your React Native Expo app with iOS 26 support
npx skills add code-with-beto/skills --skill app-icon
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:
If the config check fails or shows no API key:
If the user has an API key:
SNAPAI_API_KEY or OPENAI_API_KEY in their shell or secret managerIf 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):
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:
assets/app-icon.icon/icon.json with this basic configuration: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):
Alternative - Using sips + ImageMagick (macOS):
Note: If ImageMagick is not installed, install it with:
Update the app.json to configure icons for both platforms:
Use the Android-optimized icon created in Step 4.5:
Option 1: Simple (with solid background color)
Option 2: Comprehensive (recommended) Since the icon has a transparent background, you can use it for all three Android adaptive icon fields:
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 default.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 imagemagick