|
| 1 | +--- |
| 2 | +name: banner-creator |
| 3 | +description: Create banners using AI image generation. Discuss format/style, generate variations, iterate with user feedback, crop to target ratio. Use when user wants to create a banner, header, hero image, or cover image. |
| 4 | +triggers: |
| 5 | + - "banner" |
| 6 | + - "header" |
| 7 | + - "hero image" |
| 8 | + - "cover image" |
| 9 | + - "create banner" |
| 10 | + - "github banner" |
| 11 | + - "twitter header" |
| 12 | + - "readme banner" |
| 13 | +--- |
| 14 | + |
| 15 | +# Banner Creator Skill |
| 16 | + |
| 17 | +Create professional banners through AI image generation with an iterative design process. |
| 18 | + |
| 19 | +## Prerequisites |
| 20 | + |
| 21 | +**Required Tools:** |
| 22 | +- `nano-banana-pro___generate_image` - AI image generation |
| 23 | +- `chrome-devtools` MCP - For previewing banners in browser |
| 24 | + |
| 25 | +## File Output Location |
| 26 | + |
| 27 | +All generated files should be saved to the `.skill-archive` directory: |
| 28 | + |
| 29 | +``` |
| 30 | +.skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/ |
| 31 | +``` |
| 32 | + |
| 33 | +**Example:** |
| 34 | +``` |
| 35 | +.skill-archive/banner-creator/2026-01-19-opc-banner/ |
| 36 | + banner-01.png |
| 37 | + banner-02.png |
| 38 | + ... |
| 39 | + banner-03-cropped.png |
| 40 | + preview.html |
| 41 | +``` |
| 42 | + |
| 43 | +## Workflow |
| 44 | + |
| 45 | +### Step 1: Discovery & Requirements |
| 46 | + |
| 47 | +Before generating, gather requirements from user: |
| 48 | + |
| 49 | +**Ask about:** |
| 50 | +1. **Purpose** - Where will the banner be used? |
| 51 | + - GitHub README |
| 52 | + - Twitter/X header |
| 53 | + - LinkedIn banner |
| 54 | + - Website hero |
| 55 | + - YouTube channel art |
| 56 | + |
| 57 | +2. **Target ratio/size** - See [references/formats.md](./references/formats.md): |
| 58 | + - `2:1` (1280x640) - GitHub README |
| 59 | + - `3:1` (1500x500) - Twitter header |
| 60 | + - `16:9` (1920x1080) - Website hero |
| 61 | + |
| 62 | +3. **Style preference**: |
| 63 | + - Match existing logo/brand? |
| 64 | + - Pixel art / 8-bit retro |
| 65 | + - Minimalist / flat design |
| 66 | + - Gradient / modern |
| 67 | + - Illustrated / artistic |
| 68 | + |
| 69 | +4. **Content elements**: |
| 70 | + - Brand name / project name? |
| 71 | + - Tagline / slogan? |
| 72 | + - Logo character to include? |
| 73 | + |
| 74 | +5. **Color preferences**: |
| 75 | + - Existing brand colors? |
| 76 | + - Let AI decide? |
| 77 | + |
| 78 | +**Wait for user confirmation before proceeding!** |
| 79 | + |
| 80 | +### Step 2: Generate Banner Variations |
| 81 | + |
| 82 | +Generate 20 banner variations using `nano-banana-pro___generate_image`: |
| 83 | + |
| 84 | +``` |
| 85 | +nano-banana-pro___generate_image( |
| 86 | + prompt: "{style} banner for {brand}, {description}, {text elements}", |
| 87 | + aspectRatio: "21:9", |
| 88 | + fileName: "/path/to/.skill-archive/banner-creator/<date-name>/banner-01.png" |
| 89 | +) |
| 90 | +``` |
| 91 | + |
| 92 | +**Guidelines:** |
| 93 | +- Generate at `21:9` ratio (widest available), crop later to target |
| 94 | +- Generate in batches of 10 (API rate limit: 20/minute) |
| 95 | +- Wait 60 seconds between batches if hitting limits |
| 96 | +- Use sequential naming: `banner-01.png`, `banner-02.png`, etc. |
| 97 | + |
| 98 | +**Character Consistency:** |
| 99 | +If incorporating an existing logo character, use the `image` parameter: |
| 100 | +``` |
| 101 | +nano-banana-pro___generate_image( |
| 102 | + prompt: "...", |
| 103 | + aspectRatio: "21:9", |
| 104 | + image: "/path/to/existing-logo.png", |
| 105 | + fileName: "..." |
| 106 | +) |
| 107 | +``` |
| 108 | + |
| 109 | +### Step 3: Create HTML Preview |
| 110 | + |
| 111 | +Copy the preview template and open in browser: |
| 112 | + |
| 113 | +```bash |
| 114 | +cp <skill_dir>/templates/preview.html .skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/preview.html |
| 115 | +``` |
| 116 | + |
| 117 | +Then use Chrome DevTools MCP to view: |
| 118 | + |
| 119 | +``` |
| 120 | +chrome-devtools___navigate_page(url: "file://.skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/preview.html") |
| 121 | +chrome-devtools___take_screenshot(fullPage: true) |
| 122 | +``` |
| 123 | + |
| 124 | +**IMPORTANT:** Update the HTML to include the correct number of banners generated. |
| 125 | + |
| 126 | +### Step 4: Iterate with User |
| 127 | + |
| 128 | +Ask user which banners they prefer: |
| 129 | +- "Which banners do you like? (e.g., #3, #7, #15)" |
| 130 | +- "What do you like about them?" |
| 131 | +- "Any changes you'd want?" |
| 132 | + |
| 133 | +Based on feedback: |
| 134 | +1. Generate 10-20 more variations of favorite styles |
| 135 | +2. Use naming: `banner-{original}-v{n}.png` (e.g., `banner-03-v1.png`) |
| 136 | +3. Update HTML preview |
| 137 | +4. Repeat until user selects final banner |
| 138 | + |
| 139 | +### Step 5: Crop to Target Ratio |
| 140 | + |
| 141 | +Once user approves a banner, crop to target size: |
| 142 | + |
| 143 | +```bash |
| 144 | +python3 <skill_dir>/scripts/crop_banner.py {input.png} {output.png} --ratio 2:1 --width 1280 |
| 145 | +``` |
| 146 | + |
| 147 | +**Common targets:** |
| 148 | +- GitHub README: `--ratio 2:1 --width 1280` → 1280x640 |
| 149 | +- Twitter header: `--ratio 3:1 --width 1500` → 1500x500 |
| 150 | +- Website hero: `--ratio 16:9 --width 1920` → 1920x1080 |
| 151 | + |
| 152 | +### Step 6: Deliver Final Assets |
| 153 | + |
| 154 | +Present final deliverables: |
| 155 | + |
| 156 | +``` |
| 157 | +## Final Banner Assets |
| 158 | +
|
| 159 | +| File | Description | Size | |
| 160 | +|------|-------------|------| |
| 161 | +| banner-03.png | Original (21:9) | 2016x864 | |
| 162 | +| banner-03-cropped.png | GitHub README (2:1) | 1280x640 | |
| 163 | +
|
| 164 | +All files saved to: `.skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/` |
| 165 | +Copy final banner to user's desired location. |
| 166 | +``` |
| 167 | + |
| 168 | +## Quick Reference |
| 169 | + |
| 170 | +### Common Prompt Patterns |
| 171 | + |
| 172 | +**With Text:** |
| 173 | +``` |
| 174 | +Wide banner for {brand}, {style} style, featuring "{text}" prominently displayed, {colors}, {scene/elements} |
| 175 | +``` |
| 176 | + |
| 177 | +**With Character:** |
| 178 | +``` |
| 179 | +Wide banner featuring {character description}, {style} style, {scene}, text "{brand name}" on {position}, {colors} |
| 180 | +``` |
| 181 | + |
| 182 | +**Abstract/Gradient:** |
| 183 | +``` |
| 184 | +Abstract {style} banner, {colors} gradient, geometric patterns, modern tech feel, text "{brand}" centered |
| 185 | +``` |
| 186 | + |
| 187 | +**Scene-based:** |
| 188 | +``` |
| 189 | +{Style} illustration banner, {scene description}, {character} in {action}, "{brand}" text overlay, {colors} |
| 190 | +``` |
| 191 | + |
| 192 | +### Aspect Ratios for nano-banana |
| 193 | + |
| 194 | +Generate at widest ratio, then crop: |
| 195 | +- `21:9` - Ultra-wide (recommended for generation) |
| 196 | +- `16:9` - Wide |
| 197 | +- `3:2` - Standard wide |
| 198 | + |
| 199 | +## References |
| 200 | + |
| 201 | +- [references/formats.md](./references/formats.md) - Common banner sizes by platform |
| 202 | +- [examples/opc-banner-creation.md](./examples/opc-banner-creation.md) - Full example conversation |
0 commit comments