Copy skill

Cold email subject line spintax generator

Describe the email and your merge fields, and the assistant writes subject line families as spintax, counts the renders per family and shows samples with filled and empty fields.

Works with

One Markdown file, free to use and change. It reads only what you paste into the chat.

What it does

What the skill checks

  • Builds 3 to 8 structural families so results can be measured per family
  • Writes options that fit together, so every render reads like a real subject
  • Keeps options strip-proof: no spaces at option edges, no empty options
  • Handles empty merge fields with one-level fallbacks or import filtering
  • Outputs double-brace and single-brace syntax side by side
  • Counts distinct renders per family and prints samples

Use it when

  • Before a new campaign, when you need more than two or three subjects
  • When the same subject goes out thousands of times a day
  • When you move sequences between tools with different spintax syntax

Example

What you paste and what you get back

You
Subjects for IT support outreach to 20-200 person companies. Fields: firstName, companyName. Tool: Instantly.
Assistant, with the skill
Family 1, name + question
Double-brace: {{firstName|there}}, {{RANDOM|quick|short|small}} {{RANDOM|question|one}}
Single-brace: {{first_name}}, {quick|short|small} {question|one}
Renders: 6. Samples: Sarah, quick question / Sarah, small one

Family 2, topic noun
Double-brace: {{RANDOM|support|helpdesk|IT}} {{RANDOM|coverage|backlog|setup}} at {{companyName|your team}}
Renders: 9. Samples: helpdesk backlog at Northwind / IT setup at Northwind

Install

Install it in your assistant

The same file works everywhere. Claude and Claude Code load it as a skill; the other assistants follow it as instructions.

Claude Code

  1. Run the command below. It saves the skill to your personal skills folder, available in every project. For one project only, use .claude/skills in the project instead.
  2. Start a new Claude Code session. Claude uses the skill when your request matches its description, or when you name it.
Terminal
mkdir -p ~/.claude/skills/subject-line-spintax-generator
curl -fsSL https://outreach2day.com/skills/subject-line-spintax-generator/SKILL.md -o ~/.claude/skills/subject-line-spintax-generator/SKILL.md

Claude (web and desktop)

  1. Download the ZIP file.
  2. In Claude, open Settings, find Skills under Capabilities and upload the ZIP. Skills need code execution to be turned on for your account.
  3. Ask for the task in any chat. Claude loads the skill when the request matches.

ChatGPT

  1. Download SKILL.md.
  2. Paste its text into a Project's instructions or a custom GPT's instructions. For a single chat, attach the file and write: follow the instructions in this file.

Gemini

  1. Download SKILL.md.
  2. Create a Gem and paste the file's text into its instructions, or attach the file to a chat and ask Gemini to follow it.

Grok

  1. Download SKILL.md.
  2. Paste its text into a Project's instructions, or attach the file to a chat and ask Grok to follow it.

Cursor and other coding agents

  1. Save the file as a project rule with the command below. Cursor reads the description to decide when to apply it.
  2. Agents that read AGENTS.md (Codex and others): paste the text into AGENTS.md or reference the file from it.
Terminal, in your project
mkdir -p .cursor/rules
curl -fsSL https://outreach2day.com/skills/subject-line-spintax-generator/SKILL.md -o .cursor/rules/subject-line-spintax-generator.mdc

Source

The full SKILL.md

Read it before you install it. Change the rules to match your own setup.

subject-line-spintax-generator/SKILL.md
---
name: subject-line-spintax-generator
description: Writes cold email subject lines as spintax that produces many distinct, natural renders from a small number of structural families. Output is strip-proof (no spaces at option edges), safe when a merge field is empty, and given in both double-brace {{RANDOM|a|b}} and single-brace {a|b} syntax. Use when the user asks for subject lines, subject spintax, more subject variation for high-volume sending, or wants to replace subjects that repeat too often.
---

# Subject line spintax generator

You write subject lines for cold email as spintax. The goal is two things at once: few structural families (so results can be measured per family) and many surface renders per family (so the same exact subject does not repeat thousands of times a day). Every render must be a subject a real person would type.

## Step 1. Brief

Ask for, or infer:

- What the email is about, in one sentence, and who receives it (role, company type).
- Merge fields available in the lead file, with exact names (`firstName` or `first_name`, `companyName` or `company`).
- The sending tool (double-brace or single-brace syntax).
- Daily volume. Under a few hundred a day, 2 to 3 families with a handful of options are enough. At thousands a day and above, each family needs thousands of renders or more.

## Step 2. Pick 3 to 8 structural families

A family is a sentence shape, not a wording. Examples:

| Family | Shape | Sample render |
|---|---|---|
| Name + question | `{name}, quick question` | Sarah, quick question |
| Topic noun | `{topic} at {company}` | ticket backlog at Northwind |
| Short question | `{open question}?` | still hiring for IT support? |
| Two words | `{noun} {noun}` | support coverage |
| Peer reference | `{peer type} like {company}` | teams like Northwind |

In our sends, subjects built on the first name often get more replies than subjects built on the company name. Test that on your list rather than assume it.

## Step 3. Write the spintax

Rules for every family:

1. Lowercase or sentence case, 2 to 6 words, no punctuation except `?` or `,`.
2. No fake thread markers: no `Re:`, `Fwd:`, "following up" on a first email.
3. No hype or spam words: free, guarantee, urgent, act now, $, %, !!!, all caps.
4. No links, domains or emojis.
5. **Strip-proof:** no option starts or ends with a space. Put spaces in the literal text between blocks: `{{RANDOM|quick|short}} question`, never `{{RANDOM|quick |short }}question`.
6. **No empty options.** Offer a shorter complete option instead of `""`.
7. **Empty fields:** on double-brace tools give each variable a one-level fallback (`{{firstName|there}}`). On single-brace tools use bare variables and tell the user to drop leads with empty fields before import. Never nest a variable inside a fallback.
8. Every option within a block must fit every option in the neighbouring blocks. Read 10 random renders per family; if one reads like token salad, restructure the family.

## Step 4. Count and check

For each family, multiply the option counts of its blocks to get the number of distinct renders (ignoring merge fields). Report the count per family and the total. Then render 10 samples per family with filled fields and 3 with empty fields.

## Output format

For each family: name, shape, spintax in double-brace syntax, the same in single-brace syntax, render count, 5 sample renders. Then a total line and the list of merge fields used.

## Rules

- Spintax fights exact repetition. It does not hide the fact that thousands of similar emails go out from the same infrastructure; keep volume per family moderate and rotate families.
- Keep the family label in the campaign or variant name so replies can be counted per family.
- Test one send per family to your own mailbox before launch and read the rendered subject. Some tools preview subjects with raw spintax.

## Example

Input: IT support for 20-200 person companies, fields `firstName`, `companyName`, Instantly.

Output (one family):

- Double-brace: `{{firstName|there}}, {{RANDOM|quick|short|small}} {{RANDOM|question|one}}`
- Single-brace: `{{first_name}}, {quick|short|small} {question|one}`
- Renders: 6. Samples: "Sarah, quick question", "Sarah, small one", "there, short question".
- Note: "there, short question" reads badly; for this family, drop leads without a first name instead of using the fallback.

Download SKILL.md · Download ZIP

FAQ

Questions

What is subject line spintax?

Spintax is a template with alternatives in braces, such as {quick|short} question. The sending tool picks one option per email, so one template produces many different subjects.

How many subject line variations do I need?

At a few hundred emails a day, a handful per family is enough. At thousands a day, aim for thousands of distinct renders per family so no exact subject repeats often, while keeping the number of families small enough to measure.

Should I use Re: in a cold email subject?

No. A fake Re: or Fwd: on a first email misleads the reader and many filters and people react badly to it. Use an empty subject on follow-ups to stay in the same thread instead.

How do I check the spintax before sending?

Paste it into the free spintax validator on this site. It flags broken options and shows sample renders in your browser.

Mailboxes, warm-up and sending in one place

$2.50 a mailbox a month. DNS records are set for you, and every mailbox shows its warm-up numbers from day one.