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.
- Skills
- 11
- Command
- /cold
- Price
- Free
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.
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.
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.
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 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.
## Bannedis a hard filter. A banned phrase is never written.## Voicerules are followed word for word, not as inspiration.## Proofis the only source of facts. No invented numbers.## Audiencedisqualifiers are enforced before anything sends.
---coldMdVersion: "0"owner: "Dana Reyes <dana@northwind.example>"--- # Northwind - cold.md ## IdentityI'm Dana, founder of Northwind. We turn product analyticsinto 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 ## ValueNorthwind 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---coldMdVersion: "0"source: /cold icp https://northwind.example--- # ICP - Northwind ## Company signals- B2B SaaS, 20-200 employees- Raised a Series A or B in the last 18 months- Self-serve signup on the website ## Title signals- Head of Growth, VP Product, Founder ## Pain signals (observable)- Hiring a growth or data analyst- Public changelog with weekly releases ## Disqualifiers- Agencies, consultancies- Fewer than 10 employees ## Qualification checklist- [ ] Company signal matches- [ ] Title matches- [ ] At least one pain signal| Arm | Sent | Interested | Rate |
|---|---|---|---|
| A statement | 412 | 9 | 2.2% |
| B question | 405 | 21 | 5.2% |
### 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 factExample numbers
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.
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.
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 icpcold-offer
Sharpens the value prop with competitor pricing and market research. Writes offer.md and proposes a ## Value edit.
/cold offercold-leads
Imports your CSV or searches the FoxReach Lead Finder database, scores every lead against icp.md, verifies emails, imports.
/cold leadsNeeds a FoxReach keycold-research
Per-lead research bundles for personalization tests: one cited hook per lead, run in parallel batches.
/cold researchcold-draft
Openers, bumps and breakups that obey cold.md. Writes a control and a variant while an experiment runs.
/cold draftcold-send
Pre-flight checks, then the campaign: steps, mailboxes, leads, provider matching. Asks before it starts.
/cold sendNeeds a FoxReach keycold-experiment
Picks one variable from the ladder (subject, opener, CTA, cadence, tone) and writes the protocol before anything sends.
/cold experimentcold-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 keycold-triage
Categorizes unread replies and drafts answers from ## Objections. Nothing is sent until you approve it.
/cold triageNeeds a FoxReach keycold-status
One screen: what the tests have taught you, what is running, pending diffs and the next step.
/cold statuscold-report
Daily or weekly digest of sends, replies, mailbox health and test outcomes. Also runs /cold audit on a domain.
/cold reportNeeds a FoxReach keyThe spec is vendor-neutral. The sending skills call the FoxReach CLI today; a version for another platform is a welcome PR.
Read the specThe 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 countEmail 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-bulkProvider 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-mixMailbox health
Health is the share of warmup mail that lands in the inbox. Mailboxes under your floor stay out of the campaign.
foxreach accounts healthA/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 addReply 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-statsOther 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 get | OthersA cold email skill | cold.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 |
Live in three steps.
Works in Claude Code on macOS, Linux and Windows. Re-run the installer any time to update.
Install the plugin
In a terminal, or inside Claude Code:
curl -fsSL https://cold.md/install | bash/plugin marketplace add foxreach/cold-md
/plugin install cold-md@cold-mdConnect FoxReach
Create a key under Settings > Integrations > API Keys.
pip install foxreach-cli
export FOXREACH_API_KEY=otr_...Set up your repo
Nine questions, then .cold/config.json is written.
/cold initNo plugin, just the skills in ~/.claude:
curl -fsSL https://cold.md/install | bash -s -- --skills-onlyWhat 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.