Cold email that improves itself.
With cold.md and FoxReach
cold.md is an open Claude Code plugin. One markdown file in your repo defines your outbound, and eleven skills run it: find leads, draft, send through FoxReach, test, and propose edits to the file from what got replies.
What cold.md is
Most outreach tools keep your targeting, voice and offer inside their own settings, where nobody can diff it and nothing else can read it. cold.md puts it in one markdown file at the root of your repo, in eight sections, in this order:
## Identitywho's sending## Audiencewho receives it, and who never should## Valuethe offer, in one sentence## Voicedos and don'ts, obeyed word for word## Proofthe only facts the agent may cite## Sequenceopener, bump and breakup slots## Objectionsyour answers to the usual pushback## Bannedphrases that never appear
The rules are hard rules. A banned phrase is never written, voice rules are followed word for word, and only facts listed under Proof can be cited. The spec is open (CC-BY-4.0), and the plugin is MIT. FoxReach is the sending layer it calls.
Prerequisites
Claude Code
Installed and signed in. The plugin adds a /cold command and eleven skills.
A FoxReach account
With at least one connected mailbox that has been warming up. Free plan works; Lead Finder sourcing needs a paid plan.
The FoxReach CLI and an API key
pip install foxreach-cli, and a key from Settings > Integrations > API Keys exported as FOXREACH_API_KEY. Keys start with otr_.
Install
Inside a Claude Code session:
/plugin marketplace add foxreach/cold-md
/plugin install cold-md@cold-mdOr from a terminal, which does the same through the claude CLI:
curl -fsSL https://cold.md/install | bashThen connect FoxReach in the shell where Claude Code runs:
pip install foxreach-cli
export FOXREACH_API_KEY="otr_your_key"In your project, run /cold init. It asks nine short questions and writes .cold/config.json. The step-by-step guide covers every option.
The loop
One command per step. Each one reads and writes files you can review and commit.
/cold initWrites .cold/config.json, checks your FoxReach key and lists your connected mailboxes./cold icp https://your-site.comBuilds icp.md from your site and checks it with web research./cold leads --finder --count 200Searches Lead Finder (or imports your CSV), scores every lead against icp.md, and verifies emails./cold experimentPicks one thing to test and writes the protocol before anything sends./cold draftWrites the control and the variant, both checked against your cold.md./cold sendRuns pre-flight checks, creates the campaign, and asks before it starts./cold triageCategorizes replies and drafts answers. Nothing is sent without your yes./cold learnTests the variants against each other and proposes an edit to cold.md.
What runs on FoxReach
The sending skills call the public FoxReach CLI and API. These are the pieces they use.
- Lead Finder. cold-leads turns icp.md into Lead Finder filters, shows the free match count, and asks you to approve the reveal cost before any work email is revealed.
- Email verification. Every CSV lead is verified before import. Bad addresses never reach a campaign, and only definite good or bad verdicts use a credit.
- Provider matching. cold-send reads how your mailboxes and leads split across Google and Microsoft, and turns provider matching on when both sides span both.
- Mailbox health. Any mailbox whose warmup mail lands in the inbox less often than your floor is left out of the campaign before it starts.
- Reply categories. cold-learn reads interested, not-interested and out-of-office counts per A/B variant, the numbers its test runs on.
- Your inbox. cold-triage reads unread replies, sets each category, and drafts answers from the Objections section of your cold.md.
Tests that edit the file
/cold experiment picks one variable to test: subject line, opener, call to action, cadence or tone. You add the variant to the campaign step in FoxReach with Add A/B Test, using the copy the skill hands you (the API reads variants but does not create them yet). See A/B testing for the editor.
After the test window, /cold learn compares interested-reply rates with a two-proportion z-test. If one variant wins, it writes the change to your cold.md as a patch and shows you the numbers. You apply it or reject it. After three approved changes in a row, it can apply them on its own; one rejection turns that off. The full write-up explains the loop.
Troubleshooting
/cold does not show up after installing
Plugins load when a session starts. Restart Claude Code, then type /cold.
"foxreach: command not found"
The sending skills call the FoxReach CLI. Run pip install foxreach-cli in the environment Claude Code uses.
Authentication errors
Check that FOXREACH_API_KEY is exported in the shell where Claude Code runs, that it starts with otr_, and that it has not been revoked under Settings > Integrations > API Keys.
/cold send stops at the mailbox check
Every assigned mailbox is under your health floor, or none has enough warmup history yet. Let warmup run, or lower guards.minAccountHealth in .cold/config.json.
Frequently asked
questions.
The FoxReach plugin lets you ask Claude about any part of your workspace in plain language. cold.md is opinionated: one /cold command per step of the outreach loop, a policy file you commit to your repo, and A/B tests that propose edits to that file. You can install both.
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.
Not to start. Importing your own CSV, verification, sending, triage and reports work on every plan. Sourcing leads from Lead Finder needs a paid plan and reveal credits.
The spec is open and vendor-neutral, so the file itself works anywhere. The sending skills call the FoxReach CLI today; a version for another platform would be a new set of skills.
Yes. The plugin is MIT licensed and the spec is CC-BY-4.0, both at github.com/foxreach/cold-md.
Run cold email
from your repo.
Free plan, no credit card. Connect a mailbox, install the plugin, run /cold init.