# Generate Store Assets Skill

**Description**: Programmatically generate all app store artwork (icons, screenshots, feature graphics) from a single script.

## When to Use

- Preparing for app store releases
- Updating app branding
- Creating assets for multiple platforms
- Maintaining consistent design across stores

## Prerequisites

- Python 3.7+ with Pillow library
- App name and branding decided
- Color palette chosen

## Quick Start

```bash
# From repo root
python3 assets/generate-store-assets.py
```

## Output Overview

The script generates **73 PNG files** across multiple categories:

| Category        | Count | Directory                                             | Platforms                                                  |
| --------------- | ----- | ----------------------------------------------------- | ---------------------------------------------------------- |
| App Icons       | 36    | `assets/store/icons/`                                 | iOS (13), Android (6), macOS (7), Windows (5), Favicon (5) |
| Screenshots     | 32    | `assets/store/screenshots/{ios,android,mac,windows}/` | 4 screens × dark + light themes                            |
| Feature Graphic | 1     | `assets/store/feature/`                               | Google Play Store                                          |
| Splash Screens  | 4     | `assets/store/splash/`                                | Android splash screens                                     |

## Customization

### 1. Color Palette

Edit the color variables at the top of `assets/generate-store-assets.py`:

```python
# Default colors
GREEN_PRIMARY = "#2E7D32"      # Icon circle, badges, section headers
GREEN_ACCENT = "#50FA7B"        # Glowing text, active tabs, highlights
DARK_BG = "#1E1E2E"             # Dark mode background
DARK_SURFACE = "#282A36"       # Cards, inputs, tab bar
MUTED = "#6272A4"               # Secondary text, timestamps
CYAN = "#8BE9FD"                # Transcript card accents
```

After changing colors, re-run the script to regenerate all assets.

### 2. App Icon Design

The icon features a waveform-in-circle with green glow:

```python
# Key parameters in generate_app_icon()
circle_radius = size * 0.28
corner_radius = size * 0.22
num_bars = 7
waveform_heights = [0.3, 0.5, 0.75, 1.0, 0.75, 0.5, 0.3]
glow_rings = 8  # Number of concentric glow rings
```

### 3. Screenshot Content

Each screenshot function uses sample data. Edit these functions:

```python
def generate_screenshot_home():
    # Customize: greeting, stats, activity list
    greeting = "Good afternoon, Sarah"
    stats = {"words": "12,543", "time": "2h 15m", "sessions": 8}

def generate_screenshot_record():
    # Customize: timer display, live preview
    timer = "00:47"
    preview_text = "Meeting notes from the product review..."

def generate_screenshot_history():
    # Customize: transcript cards
    transcripts = [
        {"title": "Product Review", "date": "Today", "words": 1250},
        {"title": "Team Standup", "date": "Yesterday", "words": 340}
    ]

def generate_screenshot_settings():
    # Customize: profile and settings sections
    profile = {"name": "Sarah Chen", "email": "sarah@example.com", "plan": "Pro"}
```

## Platform-Specific Requirements

### iOS Icons

- 1024x1024 (App Store)
- 180x180 (iPhone @3x)
- 120x120 (iPhone @2x)
- 167x167 (iPad Pro @2x)
- 152x152 (iPad @2x)
- 87x87 (Settings @3x)
- 58x58 (Settings @2x)
- 60x60 (Notifications @3x)
- 40x40 (Notifications @2x)
- 80x80 (Spotlight @2x)
- 40x40 (Spotlight @1x)
- 20x20 (Settings @1x)

### Android Icons

- 512x512 (Google Play Store)
- 192x192 (adaptive foreground)
- 432x432 (adaptive background)
- 144x144 (xxxhdpi)
- 96x96 (xxhdpi)
- 72x72 (xhdpi)
- 48x48 (mdpi)

### Additional Sizes

- macOS: 16x16 to 1024x1024
- Windows: 16x16 to 256x256
- Favicon: 16x16, 32x32, 96x96, 192x192

## Screenshot Specifications

### Dimensions

- **iOS**: 1242x2688 (iPhone X/11/12/13) and 2048x2732 (iPad Pro)
- **Android**: 1080x1920 (phone) and 2048x2732 (tablet)
- **macOS**: 1280x800 (Mac App Store)
- **Windows**: 1366x768 (Microsoft Store)

### Themes

- **Light mode**: Light background, dark text
- **Dark mode**: Dark background, light text
- Both generated automatically

## Automation Script

Create `scripts/update-store-assets.sh`:

```bash
#!/bin/bash
# Update store assets after design changes

echo "Generating store assets..."
python3 assets/generate-store-assets.py

echo "Verifying output..."
find assets/store -name "*.png" | wc -l

echo "Opening directory for review..."
open assets/store

echo "Done! Review assets before committing."
```

## Integration with CI/CD

### GitHub Actions

```yaml
name: Generate Store Assets
on:
  push:
    paths:
      - 'assets/generate-store-assets.py'
      - 'assets/store/**'

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v4
        with:
          python-version: '3.11'

      - name: Install dependencies
        run: pip install Pillow

      - name: Generate assets
        run: python3 assets/generate-store-assets.py

      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: store-assets
          path: assets/store/
```

## Best Practices

### Design Guidelines

1. **Keep it simple** - Icons should be recognizable at small sizes
2. **High contrast** - Ensure visibility on various backgrounds
3. **Brand consistency** - Use consistent colors across all assets
4. **Text readability** - Use large, clear fonts in screenshots

### Technical Tips

1. **Vector when possible** - Consider SVG for icons (convert to PNG)
2. **Optimize file size** - Use compression without quality loss
3. **Test on devices** - Verify how assets look on actual devices
4. **Version control** - Commit generated assets or regenerate on build

## Common Issues

### Script Won't Run

```bash
# Install Pillow
pip install Pillow

# Check Python version (3.7+)
python --version
```

### Icons Look Blurry

- Ensure you're generating at the correct resolution
- Check if the source images are high quality
- Verify anti-aliasing settings in the script

### Colors Don't Match

- Colors must be in hex format (#RRGGBB)
- Ensure consistent color space (sRGB)
- Check gamma correction settings

## Before Release Checklist

- [ ] All 73 assets generated successfully
- [ ] Icons look good at all sizes
- [ ] Screenshots show current UI
- [ ] No placeholder text remains
- [ ] Dark/light themes both look good
- [ ] Text is readable in all screenshots
- [ ] App name is correct in all contexts
- [ ] Brand colors are consistent

## Notes

- **Single source of truth** - The Python script is the only place to make changes
- **Regenerate often** - Run after any UI changes
- **Store requirements change** - Check platform guidelines periodically
- **Test on actual devices** - Simulators don't always match real devices

## Related Skills

- [Desktop Release](./desktop-release.md) - Packaging with assets
- [iOS Release](./ios-release.md) - App Store submission
- [Android Development](./android-development.md) - Android-specific assets
