End-to-end Play Store asset pipeline

End-to-end Play Store asset pipeline. Boots Android emulator, captures real screenshots, extracts brand colors, and generates icon, feature graphic, and framed screenshots using AI (Gemini Imagen, AI Studio, Replicate).

Sby Skills Guide Bot
DevelopmentIntermediate
007/27/2026
Claude Code
#android#flutter#play-store#asset-generation#screenshot

Recommended for


name: play-store-forge version: "1.0.0" description: "End-to-end Play Store asset pipeline β€” boots Android emulator, captures real screenshots, extracts brand colors, and generates icon, feature graphic, and framed screenshots using Gemini Imagen, AI Studio, or Replicate." argument-hint: "play-store-forge | play-store-forge screenshots | play-store-forge generate | play-store-forge icon" allowed-tools: Bash, Read, Write, Edit, AskUserQuestion author: ranahaani license: MIT repository: https://github.com/ranahaani/play-store-forge user-invocable: true metadata: openclaw: emoji: "🎨" requires: bins: - adb - python3 optionalEnv: - GEMINI_API_KEY - REPLICATE_API_TOKEN - GOOGLE_APPLICATION_CREDENTIALS optionalBins: - emulator - flutter files: - "scripts/*" tags: - android - flutter - play-store - asset-generation - screenshot - gemini - imagen - marketing

Play Store Forge

Full Play Store asset pipeline in one skill. Captures real screenshots from your running app, extracts brand colors, and generates production-ready icon, feature graphic, and screenshots using AI image generation.

Quick Start

/play-store-forge                  # full pipeline
/play-store-forge screenshots      # capture only
/play-store-forge generate         # generate assets only (skip capture)
/play-store-forge icon             # icon only

All scripts are in scripts/ next to this SKILL.md. Copy them anywhere and run independently.


STEP 0 β€” Read the project

Before anything, understand what you're working with:

# Flutter: get package name and app name
grep -E "applicationId|namespace" android/app/build.gradle.kts 2>/dev/null || \
grep "applicationId" android/app/build.gradle 2>/dev/null
grep "^name:" pubspec.yaml 2>/dev/null

# Detect brand colors from theme file (if Flutter)
python3 scripts/extract_colors.py --from-theme lib/theme/tokens.dart 2>/dev/null || \
python3 scripts/extract_colors.py --from-theme lib/theme/app_colors.dart 2>/dev/null || \
python3 scripts/extract_colors.py --from-xml android/app/src/main/res/values/colors.xml 2>/dev/null

Store what you find:

  • APP_NAME β€” display name
  • PACKAGE_ID β€” e.g. com.example.myapp
  • PRIMARY_COLOR β€” primary brand hex e.g. #2563EB

STEP 1 β€” Emulator check

# Check for running device/emulator
adb devices

# If none running, list available AVDs
emulator -list-avds 2>/dev/null || echo "emulator not in PATH β€” add \$ANDROID_HOME/emulator"

# Boot an AVD (replace <AVD_NAME>)
emulator -avd <AVD_NAME> -no-audio -no-boot-anim > /dev/null 2>&1 &

# Wait for boot
until adb shell getprop sys.boot_completed 2>/dev/null | grep -q "1"; do sleep 2; done
echo "Ready"

If no AVD exists, tell the user:

"No AVD found. Open Android Studio β†’ Tools β†’ Device Manager β†’ Create Device, then re-run."


STEP 2 β€” Capture screenshots

Copy scripts/capture_screenshots.sh to the project root and run it:

# Make executable and run
chmod +x scripts/capture_screenshots.sh

# With package auto-launch
bash scripts/capture_screenshots.sh store_assets/raw_screenshots com.example.myapp

# Without auto-launch (you navigate manually)
bash scripts/capture_screenshots.sh store_assets/raw_screenshots

The script prompts for each screen type (home, feature, detail, settings, onboarding) and captures on Enter. Press 's' to skip a screen.

After capture, extract colors from the real screenshots:

python3 scripts/extract_colors.py
# Outputs: store_assets/colors.json + suggests --primary-color value

STEP 3 β€” Generate assets

Provider setup (choose one)

Option A: Vertex AI β€” ~$0.02/image (recommended, best quality)

# Needs: service account JSON with Vertex AI User role
python3 scripts/generate_assets.py \
  --provider vertex \
  --key /path/to/service-account.json \
  --project your-gcp-project-id \
  --app-name "My App" \
  --primary-color "#2563EB" \
  --tagline "Stay Protected"

Option B: AI Studio API key β€” free tier available

# Get key: aistudio.google.com β†’ Get API key
python3 scripts/generate_assets.py \
  --provider aistudio \
  --api-key "AIza..." \
  --app-name "My App" \
  --primary-color "#2563EB"

Option C: Replicate β€” no GCP needed

# Get token: replicate.com β†’ Account β†’ API tokens
python3 scripts/generate_assets.py \
  --provider replicate \
  --api-key "r8_..." \
  --app-name "My App" \
  --primary-color "#2563EB"

Generate only specific assets

# Icon only
python3 scripts/generate_assets.py --provider vertex --key key.json --project proj \
  --app-name "My App" --primary-color "#2563EB" --assets icon

# Feature graphic + screenshots
python3 scripts/generate_assets.py ... --assets feature_graphic screenshot_1 screenshot_2

STEP 4 β€” Resize to Play Store specs

pip install Pillow -q

# Resize all generated assets at once
python3 scripts/resize_assets.py --all

# Or individually
python3 scripts/resize_assets.py --icon store_assets/icon.jpg
python3 scripts/resize_assets.py --feature store_assets/feature_graphic.jpg

Play Store exact specs:

  • Icon: 512Γ—512 PNG, max 1024KB
  • Feature graphic: 1024Γ—500 JPG or PNG
  • Screenshots: 320–3840px on either side, JPG or PNG

STEP 5 β€” Final output

After the full pipeline, store_assets/ should contain:

store_assets/
β”œβ”€β”€ icon_512.png                    ← Upload as App icon
β”œβ”€β”€ feature_graphic_1024x500.jpg    ← Upload as Feature graphic
β”œβ”€β”€ screenshot_01_ready.jpg         ← Phone screenshots
β”œβ”€β”€ screenshot_02_ready.jpg
β”œβ”€β”€ screenshot_03_ready.jpg
β”œβ”€β”€ colors.json                     ← Brand colors (reference)
└── raw_screenshots/                ← Original adb captures
    β”œβ”€β”€ 01_home.png
    β”œβ”€β”€ 02_feature.png
    └── 03_detail.png

Play Console upload path:

Grow users β†’ Store listings β†’ Default store listing β†’ Edit β†’ Listing assets


Install dependencies

# Core (always needed)
pip install Pillow

# Vertex AI or AI Studio
pip install google-genai google-auth

# Replicate
pip install replicate requests

Tips for better results

| Goal | Prompt tip | |---|---| | No text on icon | Add Absolutely NO text, NO letters, NO words anywhere | | On-brand colors | Include exact hex: deep blue #1D4ED8 not just "blue" | | Store quality | Add professional, Play Store icon, app store quality | | Clean icon | Add flat design, minimal, geometric, white background | | Cinematic feature | Add wide cinematic, dramatic lighting, marketing banner |

If an image has unwanted text: add absolutely NO text and regenerate β€” never retry the same prompt.


Troubleshooting

| Error | Fix | |---|---| | adb: no devices | Start emulator or connect device first | | emulator: command not found | export PATH=$PATH:$ANDROID_HOME/emulator | | 403 PERMISSION_DENIED (Vertex) | IAM takes ~60s to propagate β€” wait and retry | | ModuleNotFoundError: PIL | pip install Pillow | | ModuleNotFoundError: google.genai | pip install google-genai google-auth | | Feature graphic wrong size | Run resize_assets.py --feature after generation | | Blurry icon | Use --assets icon and regenerate with more specific prompt |

Related skills