Systems Lab

Agent skill

email-copywriter

Draft newsletter and nurture email copy with brand voice, structured sections, and conversion-focused CTAs

dormantSelf-containedInstructions only1,804 words

Filed under Content and SEO.

From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11

What it does when it runs

Draft newsletter and nurture email copy with brand voice, structured sections, and conversion-focused CTAs

Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about email-copywriter

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills
git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/capabilities/email-copywriter"
mkdir -p ~/.claude/skills/email-copywriter
cp -R "/tmp/b2b-gtm-skills/skills/capabilities/email-copywriter/." ~/.claude/skills/email-copywriter/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/capabilities/email-copywriter/SKILL.md, which is licensed MIT (repository). 1,804 words, 11 headings.

Email Copywriter

Generates newsletter editions and nurture email sequences with brand-aligned copy. Unlike cold-email-drafter (which handles outbound sales emails), this skill produces marketing emails: newsletters, drip sequences, onboarding emails, product announcements, and educational content emails. Applies brand voice rules from config, follows email copywriting best practices, and outputs structured email components (subject, preview, body, CTA).

Prerequisites

  • agency.config.json at repo root with agency, outreach, services, and case_studies sections
  • Topic, purpose, or content brief for the email
  • Optional: audience segment override
  • Optional: existing brand voice document (from brand-voice skill)

Phase 0: Intake

  1. Read agency.config.json from the project root.
  2. Extract:
    • agency.name -- for sender identity and sign-off
    • agency.founder -- for personal-tone emails
    • agency.domain -- for link references
    • outreach.tone -- voice and style constraints
    • outreach.banned_phrases -- phrases to exclude from all copy
    • outreach.sign_off -- default email signature
    • services[] -- for contextual mentions where relevant
    • case_studies[] -- for social proof blocks
    • icp.segments[] -- to tailor language to the target reader
  3. Accept parameters:
    • email_type -- (required) one of: newsletter, nurture, onboarding, announcement, educational, re-engagement, event-invite
    • topic -- (required) what the email is about
    • audience -- target segment. Default: primary ICP segment
    • goal -- primary goal: educate, drive-traffic, book-demo, announce, re-engage, nurture. Default: inferred from email_type
    • tone_override -- (optional) override config tone: casual, professional, urgent, celebratory
    • content_inputs -- (optional) raw notes, data points, or content to incorporate
    • sequence_position -- (optional) for nurture/drip: email number in sequence (e.g., "3 of 7")
    • cta -- (optional) specific CTA. Default: inferred from goal
    • word_limit -- (optional) max body words. Default: varies by type

Phase 1: Email Architecture

Define the structural blueprint based on email type:

Newsletter:

Subject line (max 50 chars)
Preview text (max 90 chars, complements subject)
---
Opening hook (2-3 sentences, personal or topical)
---
Section 1: Primary story/insight (100-150 words)
  - Subheading
  - Body with one key takeaway
  - Inline CTA or link
---
Section 2: Secondary content (75-100 words)
  - Quick tip, tool recommendation, or industry news
---
Section 3: Social proof or case study snippet (50-75 words)
  - Data point or result
  - Link to full case study
---
CTA block (primary action, single button)
---
P.S. line (personal note, secondary offer, or teaser for next issue)
---
Sign-off

Nurture email:

Subject line (max 50 chars)
Preview text (max 90 chars)
---
Opening: acknowledge where they are in the journey (2 sentences)
---
Value block: one insight or lesson (100-150 words)
  - Teach something useful, reference pain points from ICP config
---
Bridge: connect the lesson to the agency's service (2-3 sentences)
---
CTA: soft ask appropriate to sequence position
---
Sign-off

Onboarding email:

Subject line
Preview text
---
Welcome + set expectations (what they'll get, how often)
---
Quick win: one immediately actionable tip (50-75 words)
---
What's coming next: tease future value
---
CTA: reply with a question, complete a survey, or book a call
---
Sign-off

Announcement:

Subject line (urgency or excitement, no clickbait)
Preview text
---
The news: lead with the announcement (2-3 sentences)
---
Why it matters to them: frame the announcement from reader's perspective (3-4 sentences)
---
Details: specifics, dates, pricing, features (bullet points)
---
CTA: primary action (sign up, learn more, book)
---
Sign-off

Educational:

Subject line (curiosity or benefit)
Preview text
---
Hook: start with a question or surprising fact
---
Lesson body: teach one concept clearly (150-250 words)
  - Use numbered steps, bullets, or a mini-framework
  - Include one example
---
Application: how the reader can use this today (2-3 sentences)
---
CTA: learn more, read the full guide, or book a consultation
---
Sign-off

Re-engagement:

Subject line (acknowledge absence, no guilt)
Preview text
---
Opening: acknowledge it has been a while, no passive-aggression
---
Value hook: share the single most compelling thing they missed (3-4 sentences)
---
Options: give them a choice (stay subscribed with preferences, or unsubscribe gracefully)
---
CTA: re-engage action or preferences link
---
Sign-off

Event invite:

Subject line (event name + key benefit)
Preview text
---
What: event description (2-3 sentences)
---
Why attend: 3 bullet points of value
---
Details: date, time, format, duration, speakers
---
CTA: register/RSVP button
---
P.S.: share with a colleague who would benefit
---
Sign-off

Phase 2: Subject Line Generation

Generate 5 subject line options using different approaches:

ApproachExample Pattern
Curiosity gap"The CRO fix nobody talks about"
Benefit-first"3 ways to boost your AOV this week"
Number-driven"We increased conversions 34%. Here is how."
Question"Is your product page costing you sales?"
Personal/story"What I learned auditing 50 Shopify stores"

Subject line rules:

  • Max 50 characters (35-45 ideal for mobile)
  • No ALL CAPS words
  • No excessive punctuation (!!!, ???)
  • No spam trigger words: "free", "act now", "limited time", "click here"
  • Preview text must complement, never repeat, the subject line
  • Test: would YOU open this? If not, rewrite.

Score each subject line:

  • Curiosity factor (1-10)
  • Clarity (1-10)
  • Length appropriateness (1-10)
  • Spam risk (low/medium/high)

Phase 3: Body Copy Generation

Write the email body following the architecture from Phase 1.

Copywriting rules (non-negotiable):

  1. First sentence rule: the opening line must earn the second line. No throat-clearing.
  2. One idea per paragraph: max 3 sentences per paragraph
  3. Readability: 6th-8th grade reading level. Short sentences. Simple words.
  4. Scanability: use subheadings, bold key phrases, bullet points for lists
  5. Voice consistency: match outreach.tone from config throughout
  6. Banned phrase check: scan against outreach.banned_phrases and rewrite any matches
  7. CTA clarity: one primary CTA per email, stated as a specific action ("Book your audit" not "Learn more")
  8. P.S. line: always include one for newsletters and nurture emails; it gets disproportionate attention
  9. Social proof: include at least one data point, testimonial, or case study reference per email
  10. Personalization tokens: use {{first_name}} where appropriate, never more than twice

Word count targets by type:

Email TypeBody WordsTotal Words (incl. subject, preview, PS)
Newsletter300-500350-550
Nurture150-250200-300
Onboarding150-200180-250
Announcement150-250200-300
Educational250-400300-450
Re-engagement100-150130-200
Event invite150-250200-300

Phase 4: Sequence Planning (Nurture/Drip Only)

If email_type is nurture and sequence_position is provided, plan the full sequence arc:

Standard 7-email nurture sequence:

EmailThemeGoalTone
1Welcome + quick winBuild trustWarm, helpful
2Pain point deep-diveCreate problem awarenessEducational
3Framework or methodPosition expertiseAuthoritative
4Case studyProvide social proofConversational
5Common mistakesAgitate painDirect
6Your approachBridge to serviceProfessional
7Soft CTADrive actionPersonal

Each email must:

  • Reference the previous email naturally ("Last time, I shared...")
  • Escalate commitment gradually (read -> engage -> click -> book)
  • Deliver standalone value even if read in isolation
  • Not repeat points from earlier emails

If generating a single email in the sequence, include context notes on what came before and what comes after.

Phase 5: Quality Checks

Before finalizing, run these checks:

  1. Spam filter test: scan for spam trigger words, excessive links, image-heavy language
  2. Mobile preview: subject + preview text combined must make sense in 90 characters
  3. Tone audit: read aloud; does it sound like the brand?
  4. CTA audit: is the CTA specific, actionable, and appearing only once as primary?
  5. Link audit: are all links purposeful? No more than 3 links per email (newsletters: max 5)
  6. Unsubscribe compliance: include unsubscribe mention in footer context
  7. Banned phrase scan: final check against outreach.banned_phrases
  8. Length check: within word count targets for the email type

Phase 6: Output

Return structured JSON:

{
  "email_metadata": {
    "type": "newsletter",
    "topic": "CRO tips for D2C brands",
    "audience": "India D2C",
    "goal": "educate",
    "sequence_position": null,
    "word_count": 420
  },
  "subject_lines": [
    {"text": "The CRO fix nobody talks about", "approach": "curiosity", "curiosity_score": 9, "clarity_score": 7, "length": 30, "spam_risk": "low"},
    {"text": "3 ways to boost your AOV this week", "approach": "benefit", "curiosity_score": 6, "clarity_score": 9, "length": 35, "spam_risk": "low"},
    {"text": "We increased conversions 34%", "approach": "number", "curiosity_score": 8, "clarity_score": 8, "length": 28, "spam_risk": "low"},
    {"text": "Is your product page costing you?", "approach": "question", "curiosity_score": 8, "clarity_score": 8, "length": 33, "spam_risk": "low"},
    {"text": "50 audits later, here is what I found", "approach": "personal", "curiosity_score": 9, "clarity_score": 6, "length": 36, "spam_risk": "low"}
  ],
  "recommended_subject": 0,
  "preview_text": "Most stores miss this on their product pages",
  "email_body": {
    "opening": "Opening hook text...",
    "sections": [
      {"heading": "Section heading", "body": "Section content...", "cta_inline": null},
      {"heading": "Case in point", "body": "Case study reference...", "cta_inline": "See the full audit"}
    ],
    "primary_cta": {"text": "Book your free CRO audit", "url_placeholder": "{{cta_url}}"},
    "ps_line": "P.S. Next week I am breaking down the exact audit checklist we use. Stay tuned.",
    "sign_off": "Ekata | Plasho (plasho.com)"
  },
  "quality_checks": {
    "spam_risk": "low",
    "mobile_preview_ok": true,
    "tone_compliant": true,
    "cta_clear": true,
    "banned_phrases_clear": true,
    "word_count_in_range": true
  },
  "sequence_context": null
}

Phase 7: Review

Present the email to the user:

  1. Show the recommended subject line (with alternatives)
  2. Show preview text
  3. Show the full email body with formatting
  4. Highlight the CTA
  5. Show quality check results
  6. Ask for approval or revision requests

After approval, optionally:

  • Create draft in Gmail via tools.email_sending if configured
  • Log to CRM via crm-writer if part of a campaign
  • Hand off to content-repurposer if the newsletter content should be distributed elsewhere

Example Usage

Trigger phrases:

  • "Write a newsletter about [topic]"
  • "Draft a nurture email sequence for new subscribers"
  • "Create an onboarding welcome email"
  • "Write an announcement email for [news]"
  • "Draft email 3 of our nurture sequence"
  • "Write a re-engagement email for inactive subscribers"
  • "Create an event invite email for [event]"
User: Write a newsletter about CRO tips for D2C Shopify brands
Assistant: [reads config, structures newsletter architecture, generates 5 subject lines, writes body with sections and CTA, runs quality checks, returns structured JSON]
User: Draft a 7-email nurture sequence for new leads who downloaded our CRO guide
Assistant: [reads config, plans full sequence arc, generates each email with escalating commitment, ensures no repetition across emails, returns all 7 as structured JSON]

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what email-copywriter does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.