Email Write Sub-Skill
Purpose
Generate professional, high-converting email copy using proven copywriting frameworks. Produces subject line variants with scoring, responsive HTML templates with dark mode support, plain-text fallback, and preheader recommendations.
Activation
This sub-skill is invoked by the main /email skill when the user needs to compose a new email.
Workflow
1. Gather Context
First, check if email-profile.md exists in the project directory. If yes, load business type, tone preferences, and target audience from the profile.
If no profile exists or user provides new context, ask for:
- Email Purpose: cold outreach, newsletter, product launch, promotional, re-engagement, welcome, feature announcement, etc.
- Recipient: name, role, relationship (new lead, existing customer, subscriber, team member)
- Tone: professional, friendly, casual, authoritative, empathetic, enthusiastic
- Business Type: (from profile or ask) SaaS, e-commerce, service business, agency, creator, B2B, B2C
- Key Message: what action should the recipient take?
- Additional Context: product details, promotion details, deadline, personalization data
2. Select Copy Framework
Based on the email purpose, choose the appropriate framework from references/copy-frameworks.md:
| Email Purpose |
Recommended Framework |
Why |
| Cold outreach |
PAS |
Empathy-driven, addresses pain points |
| Product launch |
AIDA |
Builds excitement, drives action |
| Newsletter |
BAB or AIDA |
Aspirational or engaging storytelling |
| Feature announcement |
FAB |
Clear value proposition for features |
| Promotional/sale |
AIDA |
Creates desire and urgency |
| Re-engagement |
PAS |
Identifies problem of disengagement |
| Welcome email |
BAB |
Shows transformation journey |
| Case study |
4Ps |
Proof-heavy, testimonial-driven |
| Review request |
PAS |
Empathetic ask for feedback |
| Appointment reminder |
Direct |
No framework needed |
If uncertain, default to AIDA for marketing emails or PAS for relationship emails.
3. Generate Subject Lines
Create 3 subject line variants using these strategies:
- Curiosity-Driven: Creates intrigue, open loop, question, teaser
- Benefit-Driven: Clear value proposition, outcome, result
- Urgency-Driven: Time-sensitive, scarcity, FOMO (but not spammy)
Subject Line Rules:
- Optimal length: 6-10 words / 30-50 characters
- Never use ALL CAPS
- Maximum 1 exclamation mark per subject line
- Avoid spam triggers: "FREE!!!", "Act Now", "Limited Time Only", "Guaranteed", "Cash", "No obligation"
- Include personalization where possible (beyond first name: behavior, location, purchase history)
- Use power words: exclusive, secret, insider, proven, breakthrough, transform, discover
Scoring Methodology (0-100):
| Criteria |
Weight |
Scoring |
| Length |
20 |
100 if 30-50 chars, -10 per 5 chars over/under |
| Power Words |
20 |
+20 per power word (max 2) |
| Personalization |
25 |
+25 if personalized beyond first name |
| Spam Triggers |
-50 |
-50 if contains spam word |
| Clarity |
20 |
100 if benefit/topic is clear |
| Curiosity |
15 |
+15 if creates open loop |
Minimum passing score: 70
4. Write Preheader Text
Generate preheader recommendation (30-80 characters):
- Must complement (not repeat) the subject line
- Include secondary value proposition or CTA preview
- Avoid generic text like "View this email in your browser"
Example:
- Subject: "Your personalized SEO roadmap is ready"
- Preheader: "3 quick wins to boost your rankings this week"
5. Compose Email Body
Apply the chosen framework structure. Load full framework details from references/copy-frameworks.md before writing.
General Email Writing Rules:
- Opening: Hook in first sentence, address recipient by name if available
- Body: Use short paragraphs (2-3 sentences max), bullet points for scannability
- Tone: Match requested tone from profile or user input
- Personalization: Use merge tags like
{{firstName}}, {{company}}, {{productName}}
- CTA: One primary CTA, clear and action-oriented ("Get Your Free Audit", "Claim Your Spot", "Start Your Trial")
- Social Proof: Include if available (testimonial, stat, case study result)
- Signature: Professional sign-off with name, title, company
Framework-Specific Structure:
Load the full structure from references/copy-frameworks.md and apply. Each framework has:
- Section breakdown (e.g., PAS: Problem → Agitate → Solve)
- Transition phrases
- Example templates
6. Generate HTML Version
Create a responsive, dark-mode compatible HTML email using these specifications:
HTML Template Structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<title>{{emailSubject}}</title>
<style>
/* Inline critical CSS */
body { margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; }
table { border-collapse: collapse; }
.email-container { max-width: 600px; margin: 0 auto; }
.body-text { font-size: 16px; line-height: 1.6; color: #333333; }
.cta-button {
display: inline-block;
padding: 14px 28px;
background-color: #0066cc;
color: #ffffff;
text-decoration: none;
border-radius: 4px;
font-weight: bold;
min-height: 44px;
min-width: 44px;
}
/* Dark mode styles */
@media (prefers-color-scheme: dark) {
body { background-color: #1a1a1a !important; }
.body-text { color: #e0e0e0 !important; }
.email-container { background-color: #2a2a2a !important; }
}
/* Mobile responsive */
@media only screen and (max-width: 600px) {
.body-text { font-size: 14px !important; }
.headline { font-size: 22px !important; }
.cta-button { display: block !important; width: 100% !important; }
}
</style>
</head>
<body>
<!-- Email content goes here -->
</body>
</html>
HTML Rules:
- Use table-based layout (not CSS Grid/Flexbox for email client compatibility)
- Max width: 600px
- Inline critical CSS (some clients strip
<style> tags)
- Web-safe fonts with fallbacks: Arial, Helvetica, Georgia, Times New Roman
- Minimum 14px body text, 22px headlines on mobile
- CTA button: minimum 44x44px touch target, high contrast ratio (4.5:1)
- Include
color-scheme: light dark meta tag
- Dark mode CSS using
@media (prefers-color-scheme: dark)
- Alt text on all images (describe content, not "image" or "photo")
- Always include plain-text MIME part for accessibility
CTA Button Best Practices:
- One primary CTA per email (secondary CTAs okay as text links)
- Use
<a> tag with role="button" for accessibility
- Padding: 14px vertical, 28px horizontal minimum
- Background color with 4.5:1 contrast ratio against text
- Include fallback for dark mode (lighter background or inverted colors)
7. Generate Plain-Text Version
Create a plain-text fallback with:
- No HTML tags
- Line breaks for readability (max 70 characters per line)
- CTA as full URL on separate line
- Signature block with contact info
8. Output Format
Present the final email composition in this structure:
## Email Composition
**Framework**: [chosen framework name]
**Purpose**: [email purpose]
**Tone**: [tone]
**Recipient Type**: [recipient type]
---
### Subject Line Options
| # | Subject | Score | Type | Notes |
|---|---------|-------|------|-------|
| 1 | [subject line 1] | 87 | Curiosity | [why this works] |
| 2 | [subject line 2] | 82 | Benefit | [why this works] |
| 3 | [subject line 3] | 79 | Urgency | [why this works] |
**Recommended**: #1 (highest score)
**Preheader Text**: [30-80 char preheader recommendation]
---
### Email Body (Plain Text)
[Full email body using framework structure]
[Include merge tags like {{firstName}}, {{company}}]
[CTA]
[Signature]
---
### HTML Version
```html
[Complete HTML email code with inline CSS, dark mode support, responsive design]
Plain Text Version
[Plain text fallback with line breaks, CTA as full URL]
Email Metadata
- Word Count: [body word count]
- Reading Time: [estimated reading time]
- Character Count (with spaces): [count]
- CTA Count: [number of CTAs]
Next Steps
## Quality Gates
Before delivering the email, verify:
1. **Subject line scores**: At least one variant scores 70+
2. **Preheader length**: 30-80 characters
3. **Framework alignment**: Body follows chosen framework structure
4. **CTA clarity**: Primary CTA is clear and action-oriented
5. **Mobile readability**: Paragraphs are 2-3 sentences max
6. **HTML validity**: Table-based layout, inline CSS, dark mode support
7. **Accessibility**: Alt text on images, plain-text fallback included
8. **Spam check**: No spam trigger words in subject or body
9. **Personalization**: Merge tags used where appropriate
10. **Tone match**: Email tone matches requested tone from profile
If any gate fails, revise before output.
## Error Handling
- If `references/copy-frameworks.md` is missing, warn user and use basic AIDA structure
- If `email-profile.md` is missing, prompt user for context (don't fail)
- If subject line scores are all below 70, generate new variants
- If HTML template fails validation, fall back to plain-text only and warn user
## Resources
- `references/copy-frameworks.md` - Full framework structures and examples
- `email-profile.md` - User's business context and preferences (optional)
## Example Invocation
User: "Write a cold outreach email to a SaaS founder about my SEO audit service"
Agent:
1. Loads email-profile.md (if exists)
2. Selects PAS framework (cold outreach)
3. Generates 3 subject line variants with scores
4. Writes email body following PAS structure
5. Creates HTML template with dark mode
6. Creates plain-text fallback
7. Outputs full email composition with metadata and next steps
## Notes
- This sub-skill focuses on composition only (no sending/scheduling)
- For sending emails, use `email-send` sub-skill or MCP email tools
- For A/B testing, generate multiple variants using different frameworks
- Always adapt tone and complexity to recipient type (B2B vs B2C, technical vs non-technical)
1---2name: email-write3description: Compose high-converting emails using proven copy frameworks (PAS, AIDA, BAB, FAB, 4Ps). Generates subject line variants with scores, responsive HTML templates with dark mode support, plain-text fallback, and preheader recommendations. Optimized for cold outreach, newsletters, product launches, promotions, and transactional emails. Adapts to user context from email-profile.md.4---56# Email Write Sub-Skill78## Purpose910Generate professional, high-converting email copy using proven copywriting frameworks. Produces subject line variants with scoring, responsive HTML templates with dark mode support, plain-text fallback, and preheader recommendations.1112## Activation1314This sub-skill is invoked by the main `/email` skill when the user needs to compose a new email.1516## Workflow1718### 1. Gather Context1920First, check if `email-profile.md` exists in the project directory. If yes, load business type, tone preferences, and target audience from the profile.2122If no profile exists or user provides new context, ask for:2324- **Email Purpose**: cold outreach, newsletter, product launch, promotional, re-engagement, welcome, feature announcement, etc.25- **Recipient**: name, role, relationship (new lead, existing customer, subscriber, team member)26- **Tone**: professional, friendly, casual, authoritative, empathetic, enthusiastic27- **Business Type**: (from profile or ask) SaaS, e-commerce, service business, agency, creator, B2B, B2C28- **Key Message**: what action should the recipient take?29- **Additional Context**: product details, promotion details, deadline, personalization data3031### 2. Select Copy Framework3233Based on the email purpose, choose the appropriate framework from `references/copy-frameworks.md`:3435| Email Purpose | Recommended Framework | Why |36|--------------|----------------------|-----|37| Cold outreach | PAS | Empathy-driven, addresses pain points |38| Product launch | AIDA | Builds excitement, drives action |39| Newsletter | BAB or AIDA | Aspirational or engaging storytelling |40| Feature announcement | FAB | Clear value proposition for features |41| Promotional/sale | AIDA | Creates desire and urgency |42| Re-engagement | PAS | Identifies problem of disengagement |43| Welcome email | BAB | Shows transformation journey |44| Case study | 4Ps | Proof-heavy, testimonial-driven |45| Review request | PAS | Empathetic ask for feedback |46| Appointment reminder | Direct | No framework needed |4748If uncertain, default to **AIDA** for marketing emails or **PAS** for relationship emails.4950### 3. Generate Subject Lines5152Create **3 subject line variants** using these strategies:53541. **Curiosity-Driven**: Creates intrigue, open loop, question, teaser552. **Benefit-Driven**: Clear value proposition, outcome, result563. **Urgency-Driven**: Time-sensitive, scarcity, FOMO (but not spammy)5758**Subject Line Rules:**59- Optimal length: 6-10 words / 30-50 characters60- Never use ALL CAPS61- Maximum 1 exclamation mark per subject line62- Avoid spam triggers: "FREE!!!", "Act Now", "Limited Time Only", "Guaranteed", "Cash", "No obligation"63- Include personalization where possible (beyond first name: behavior, location, purchase history)64- Use power words: exclusive, secret, insider, proven, breakthrough, transform, discover6566**Scoring Methodology (0-100):**6768| Criteria | Weight | Scoring |69|----------|--------|---------|70| Length | 20 | 100 if 30-50 chars, -10 per 5 chars over/under |71| Power Words | 20 | +20 per power word (max 2) |72| Personalization | 25 | +25 if personalized beyond first name |73| Spam Triggers | -50 | -50 if contains spam word |74| Clarity | 20 | 100 if benefit/topic is clear |75| Curiosity | 15 | +15 if creates open loop |7677Minimum passing score: 707879### 4. Write Preheader Text8081Generate preheader recommendation (30-80 characters):8283- Must complement (not repeat) the subject line84- Include secondary value proposition or CTA preview85- Avoid generic text like "View this email in your browser"8687**Example:**88- Subject: "Your personalized SEO roadmap is ready"89- Preheader: "3 quick wins to boost your rankings this week"9091### 5. Compose Email Body9293Apply the chosen framework structure. Load full framework details from `references/copy-frameworks.md` before writing.9495**General Email Writing Rules:**9697- **Opening**: Hook in first sentence, address recipient by name if available98- **Body**: Use short paragraphs (2-3 sentences max), bullet points for scannability99- **Tone**: Match requested tone from profile or user input100- **Personalization**: Use merge tags like `{{firstName}}`, `{{company}}`, `{{productName}}`101- **CTA**: One primary CTA, clear and action-oriented ("Get Your Free Audit", "Claim Your Spot", "Start Your Trial")102- **Social Proof**: Include if available (testimonial, stat, case study result)103- **Signature**: Professional sign-off with name, title, company104105**Framework-Specific Structure:**106107Load the full structure from `references/copy-frameworks.md` and apply. Each framework has:108- Section breakdown (e.g., PAS: Problem → Agitate → Solve)109- Transition phrases110- Example templates111112### 6. Generate HTML Version113114Create a responsive, dark-mode compatible HTML email using these specifications:115116**HTML Template Structure:**117118```html119<!DOCTYPE html>120<html lang="en">121<head>122 <meta charset="UTF-8">123 <meta name="viewport" content="width=device-width, initial-scale=1.0">124 <meta name="color-scheme" content="light dark">125 <meta name="supported-color-schemes" content="light dark">126 <title>{{emailSubject}}</title>127 <style>128 /* Inline critical CSS */129 body { margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; }130 table { border-collapse: collapse; }131 .email-container { max-width: 600px; margin: 0 auto; }132 .body-text { font-size: 16px; line-height: 1.6; color: #333333; }133 .cta-button {134 display: inline-block;135 padding: 14px 28px;136 background-color: #0066cc;137 color: #ffffff;138 text-decoration: none;139 border-radius: 4px;140 font-weight: bold;141 min-height: 44px;142 min-width: 44px;143 }144145 /* Dark mode styles */146 @media (prefers-color-scheme: dark) {147 body { background-color: #1a1a1a !important; }148 .body-text { color: #e0e0e0 !important; }149 .email-container { background-color: #2a2a2a !important; }150 }151152 /* Mobile responsive */153 @media only screen and (max-width: 600px) {154 .body-text { font-size: 14px !important; }155 .headline { font-size: 22px !important; }156 .cta-button { display: block !important; width: 100% !important; }157 }158 </style>159</head>160<body>161 <!-- Email content goes here -->162</body>163</html>164```165166**HTML Rules:**167- Use table-based layout (not CSS Grid/Flexbox for email client compatibility)168- Max width: 600px169- Inline critical CSS (some clients strip `<style>` tags)170- Web-safe fonts with fallbacks: Arial, Helvetica, Georgia, Times New Roman171- Minimum 14px body text, 22px headlines on mobile172- CTA button: minimum 44x44px touch target, high contrast ratio (4.5:1)173- Include `color-scheme: light dark` meta tag174- Dark mode CSS using `@media (prefers-color-scheme: dark)`175- Alt text on all images (describe content, not "image" or "photo")176- Always include plain-text MIME part for accessibility177178**CTA Button Best Practices:**179- One primary CTA per email (secondary CTAs okay as text links)180- Use `<a>` tag with `role="button"` for accessibility181- Padding: 14px vertical, 28px horizontal minimum182- Background color with 4.5:1 contrast ratio against text183- Include fallback for dark mode (lighter background or inverted colors)184185### 7. Generate Plain-Text Version186187Create a plain-text fallback with:188- No HTML tags189- Line breaks for readability (max 70 characters per line)190- CTA as full URL on separate line191- Signature block with contact info192193### 8. Output Format194195Present the final email composition in this structure:196197```markdown198## Email Composition199200**Framework**: [chosen framework name]201**Purpose**: [email purpose]202**Tone**: [tone]203**Recipient Type**: [recipient type]204205---206207### Subject Line Options208209| # | Subject | Score | Type | Notes |210|---|---------|-------|------|-------|211| 1 | [subject line 1] | 87 | Curiosity | [why this works] |212| 2 | [subject line 2] | 82 | Benefit | [why this works] |213| 3 | [subject line 3] | 79 | Urgency | [why this works] |214215**Recommended**: #1 (highest score)216217**Preheader Text**: [30-80 char preheader recommendation]218219---220221### Email Body (Plain Text)222223[Full email body using framework structure]224225[Include merge tags like {{firstName}}, {{company}}]226227[CTA]228229[Signature]230231---232233### HTML Version234235```html236[Complete HTML email code with inline CSS, dark mode support, responsive design]237```238239---240241### Plain Text Version242243```244[Plain text fallback with line breaks, CTA as full URL]245```246247---248249### Email Metadata250251- **Word Count**: [body word count]252- **Reading Time**: [estimated reading time]253- **Character Count** (with spaces): [count]254- **CTA Count**: [number of CTAs]255256---257258### Next Steps259260- [ ] Review and edit copy261- [ ] Choose subject line variant262- [ ] Test HTML rendering in email client preview tool263- [ ] Send as draft via MCP (if available) or copy to email platform264- [ ] A/B test subject lines if sending to large list265```266267## Quality Gates268269Before delivering the email, verify:2702711. **Subject line scores**: At least one variant scores 70+2722. **Preheader length**: 30-80 characters2733. **Framework alignment**: Body follows chosen framework structure2744. **CTA clarity**: Primary CTA is clear and action-oriented2755. **Mobile readability**: Paragraphs are 2-3 sentences max2766. **HTML validity**: Table-based layout, inline CSS, dark mode support2777. **Accessibility**: Alt text on images, plain-text fallback included2788. **Spam check**: No spam trigger words in subject or body2799. **Personalization**: Merge tags used where appropriate28010. **Tone match**: Email tone matches requested tone from profile281282If any gate fails, revise before output.283284## Error Handling285286- If `references/copy-frameworks.md` is missing, warn user and use basic AIDA structure287- If `email-profile.md` is missing, prompt user for context (don't fail)288- If subject line scores are all below 70, generate new variants289- If HTML template fails validation, fall back to plain-text only and warn user290291## Resources292293- `references/copy-frameworks.md` - Full framework structures and examples294- `email-profile.md` - User's business context and preferences (optional)295296## Example Invocation297298User: "Write a cold outreach email to a SaaS founder about my SEO audit service"299300Agent:3011. Loads email-profile.md (if exists)3022. Selects PAS framework (cold outreach)3033. Generates 3 subject line variants with scores3044. Writes email body following PAS structure3055. Creates HTML template with dark mode3066. Creates plain-text fallback3077. Outputs full email composition with metadata and next steps308309## Notes310311- This sub-skill focuses on composition only (no sending/scheduling)312- For sending emails, use `email-send` sub-skill or MCP email tools313- For A/B testing, generate multiple variants using different frameworks314- Always adapt tone and complexity to recipient type (B2B vs B2C, technical vs non-technical)