Skip to content
v0.4A/B variants set up for you

Cold outreach that
improves itself.

One markdown file defines your outbound. Eleven Claude Code skills run it through FoxReach, test it, and propose edits to it from what got replies.

example
❯/cold send
Pre-flight
✓ Banned phrases 0 hits
✓ Variables fallbacks set
✓ Audience 12 removed
✓ Mailboxes 4 of 4 healthy
✓ Provider match on
Ready: 3 steps, 188 leads, 4 accounts
Start now? (y/N) y
✓ Started. Lookups can take 30 min.
❯/cold learn
tier-1 / subject line, day 7
A 412 sent 9 interested 2.2%
B 405 sent 21 interested 5.2%
+3.0pp, p=0.02 -> winner: B
Proposed: .cold/proposed-diff.patch
Apply or reject. Nothing changes yet.
Skills
11
Command
/cold
Price
Free
How it works

One file. One loop.

cold.md is the brief every skill reads. The loop around it is what makes it get better instead of going stale.

01

Write the policy once

cold.md in your repo: who you are, who you write to, the offer, your voice, the facts you may cite, the sequence and the banned phrases.

02

Run the loop

One /cold command per step. Leads, drafts, sending and replies all go through FoxReach, and every step leaves a file you can review.

03

Approve what it learned

When a test finds a winner, cold-learn proposes an edit to cold.md with the numbers behind it. You apply it or reject it.

The cold.md file

The brief every skill reads.

Eight sections, in order, in plain markdown. Commit it next to your code and it travels with your team, not with your vendor.

  • ## Banned is a hard filter. A banned phrase is never written.
  • ## Voice rules are followed word for word, not as inspiration.
  • ## Proof is the only source of facts. No invented numbers.
  • ## Audience disqualifiers are enforced before anything sends.
Read the v0 spec
example
---
coldMdVersion: "0"
owner: "Dana Reyes <dana@northwind.example>"
---
 
# Northwind - cold.md
 
## Identity
I'm Dana, founder of Northwind. We turn product analytics
into a weekly plan your growth team can act on.
 
## Audience
- B2B SaaS, 20-200 employees, Series A or B
- Title: Head of Growth, VP Product, Founder
### Not for
- Agencies, consultancies
 
## Value
Northwind tells your growth team what to ship next week,
from the data you already collect.
 
## Voice
### Do
- Short sentences. One idea each.
- Close with one yes/no question.
### Don't
- Use em dashes.
 
## Proof
- Reads the events you already send, no new tracking
- Case study: https://northwind.example/customers
 
## Sequence
### 1. Opener (Day 0)
- Subject: a question about their stack, 6 words max
- Body: 40-60 words, one observable fact
### 2. Bump (Day 3)
- Body: 20 words max, one new piece of value
 
## Objections
> "We already have a BI tool."
Good, Northwind reads the same data and says what to ship.
Want a 15-minute look at one of your weeks?
 
## Banned
- I hope this email finds you well
- circle back
tier-1 / subject linewinner: B
ArmSentInterestedRate
A statement41292.2%
B question405215.2%
+3.0pp · 95% CI [0.4, 5.6] · p = 0.02 · n = 817
.cold/proposed-diff.patchawaiting your approval
### 1. Opener (Day 0)
-- Subject: 5 words max, lowercase, a statement
+- Subject: a question about their stack, 6 words max
- Body: 40-60 words, one observable fact

Example numbers

Autoresearch

Tests that edit the file.

cold-experiment picks one variable and writes the test down before anything sends. A week later cold-learn reads the replies per variant and runs the numbers.

  • Winner

    A proposed patch to cold.md, with the sample, lift, confidence interval and p-value next to it.

  • Inconclusive

    cold.md is left alone. The test is extended or closed, and the next variable is up.

  • Trust

    After three approved patches in a row it can apply them itself. One rejection turns that off.

How cold-learn decides
The skills

Eleven skills. Each owns one step.

Every skill reads cold.md or icp.md and writes a file you can review. Call them through /cold or on their own.

Who

cold-icp

Builds icp.md from your site or a short Q&A, then checks it with web research: competitors, title prevalence, pain language.

/cold icp
What

cold-offer

Sharpens the value prop with competitor pricing and market research. Writes offer.md and proposes a ## Value edit.

/cold offer
Leads

cold-leads

Imports your CSV or searches the FoxReach Lead Finder database, scores every lead against icp.md, verifies emails, imports.

/cold leadsNeeds a FoxReach key
Leads

cold-research

Per-lead research bundles for personalization tests: one cited hook per lead, run in parallel batches.

/cold research
Write

cold-draft

Openers, bumps and breakups that obey cold.md. Writes a control and a variant while an experiment runs.

/cold draft
Send

cold-send

Pre-flight checks, then the campaign: steps, mailboxes, leads, provider matching. Asks before it starts.

/cold sendNeeds a FoxReach key
Test

cold-experiment

Picks one variable from the ladder (subject, opener, CTA, cadence, tone) and writes the protocol before anything sends.

/cold experiment
Test

cold-learn

Reads reply categories per variant, runs a two-proportion z-test, and proposes a cold.md diff for your approval.

/cold learnNeeds a FoxReach key
Replies

cold-triage

Categorizes unread replies and drafts answers from ## Objections. Nothing is sent until you approve it.

/cold triageNeeds a FoxReach key
Report

cold-status

One screen: what the tests have taught you, what is running, pending diffs and the next step.

/cold status
Report

cold-report

Daily or weekly digest of sends, replies, mailbox health and test outcomes. Also runs /cold audit on a domain.

/cold reportNeeds a FoxReach key

The spec is vendor-neutral. The sending skills call the FoxReach CLI today; a version for another platform is a welcome PR.

Read the spec
The sending layer

The skills decide.
FoxReach sends.

The sending skills call the public FoxReach CLI and API. These are the pieces they use and the command behind each.

Lead Finder

icp.md becomes people-database filters. Counting is free, and you approve the reveal cost before any work email is revealed.

foxreach lead-finder count

Email verification

Every CSV lead is checked before import. Bad addresses never reach a campaign; only definite good or bad verdicts use a credit.

foxreach verification verify-bulk

Provider matching

How your mailboxes and leads split across Google and Microsoft, so the first email can go out from the same provider.

foxreach campaigns esp-mix

Mailbox health

Health is the share of warmup mail that lands in the inbox. Mailboxes under your floor stay out of the campaign.

foxreach accounts health

A/B variants

cold-send writes the control as the step, adds variants A and B to it, and records their IDs for cold-learn.

foxreach sequences variants add

Reply categories

Interested, not interested and out of office per variant, step and day. The z-test in cold-learn runs on these.

foxreach inbox categorize-stats
Why a suite

Other cold email skills draft. That is one step.

Drafting is where the work starts. The loop is what turns sends into a better policy.

What you getOtherscold.md
Drafts emails when you ask
Builds the ICP from your site
Finds and verifies leads
Sends with pre-flight checks
Sorts replies against your objections
A/B tests that edit the policy file
Policy committed to your repo, portable across tools
Install

Live in three steps.

Works in Claude Code on macOS, Linux and Windows. Re-run the installer any time to update.

01

Install the plugin

In a terminal, or inside Claude Code:

terminal
curl -fsSL https://cold.md/install | bash
claude code
/plugin marketplace add foxreach/cold-md
/plugin install cold-md@cold-md
02

Connect FoxReach

Create a key under Settings > Integrations > API Keys.

terminal
pip install foxreach-cli
export FOXREACH_API_KEY=otr_...
03

Set up your repo

Nine questions, then .cold/config.json is written.

claude code
/cold init

No plugin, just the skills in ~/.claude:

curl -fsSL https://cold.md/install | bash -s -- --skills-only
FAQ

Questions, answered.

Anything else: open an issue on GitHub.

What is cold.md?

Two things. An open spec (CC-BY-4.0) for describing your outbound as one markdown file with eight sections, and a Claude Code plugin (MIT) with eleven skills and a /cold command that read that file and run the outreach loop.

Does it send anything without asking?

No. Starting a campaign, revealing Lead Finder emails and sending a reply all wait for your yes. Edits to cold.md arrive as a patch you apply or reject; only after three approved edits in a row can it apply them on its own, and one rejection turns that off.

How does it decide a test has a winner?

cold-learn compares interested-reply rates between the control and the variant with a two-proportion z-test. A winner needs the minimum sample per variant (100 by default), the minimum days (7), a p-value under 0.05 and a confidence interval that excludes zero. Anything less is marked inconclusive and cold.md is left alone.

Do I need FoxReach?

Not for the spec, or for the skills that only read and write files (ICP, offer, research, drafting, status). Finding leads, sending, triage, learning from results and reports call the FoxReach CLI and API.

What does it cost?

The plugin and the spec are free and open source. Sending needs a FoxReach account; the free plan is enough to try the loop, and Lead Finder needs a paid plan with reveal credits.

Can I use cold.md with another sending tool?

The file is vendor-neutral, so any agent or tool can read it. The sending skills call the FoxReach CLI today; a version for another platform would be a new set of skills, and a pull request is welcome.

How is it different from the FoxReach Claude Code plugin?

The FoxReach plugin lets you ask Claude about anything in your workspace. cold.md is opinionated: one command per step of the loop, a policy file in your repo, and tests that propose edits to it. You can install both.

Your next campaign is
one file away.

Install the plugin, run /cold init, and write cold.md once.