Generate email advertising concepts with compelling subject lines, body copy, CTAs, and HTML previews. Produces multiple creative variations optimized for inbox engagement and conversions.
48
51%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./creative-skills/multi-channel-ad-ideation/channels/email/SKILL.mdGenerate compelling email advertising concepts with subject lines, body copy, CTAs, and HTML previews. Email offers the most creative freedom of all channels - use it to tell your full story.
This skill can be used standalone or delegated from multi-channel-ad-ideation.
Standalone usage: User directly invokes "Generate email ad concepts for..."
Delegated usage: Multi-channel skill invokes this skill after creative direction is selected:
When delegated, expect this context:
Use this context to inform all email concept generation and ensure alignment with the chosen creative direction.
When brand guidelines include a logo file, you can embed it in email HTML previews for brand consistency.
How to provide logo:
Logo embedding workflow:
data:image/png;base64,{encoded_string}<img> tag with inline stylingLogo specifications:
Example usage:
User: "Create email ad for hiking boot launch using brand guidelines and logo at /path/to/outdoor-supply-co-logo.png"
Phase 1: Generate text concepts (no logo needed yet)
Phase 2: When generating HTML preview:
1. Read logo file
2. Convert to base64
3. Embed in header: <img src="data:image/png;base64,..." alt="Brand Logo" style="max-width: 180px;" />For detailed logo implementation in HTML templates, see references/html-preview-templates.md.
Dual Logo Variants (Automatic Selection)
For optimal logo visibility on different background colors, brand guidelines may specify two logo variants:
The skill automatically selects the appropriate variant based on header background color.
How to provide dual logos:
Automatic selection algorithm:
import base64
# Logo paths from brand guidelines
LOGO_DARK_PATH = "/path/to/logo-black-over-white.png" # For light backgrounds
LOGO_LIGHT_PATH = "/path/to/logo-white-over-black.png" # For dark backgrounds
# Header background color from brand guidelines
HEADER_BG_COLOR = "#1B3022" # Old Growth (dark)
# Calculate luminance of background
def hex_to_rgb(hex_color):
hex_color = hex_color.lstrip('#')
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
def calculate_luminance(rgb):
"""WCAG relative luminance formula"""
r, g, b = rgb
return 0.299 * r + 0.587 * g + 0.114 * b
bg_rgb = hex_to_rgb(HEADER_BG_COLOR)
bg_luminance = calculate_luminance(bg_rgb)
# Select logo based on background brightness
if bg_luminance < 128:
# Dark background - use light logo
logo_path = LOGO_LIGHT_PATH
print(f"Dark background detected (luminance: {bg_luminance:.1f}). Using light logo.")
else:
# Light background - use dark logo
logo_path = LOGO_DARK_PATH
print(f"Light background detected (luminance: {bg_luminance:.1f}). Using dark logo.")
# Read and encode selected logo
with open(logo_path, "rb") as f:
logo_base64 = base64.b64encode(f.read()).decode('utf-8')Example:
Reference Files:
../references/card-templates.md../references/html-preview-templates.mdGenerate 3-5 email concepts using collapsed card format from ../references/card-templates.md:
Format requirements - Collapsed Card Format:
Card Template Structure (see ../references/card-templates.md for complete markup):
<details> element with enhanced summary stylingRequired workflow: Every time you generate HTML for email, write the HTML to a file and call mcp__tdx-studio__open_file to open the preview. Complete both the file writing and preview opening steps automatically.
ONLY generate HTML previews AFTER user confirms text concepts with phrases like:
HTML Generation and Preview Workflow (complete all steps):
../references/html-preview-templates.mdemail-preview-{timestamp}.html in working directory (use YYYYMMDD-HHMMSS format for timestamp)mcp__tdx-studio__open_file with the absolute file path to open preview in artifact panelImportant workflow requirement: After generating HTML for email, always complete steps 3 and 4 automatically. Write the HTML to a file and immediately open it with mcp__tdx-studio__open_file. This ensures the user sees the preview without needing to ask for it.
Example:
### Concept: [Concept Name] - HTML Preview
[Generated HTML email template]Preview automatically opened in artifact panel via mcp__tdx-studio__open_file
For complete Phase 1 and Phase 2 example workflows, see examples.md.
Generate HTML when: User confirms text concepts, says "show me the HTML", ready for visual mockups
Do NOT generate HTML when: First concept generation, still exploring, hasn't confirmed concepts, iterating on copy
Creates intrigue without revealing everything.
Creates time pressure to drive immediate action.
Directly states the value proposition.
Uses recipient data to increase relevance.
Leverages credibility and FOMO.
Button Text:
Strong CTA Examples: "Get Started Free", "Claim My 40% Off", "Download Now", "See Pricing", "Book Demo"
Weak CTAs to Avoid: "Click Here", "Submit", "Learn More" (too vague)
Design Guidelines: High contrast color, 44px+ tall for mobile, above the fold + at end, surrounded by whitespace
Header Hero: Colored header with headline + body copy + CTA. Best for product launches, announcements.
Image-First: Large hero image + headline + body + CTA. Best for visual products, e-commerce.
Text-Heavy: Small header + multiple copy sections + CTA. Best for B2B, thought leadership.
Two-Column: Header + image/copy side-by-side + CTA. Best for product comparisons.
For complete HTML preview templates with inline CSS, see ../references/html-preview-templates.md.
Concept: SaaS Product Launch (Urgency-Driven)
Ad Copy:
Visual Concept:
For complete examples with full card markup and HTML previews, see examples.md.
Subject lines over 60 characters - Gets cut off on mobile Vague CTAs - "Learn More" or "Click Here" don't drive action Multiple CTAs - Confuses recipients, reduces conversion Image-only emails - Breaks when images don't load Too much text - Over 300 words loses attention No mobile optimization - 60%+ opens are on mobile Missing unsubscribe link - Violates CAN-SPAM, hurts deliverability
Do this instead: Test subject lines, use 1 clear CTA, optimize for mobile, keep under 300 words, always include unsubscribe
79bb9b8
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.