Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build personalized cold outreach sequences for LinkedIn and email. Use when someone needs to reach prospects, warm up cold leads, or build a systematic outreach engine. Covers research, connection requests, follow-ups, and conversion.
.claude/skills/brianrwagner-cold-outreach-sequence/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 170% | 0% |
Here's what I've learned about cold outreach: the word "cold" is the problem.
Spray-and-pray templates don't work. 10 minutes of research + a specific reference = not cold anymore. This skill builds the second kind.
Detect from context or ask: "One message, full sequence, or full outreach system?"
| Mode | What you get | Best for | |------|-------------|----------| | quick | 1 connection request + 1 follow-up for a single prospect | Testing an angle, one-off outreach | | standard | Full 4-touch sequence for a single prospect | Active pipeline, individual targets | | deep | Multi-prospect sequence system + A/B variants + tracking framework | Launching an outreach campaign |
Default: standard — use quick if they give you one name and say "draft something." Use deep if they're building a repeatable outreach engine.
Before writing any message, collect:
positioning-basics output if available)Research tool calls — run before writing:
web_search('[Company] [Founder/Name] news 2026')
web_search('[Company] funding recent')
web_search('[Person name] [Company] LinkedIn')Personalization constraint: Do not write a Tier 1 message without a named specific signal from research. If search yields 0 signals, default to Tier 3 and say so explicitly.
For each prospect, document findings before drafting:
Signal types (ranked by message strength):
Personalization tier assignment:
| Research Result | Tier | Approach | |---|---|---| | Named signal (news + post + context) | Tier 1 | Fully custom, reference signal in every message | | Company info + role context | Tier 2 | Template + personalized opener | | No signals found | Tier 3 | Volume template, minimal customization |
Formula: [Specific observation from research] + [Simple reason to connect]
Rules:
By signal type:
Recent funding: "Congrats on the Series A — the [investor] backing is a smart signal. Would love to connect."
Recent post: "Your post on [specific topic] resonated — been thinking the same thing. Happy to connect."
News/launch: "Saw the [product] launch — [specific detail] is smart positioning. Would love to connect."Formula: [Thanks] + [Bridge to relevance] + [Light value] + [Soft question]
Template:
Thanks for connecting. I work with [ICP description] on [specific outcome].
Curious — is [relevant function] something you own directly at [Company],
or is that still founder-led?
Happy to share what I'm seeing work at similar-stage companies either way.Formula: [Light nudge] + [New signal or angle] + [Easy out]
Constraint: Do NOT write "following up" with nothing new. Add one new piece:
Template:
Bumping this up — came across [specific article/trend/insight] and
thought of your situation at [Company].
[One sentence on why it's relevant to them.]
Happy to share more if useful. If not, no worries.Shift to email if LinkedIn hasn't converted, or try a different angle.
Subject line options:
Email structure:
[1-line hook tied to their specific situation]
[2-3 sentences: why you're reaching out + one proof point]
[Soft CTA — 1 sentence]I'll assume timing isn't right — totally get it.
If [relevant pain point] becomes a priority down the road, happy to reconnect.
Best of luck with [specific thing they're working on based on research].Post-break-up action: Add to 6-month re-engagement list with a resurface date.
After generating the full sequence, evaluate:
Flag any issue: "The first message doesn't include a soft question — it reads as a pitch. Revised to invite dialogue."
Always output a tracking table for the batch:
markdown| Prospect | Company | Platform | Tier | Sent Date | Response | Stage | Next Action | Resurface Date | |---|---|---|---|---|---|---|---|---| | [Name] | [Co] | LinkedIn | 1 | [date] | — | Connection sent | Wait 24-48h | — | | [Name] | [Co] | Email | 2 | [date] | — | First email sent | Follow-up Day 7 | — |
After each response (or non-response), ask:
markdown## Outreach Sequence: [Prospect Name] — [Date] ### Research Summary - Signal type: [news / post / company info / none] - Signal found: "[Specific detail]" - Personalization tier: [1/2/3] - Source: [URL or platform] ### Sequence **Connection Request (LinkedIn):** [Text — max 300 chars] **First Message (Day 1-2 after accept):** [Text] **Follow-Up #1 (Day 7):** [Text] **Follow-Up #2 (Day 14):** Platform: [LinkedIn / Email] Subject: [if email] [Text] **Break-Up (Day 21):** [Text] ### Pipeline Entry | Prospect | Company | Platform | Tier | Stage | Next Action | Resurface Date | |---|---|---|---|---|---|---| | [Name] | [Co] | [Platform] | [Tier] | Connection sent | Wait 24-48h | — | ### Self-Critique Notes [Any issues flagged + revisions made]
Skill by Brian Wagner | AI Marketing Architect | brianrwagner.com
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | 15,561 | 10,835 | -30% | 1 | 1 | 0% | 2,270 | 3,697 | +63% | 0 | 0 | — |
case-06 | fail→pass | 9,786 | 9,857 | +1% | 1 | 1 | 0% | 1,502 | 3,302 | +120% | 0 | 0 | — |
case-07 | pass→pass | 9,514 | 9,291 | -2% | 1 | 1 | 0% | 1,450 | 3,293 | +127% | 0 | 0 | — |
case-08 | fail→pass | 11,617 | 5,231 | -55% | 1 | 1 | 0% | 1,662 | 2,737 | +65% | 0 | 0 | — |
case-09 | fail→fail | 7,529 | 13,465 | +79% | 1 | 1 | 0% | 1,168 | 2,223 | +90% | 0 | 0 | — |
case-10 | fail→pass | 13,858 | 4,874 | -65% | 1 | 1 | 0% | 2,036 | 2,614 | +28% | 0 | 0 | — |
case-11 | pass→pass | 7,278 | 4,601 | -37% | 1 | 1 | 0% | 1,102 | 2,626 | +138% | 0 | 0 | — |
case-01 | fail→fail | 23,600 | 6,099 | -74% | 1 | 1 | 0% | 3,521 | 2,416 | -31% | 0 | 0 | — |
case-02 | fail→fail | 23,393 | 23,144 | -1% | 1 | 1 | 0% | 3,598 | 2,433 | -32% | 0 | 0 | — |
case-03 | fail→fail | 7,892 | 7,048 | -11% | 1 | 1 | 0% | 541 | 2,416 | +347% | 0 | 0 | — |
case-04 | pass→pass | 6,009 | 15,456 | +157% | 1 | 1 | 0% | 1,097 | 3,777 | +244% | 0 | 0 | — |
case-12 | pass→pass | 13,127 | 11,452 | -13% | 1 | 1 | 0% | 1,952 | 3,513 | +80% | 0 | 0 | — |
case-13 | fail→pass | 5,294 | 3,669 | -31% | 1 | 1 | 0% | 897 | 2,426 | +170% | 0 | 0 | — |
case-14 | fail→pass | 9,097 | 7,752 | -15% | 1 | 1 | 0% | 1,188 | 3,008 | +153% | 0 | 0 | — |
case-15 | fail→fail | 14,084 | 5,552 | -61% | 1 | 1 | 0% | 2,125 | 2,181 | +3% | 0 | 0 | — |
case-16 | pass→fail | 8,496 | 3,827 | -55% | 1 | 1 | 0% | 1,233 | 2,481 | +101% | 0 | 0 | — |
case-17 | fail→pass | 17,564 | 5,501 | -69% | 1 | 1 | 0% | 2,281 | 2,777 | +22% | 0 | 0 | — |
case-18 | pass→pass | 12,190 | 10,869 | -11% | 1 | 1 | 0% | 1,764 | 3,518 | +99% | 0 | 0 | — |
case-19 | pass→pass | 11,304 | 5,286 | -53% | 1 | 1 | 0% | 1,722 | 2,743 | +59% | 0 | 0 | — |
case-20 | pass→pass | 9,207 | 46,056 | +400% | 1 | 1 | 0% | 1,439 | 3,863 | +168% | 0 | 0 | — |
case-21 | pass→pass | 11,874 | 15,066 | +27% | 1 | 1 | 0% | 1,774 | 3,981 | +124% | 0 | 0 | — |
case-22 | pass→pass | 12,030 | 15,696 | +30% | 1 | 1 | 0% | 1,840 | 4,219 | +129% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.