{"id":"c04f6574-2cd9-477c-8443-acaa67578736","shortId":"rLZEcz","kind":"skill","title":"banner-creator","tagline":"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, cover image, GitHub banner, Twitter header, or readme banner.","description":"# Banner Creator Skill\n\nCreate professional banners through AI image generation with an iterative design process.\n\n## Prerequisites\n\n**Required API Keys (set in environment):**\n- `GEMINI_API_KEY` - Get from [Google AI Studio](https://aistudio.google.com/apikey)\n\n**Required Skills:**\n- `nanobanana` - AI image generation (Gemini 3 Pro Image)\n\n\n\n## File Output Location\n\nAll generated files should be saved to the `.skill-archive` directory:\n\n```\n.skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/\n```\n\n**Example:**\n```\n.skill-archive/banner-creator/2026-01-19-opc-banner/\n  banner-01.png\n  banner-02.png\n  ...\n  banner-03-cropped.png\n  preview.html\n```\n\n## Workflow\n\n### Step 1: Discovery & Requirements\n\nBefore generating, gather requirements from user:\n\n**Ask about:**\n1. **Purpose** - Where will the banner be used?\n   - GitHub README\n   - Twitter/X header\n   - LinkedIn banner\n   - Website hero\n   - YouTube channel art\n\n2. **Target ratio/size** - See [references/formats.md](./references/formats.md):\n   - `2:1` (1280x640) - GitHub README\n   - `3:1` (1500x500) - Twitter header\n   - `16:9` (1920x1080) - Website hero\n\n3. **Style preference**:\n   - Match existing logo/brand?\n   - Pixel art / 8-bit retro\n   - Minimalist / flat design\n   - Gradient / modern\n   - Illustrated / artistic\n\n4. **Content elements**:\n   - Brand name / project name?\n   - Tagline / slogan?\n   - Logo character to include?\n\n5. **Color preferences**:\n   - Existing brand colors?\n   - Let AI decide?\n\n**Wait for user confirmation before proceeding!**\n\n### Step 2: Generate Banner Variations\n\nGenerate 20 banner variations using the `nanobanana` skill:\n\n```bash\n# Generate single banner\npython3 <nanobanana_skill_dir>/scripts/generate.py \"{style} banner for {brand}, {description}, {text elements}\" \\\n  --ratio 21:9 -o .skill-archive/banner-creator/<date-name>/banner-01.png\n\n# Batch generate 20 banners\npython3 <nanobanana_skill_dir>/scripts/batch_generate.py \"{style} banner for {brand}, {description}, {text elements}\" \\\n  -n 20 --ratio 21:9 -d .skill-archive/banner-creator/<date-name> -p banner\n```\n\n**Guidelines:**\n- Generate at `21:9` ratio (widest available), crop later to target\n- Use batch_generate.py for multiple variations (includes auto-delay)\n- Use sequential naming: `banner-01.png`, `banner-02.png`, etc.\n\n**Image Editing (for incorporating existing logo):**\n```bash\npython3 <nanobanana_skill_dir>/scripts/generate.py \"add {logo character} to the left side of the banner\" \\\n  -i /path/to/existing-logo.png --ratio 21:9 -o banner-with-logo.png\n```\n\n### Step 3: Create HTML Preview\n\nCopy the preview template and open in browser:\n\n```bash\ncp <skill_dir>/templates/preview.html .skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/preview.html\n```\n\nThen open in default browser:\n\n```bash\nopen .skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/preview.html\n```\n\n**IMPORTANT:** Update the HTML to include the correct number of banners generated.\n\n### Step 4: Iterate with User\n\nAsk user which banners they prefer:\n- \"Which banners do you like? (e.g., #3, #7, #15)\"\n- \"What do you like about them?\"\n- \"Any changes you'd want?\"\n\nBased on feedback:\n1. Generate 10-20 more variations of favorite styles\n2. Use naming: `banner-{original}-v{n}.png` (e.g., `banner-03-v1.png`)\n3. Update HTML preview\n4. Repeat until user selects final banner\n\n### Step 5: Crop to Target Ratio\n\nOnce user approves a banner, crop to target size:\n\n```bash\npython3 <skill_dir>/scripts/crop_banner.py {input.png} {output.png} --ratio 2:1 --width 1280\n```\n\n**Common targets:**\n- GitHub README: `--ratio 2:1 --width 1280` → 1280x640\n- Twitter header: `--ratio 3:1 --width 1500` → 1500x500\n- Website hero: `--ratio 16:9 --width 1920` → 1920x1080\n\n### Step 6: Deliver Final Assets\n\nPresent final deliverables:\n\n```\n## Final Banner Assets\n\n| File | Description | Size |\n|------|-------------|------|\n| banner-03.png | Original (21:9) | 2016x864 |\n| banner-03-cropped.png | GitHub README (2:1) | 1280x640 |\n\nAll files saved to: `.skill-archive/banner-creator/<yyyy-mm-dd-summaryname>/`\nCopy final banner to user's desired location.\n```\n\n## Quick Reference\n\n### Common Prompt Patterns\n\n**With Text:**\n```\nWide banner for {brand}, {style} style, featuring \"{text}\" prominently displayed, {colors}, {scene/elements}\n```\n\n**With Character:**\n```\nWide banner featuring {character description}, {style} style, {scene}, text \"{brand name}\" on {position}, {colors}\n```\n\n**Abstract/Gradient:**\n```\nAbstract {style} banner, {colors} gradient, geometric patterns, modern tech feel, text \"{brand}\" centered\n```\n\n**Scene-based:**\n```\n{Style} illustration banner, {scene description}, {character} in {action}, \"{brand}\" text overlay, {colors}\n```\n\n### Supported Aspect Ratios\n\nGenerate at widest ratio, then crop:\n- `21:9` - Ultra-wide (recommended for generation)\n- `16:9` - Wide\n- `3:2` - Standard wide\n\n## References\n\n- [references/formats.md](./references/formats.md) - Common banner sizes by platform\n- [examples/opc-banner-creation.md](./examples/opc-banner-creation.md) - Full example conversation","tags":["banner","creator","opc","skills","resciencelab","agent-skills","ai-tools","claude-code","geo","llm-tools","seo"],"capabilities":["skill","source-resciencelab","skill-banner-creator","topic-agent-skills","topic-ai-tools","topic-claude-code","topic-geo","topic-llm-tools","topic-opc","topic-seo"],"categories":["opc-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ReScienceLab/opc-skills/banner-creator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ReScienceLab/opc-skills","source_repo":"https://github.com/ReScienceLab/opc-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 829 github stars · SKILL.md body (5,057 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:52:56.935Z","embedding":null,"createdAt":"2026-04-18T21:56:32.780Z","updatedAt":"2026-05-02T18:52:56.935Z","lastSeenAt":"2026-05-02T18:52:56.935Z","tsv":"'-20':407 '/apikey)':74 '/banner-01.png':246 '/banner-creator':103,245,269,344,356,517 '/banner-creator/2026-01-19-opc-banner':108 '/examples/opc-banner-creation.md':623 '/path/to/existing-logo.png':319 '/preview.html':345,357 '/references/formats.md':150,616 '/scripts/batch_generate.py':252 '/scripts/crop_banner.py':451 '/scripts/generate.py':230,307 '/templates/preview.html':340 '1':115,126,152,157,404,456,465,473,508 '10':406 '1280':458,467 '1280x640':153,468,509 '15':389 '1500':475 '1500x500':158,476 '16':161,480,607 '1920':483 '1920x1080':163,484 '2':145,151,213,413,455,464,507,611 '20':218,249,261 '2016x864':503 '21':239,263,275,321,501,599 '3':82,156,166,326,387,423,472,610 '4':184,371,427 '5':197,435 '6':486 '7':388 '8':174 '9':162,240,264,276,322,481,502,600,608 'abstract':562 'abstract/gradient':561 'action':585 'add':308 'ai':7,49,70,78,204 'aistudio.google.com':73 'aistudio.google.com/apikey)':72 'api':59,65 'approv':442 'archiv':98,102,107,244,268,343,355,516 'art':144,173 'artist':183 'ask':124,375 'aspect':591 'asset':489,495 'auto':291 'auto-delay':290 'avail':279 'banner':2,5,29,36,41,42,47,131,139,215,219,228,232,250,254,271,317,368,378,382,416,433,444,494,520,534,548,564,580,618 'banner-01.png':109,296 'banner-02.png':110,297 'banner-03-cropped.png':111,504 'banner-03-v1.png':422 'banner-03.png':499 'banner-cr':1 'banner-with-logo.png':324 'base':401,577 'bash':225,305,338,351,449 'batch':247 'batch_generate.py':285 'bit':175 'brand':187,201,234,256,536,556,573,586 'browser':337,350 'center':574 'chang':397 'channel':143 'charact':194,310,546,550,583 'color':198,202,543,560,565,589 'common':459,528,617 'confirm':209 'content':185 'convers':626 'copi':330,518 'correct':365 'cover':33 'cp':339 'creat':4,27,45,327 'creator':3,43 'crop':18,280,436,445,598 'd':265,399 'decid':205 'default':349 'delay':292 'deliv':487 'deliver':492 'descript':235,257,497,551,582 'design':55,179 'desir':524 'directori':99 'discoveri':116 'discuss':10 'display':542 'e.g':386,421 'edit':300 'element':186,237,259 'environ':63 'etc':298 'exampl':104,625 'examples/opc-banner-creation.md':622 'exist':170,200,303 'favorit':411 'featur':539,549 'feedback':17,403 'feel':571 'file':85,90,496,511 'final':432,488,491,493,519 'flat':178 'format/style':11 'full':624 'gather':120 'gemini':64,81 'generat':9,12,51,80,89,119,214,217,226,248,273,369,405,593,606 'geometr':567 'get':67 'github':35,134,154,461,505 'googl':69 'gradient':180,566 'guidelin':272 'header':30,38,137,160,470 'hero':31,141,165,478 'html':328,361,425 'illustr':182,579 'imag':8,32,34,50,79,84,299 'import':358 'includ':196,289,363 'incorpor':302 'input.png':452 'iter':14,54,372 'key':60,66 'later':281 'left':313 'let':203 'like':385,393 'linkedin':138 'locat':87,525 'logo':193,304,309 'logo/brand':171 'match':169 'minimalist':177 'modern':181,569 'multipl':287 'n':260,419 'name':188,190,295,415,557 'nanobanana':77,223 'number':366 'o':241,323 'open':335,347,352 'origin':417,500 'output':86 'output.png':453 'overlay':588 'p':270 'pattern':530,568 'pixel':172 'platform':621 'png':420 'posit':559 'prefer':168,199,380 'prerequisit':57 'present':490 'preview':329,332,426 'preview.html':112 'pro':83 'proceed':211 'process':56 'profession':46 'project':189 'promin':541 'prompt':529 'purpos':127 'python3':229,251,306,450 'quick':526 'ratio':21,238,262,277,320,439,454,463,471,479,592,596 'ratio/size':147 'readm':40,135,155,462,506 'recommend':604 'refer':527,614 'references/formats.md':149,615 'repeat':428 'requir':58,75,117,121 'retro':176 'save':93,512 'scene':554,576,581 'scene-bas':575 'scene/elements':544 'see':148 'select':431 'sequenti':294 'set':61 'side':314 'singl':227 'size':448,498,619 'skill':44,76,97,101,106,224,243,267,342,354,515 'skill-arch':96,100,105,242,266,341,353,514 'skill-banner-creator' 'slogan':192 'source-resciencelab' 'standard':612 'step':114,212,325,370,434,485 'studio':71 'style':167,231,253,412,537,538,552,553,563,578 'support':590 'taglin':191 'target':20,146,283,438,447,460 'tech':570 'templat':333 'text':236,258,532,540,555,572,587 'topic-agent-skills' 'topic-ai-tools' 'topic-claude-code' 'topic-geo' 'topic-llm-tools' 'topic-opc' 'topic-seo' 'twitter':37,159,469 'twitter/x':136 'ultra':602 'ultra-wid':601 'updat':359,424 'use':6,22,133,221,284,293,414 'user':16,24,123,208,374,376,430,441,522 'v':418 'variat':13,216,220,288,409 'wait':206 'want':25,400 'websit':140,164,477 'wide':533,547,603,609,613 'widest':278,595 'width':457,466,474,482 'workflow':113 'youtub':142","prices":[{"id":"c786ee63-7a72-43dc-bff8-5d506c95fe28","listingId":"c04f6574-2cd9-477c-8443-acaa67578736","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ReScienceLab","category":"opc-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:56:32.780Z"}],"sources":[{"listingId":"c04f6574-2cd9-477c-8443-acaa67578736","source":"github","sourceId":"ReScienceLab/opc-skills/banner-creator","sourceUrl":"https://github.com/ReScienceLab/opc-skills/tree/main/skills/banner-creator","isPrimary":false,"firstSeenAt":"2026-04-18T21:56:32.780Z","lastSeenAt":"2026-05-02T18:52:56.935Z"}],"details":{"listingId":"c04f6574-2cd9-477c-8443-acaa67578736","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ReScienceLab","slug":"banner-creator","github":{"repo":"ReScienceLab/opc-skills","stars":829,"topics":["agent-skills","ai-tools","claude-code","geo","llm-tools","opc","seo"],"license":"apache-2.0","html_url":"https://github.com/ReScienceLab/opc-skills","pushed_at":"2026-05-02T06:47:51Z","description":"Agent Skills for Solopreneurs","skill_md_sha":"d350c7239e7de1563de385094b4c8199dba2ab99","skill_md_path":"skills/banner-creator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ReScienceLab/opc-skills/tree/main/skills/banner-creator"},"layout":"multi","source":"github","category":"opc-skills","frontmatter":{"name":"banner-creator","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, cover image, GitHub banner, Twitter header, or readme banner."},"skills_sh_url":"https://skills.sh/ReScienceLab/opc-skills/banner-creator"},"updatedAt":"2026-05-02T18:52:56.935Z"}}