17 AI skills for finding customers and making content

personalisation-line

make every template read like you wrote it by hand

How the two work together

Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.

Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.

No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.

Prompt for Claude

---
name: personalisation-line
description: One personalised first line that makes templated cold email read as hand-written; for volume outreach to researched prospects.
---

# Get templated outreach answered like hand-written mail

Real-signal first lines, ready to send: 50 to 250% more replies than merge-field templates (Lavender, 231,818 emails).

## Claude does

1. Ask, one sentence each: what they sell, who to, the ask, the tone. Per prospect: name, company, raw material (About page, posts, news, job adverts). Guess nothing.
2. Research by Lavender's 5x5x5: five minutes, five sources, stop.
3. Rank facts: Level 1 random, 2 company, 3 recent, 4 recent and tied to the user's problem. Keep the highest; below 3, skip. Situation signals (hiring, funding, site change) beat compliments.
4. Decide Y, in the user's words, for "I saw X, and I believe you are dealing with Y" (Lavender). "So what?" test: X must point at Y, else back to 3.
5. Record: lead_id, name, company, signal_type (post, news, hiring, tech, profile, mutual), verbatim evidence (exact words or dated change), implication, status ok or skip.

## Then Codex does

Codex fits each signal and implication into a situation line plus a second option under hard caps, varying structure, and writes JSON and CSV: bulk work, nothing to decide.

```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```

Fill in: {WE_SELL}, {ICP}, {OFFER}, {TONE}, {SIGNALS} (step 5 records), {OUTPUT_FOLDER}.

## Claude checks

1. Same lead_ids as {SIGNALS}, same order, skips kept.
2. Deletion test: cover the line, read the rest; still fine means decorative, fail.
3. Every fact traces to the verbatim evidence; one invention fails the row.
4. Under 25 words, their situation first, no sender or product, clean hand-off.
5. No banned opener, attention hack, AI tell or repeated shape.
6. Five random rows as the recipient: obvious why this person wrote, not creepy.

Only failing rows go back, with reasons; twice failed becomes skip.

## Rules

- Personal means specific, recent, about them: something you could only know by looking.
- Post: three to six of their words, quoted. Change: dated. Profile detail: unusual. Connection: real.
- Never "I see you work at X", "Impressive background", the headline, {{FirstName}} and {{Company}} (Level 1, 5% lift), "I hope this email finds you well", "Allow me to introduce myself", "My name is", "I wanted to reach out" or "I saw your LinkedIn profile".
- No praise, attention hack or product opener: their world first, you over we; generic personalisation is worse than none.
- One signal, one detail; over-personalising reads creepy and blurs the ask.
- Public information only; thin data means skip, never a guess; the line goes out in the user's name. One sentence under 25 words; anyone-else-unchanged means rewrite.
- No leverage, synergy, ecosystem, em dashes or repeated patterns.
- Line only, never the whole email, three fields maximum; 25 of 100 points, no rescue for a weak list or offer.

## If Codex is not installed

Claude does the Codex section itself and says so.

## Built from

- coreyhaines31/marketingskills, https://github.com/coreyhaines31/marketingskills/blob/main/skills/cold-email/SKILL.md, 46,908 stars (api.github.com, 5 Sep 2026).
- alirezarezvani/claude-skills, https://alirezarezvani.github.io/claude-skills/skills/marketing-skill/cold-email/, 25,542 stars.
- growthenginenowoslawski/coldoutboundskills, https://github.com/growthenginenowoslawski/coldoutboundskills/blob/main/skills/campaign-copywriting/SKILL.md, 680 stars, 1,000+ real campaigns.
- Clay blog, https://www.clay.com/blog/ai-email-personalization-examples, official blog, 24 prompts.
- Instantly, https://instantly.ai/prompt/personalized-cold-email-first-line-generator-sales, 5,465 recorded runs.
- Lavender, https://lavender.ai/blog/how-to-build-a-cold-email-personalization-process, 231,818-email benchmark.

Prompt for Codex

# Get templated outreach answered like hand-written mail - Codex task

Everything you need is below; you have no memory of the conversation behind it. Do not browse or ask.

## You are given

- {WE_SELL}: what the sender sells; context only, never in a line.
- {ICP}: who they sell to.
- {OFFER}: the ask the email makes.
- {TONE}: casual, formal or peer-to-peer.
- {SIGNALS}: JSON array, one object per prospect: lead_id, name, company, signal_type (post, news, hiring, tech, profile, mutual), signal (verbatim evidence: exact words or a dated change), implication (the problem it points at, in the sender's words), status (ok or skip).
- {OUTPUT_FOLDER}: where to write.

## Produce

In {OUTPUT_FOLDER}:

1. personalisation-lines.json: same lead_ids, same order, each with lead_id, name, company, source (signal_type unchanged), status, situation_line, second_option.
2. personalisation-lines.csv: same rows, header lead_id,name,company,source,status,situation_line,second_option; text fields double-quoted, inner quotes doubled.

Per ok prospect:

- situation_line: one sentence stating their exact situation (the signal) and bridging to the implication. Complete "I saw X, which usually means Y" with keywords from signal and implication only; vary the frame, never the facts. Under 25 words, under 15 better. Opens on them. Ends so the sender's next sentence follows without a jolt.
- second_option: same caps, a different angle on the same signal (a question exposing the gap, or the implication first), not a rewording.

Per skip prospect, or empty signal or implication: status skip, both text fields "<fields cannot be generated - skip>".

## Rules

1. Never fabricate: only facts in signal and implication; thin data means skip, not a filled gap.
2. Post lines quote three to six of their exact words; change lines carry the date; profile and mutual lines name the specific detail.
3. Never "I hope this email finds you well", "Allow me to introduce myself", "My name is", "I wanted to reach out", "I saw your LinkedIn profile", "I see you work at X" or "Impressive background". Never mention {WE_SELL} or any product.
4. No compliment unconnected to the implication.
5. No leverage, synergy or ecosystem. No em dashes; full stops or commas.
6. Vary the opening word and structure across prospects; no repeated pattern.
7. One signal per line; never combine two.
8. Could it go to anyone else unchanged? Rewrite until not.
9. Match {TONE}. British English.

## Return

Print, in order:

1. `rows: N, ok: N, skip: N` and both file paths.
2. `longest line: N words`.
3. First three words of every ok situation_line, one per row, to expose repeats.
4. Five random rows in full, for spot-check.
5. Any lead_id set to skip that arrived ok, with the reason.
6. The complete JSON.

Then print DONE.

Built from the best public work on this

Sources for the personalisation line skill

All opened and checked on 5 Sep 2026. Star counts are from api.github.com on that date. Only sources that survived the check and are confirmed are listed.

Built from

Supporting data, no technique taken: Woodpecker cold email statistics, https://woodpecker.co/blog/cold-email-statistics/ (20M+ emails, updated 23 Jun 2026): advanced personalisation replies at roughly 17 to 18% against 7 to 9% for basic, and only 5% of senders personalise every email.

Not used: Josh Braun, "Killer Cold Email Opening Lines", https://joshbraun.com/killer-cold-email-opening-lines/. Reputation only, no metric, so it carries no weight here even though its do and don't list agrees with the sources above.

Best public prompt we found for this job

From growthenginenowoslawski/coldoutboundskills, personalization-subagent-pattern skill:

https://github.com/growthenginenowoslawski/coldoutboundskills/blob/main/skills/personalization-subagent-pattern/SKILL.md

Quoted exactly as published, including its two em dashes:

```

You are personalizing cold email fields for N leads.

CONTEXT:

  • We sell: <one sentence from client-profile.yaml>
  • Our ICP: <one sentence>
  • Our offer: <the CTA we're asking them to respond to>
  • Tone: <casual | formal | peer-to-peer>

FIELDS TO GENERATE (per lead):

  • situation_line: <definition + 1 good example + 1 bad example>
  • value_line: <definition + 1 good example + 1 bad example>
  • cta_soft: <definition + 1 good example + 1 bad example>

RULES:

1. Never fabricate facts. If the company description is thin, say something generic but not false.

2. Never use em dashes (—). Use periods or commas.

3. Never use the word "leverage", "synergy", "ecosystem".

4. Maximum length: <N words per field>.

5. If a lead is missing company_description, return "<fields cannot be generated — skip>"

LEADS:

<JSON array>

RETURN:

A JSON array with the same lead_ids and the personalization fields. Save to /tmp/personalization-<batch-id>.json and print "DONE" when complete.

```

Our CODEX.md keeps this prompt's shape (context, fields, rules, leads, return) and narrows it to the one field the giveaway promises, the situation line, with the signal and implication chosen by Claude first so Codex has nothing to invent.

Want this running in your business?

I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.