auto-research-public
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Reusable approval-loop pattern for fanning out lead personalization across parallel Claude Code Task sub-agents. Shows the user 1 sample personalization, collects feedback, runs 10 more, approves, runs 10 more — stops when 2 consecutive rounds have zero edits, then scales to the
$ npx -y skills add growthenginenowoslawski/coldoutboundskills --skill personalization-subagent-pattern --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/personalization-subagent-patternContext preview
The summary Claude sees to decide when to auto-load this skill.
Reusable approval-loop pattern for fanning out lead personalization across parallel Claude Code Task sub-agents. Shows the user 1 sample personalization, collects feedback, runs 10 more, approves, runs 10 more — stops when 2 consecutive rounds have zero edits, then scales to the
name: personalization-subagent-pattern description: Reusable approval-loop pattern for fanning out lead personalization across parallel Claude Code Task sub-agents. Shows the user 1 sample personalization, collects feedback, runs 10 more, approves, runs 10 more — stops when 2 consecutive rounds have zero edits, then scales to the full list. ALWAYS uses Claude Code Task tool sub-agents — never an external Anthropic/OpenAI API key. Use when any skill needs per-lead custom variables (situation lines, value lines, CTAs).
Cold email personalization at scale requires per-lead generation. Claude Code's Task tool lets you fan out to many sub-agents in parallel, each personalizing a slice of the lead list. This skill defines the reusable approval-loop pattern.
This skill runs entirely inside Claude Code via the Task tool. No Anthropic SDK calls, no OpenAI calls. This is intentional:
At very large scale (1,000+ leads), the tuned prompt can optionally be shipped to the Anthropic API for throughput. But TUNING and normal campaign runs (under 500 leads) always go through the Task tool.
Don't personalize 500 leads and then discover the prompt is wrong. Loop first, then scale.
1. Pick one lead from the batch with a rich `company_description`. 2. Show the user: "Here's the company description I'm working with. Based on this, what would you say to personalize?" 3. Display what YOU (Claude) would generate for `situation_line`, `value_line`, `cta_soft`. 4. Ask: "Does this feel right? Edit it, and I'll re-tune."
1. Spawn one Task sub-agent with the current prompt + 10 leads. 2. Display all 10 results in a table:
Lead | situation_line | value_line | cta_soft jane@acme.com | You're building the only APM for Ruby. | Our Ruby customers find ... | Worth 10 min? john@otherco.com | ... | ... | ...
3. Ask: "Any edits? Point at the row number and say what's wrong." 4. If the user has edits, update the prompt (or add rules like "never use the word X") and re-run a new batch. 5. If the user has **zero edits for 2 consecutive rounds**, the prompt is locked. Scale to the full list.
Once locked:
Before fanning out, your lead batch should be a JSON array where each lead has:
{
"lead_id": "<stable identifier>",
"first_name": "<str>",
"last_name": "<str>",
"email": "<str>",
"company_name": "<str>",
"company_domain": "<str>",
"company_description": "<1-3 sentences about what the company does>",
"title": "<str>",
"linkedin_url": "<optional>",
"enrichment_data": { ... any extra signals ... }
}The richer the `company_description`, the better the personalization. If you only have company names, the output will be generic.
Decide up front what fields each sub-agent must return. Example:
{
"lead_id": "<same id>",
"situation_line": "<1 sentence — what you noticed about their company>",
"value_line": "<1 sentence — connecting their situation to your offer>",
"cta_soft": "<1 sentence — soft ask, e.g. 'worth a 15 min chat?'>"
}Fewer fields = less that can go wrong. Default to 3 fields maximum per variant.
If testing 3 copy variants, run 3 parallel sub-agents per company (or per batch). Each gets a different *angle* prompt:
This gives you 3x the data from one list — you can A/B/C test which angle resonates.
For 100 leads:
For 1000 leads:
Every personalization sub-agent gets a prompt of this shape:
You are personalizin
Open-source Claude Code skills for cold email infrastructure, lead sourcing, copywriting, and operations. Built by GrowthEngineX from patterns across 1,000+ real B2B campaigns. 31 skills that work together.
Repo: growthenginenowoslawski/coldoutboundskills
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Use the Blitz API to find decision-makers at specific companies when you already have a list…
Creates cold email copy through a stepwise confirmation process. Use when writing email…
Generates 15-25+ cold outbound campaign ideas with targeting strategies, AI personalization…
Single "start here" orchestrator for new cold email operators. Asks infrastructure-status…
Complete beginner-friendly cold email toolkit. Walks from zero to launched campaign — domain…