
Email Prompt Building
- 41 installs
- 104 repo stars
- Updated July 1, 2026
- extruct-ai/gtm-skills
Helps with ai & agent building tasks.
About
email-prompt-building is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- email-prompt-building
- AI & Agent Building
- AI-coding skill
Email Prompt Building by the numbers
- 41 all-time installs (skills.sh)
- Ranked #8,148 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/extruct-ai/gtm-skills --skill email-prompt-buildingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 41 |
|---|---|
| repo stars | ★ 104 |
| Last updated | July 1, 2026 |
| Repository | extruct-ai/gtm-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Cold Email Prompt Builder
Generate self-contained prompt templates for cold outreach campaigns. Each prompt encodes everything the email generator needs: voice, research data, value prop, proof points, and personalization rules. No external file references at runtime.
Architectural Principle
This skill is a generator, not a template. It reads the company context file and campaign research, reasons about what fits this specific audience, and produces a self-contained prompt. Each campaign gets its own prompt. Each company gets its own context file. Nothing is hardcoded in this skill.
BUILD TIME (this skill)
┌─────────────────────────────────────┐
context file ────────────▶│ │
research / hypothesis ───▶│ Synthesize into self-contained │──▶ prompt template (.md)
enrichment column list ──▶│ prompt with reasoning baked in │
└─────────────────────────────────────┘
RUN TIME (email-generation skill)
┌─────────────────────────────────────┐
prompt template (.md) ───▶│ │
contact CSV ─────────────▶│ Generate emails per row │──▶ emails CSV
└─────────────────────────────────────┘What This Skill Reads (inputs)
| Input | Source | What to extract |
|---|---|---|
| Context file | claude-code-gtm/context/{company}_context.md | Voice, sender, value prop, proof library, key numbers, banned words |
| Research | claude-code-gtm/context/{vertical-slug}/sourcing_research.md | Verified data points, statistics, tool comparisons |
| Hypothesis set | claude-code-gtm/context/{vertical-slug}/hypothesis_set.md | Numbered hypotheses with mechanisms and evidence |
| Enrichment columns | CSV headers from list-enrichment output | Field names and what they contain |
| Campaign brief | User describes audience, roles, goals | Target vertical, role types, campaign angle |
What This Skill Produces (output)
A single .md file at claude-code-gtm/prompts/{vertical-slug}/en_first_email.md containing:
1. Role line — who the LLM acts as (from context file → Voice → Sender) 2. Core pain — why this audience has this problem (from research, not generic) 3. Voice rules — tone, constraints, banned words (from context file → Voice) 4. Research context — verified data points embedded directly (from sourcing_research.md) 5. Enrichment data fields — table mapping each CSV column to how to use it 6. Hypothesis-based P1 rules — rich descriptions with research data, mechanisms, evidence 7. P2 value angle — synthesized from context file → What We Do, adapted per hypothesis 8. P3 CTA rules — campaign-specific examples 9. P4 proof points — selected from context file → Proof Library, with conditions for when to use each 10. Output format — JSON keys, word limits 11. Banned phrasing — from context file → Voice → Banned words + campaign-specific additions
Building a Campaign Prompt
Step 1: Read upstream data
Read these files before writing anything:
claude-code-gtm/context/{company}_context.md
claude-code-gtm/context/{vertical-slug}/sourcing_research.md
claude-code-gtm/context/{vertical-slug}/hypothesis_set.mdAlso read the contact CSV headers. Before writing any prompt rules, check which enrichment fields actually exist in the CSV. Only reference fields that are present. If the prompt needs a field that isn't there, either ask the user to add it via enrichment or drop that rule.
Check persona spread. If the contact list spans multiple personas (e.g., executives + ICs + ops), recommend splitting into separate prompts per role cluster. One prompt trying to handle all roles produces generic output. Flag this to the user before proceeding.
Step 2: Synthesize (the reasoning step)
This is where the skill does real work. For each section of the prompt:
Voice → from context file:
- Read
## Voicesection. Copy sender name, tone, constraints, banned words into the prompt. - Do NOT invent voice rules. If the context file doesn't have them, ask the user.
P1 → from research + hypotheses:
- For each hypothesis in the campaign, write a rich description using data points from the research.
- Explain the MECHANISM (why this pain exists), not just the symptom.
- Include specific numbers from the research (coverage percentages, decay rates, time costs).
- Write P1 rules that reference enrichment fields by name.
- NEVER use generic framing like "scores suppliers" or "manages vendors." Use the
platform_typeenrichment field or derive the actual description from the company profile. If the enrichment data doesn't includeplatform_type, instruct the generator to describe what the company actually does based on its description.
Competitive awareness rules (embed in P1/P2):
- If enrichment data or research reveals the prospect company has an existing capability that overlaps with your product:
1. NEVER pitch as a replacement. Position as a data layer underneath. 2. Acknowledge their existing tool by name in P1. 3. Shift P2 from "here's what we do" to "here's what we add to what you already do." 4. If the prospect FOUNDED a competing product (career history), either: a. Use Variant D (peer founder) and reference shared context, OR b. Deprioritize. Flag to user as "risky send, needs manual review."
P2 → from context file → What We Do:
- Read the product description, email-safe value prop, and key numbers.
- Reason about which value angle matters for THIS audience and THIS hypothesis.
- Write 2-3 hypothesis-matched value angles with the reasoning embedded.
- Use the email-safe value prop, not the raw version (avoid banned words).
- P2 simplicity check — enforce before saving:
- One idea per sentence. No compound lists.
- No architecture descriptions. No implementation jargon (see Anti-patterns #3).
- If a sentence has more than two commas, split it into separate sentences.
- Read P2 aloud. If any sentence requires a second read, rewrite it shorter.
- Bad: "We aggregate 100M+ records from trade registries, customs filings, and corporate databases, enabling teams to run queries like 'packaging suppliers in DACH under €50M' and get matched results in seconds."
- Good: "We track 100M+ companies across trade registries and customs filings. Your team can search something like 'packaging suppliers in DACH under €50M' and get results in seconds."
- Example query rules:
- The example query MUST reference a vertical or category the prospect's platform actually serves. Use enrichment data or company description.
- NEVER reuse the same example query across different prospects.
- Format: "{category} in {geography} under {size constraint}"
P4 → from context file → Proof Library:
Select proof points based on THREE dimensions:
| Dimension | Logic |
|---|---|
| Peer relevance | Proof company should be same size or larger than prospect. Never cite a smaller company as proof to a bigger one. |
| Hypothesis alignment | Proof point should validate the same hypothesis used in P1. |
| Non-redundancy | If a stat appears in P2, do NOT repeat it in P4. |
If no proof point meets all three criteria, drop P4 entirely (use a shorter structural variant instead).
Banned phrasing → from context file + campaign-specific:
- Start with banned words from context file → Voice.
- Add any campaign-specific banned phrases discovered during generation or email-response-simulation.
Step 3: Assemble the prompt
Write the .md file following this skeleton:
[Role line from context → Voice → Sender]
[Core pain — 2-3 sentences from research. Not generic.]
## Hard constraints
[From context → Voice. Copied verbatim.]
## Research context
[Verified data points from sourcing_research.md. Actual numbers, tool names,
coverage gaps. This is the foundation for P1.]
## Enrichment data fields
[Table: field name → what it tells you → how to use it in the email]
## Hypothesis-based P1
[Per hypothesis: mechanism, evidence, usage rules.
All grounded in research data.]
## Role-based emphasis
[Map role keywords → emphasis. Use specific data points.]
## Structural variants
[Select variant per recipient based on role + seniority from enrichment data.
See "Structural Variants" section below for definitions.]
## Competitive awareness
[Rules for handling prospects with overlapping capabilities.]
## Proof point selection
[Three-dimensional selection: peer relevance, hypothesis alignment, non-redundancy.]
## Example query rules
[Must reference prospect's actual vertical. Never reuse across prospects.]
P1 — [Rules referencing hypotheses and enrichment fields. Use actual platform description, not generic framing.]
P2 — [Synthesized value angles per hypothesis. Key numbers from context. Vertical-specific example queries.]
P3 — [CTA rules with campaign-specific examples]
P4 — [Proof points with conditions. Drop entirely if no proof meets all three criteria.]
## Subject line rules
[Subject references the prospect's problem, not your product. Never sound like
you're selling data or leads. No "boost your pipeline" or "better lead lists."
Frame around THEIR challenge: coverage gap, manual process, missed deals.]
## Output format
[JSON keys]
## Banned phrasing
[From context → Voice + campaign additions]
## Example emails
[Include 2-3 full example emails as demonstrations. Models follow examples
better than instructions. Each example should show a different structural
variant or hypothesis. Annotate each with which variant, hypothesis, and
enrichment fields it uses.]Anti-patterns — what NOT to do
Every generated prompt must include these rules verbatim. These are the most common ways cold emails fail:
1. Never repeat the prospect's own info back to them. Don't paraphrase their LinkedIn headline, restate their company description, or echo what their product does. They already know. It signals you scraped them and have nothing to say. 2. Never explain their business to them. Don't tell a CTO how three-tier architectures work. Don't tell a data vendor that data decays. If they live it daily, skip it. 3. Never use architecture jargon in P2. No "three-tier," "waterfall," "entity resolution," "microservices," "data mesh," or implementation-level terms. P2 is about outcomes, not internals. If a term wouldn't appear in a board deck, cut it. 4. Never stack multiple questions. One email, one question — max. Two questions compete for attention and neither gets answered. If you have a question in P1, P3's CTA must be a statement or offer, not another question. 5. P2 must be readable on first pass. If you have to read a sentence twice to understand it, rewrite it. No nested clauses, no stacked qualifiers, no "which enables X that drives Y resulting in Z" chains.
Step 4: Self-containment check
Before saving, verify:
- [ ] Voice rules come from context file, not hardcoded in this skill
- [ ] Structural variants are defined with role-based selection logic
- [ ] P1 uses actual platform description, not generic framing
- [ ] P2 example queries reference the prospect's actual vertical, not a generic category
- [ ] P4 proof points pass all three selection criteria (peer relevance, hypothesis alignment, non-redundancy)
- [ ] Competitive awareness rules are included for prospects with overlapping capabilities
- [ ] Research data is embedded with actual numbers, not "use the research data"
- [ ] No references to external files — the email-generation skill only needs this prompt + CSV
- [ ] Banned words from context file are included in the banned phrasing section
- [ ] Every enrichment field referenced in the prompt actually exists in the CSV headers
- [ ] Subject line rules reference the prospect's problem, not your product
- [ ] At least 2 full example emails are included as demonstrations
- [ ] If contact list spans multiple personas, separate prompts were recommended
Step 5: Save
claude-code-gtm/prompts/{vertical-slug}/en_first_email.md
claude-code-gtm/prompts/{vertical-slug}/en_follow_up_email.md (if follow-up needed)Structural Variants
Select structure based on role + seniority from enrichment data. These are defaults. Override from context file or user input.
Variant A: Technical Evaluator (CTO, VP Eng, Head of Data)
4 paragraphs, ≤120 words.
- P1: pain with concrete data point
- P2: product specs (API-first, pricing model, integration)
- P3: low-effort CTA (sample search, not a meeting)
- P4: peer proof point (PS)
Variant B: Founder / CEO (small company, <50 people)
3 paragraphs, ≤90 words. No PS.
- P1: pain tied to their specific stage or market move
- P2: value + proof in one paragraph (merge P2+P4)
- P3: CTA
Variant C: Executive / Chairman / Board (delegates decisions)
2-3 paragraphs, ≤70 words. Forwardable.
- P1: one sharp observation about their platform
- P2: one sentence value + CTA combined
- Optional P3: proof point only if it's a name they'd recognize
Variant D: Peer Founder (built something adjacent or competing)
2 paragraphs, ≤60 words. Peer-to-peer tone.
- P1: acknowledge shared context, state the angle without explaining basics
- P2: specific offer, no product pitch
Follow-up Email
- 2 paragraphs, ≤60 words total
- P1: case study + capability + example
- P2: sector-shaped CTA (different angle from first email)
Reference
See references/prompt-patterns.md for patterns distilled from past campaigns.
Email Structure Library
Pre-built email structures for the email-prompt-building skill. Pick one, customize it, or build your own from scratch. Each structure defines what goes in each paragraph, word limits, and when it works best.
How to Use
1. Browse the structures below 2. Pick the one closest to your campaign goals 3. Customize paragraph definitions, word limits, or add/remove paragraphs 4. The email-prompt-building skill will synthesize content (voice, research, proof points) into the chosen structure
If none of these fit, define your own structure or paste an example email that worked in the past — the skill will reverse-engineer the structure from it.
---
Structure: 4P-short
The default cold outreach structure. Proven on multiple campaigns.
Paragraphs: 4
Word limit: ≤120 total
Greeting: "Hey {FirstName}," on its own line
P1 — Sector-specific opener (≤16 words for key line)
One crisp observation showing you understand THEIR work.
Uses enrichment data and hypothesis to personalize.
Natural opener: "Noticed...", "Saw...", "Heard from..."
Names their sector explicitly.
P2 — Product value (1-2 sentences)
Brief tool description + one concrete example query in quotes.
Value angle matched to the hypothesis.
Includes key number from context file.
P3 — Soft CTA (1 sentence)
Concrete sample offer, not a meeting request.
Uses their buyer type and region.
Example: "Want me to run a sample list of [buyer] in [region]?"
P4 — Proof / PS (1 sentence)
Case study from a peer company.
Format: "PS. [Profile] used us to [concrete result]."
Matched to hypothesis and audience.Best for: First cold outreach to mid-level and senior prospects. Works well for product-led motions where you can show a concrete sample.
Tested on: PE roll-up sourcing, industrial tech CRM hygiene, market research firms.
---
Structure: 3P-question
Shorter, question-led. Opens with a question that the recipient can answer from their own experience.
Paragraphs: 3
Word limit: ≤90 total
Greeting: "Hey {FirstName}," on its own line
P1 — Question opener (1-2 sentences)
A specific question about their workflow or pain.
Must be answerable — not rhetorical.
Grounded in research data (not generic).
Example: "How does your team currently find [buyer type] in [region]?
Most tools cover about 15-25% of that market."
P2 — Value + CTA (2-3 sentences)
Product description tied to the question.
Concrete example.
CTA embedded: "Happy to show you what comes back for [query]."
P3 — Proof / PS (1 sentence)
Same as 4P-short.Best for: Senior prospects (VP+) who delete long emails. When the CTA is lightweight (sample, not meeting).
Not tested yet. Add campaign results here when used.
---
Structure: 2P-followup
For follow-up emails when the first email got no reply.
Paragraphs: 2
Word limit: ≤60 total
Greeting: "Hey {FirstName}," on its own line
P1 — Case study + capability (1-2 sentences)
Different angle from the first email.
"We recently helped a [profile] [capability]."
One concrete example in quotes.
P2 — Sector-shaped CTA (1 sentence)
Different CTA from first email.
Tied to their sector/use case.
Never "quick follow-up" or "circling back."Best for: Second touch 3-5 days after first email. Use a different value angle and CTA.
Tested on: PE roll-up sourcing (follow-up), market research firms.
---
Structure: 4P-story
Narrative structure. Tells a short story of a similar company's problem and resolution.
Paragraphs: 4
Word limit: ≤130 total
Greeting: "Hey {FirstName}," on its own line
P1 — Hook (1 sentence)
Specific event, news, or observation about their company.
Creates curiosity without flattery.
P2 — Peer story (2-3 sentences)
"A [similar profile] was dealing with [same pain].
They were [doing workaround]. [Specific cost/time of workaround]."
Uses research data to make it credible.
P3 — Resolution + value (1-2 sentences)
What the peer company did differently.
Product mention embedded naturally, not pitched.
P4 — CTA (1 sentence)
Soft ask connected to the story.
"Want to see if the same approach works for [their vertical]?"Best for: C-suite and founders who respond to stories more than feature descriptions. When you have a strong case study close to the recipient's profile.
Not tested yet. Add campaign results here when used.
---
Structure: 3P-event
Post-event outreach. Uses a shared event as the opening context.
Paragraphs: 3
Word limit: ≤100 total
Greeting: "Hey {FirstName}," on its own line
P1 — Event reference + observation (1-2 sentences)
Reference the specific event.
Tie to a trend or pain discussed there.
Not: "Great seeing you at X" (unless you actually met).
P2 — Value + example (1-2 sentences)
Product explanation with concrete outcome.
Example query tied to the event's audience.
P3 — CTA (1 sentence)
Concrete offer, not a meeting.
"Want me to run [specific deliverable] on your [event contacts/target list]?"Best for: 1-2 weeks after a conference or trade show. When the recipient was an exhibitor or attendee. Works well with H#1 (trade show contact rot).
Not tested yet. Add campaign results here when used.
---
Adding Your Own Structure
After a campaign, if you discover a structure that works, add it here:
## Structure: [name]
[1-sentence description]
\```
Paragraphs: [N]
Word limit: ≤[N] total
Greeting: [format]
P1 — [role and rules]
P2 — [role and rules]
...
\```
**Best for:** [audience, motion type, seniority]
**Tested on:** [campaign name, reply rate, date]Extracting Structure from Past Emails
If you have an email that worked well but no formal structure, paste it and the email-prompt-building skill will: 1. Identify how many paragraphs and their roles 2. Count the word limit 3. Extract the CTA style and proof point placement 4. Create a new structure entry based on the pattern
Prompt Patterns
Distilled patterns for building email prompt templates. These are structural patterns — fill in your own company, product, audience, and proof points from the context file.
Pattern 1: Pain-Theme Segmentation
Map 3-5 pain themes from your hypothesis set, then branch P1 based on which theme fits each recipient.
Structure:
- Define pain themes (A, B, C...) from
market-researchoutput - Map role types to themes (analysts → theme A, executives → theme B)
- P1 references the specific pain theme matched to the recipient
- P2 explains how your product addresses that theme
When to use: You have a hypothesis set with distinct pain points and enrichment data to match companies to themes.
---
Pattern 2: Role-Based Emphasis
Vary the angle based on the recipient's seniority and function.
Structure:
- Analysts/researchers: emphasize precision, coverage, manual work reduction
- Directors/VPs: emphasize speed, cost discipline, cross-team visibility
- C-suite: emphasize strategic advantage, competitive edge, scale
When to use: Your list spans multiple seniority levels within the same vertical.
---
Pattern 3: Post-Event Outreach
Use a shared event as the opener.
Structure:
- P1: Event reference + observation about a trend discussed at the event
- P2: Simple question about how they currently handle [relevant process]
- P3: Product explanation with concrete outcome
- P4: Soft CTA (no hard meeting ask)
When to use: After a conference, webinar, or industry event where your audience was present.
---
Pattern 4: Genuine Curiosity (Question-First P1)
Open with a real question derived from enrichment data — not a statement with a question mark bolted on.
Structure:
- P1 is a single question. The question must be:
- Genuinely answerable (you don't already know the answer)
- Grounded in something specific you observed in their enrichment data (job change, company growth, product launch, coverage gap)
- NOT a restatement of their pain dressed as a question
- P2 is a short value bridge: what made you curious + what you do, in plain language
- P3 is a concrete CTA (sample, not a meeting)
Bad examples (statement-first disguised as questions):
- "Are you struggling with data coverage in APAC?" (you're telling them their pain)
- "Did you know that 40% of trade show contacts decay within 90 days?" (rhetorical)
- "Wouldn't it be great if you could search 100M+ companies?" (leading)
Good examples (genuine curiosity):
- "Your team added three APAC markets last year — are you sourcing those suppliers locally or from a central database?"
- "I saw you just launched a materials procurement vertical — how are you building the supplier directory for that?"
- "Noticed your platform covers DACH but not Nordics yet — is that a data availability issue or a demand priority call?"
Key rule: If you could answer your own question from the enrichment data, it's not genuine curiosity — it's a statement with a question mark. The question must ask about something you genuinely cannot see from the outside.
When to use: Best for senior prospects (VP+) and founders who ignore statement-first pitches. Works especially well when enrichment data reveals a recent move (expansion, product launch, hire) that creates a natural opening. Prefer this pattern over Pain-Theme for audiences that are self-aware about their pain and don't need it named.
---
Pattern 5: Multi-Email Sequence
First email + follow-up with different angles.
Structure:
- Email 1: Hypothesis-driven opener → product value → CTA → proof point
- Email 2 (follow-up): Different case study → different capability angle → sector-shaped CTA
Rules:
- Follow-up must use a different value angle than email 1
- Never say "quick follow-up" or "circling back"
- Follow-up is shorter (≤60 words vs ≤120)
---
Pattern 6: Structural Variants
Select email structure based on the recipient's role and seniority from enrichment data. Different personas need different formats.
Variants:
| Variant | Who | Paragraphs | Max words | Notes |
|---|---|---|---|---|
| A: Technical Evaluator | CTO, VP Eng, Head of Data | 4 (P1-P4) | 120 | Full structure with proof point PS |
| B: Founder / CEO | Small company (<50 people) | 3 (P1-P3) | 90 | Merge P2+P4, no separate PS |
| C: Executive / Board | Chairman, board member, delegates decisions | 2-3 | 70 | Forwardable, one sharp observation |
| D: Peer Founder | Built something adjacent or competing | 2 | 60 | Peer-to-peer tone, no product pitch |
Selection logic:
- Match on
job_titleorseniorityfrom enrichment data - If role is ambiguous, default to Variant A
- Follow-up emails are always 2 paragraphs, ≤60 words regardless of variant
When to use: Your list spans multiple seniority levels or includes both operators and executives. Especially important when the same campaign targets both technical evaluators and C-suite.
---
Cross-Campaign Defaults
These are starting points. Override per campaign as needed.
| Rule | Default |
|---|---|
| Max words (first email) | Varies by structural variant (60-120) |
| Max words (follow-up) | 60 |
| Paragraphs (first email) | Varies by structural variant (2-4) |
| Paragraphs (follow-up) | 2 |
| Greeting format | "Hey {FirstName}," |
| Firm mentions | at most once |
| Sector naming | always explicit, never "sectors like yours" |
| Output format | JSON (keys: recipient_name, recipient_company, subject, greeting, paragraphs per variant) |
| Input | CSV row passed as JSON |
| Prompt location | claude-code-gtm/prompts/{vertical-slug}/ |
Building Your Own Patterns
After running 2-3 campaigns, distill what worked:
1. Export campaign results from your email sequencer 2. Identify which P1 angles got replies 3. Note which proof points resonated 4. Add the pattern here with the audience, structure, and key phrases that worked
Keep this file as a living reference. Delete patterns that stop working.