image-gen
SKILL.md
Image-Gen Skill
Production-grade AI image generation with DALL-E 3/2 support, cost tracking, and comprehensive style presets.
When to Use
✅ USE this skill when:
- Creating AI-generated images from text prompts
- Needing custom illustrations or concept art
- Generating multiple variations of images
- Creating visual content for presentations
- Designing graphics or mockups
- Needing AI art in specific styles
- Batch generating images for testing
- Needing programmatic image generation
❌ DON'T use this skill when:
- Editing existing images → Use image editing tools
- Creating vector graphics → Use design software
- Needing screenshots → Use screenshot tools
- Generating animations → Use video generation
- Needing stock photos → Use stock photo services
Prerequisites
# 1. Get OpenAI API Key
# Visit: https://platform.openai.com/api-keys
# Create and copy your API key
# 2. Set environment variable
export OPENAI_API_KEY="sk-your-api-key-here"
# 3. Verify
node --version
Commands
Basic Usage
# Generate image with default settings (DALL-E 3, 1024x1024)
{baseDir}/image-gen.js "A serene mountain landscape at sunset"
# Generate with specific model
{baseDir}/image-gen.js "Cyberpunk city" --model dall-e-3
# Generate multiple images
{baseDir}/image-gen.js "Abstract art" --n 4
# Output to specific directory
{baseDir}/image-gen.js "Ocean waves" --output-dir ./my-images
Model Selection
# DALL-E 3 - Best quality, $0.04/image
{baseDir}/image-gen.js "A photo of a cat" --model dall-e-3
# DALL-E 2 - Faster, $0.02/image
{baseDir}/image-gen.js "A photo of a cat" --model dall-e-2
Model Comparison:
| Model | Quality | Cost | Sizes | Best For |
|---|---|---|---|---|
| DALL-E 3 | Excellent | $0.04 | 1024x1024, 1024x1792, 1792x1024 | Production use |
| DALL-E 2 | Good | $0.02 | 256x256, 512x512, 1024x1024 | Quick drafts |
Size Options
# DALL-E 3 sizes
{baseDir}/image-gen.js "Portrait of a person" --size 1024x1792 # Portrait
{baseDir}/image-gen.js "Landscape scene" --size 1792x1024 # Landscape
{baseDir}/image-gen.js "Square composition" --size 1024x1024 # Square
# DALL-E 2 sizes
{baseDir}/image-gen.js "Avatar" --model dall-e-2 --size 256x256 # Small avatar
{baseDir}/image-gen.js "Icon" --model dall-e-2 --size 512x512 # Icon size
Size Pricing (DALL-E 3):
| Size | Cost | Aspect Ratio |
|---|---|---|
| 1024x1024 | $0.04 | 1:1 Square |
| 1024x1792 | $0.08 | 9:16 Portrait |
| 1792x1024 | $0.08 | 16:9 Landscape |
Quality Settings
# Standard quality (default, faster)
{baseDir}/image-gen.js "A photo of a flower" --quality standard
# HD quality (slower, better detail)
{baseDir}/image-gen.js "A photo of a flower" --quality hd --size 1024x1792
Quality Comparison:
| Quality | Detail Level | Processing Time | Cost |
|---|---|---|---|
standard |
Good | ~10-15s | Standard |
hd |
Excellent | ~20-25s | Same price, more detail |
Visual Style
# Vivid style (more dramatic, default)
{baseDir}/image-gen.js "Fireworks display" --style vivid
# Natural style (more realistic)
{baseDir}/image-gen.js "Fireworks display" --style natural
Custom Style Presets
# Photographic
{baseDir}/image-gen.js "Lion portrait" --custom-style photographic
# Result: "A photorealistic image of Lion portrait, professional photography, 35mm, high detail, 8k"
# Digital Art
{baseDir}/image-gen.js "Fantasy castle" --custom-style digital_art
# Result: "A digital illustration of Fantasy castle, digital art, concept art, trending on artstation"
# Cinematic
{baseDir}/image-gen.js "Warrior in battle" --custom-style cinematic
# Result: "Cinematic scene of Warrior in battle, cinematic lighting, film grain, movie still, anamorphic"
# Watercolor
{baseDir}/image-gen.js "Sunset over mountains" --custom-style watercolor
# Result: "A watercolor painting of Sunset over mountains, wet-on-wet technique, soft colors, artistic"
Available Style Presets:
| Style | Prefix | Suffix |
|---|---|---|
photographic |
"A photorealistic image of" | "professional photography, 35mm, high detail, 8k" |
digital_art |
"A digital illustration of" | "digital art, concept art, trending on artstation" |
oil_painting |
"An oil painting of" | "oil on canvas, fine art, impressionist style" |
watercolor |
"A watercolor painting of" | "wet-on-wet technique, soft colors, artistic" |
isometric |
"Isometric illustration of" | "isometric view, clean lines, vector style" |
pixel_art |
"Pixel art of" | "8-bit style, pixel art, retro aesthetic" |
cinematic |
"Cinematic scene of" | "cinematic lighting, film grain, movie still" |
neon |
"Cyberpunk neon art of" | "neon lights, night scene, cyberpunk, synthwave" |
sketch |
"Pencil sketch of" | "hand-drawn sketch, detailed line work, artistic" |
Batch Generation
# Generate 4 variations
{baseDir}/image-gen.js "Product photo of a wristwatch" --n 4
# Generate 10 variations (max)
{baseDir}/image-gen.js "Logo concept" --n 10
Batch Output:
/tmp/image-gen-2024-01-15/
├── gen_product-photo_1705312345678_1.png
├── gen_product-photo_1705312345678_2.png
├── gen_product-photo_1705312345678_3.png
├── gen_product-photo_1705312345678_4.png
└── index.html (gallery view)
Features
Rate Limiting
Built-in protection against API limits:
- Default: 5 requests per minute
- 1 request per second minimum
- Automatic delays between requests
# First request
{baseDir}/image-gen.js "Image 1"
# Second request (automatically delayed)
{baseDir}/image-gen.js "Image 2"
Cost Tracking
Automatic cost calculation and reporting:
Total cost: $0.16
Images: 4
Session: 45s
DALL-E Pricing:
| Model | Size | Cost per Image |
|---|---|---|
| DALL-E 3 | 1024x1024 | $0.04 |
| DALL-E 3 | 1024x1792 | $0.08 |
| DALL-E 3 | 1792x1024 | $0.08 |
| DALL-E 2 | 1024x1024 | $0.02 |
| DALL-E 2 | 512x512 | $0.018 |
| DALL-E 2 | 256x256 | $0.016 |
Gallery Generation
When generating multiple images, an HTML gallery is automatically created.
{baseDir}/image-gen.js "Abstract patterns" --n 4
Opens in browser with:
- Thumbnail grid
- Full-size preview on click
- Metadata for each image (prompt, size, cost)
- Dark theme styling
Error Handling
Content Policy Violations:
{baseDir}/image-gen.js "Inappropriate content"
# ❌ ERROR: Content policy violation: This prompt may violate OpenAI's content policy
Rate Limiting:
# After many requests:
{baseDir}/image-gen.js "Another image"
# ... waits and retries automatically
Payment Required:
{baseDir}/image-gen.js "Test image"
# ❌ ERROR: Pay-as-you-go billing required. Add payment method at openai.com
Error Handling
Error Codes
| Code | Name | Description |
|---|---|---|
| 0 | SUCCESS | Generation complete |
| 1 | INVALID_PROMPT | Bad prompt format |
| 2 | API_KEY_MISSING | OPENAI_API_KEY not set |
| 3 | API_ERROR | OpenAI returned error |
| 4 | RATE_LIMITED | Too many requests |
| 5 | NETWORK_ERROR | Connection issue |
| 6 | TIMEOUT | Request took too long |
| 7 | CONTENT_POLICY | Prompt violates content policy |
| 8 | PAYMENT_REQUIRED | Billing setup needed |
| 9 | INVALID_SIZE | Unsupported size |
| 10 | INVALID_MODEL | Unsupported model |
| 99 | UNKNOWN | Unexpected error |
Prompt Validation
# Too short
{baseDir}/image-gen.js "Hi"
# ❌ ERROR: Prompt too short: 2 chars (min: 5)
# Too long (truncated here)
{baseDir}/image-gen.js "A" * 5000
# ❌ ERROR: Prompt too long: 5000 chars (max: 4000)
# Empty
{baseDir}/image-gen.js ""
# ❌ ERROR: Prompt is required
Examples by Use Case
1. Product Photography
# Basic product shot
{baseDir}/image-gen.js "Professional product photo of a black leather wallet on marble surface, soft lighting, commercial photography"
# Styled product
{baseDir}/image-gen.js "Premium coffee bag on wooden table, morning light, cafe ambiance, commercial photography, 35mm lens" --quality hd --size 1024x1792
# Multiple angles
{baseDir}/image-gen.js "Luxury watch floating on black background, studio lighting, product photography" --n 4
2. Concept Art
# Character design
{baseDir}/image-gen.js "Fantasy warrior in magical armor, digital art, concept art, trending on artstation" --custom-style digital_art
# Environment
{baseDir}/image-gen.js "Floating islands with waterfalls and glowing crystals, epic scale, concept art" --model dall-e-3 --size 1792x1024
# Mood board
{baseDir}/image-gen.js "Post-apocalyptic city ruins at golden hour, atmospheric, cinematic" --custom-style cinematic --n 4
3. Marketing Assets
# Social media images
{baseDir}/image-gen.js "Summer sale banner with beach scene, bright colors, text overlay ready" --size 1024x1024 --n 3
# App icons
{baseDir}/image-gen.js "Minimal app icon design, abstract geometric pattern, pastel colors" --model dall-e-2 --size 256x256
# Hero images
{baseDir}/image-gen.js "Diverse team collaborating in modern office, natural light, inclusive" --size 1792x1024 --quality hd
4. Creative Projects
# Book cover
{baseDir}/image-gen.js "Sci-fi book cover: astronaut discovering alien artifact, dramatic lighting, space opera" --size 1024x1792
# Album art
{baseDir}/image-gen.js "Surreal dreamscape with melting clocks and floating pianos, Dali style" --custom-style oil_painting
# Poster
{baseDir}/image-gen.js "Neon-lit Tokyo street at night, rain on pavement, cyberpunk" --custom-style neon --size 1024x1792
5. Architectural Visualization
# Exterior shot
{baseDir}/image-gen.js "Modern glass house in forest at dusk, warm interior lights, architectural photography" --custom-style photographic --size 1792x1024
# Interior design
{baseDir}/image-gen.js "Minimalist living room with natural wood furniture, large windows, interior design shot" --quality hd
6. Batch Processing Script
#!/bin/bash
# Generate images from prompts in file
while IFS= read -r prompt; do
[ -z "$prompt" ] && continue
[ "${prompt:0:1}" == "#" ] && continue # Skip comments
echo "Generating: $prompt"
{baseDir}/image-gen.js "$prompt" --output-dir ./batch-output --n 2
sleep 2 # Rate limit protection
done < prompts.txt
Technical Details
Architecture
1. Validate Prompt
├── Check length (5-4000 chars)
├── Apply style preset if specified
└── Final prompt assembly
2. Check Limits
├── Rate limit (5/min, 1/sec)
└── Skip if rate limit exceeded
3. API Request
├── HTTPS POST to OpenAI
├── Include model, size, quality, n
└── Wait for base64 response
4. Process Response
├── Validate data received
└── Track cost
5. Save Images
├── Decode base64
├── Generate filename
├── Write PNG
└── Report size
6. Create Gallery (if n > 1)
├── Generate HTML
└── Include metadata
API Request Structure
{
"model": "dall-e-3",
"prompt": "A serene mountain landscape at sunset",
"n": 1,
"size": "1024x1024",
"quality": "standard",
"response_format": "b64_json",
"style": "vivid"
}
Response Handling
Error Responses:
- 429: Rate limited
- 400: Content policy violation
- 401: Invalid API key
- 500: OpenAI server error
Success Response:
{
"created": 1705312345,
"data": [
{
"b64_json": "base64_encoded_image_data...",
"revised_prompt": "A serene mountain landscape at sunset..."
}
]
}
Advanced Usage
Retry Logic
# If generation fails, retry with slight modification
for attempt in {1..3}; do
{baseDir}/image-gen.js "A cat" --output-dir ./retry-test
if [ $? -eq 0 ]; then break; fi
echo "Retry $attempt..."
sleep 5
done
Custom Style Templates
Create your own style by concatenating templates:
# Combine multiple style elements
STYLE="A photorealistic image of"
PROMPT="Lion resting in savanna at sunrise"
SUFFIX="golden hour lighting, wildlife photography, National Geographic style, detailed fur texture"
{baseDir}/image-gen.js "$STYLE $PROMPT, $SUFFIX"
Integration with Other Tools
# Generate and convert to JPEG
{baseDir}/image-gen.js "Abstract pattern" --output ./generated.png
mogrify -format jpg generated.png
# Generate and resize
{baseDir}/image-gen.js "Landscape" --size 1024x1024
sips -Z 512 generated.png
# Generate and optimize
{baseDir}/image-gen.js "Icon design"
pngquant --quality=65-80 generated.png -o optimized.png
Notes
- File Format: All images saved as PNG (lossless)
- Filenames: Generated based on prompt slug + timestamp
- Gallery: Auto-generated for batch generations
- Prompt Enhancement: OpenAI may revise your prompt for safety/quality
- Cost Tracking: Estimated based on OpenAI pricing (may vary)
- Timeout: 5 minute maximum wait
- Concurrent: Limited by rate limiting (sequential processing)
- Storage: Images saved to /tmp by default (may be cleaned up)
- Reproducibility: Same prompt may yield different results
- API Key: Must have access to DALL-E models
- Usage Limits: Based on OpenAI tier and budget
- Content Policy: Follows OpenAI's use policy strictly
Weekly Installs
3
Repository
winsorllc/upgra…carnivalFirst Seen
Mar 1, 2026
Security Audits
Installed on
opencode3
claude-code3
github-copilot3
codex3
kimi-cli3
gemini-cli3