Cold Outbound Optimizer
ericosiu/ai-marketing-skills
Design, analyze, and optimize cold outbound email campaigns for Instantly.
Agent skill
by growthenginenowoslawski in growthenginenowoslawski/coldoutboundskills
Pulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/positive-reply-scoring .claude/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .claude/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/positive-reply-scoring .agents/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .agents/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/positive-reply-scoring .cursor/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .cursor/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/growthenginenowoslawski/coldoutboundskills.git --path skills/positive-reply-scoring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/positive-reply-scoring .gemini/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .gemini/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/positive-reply-scoring .github/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .github/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills positive-reply-scoring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/positive-reply-scoring .opencode/skills/positive-reply-scoring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "positive-reply-scoring" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/positive-reply-scoring into .opencode/skills/positive-reply-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "positive-reply-scoring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
positive-reply-scoringPulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email.
Positive Reply Scoring is an agent skill from growthenginenowoslawski/coldoutboundskills. Pulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email. Use when the user wants to know if a campaign is actually working (not just getting replies, but getting the RIGHT replies). Triggers on "score my replies", "how's campaign X doing", "positive reply rate", "is this campaign working".
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/aggregate-scores.ts` and `scripts/fetch-campaign-replies.ts`).
It sits in Sales & Support, covering Cold outreach and Product metrics. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SMARTLEAD_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Positive Reply Scoring loads about 2k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 702 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 702 words, ~1,957 tokens.
.claude/skills/positive-reply-scoring/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Reply rate tells you if people are paying attention. Positive reply rate tells you if they want what you're selling. This skill computes the second.
A campaign can get 5% reply rate and still be a disaster. If 90% of those replies are "unsubscribe" and "not a fit," you're burning your domains for nothing.
The metric that matters is:
positive_reply_rate = positive_replies / total_sentCompared side-by-side:
Every reply is classified into exactly one bucket:
| Label | Meaning | Count as "positive"? |
|---|---|---|
positive_interested | "Yes, tell me more" or booked a meeting | ✅ |
positive_soft | "Send more info" / "reach out in Q3" / info request | ✅ |
positive_referral | "Not me, but talk to X" | ✅ (referral is high-value) |
neutral_question | Clarifying question, no commitment yet | ❌ (optional — some score as half) |
negative_notnow | "Not right now, maybe later" | ❌ |
negative_notfit | "Not a fit" / "we don't need this" | ❌ |
negative_hostile | Angry reply, complaint, report | ❌ (and track separately as risk signal) |
unsubscribe | Explicit opt-out | ❌ |
ooo | Out-of-office auto-reply | ❌ (exclude from denominators) |
bounce | Technical bounce | ❌ (exclude from denominators) |
other | Can't tell | ❌ |
Positive reply rate = (positive_interested + positive_soft + positive_referral) / total_sent
SMARTLEAD_API_KEY)Run the fetch script:
npx tsx scripts/fetch-campaign-replies.ts --campaign-id=12345 --out=/tmp/replies.jsonThis walks /campaigns/{id}/leads paginated, identifies leads with replies (has_reply = true), then fetches /campaigns/{id}/leads/{lead_id}/message-history for each, and writes them to a JSON file with one object per reply.
Output schema per reply:
{
"lead_id": "...",
"email": "...",
"lead_first_name": "...",
"company": "...",
"reply_time": "ISO timestamp",
"reply_subject": "...",
"reply_body": "... full text ...",
"sequence_step": 1
}Once the JSON is written, Claude (the one running this skill) reads the file and classifies each reply. For speed, fan out in batches of 20-30 via the Task tool (see personalization-subagent-pattern skill for fan-out mechanics).
Classification prompt (per batch):
Classify each reply as one of:
- positive_interested, positive_soft, positive_referral
- neutral_question
- negative_notnow, negative_notfit, negative_hostile
- unsubscribe, ooo, bounce, other
For each reply, output: { lead_id, label, confidence: 0.0-1.0, one_line_reason }
Rules:
- OOO auto-replies ("I'm out of office") → ooo
- Bounces (delivery failure messages) → bounce
- "Take me off your list", "unsubscribe", "STOP" → unsubscribe
- "Not interested", "not a fit" → negative_notfit
- "Not right now, circle back in Q3" → negative_notnow
- "Try [other person]" → positive_referral
- "Send more info" or "Tell me more" → positive_soft
- "Yes, let's book a call", "what times work" → positive_interested
- Insults, reports, legal threats → negative_hostile
If confidence < 0.7, label as `other`.Run the aggregator:
npx tsx scripts/aggregate-scores.ts --replies=/tmp/classified-replies.json --campaign-id=12345Output (to stdout + optional --out):
Campaign 12345 — Positive Reply Scoring
Total sent: 5,284
Total replies: 212 (4.01%)
ooo/bounce (excluded): 34
Net replies: 178
Breakdown:
positive_interested: 22
positive_soft: 31
positive_referral: 8
neutral_question: 14
negative_notnow: 28
negative_notfit: 52
negative_hostile: 3
unsubscribe: 20
other: 0
Positive reply rate: 1.15% (61 / 5,284)
Positive % of replies: 34.3% (61 / 178)
Negative hostile risk: 0.06% (3 / 5,284)
Unsub rate: 0.38% (20 / 5,284)
Benchmarks (B2B cold email):
Good positive reply rate: ≥1%
Great: ≥2%
Hostile >0.3% or unsub >2% → deliverability risk, pause campaignWrite aggregate results to:
~/cold-email-ai-skills/profiles/<business-slug>/scores/<campaign-id>-<YYYY-MM-DD>.jsonThis builds a history so you can trend positive reply rate over campaigns.
At the end, surface:
positive_interested leads and their reply bodies. The user should reply to these within 30 seconds of seeing this report.positive_referral labels. Add the referred contacts to a new outreach list.negative_hostile replies. Read them manually; consider pausing the inbox if someone is genuinely angry.Respond to every positive_interested reply within 30 seconds of seeing it. Then /experiment-design to plan the next iteration based on what worked.
If positive reply rate is <1% after 200+ sends: the 1% rule failed. Run /email-deliverability-audit (are you reaching the inbox?) (check for vague CTAs, generic first lines, em dashes).
Or wait: this skill is the Wednesday task in /cold-email-weekly-rhythm. Run it weekly going forward.
/experiment-design — uses positive reply rate as the success metric/email-deliverability-audit — if hostile + unsub are elevated, run this next/cold-email-starter-kit → 10-reply-handling.md for what to do with the positive replies once flaggedscripts/fetch-campaign-replies.ts — pulls replies via Smartlead APIscripts/aggregate-scores.ts — computes rates from classified JSON© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in skills/positive-reply-scoring of growthenginenowoslawski/coldoutboundskills.
Open the folder on GitHubat commit 25c5d85
Positive Reply Scoring next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Positive Reply Scoring this skillgrowthenginenowoslawski/coldoutboundskills | 753 | — | ~2k | Automated safety check: Pass | MIT | |
| Cold Outbound Optimizerericosiu/ai-marketing-skills | 3.6k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Prospectingcoreyhaines31/marketingskills | 54k | — | ~5k | Automated safety check: Pass | MIT | |
| Sales OsromangojiberryAI/gojiberryai-sales-os | 139 | — | ~2k | Automated safety check: Pass | MIT | |
| ProspectingCesarjoquin/Marketing-Skills | 202 | 1 repos | ~3.8k | Automated safety check: Pass | MIT | |
| Cold Outreach Personalizeraiskilloftheweek/claude-ai-skill-of-the-week | 149 | — | ~2.6k | Automated safety check: Pass | None |
ericosiu/ai-marketing-skills
Design, analyze, and optimize cold outbound email campaigns for Instantly.
coreyhaines31/marketingskills
When the user wants to find, qualify, and build a list of prospects to reach out to, across B2B SaaS, general B2B, or local small businesses.
romangojiberryAI/gojiberryai-sales-os
A complete outbound sales department in one skill. An agent skill from romangojiberryAI/gojiberryai-sales-os.
Cesarjoquin/Marketing-Skills
When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses.
aiskilloftheweek/claude-ai-skill-of-the-week
Generates hyper-personalized cold outreach messages (email, LinkedIn DM, connection request) from raw prospect research.
gmapsscraper/google-maps-agent-skills
Extract verified business email addresses from Google Maps listings.
growthenginenowoslawski/coldoutboundskills
Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
META skill — build the largest possible qualified lead list for any request, end to end.
growthenginenowoslawski/coldoutboundskills
Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.
growthenginenowoslawski/coldoutboundskills
Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.
Pulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email. Positive Reply Scoring is an agent skill from growthenginenowoslawski/coldoutboundskills. Pulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email.
Positive Reply Scoring fits situations like: the user wants to know if a campaign is actually working (not just getting replies; but getting the RIGHT replies); score my replies; hows campaign X doing.
Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a claude-code`. Or copy the skill folder (skills/positive-reply-scoring in growthenginenowoslawski/coldoutboundskills) into .claude/skills/positive-reply-scoring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a codex`. Or copy the skill folder (skills/positive-reply-scoring in growthenginenowoslawski/coldoutboundskills) into .agents/skills/positive-reply-scoring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill positive-reply-scoring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/positive-reply-scoring, .gemini/skills/positive-reply-scoring, .github/skills/positive-reply-scoring and .opencode/skills/positive-reply-scoring in your project.
Going by SKILL.md and its folder, Positive Reply Scoring needs TypeScript for the scripts in its folder, the command-line tools its instructions call (npx) and credentials named SMARTLEAD_API_KEY. Our summary lists: Node.js; A credential in SMARTLEAD_API_KEY.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Positive Reply Scoring is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Positive Reply Scoring: Cold Outbound Optimizer (ericosiu/ai-marketing-skills, 3.6k stars), Prospecting (coreyhaines31/marketingskills, 54k stars), Sales Os (romangojiberryAI/gojiberryai-sales-os, 139 stars) and Prospecting (Cesarjoquin/Marketing-Skills, 202 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.
Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.