- Add 15 comprehensive skills extracted from Windsurf workflows - Cover debugging, testing, releases, deployment, security, and documentation - Each skill includes step-by-step instructions and copy-pasteable commands - Skills organized by category with cross-references and difficulty levels
259 lines
7.0 KiB
Markdown
259 lines
7.0 KiB
Markdown
# 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
|