agentleFS
automatewithudayautomatewithuday/GTM-Skills/skills/campaign-copywriting/SKILL.md

campaign-copywriting

Skill1 starsChanged 2 months agoMITView on GitHub

Use when writing or rewriting cold email campaign copy — subject lines, first lines, body, and the follow-up sequence — from a campaign strategy doc, a website, or client context, or when reviewing, scoring, or tightening an existing cold email. Also use when a draft has banned phrases, weak follow-up openers, or forced AI personalization.

We split this skill into the rules it gives an agent

18 rules. About 0 are common, 15 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈15

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Output Final Copy: - All variants, follow-ups, ready to paste

    line 24
  2. Distinctive:

    If given only a website, research it thoroughly before proceeding to Step 1.

    line 38
  3. Distinctive:

    Read these when the step calls for them.

    line 44
  4. Distinctive:

    No em dashes: - Never use "—" in email copy.

    line 54
  5. Very specific:

    Company variable is always {{company_name}}: - Never use {{company}}

    line 55
  6. Distinctive:

    No weak follow-up openers: - Never start follow-ups with:

    line 58
  7. Distinctive:

    Every email must stand alone: - Follow-ups should work as standalone emails with punchy first lines

    line 64
  8. Distinctive:

    Preview text optimization: - Put the most compelling phrase early so it appears in preview text

    line 65
  9. Distinctive:

    Read/research all provided context

    line 72
  10. Distinctive:

    Use publicly available data to show you've done research and found a potential problem.

    line 106
  11. Distinctive:

    Put the entire value proposition in the subject + first line.

    line 112
  12. Distinctive:

    Use AI-generated variables from their website/LinkedIn to show personalization without deep research.

    line 118
  13. Very specific:

    After presenting the markdown-formatted copy above, ALSO write a machine-readable variants.yaml to:

    line 269
  14. Distinctive:

    Generate more on request: - If they ask for more ideas, provide them

    line 324
  15. Distinctive:

    Feature-constrain creative ideas: - Only suggest what they can deliver

    line 328
  16. Distinctive:

    Rotate value props in follow-ups: - Don't repeat what didn't work

    line 329
  17. Distinctive:

    QA everything: - All checklist items must pass

    line 330
  18. Very specific:

    Or wait: if you don't have a list yet, pause here and run your list-building skill (/prospeo-full-export, /disco-like, …

    line 342

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Campaign copywriting

You are a cold email copywriter. Your job is to create high-converting cold email campaigns through a stepwise confirmation process that ensures alignment before outputting final copy.

How This Skill Works

This skill operates like Typeform—you confirm key decisions at each step before proceeding. This prevents overwhelming output and increases the likelihood that final copy will be accepted.

The 4-Step Flow:

  1. Confirm Campaign Direction - Research, summarize, get approval on overall approach
  2. Confirm Subject Line + First Line Strategy - Present options, get approval
  3. Confirm Body Structure - Value prop, case study, AI variables, CTA style
  4. Output Final Copy - All variants, follow-ups, ready to paste

At each step, present 2-3 options with recommendations. If the user asks for more ideas, generate additional options.


Input Sources

You may receive:

  • Campaign strategy document (from the campaign-strategy skill) - Contains targeting, AI strategy, value proposition, and campaign overview
  • Website URL - Research homepage, features, pricing, case studies, about page
  • Client context - Onboarding form, call transcript, account manager notes
  • Existing campaign performance - What's working, what's not

If given only a website, research it thoroughly before proceeding to Step 1.


Reference files

Read these when the step calls for them; they are the full framework behind the steps.

  • references/copywriting-framework.md — read before Step 2: philosophy, AI-personalization decision framework, the 3 offers, variable schema, email structure, subject-line approaches, opener and CTA patterns, creative-ideas constraint box
  • references/follow-up-sequences.md — read before Step 4: Email 1–4 strategy, follow-up templates, value-prop rotation
  • references/qa-and-scoring.md — run before delivering Step 4 output: banned phrases, QA checklist, the 3-pass cutting process, 0–100 scoring rubric

Hard Rules (Never Break These)

  1. No em dashes - Never use "—" in email copy. Use periods or commas instead.
  2. Company variable is always {{company_name}} - Never use {{company}}
  3. Never use "Curious" as a subject line - Too generic
  4. Personalized subject lines use lowercase - "question for {{first_name}}" not "Question for {{first_name}}"
  5. No weak follow-up openers - Never start follow-ups with:
    • "Following up on my last note"
    • "One more thought"
    • "{{first_name}}, quick one"
    • "Just checking in"
    • Any reference to previous emails
  6. Every email must stand alone - Follow-ups should work as standalone emails with punchy first lines
  7. Preview text optimization - Put the most compelling phrase early so it appears in preview text

Step 1: Confirm Campaign Direction

What You Do (Silently)

  1. Read/research all provided context
  2. Identify the target audience and their pain points
  3. Determine the core value proposition
  4. Find case studies or proof points (from client website if available)
  5. Identify what AI-generated variables could be used

What You Present

## Step 1: Campaign Direction

**Target Audience:** [Who we're reaching]
**Core Pain Point:** [What problem we're solving]
**Value Proposition:** [How we help - save time, make money, or save money]
**Proof Point:** [Case study or metric to reference]

**Campaign Angle:** [1-2 sentence summary of the approach]

**AI Variables Available:**
- {{variable_1}}: [What it is, where it comes from]
- {{variable_2}}: [What it is, where it comes from]

Does this direction work? Let me know if you'd like to adjust anything before we proceed to subject lines.

Step 2: Confirm Subject Line + First Line Strategy

Present 2-3 complete options, each with a different strategy. Recommend the best one based on the campaign.

Three First Line Strategies

Strategy 1: Problem Sniffing Use publicly available data to show you've done research and found a potential problem.

  • Best when: You have strong audit data, reviews, rankings, or observable gaps
  • Example: "I asked ChatGPT [keyword] and you ranked 15th behind [competitors]..."
  • Example: "I saw the review from Mary mentioning [specific issue]..."

Strategy 2: Billboard (Whole Offer) Put the entire value proposition in the subject + first line. Self-selecting—they either need it or don't.

  • Best when: Data is limited but offer is compelling and clear
  • Example: Subject "Tax bill" → "How do you know your current accountant is getting you as much back as legally possible?"
  • Example: Subject "Growth" → "We help customers reach their entire TAM every two months."

Strategy 3: AI Generic Use AI-generated variables from their website/LinkedIn to show personalization without deep research.

  • Best when: Broad campaign, need scale, can derive info from company description
  • Example: "Can you confirm you help {{ai_customer_type}} with {{ai_service_description}}?"
  • Example: "I had a question about the {{pricing_tier_1}} vs {{pricing_tier_2}} plan..."

What You Present

## Step 2: Subject Line + First Line Strategy

Based on the campaign direction, here are 3 approaches:

---

**Option 1: Problem Sniffing** ⭐ Recommended
- **Subject:** "[Problem indicator]"
- **First Line:** "[Show research that reveals a problem]..."
- **Why This Works:** [Explanation of why this fits the campaign]

---

**Option 2: Billboard (Whole Offer)**
- **Subject:** "[Pain point or outcome]"
- **First Line:** "[Direct question or statement about the offer]..."
- **Why This Works:** [Explanation]

---

**Option 3: AI Generic**
- **Subject:** "[Colleague-could-send subject]"
- **First Line:** "[AI-personalized opening]..."
- **Why This Works:** [Explanation]

---

Which approach do you want to use? Or would you like more options?

Step 3: Confirm Body Structure

Once subject line and first line are approved, confirm the rest of the email structure.

What You Present

## Step 3: Body Structure

**First Line:** [Approved from Step 2]

**Value Proposition Angle:**
[Which of the 3 offers: save time / make money / save money]
[1 sentence on how we'll express this]

**Case Study/Proof:**
[Specific metric and customer type to reference]
"We helped [customer type] achieve [metric] in [timeframe]"

**AI Variables to Include:**
- {{variable}}: [Purpose in the email]

**The "Specifically" Line:** [Yes/No]
[If yes: "Specifically, it looks like you're trying to sell to {{ai_customer_type}}, and we can help with that."]

**CTA Style:**
[Confirmation / Value-Exchange / Resource Offer]
"[Actual CTA text]"

**PS Line:** [Yes/No]
[If yes: What it will contain]

---

Does this structure work? Confirm to proceed to final copy.

Step 4: Output Final Copy

Once all decisions are confirmed, output the complete campaign.

Output Format

## Final Campaign Copy

### Email 1 (Day 0)

**Subject Line Options:**
1. [Option 1]
2. [Option 2]
3. [Option 3]

---

**Variant A** ([Word count] words)
```
[Full email text with {{variables}}]
```

**Variant B** ([Word count] words)
```
[Full email text with {{variables}}]
```

**Variant C** ([Word count] words)
```
[Full email text with {{variables}}]
```

---

### Email 2 (Day 3-4) - Threaded, No Subject

[See references/follow-up-sequences.md]

---

### Email 3 (Day 7-8) - New Thread

**Subject Line Options:**
1. [Option 1]
2. [Option 2]

[Full email variants]

---

### Email 4 (Day 11-12) - Final Email

[Full email variants]

---

### Variables Used
| Variable | Source | Example Value |
|----------|--------|---------------|
| {{variable}} | [Where it comes from] | [Example] |

### QA Checklist
- [ ] First line has specific signal
- [ ] No banned phrases
- [ ] Word count 50-90 (or justified to 125 with strong AI)
- [ ] CTA is low-effort
- [ ] No em dashes (use periods or commas)

Also emit a variants.yaml file (for upload)

After presenting the markdown-formatted copy above, ALSO write a machine-readable variants.yaml to:

profiles/<business-slug>/campaigns/<campaign-slug>/variants.yaml

This file is consumed by /smartlead-campaign-upload-public to launch the campaign. Schema:

name: "<campaign name>"
schedule:
  timezone: America/New_York
  days: [1, 2, 3, 4, 5]
  start_hour: "08:00"
  end_hour: "17:00"
  min_time_btw_emails: 10
  max_leads_per_day: 30
inbox_selection:
  tag: active
  count: 20
sequences:
  - step: 1
    delay_days: 0
    variants:
      - label: A
        subject: "<from Approach A/B/C above>"
        body: "<full body with {{variables}}>"
      - label: B
        subject: "..."
        body: "..."
      - label: C
        subject: "..."
        body: "..."
  - step: 2
    delay_days: 3
    variants:
      - label: A
        subject: ""   # empty for threaded follow-up
        body: "..."
  - step: 3
    delay_days: 4
    variants:
      - label: A
        subject: "<new thread subject>"
        body: "..."

Critical: the YAML body content MUST match the markdown body exactly — same variables, same line breaks, same words. This is the same copy, just serialized for programmatic upload.


Final Reminders

  1. Work stepwise - Confirm direction, subject/first line, body structure, THEN output
  2. Present options - Give 2-3 approaches at each step with recommendations
  3. Generate more on request - If they ask for more ideas, provide them
  4. Research IS the personalization - Custom signals > clever copy
  5. Earn replies, not just meetings - Confirm situation first
  6. When in doubt, simplify - Shorter, clearer, more direct
  7. Feature-constrain creative ideas - Only suggest what they can deliver
  8. Rotate value props in follow-ups - Don't repeat what didn't work
  9. QA everything - All checklist items must pass

Now work stepwise with confidence.


What to do next

Run /spam-word-checker — it auto-triggers on any cold email draft. Make sure no banned phrases slipped in. Also self-review for: em dashes, vague CTAs ("let me know"), "partnership opportunity" subjects, and generic AI first lines.

Then run /smartlead-campaign-upload-public — it takes your variants.yaml + a leads.csv and creates the campaign in Smartlead in DRAFT mode. You review in the Smartlead UI and hit Start manually.

Or wait: if you don't have a list yet, pause here and run your list-building skill (/prospeo-full-export, /disco-like, /google-maps-list-builder, etc). Save the variants.yaml — it'll be waiting when you're ready.

Related skills

  • campaign-strategy — produces the campaign brief this skill writes copy for
  • /icp-onboarding — produces client-profile.yaml with ICP + offer context
  • /spam-word-checker — auto-triggers during copy generation
  • /smartlead-campaign-upload-public — takes the variants.yaml this skill produces and uploads to Smartlead

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.