Overview
Generate cold outreach emails from a contact CSV + prompt template. The prompt template is self-contained — it has all voice, research, value prop, proof points, and personalization rules baked in. This skill just runs it per row.When to Use
Trigger this skill when you need to:- Generate personalized cold emails at scale
- Run an email campaign from a contact list
- Create outreach emails from a prompt template
- Execute email generation pipeline
Architectural Principle
This skill is a runner, not a reasoner. All strategic reasoning (voice, value angles, proof points, research data) was done by the
email-prompt-building skill at prompt-build time and embedded in the prompt template. This skill reads the prompt + CSV and generates emails. It does NOT read the context file, hypothesis set, or research files.Inputs Required
CSV file with recipient data + enrichment columnsLocation:
claude-code-gtm/csv/input/{campaign}/contacts.csvMarkdown prompt file from
email-prompt-building skillLocation: claude-code-gtm/prompts/{vertical-slug}/en_first_email.mdThat’s it. No context file, no hypothesis set, no research files.
Contact CSV Columns
The prompt template specifies which columns it needs. Check the prompt’s “Enrichment data fields” section for the expected column names.Required (Always)
first_namelast_namecompany_namejob_title
Enrichment (Campaign-Specific)
Listed in the prompt template. If the prompt references a field that’s not in the CSV, the email quality degrades.Running the Generator
Option A: In-Chat Generation (<30 contacts)
For small lists:
- Read the prompt template
- Read the contact CSV
- For each row, apply the prompt with the row’s data and generate the email
- Output as JSON per row, accumulate results
- Save to output CSV
Option B: Batch Generation (30+ contacts)
For larger lists, process in batches of 10-20 rows within the conversation:
- Load the prompt template and contact CSV
- Process contacts in batches
- For each row, apply the prompt and generate the email JSON
- Accumulate results and save to output CSV
claude-code-gtm/csv/output/{campaign-slug}/emails.csvQuality Checks
After generating, verify:- Every email is within the word limit specified in the prompt
- No banned phrases from the prompt template appear
- Enrichment data was actually used — not just generic text
- Example queries in P2 are specific to each recipient’s verticals
- Proof points vary across emails (not the same PS for everyone)
- Subject lines meet the prompt’s length constraints
Segmentation-Aware Generation
When the contact CSV includes segmentation data (fromlist-segmentation):
Tier 1 Companies
Tier 1 Companies
- Generate individually with full attention to enrichment data
- Route through
email-response-simulationfor review before sending
Tier 2 Companies
Tier 2 Companies
- Group by
hypothesis_number - Generate in batches within each hypothesis group
- Spot-check 2-3 from each group
Tier 3 Companies
Tier 3 Companies
- Do not generate emails
- Route back to
list-enrichmentorlist-building
In-Chat Refinement Loop
After generating, you can refine:Update the Prompt Template
Important: Update the prompt template (not just the individual email) — the fix should be systemic
Changes made to the prompt are tracked so you can see the evolution.
Building a New Prompt Template
Output Format
Generated emails are saved to:Example Workflow
Quality Check Example
Verify Personalization
Verify Personalization
Good:
Hey Jane, I noticed Acme’s platform connects 50K+ HVAC contractors…Uses actual company name and enrichment data (
platform_type, contractor_count).Bad:Hey Jane, I noticed your platform connects contractors…Generic, could apply to anyone.
Verify Example Queries
Verify Example Queries
Good:
“HVAC companies in Texas under 50 employees”References prospect’s actual vertical (HVAC contractors).Bad:
“suppliers in your industry”Generic, not tailored.
Verify Proof Points
Verify Proof Points
Good:
FieldNation uses our data to keep 20K+ contractors verified across 40 states.Peer company (similar platform type and size).Bad:
A small startup uses our data…Not a peer (smaller company cited to larger prospect).
Troubleshooting
Next Steps
After email generation completes:- Tier 1 emails → Proceed to
email-response-simulationfor review - Tier 2 emails → Spot-check 5-10 and proceed to
campaign-sending - All emails → Review sample and refine prompt if needed