From aradotso-trending-skills-37
Generates professional SVG logos with 6+ design variants and creates showcase images using Gemini AI. Includes SVG-to-PNG conversion and 12 background styles.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aradotso-trending-skills-37:logo-generator-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
```markdown
---
name: logo-generator-skill
description: Professional SVG logo generator with AI-powered showcase images using Claude Code skills workflow
triggers:
- generate a logo for my project
- create a logo with SVG variants
- logo generator skill
- make a professional logo
- design a logo for my app
- generate logo showcase images
- create brand identity logo
- SVG logo with background styles
---
# Logo Generator Skill
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Professional SVG logo generator that creates 6+ design variants and stunning showcase presentations. Uses geometric design principles and Gemini image generation to produce production-ready logos with 12 professional background styles.
## What This Skill Does
- Generates 6+ distinct SVG logo variants per request (dot matrix, line systems, mixed compositions)
- Creates interactive HTML showcase pages with hover effects
- Exports SVG to PNG at multiple resolutions
- Generates high-end showcase images via Gemini 3.1 Flash Image Preview
- Supports 12 curated background styles (6 dark, 6 light)
## Installation
### Method 1: Automatic (Recommended)
```bash
npx skills add https://github.com/op7418/logo-generator-skill.git
git clone https://github.com/op7418/logo-generator-skill.git ~/.claude/skills/logo-generator
# macOS/Linux
cp -r logo-generator ~/.claude/skills/logo-generator
# Windows
xcopy logo-generator %USERPROFILE%\.claude\skills\logo-generator /E /I
cd ~/.claude/skills/logo-generator
pip install -r requirements.txt
# Configure API key
cp .env.example .env
# Edit .env and set GEMINI_API_KEY
.env file# Official Google Gemini API
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_MODEL=gemini-3.1-flash-image-preview
# Optional: Third-party endpoint
GEMINI_API_BASE_URL=https://api.example.com/v1
Get a Gemini API key at: https://aistudio.google.com/apikey
python scripts/svg_to_png.py --input logo.svg --output logo.png --size 1024
# scripts/svg_to_png.py usage in code
import cairosvg
def convert_svg_to_png(svg_path: str, output_path: str, size: int = 1024):
cairosvg.svg2png(
url=svg_path,
write_to=output_path,
output_width=size,
output_height=size
)
python scripts/generate_showcase.py \
--logo logo.png \
--styles "void,frosted,fluid,spotlight" \
--output ./showcases/
# scripts/generate_showcase.py usage in code
import os
from google import genai
from dotenv import load_dotenv
load_dotenv()
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
def generate_showcase(logo_path: str, style: str, output_path: str):
"""Generate a professional showcase image for a logo."""
with open(logo_path, "rb") as f:
logo_data = f.read()
style_prompts = {
"void": "absolute black background with silver micro noise, hardcore tech aesthetic",
"frosted": "titanium gray with organic texture, premium product feel",
"fluid": "deep purple with fluid fusion effects, AI-native aesthetic",
"spotlight": "carbon gray with editorial spotlight lighting, magazine quality",
"editorial": "off-white paper texture, humanistic brand feel",
"swiss": "pure solid color, zero effects, timeless Swiss design authority"
}
prompt = f"""
Create a professional logo showcase image.
Place this logo centered on a {style_prompts.get(style, style)} background.
The logo should be the focal point with generous negative space around it.
Make it look like a high-end design studio presentation.
Output as a 1600x900 landscape showcase image.
"""
response = client.models.generate_content(
model=os.getenv("GEMINI_MODEL", "gemini-3.1-flash-image-preview"),
contents=[
{"role": "user", "parts": [
{"inline_data": {"mime_type": "image/png", "data": logo_data}},
{"text": prompt}
]}
]
)
# Save generated image
for part in response.candidates[0].content.parts:
if hasattr(part, "inline_data"):
with open(output_path, "wb") as f:
import base64
f.write(base64.b64decode(part.inline_data.data))
return output_path
raise ValueError("No image generated in response")
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<defs>
<pattern id="dots" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
<circle cx="10" cy="10" r="1.5" fill="#ffffff" opacity="0.8"/>
</pattern>
</defs>
<!-- Background -->
<rect width="200" height="200" fill="#0a0a0a"/>
<!-- Dot matrix field -->
<rect width="200" height="200" fill="url(#dots)"/>
<!-- Focal element -->
<circle cx="100" cy="100" r="30" fill="none" stroke="#ffffff" stroke-width="2.5"/>
<circle cx="100" cy="100" r="4" fill="#ffffff"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect width="200" height="200" fill="#0a0a0a"/>
<!-- Horizontal lines with tension -->
<line x1="40" y1="85" x2="160" y2="85" stroke="#ffffff" stroke-width="2.5" opacity="0.9"/>
<line x1="40" y1="100" x2="160" y2="100" stroke="#ffffff" stroke-width="2.5" opacity="0.9"/>
<line x1="40" y1="115" x2="160" y2="115" stroke="#ffffff" stroke-width="2.5" opacity="0.9"/>
<!-- Vertical interrupt creating focal point -->
<rect x="90" y="75" width="20" height="50" fill="#0a0a0a"/>
<line x1="100" y1="70" x2="100" y2="130" stroke="#ffffff" stroke-width="3.5"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect width="200" height="200" fill="#0a0a0a"/>
<!-- Geometric anchor -->
<rect x="70" y="70" width="60" height="60" fill="none"
stroke="#ffffff" stroke-width="2.5" transform="rotate(45 100 100)"/>
<!-- Dot accent (asymmetric tension) -->
<circle cx="130" cy="75" r="5" fill="#ffffff"/>
<!-- Minimal line extension -->
<line x1="100" y1="45" x2="100" y2="65" stroke="#ffffff" stroke-width="2.5" opacity="0.6"/>
</svg>
When a user asks for a logo, gather:
Product Name: [name]
Industry/Category: [AI / Fintech / Design Tools / SaaS / etc.]
Core Concept: [connection / flow / security / intelligence / etc.]
Design Preference: [minimal/complex] [cold/warm] [geometric/organic]
Create an HTML showcase file:
<!DOCTYPE html>
<html>
<head>
<style>
body { background: #0a0a0a; display: flex; flex-wrap: wrap;
gap: 20px; padding: 40px; font-family: monospace; }
.variant {
width: 200px; text-align: center;
transition: transform 0.3s ease;
}
.variant:hover { transform: scale(1.05); }
.variant svg { border: 1px solid #333; border-radius: 8px; }
.label { color: #666; font-size: 11px; margin-top: 8px; }
</style>
</head>
<body>
<div class="variant">
<!-- SVG Variant 1: Dot Matrix -->
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<!-- Insert dot matrix SVG content -->
</svg>
<div class="label">01 — Dot Matrix</div>
</div>
<!-- Repeat for variants 2-6 -->
</body>
</html>
#!/usr/bin/env python3
"""Export SVG logo to multiple PNG sizes."""
import cairosvg
import os
def export_logo(svg_path: str, output_dir: str):
"""Export logo at standard sizes."""
sizes = {
"icon_32": 32,
"icon_64": 64,
"icon_128": 128,
"logo_512": 512,
"logo_1024": 1024,
"logo_2048": 2048,
}
os.makedirs(output_dir, exist_ok=True)
for name, size in sizes.items():
output_path = os.path.join(output_dir, f"{name}.png")
cairosvg.svg2png(
url=svg_path,
write_to=output_path,
output_width=size,
output_height=size
)
print(f"✓ Exported {name}.png ({size}x{size})")
if __name__ == "__main__":
import sys
export_logo(sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "./exports")
#!/usr/bin/env python3
"""Generate all showcase images for a logo."""
import os
import json
from pathlib import Path
from generate_showcase import generate_showcase
STYLE_SELECTIONS = {
"ai": ["void", "fluid", "morning", "swiss"],
"fintech": ["void", "frosted", "clinical", "swiss"],
"design": ["editorial", "iridescent", "spotlight", "swiss"],
"saas": ["frosted", "ui_container", "morning", "swiss"],
"default": ["void", "frosted", "editorial", "swiss"]
}
def generate_all_showcases(logo_png: str, product_type: str, output_dir: str):
styles = STYLE_SELECTIONS.get(product_type, STYLE_SELECTIONS["default"])
Path(output_dir).mkdir(parents=True, exist_ok=True)
results = []
for style in styles:
output_path = os.path.join(output_dir, f"showcase_{style}.png")
try:
generate_showcase(logo_png, style, output_path)
results.append({"style": style, "path": output_path, "status": "success"})
print(f"✓ Generated {style} showcase")
except Exception as e:
results.append({"style": style, "error": str(e), "status": "failed"})
print(f"✗ Failed {style}: {e}")
# Save manifest
manifest_path = os.path.join(output_dir, "manifest.json")
with open(manifest_path, "w") as f:
json.dump(results, f, indent=2)
return results
if __name__ == "__main__":
import sys
generate_all_showcases(
logo_png=sys.argv[1],
product_type=sys.argv[2] if len(sys.argv) > 2 else "default",
output_dir=sys.argv[3] if len(sys.argv) > 3 else "./showcases"
)
When generating SVG logos, always apply:
<!-- ✅ Good: Simple, focused, negative space -->
<svg viewBox="0 0 200 200">
<rect width="200" height="200" fill="#0a0a0a"/>
<circle cx="100" cy="100" r="35" fill="none" stroke="#fff" stroke-width="3"/>
<circle cx="118" cy="85" r="6" fill="#fff"/>
</svg>
<!-- ❌ Bad: Too many elements, no focal point -->
<svg viewBox="0 0 200 200">
<rect width="200" height="200" fill="#0a0a0a"/>
<circle cx="50" cy="50" r="20" fill="#fff"/>
<circle cx="150" cy="50" r="20" fill="#fff"/>
<rect x="40" y="100" width="120" height="40" fill="#fff"/>
<line x1="20" y1="160" x2="180" y2="160" stroke="#fff"/>
<text x="100" y="190" fill="#fff">BRAND</text>
</svg>
| Style | Key | Aesthetic | Best For |
|---|---|---|---|
| The Void | void | Pure black + silver noise | Hardcore tech |
| Frosted Horizon | frosted | Titanium gray + texture | Premium products |
| Fluid Abyss | fluid | Deep purple + fluid FX | AI-native |
| Studio Spotlight | spotlight | Carbon + editorial light | Magazine quality |
| Analog Liquid | analog | Metallic shimmer | Creative brands |
| LED Matrix | led | Digital retro glow | Cyberpunk |
| Editorial Paper | editorial | Off-white paper | Humanistic |
| Iridescent Frost | iridescent | Silver + holographic | Tech hardware |
| Morning Aura | morning | Warm ivory + pastels | Approachable AI |
| Clinical Studio | clinical | Pure white + shadows | Algorithm-driven |
| UI Container | ui_container | Frosted glass frame | SaaS platforms |
| Swiss Flat | swiss | Solid color, zero FX | Timeless authority |
/logo-generator
Or naturally:
Generate a logo for my fintech startup called "Meridian" — focused on clarity and trust
Create 6 logo variants for "NeuralPath" — an AI research tool, geometric and minimal
Take the logo I selected and generate showcase images in void, frosted, morning, and swiss styles
cairosvg installation fails# macOS
brew install cairo pango gdk-pixbuf libffi
pip install cairosvg
# Ubuntu/Debian
sudo apt-get install libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev
pip install cairosvg
# Windows (use conda)
conda install -c conda-forge cairosvg
# Test API key
python -c "
import os
from dotenv import load_dotenv
from google import genai
load_dotenv()
client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))
print('API key valid:', bool(client))
"
# Verify installation
ls ~/.claude/skills/logo-generator/
# Should show: SKILL.md README.md scripts/ requirements.txt .env
# Check SKILL.md exists
cat ~/.claude/skills/logo-generator/SKILL.md | head -5
width/height or viewBox attributexmlns="http://www.w3.org/2000/svg" is present<!-- Always include these attributes -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
~/.claude/skills/logo-generator/
├── SKILL.md # Skill activation definition
├── README.md # Full documentation
├── requirements.txt # google-genai, cairosvg, Pillow, python-dotenv
├── .env.example # GEMINI_API_KEY template
├── .env # Your actual API key (gitignored)
├── scripts/
│ ├── svg_to_png.py # SVG → PNG converter
│ └── generate_showcase.py # Gemini showcase generator
├── references/
│ ├── design_patterns.md # Design pattern library
│ ├── background_styles.md # Background specifications
│ └── webgl_backgrounds.md # WebGL dynamic backgrounds
└── assets/
├── showcase_template.html # HTML presentation template
└── background_library.html # Interactive WebGL backgrounds
npx claudepluginhub aradotso/trending-skillsCreates logos, icons, and brand marks via AI image generation with iterative design. Supports style/ratio selection, generates variants, crops, removes background, and exports SVG.
Design skill for brand identity, design tokens, UI styling, logo generation (55 styles, Gemini AI), corporate identity programs (50 deliverables), presentations (Chart.js), banners (22 styles), SVG icons (15 styles), and social photos across multiple platforms.
Generates professional logos in various styles (wordmark, icon, combination, monogram, mascot, emblem, abstract) using each::sense AI. Useful for branding, startups, and businesses needing logo assets.