Agent skill
copy-generator
Fill the five verbatim cold email templates (Email 1 A/B/C, Email 2 A/B) from a config and the GTM strategy, add the signature and opt-out line, and output a PlusVibe-ready sequence.json with merge vars.
Filed under Outbound email.
From sccsadmin11/outbound-gtm-sc · 11 skill entries · 0 · pushed 2026-10-22
What it does when it runs
Fill the five verbatim cold email templates (Email 1 A/B/C, Email 2 A/B) from a config and the GTM strategy, add the signature and opt-out line, and output a PlusVibe-ready sequence.json with merge vars.
Automated analysis of the skill and the 6 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- www.linkedin.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Ask about copy-generator
Opens your assistant with this page's recorded context. Check the linked sources before relying on it.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/sccsadmin11/outbound-gtm-sc.git /tmp/outbound-gtm-sc git -C /tmp/outbound-gtm-sc sparse-checkout set "07-copy-generator" mkdir -p ~/.claude/skills/copy-generator cp -R "/tmp/outbound-gtm-sc/07-copy-generator/." ~/.claude/skills/copy-generator/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from sccsadmin11/outbound-gtm-sc/blob/fc996416957ff6232cc00c3b5c94d601b68e1d61/07-copy-generator/SKILL.md, which is licensed MIT (repository). 580 words, 9 headings.
07 Copy generator
Purpose
Turn the strategy from skill 02 into the 5-email sequence. The templates are fixed. The agent only writes the slot values, so copy quality comes from the strategy, not from rewriting the frame.
The templates (verbatim, in templates/email_templates.json)
Email 1A
First_name, {{the value prop in one line}}.
{{CTA}}
P.S. line
Email 1B
First_name, {{market insight we found}}.
{{How it ties into the offer}}
{{THe offer}}
{{CTA}}
Email 1C
First_name, {{i made a lead magnet for you to solve XYZ problem}}
{{CTA}}
Email 2A
First_name, the reason I reached out to you the other day is because we help companies like {{COMPANY}} solve X problem (tied to the offer this cold email thread is trying to sell).
We recently worked with {{someone similar to COMPANY}} and generated them ABC result.
{{insert offer}}
{{CTA}}.
Email 2B
Whos the best person to reach at {{COMPANY}} regarding X?
If i've reached the wrong person could you point me in the right direction?
Thank you
Do not fix the typos ({{THe offer}}, Whos, i've). They are part of the template.
What gets filled
| In the template | Becomes |
|---|---|
First_name | {{first_name}} (PlusVibe merge var) |
{{COMPANY}} | {{company_name}} (PlusVibe merge var) |
any other {{slot}} | your value from slots.<template>.<slot name> |
P.S. line (1A) | P.S. + plain.1A.ps_line |
X problem (tied to ...) (2A) | plain.2A.problem |
ABC result (2A) | plain.2A.result. Use a real result you can back up. Never invent one |
regarding X? (2B) | regarding + plain.2B.topic + ? |
Every email then gets, in this order:
<filled template>
<sender.name>
<sender.title>, <sender.company>
<sender.website>
<opt_out>
The default opt-out is If you don't want to hear from me again, just reply no thx!. Set sender.name to a literal name, or to {{sender_first_name}} so PlusVibe uses the first name of whichever inbox sends.
Slot values can use merge vars: {{first_name}}, {{company_name}}, or any column in verified_leads.csv (for example a per-lead {{market_insight}} column). Skill 09 uploads every column as a PlusVibe custom variable.
Inputs
copy_config.json(start fromexamples/copy_config.json).strategy.jsonfrom skill 02 (the source for the slot values).verified_leads.csvfrom skill 06 (used for the preview and the merge var check).
Outputs
sequence.json: 2 steps, with variations A/B/C and A/B. Each has a subject,body_text,body_htmland the merge vars it uses. Email 2 subjects are empty so the email goes out as a reply in the same thread.preview.md: the first N leads fully rendered.
Env vars
None. This skill writes local files only.
Steps (agent run instructions)
- Copy
examples/copy_config.jsontocopy_config.json. - Fill it from
strategy.json:- 1A value prop:
core_offer.one_liner, rewritten in the reader's words, one line. - 1B: a market insight per lead. Put it in a
market_insightcolumn if it differs by lead. - 1B
THe offer, 1C lead magnet, 2Ainsert offer: the 3front_end_offers. - 2A
someone similar to COMPANYandABC result: only fromproof_pointsthat have a source. - CTAs: short questions. Low commitment.
- 1A value prop:
- Generate:
Exit code 2 = a slot is missing. Exit code 1 = some lead is missing a merge var value.python 07-copy-generator/scripts/generate_copy.py --config copy_config.json --leads verified_leads.csv - Read
preview.mdout loud. Fix the config, not the templates.
Handoff
sequence.json -> 08-spam-check -> 09-plusvibe-campaign.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- copy-editing by coreyhaines31 · 57,918
- ad-copy-variant-generator by irinabuht12-oss · 6,620
- copy-editing by OpenClaudia · 724
- copy-editing by louisblythe · 195
- winning-copy-extraction by kenny589 · 71
- copy-frameworks by kenny589 · 71
- marketing-copy by mia-ppp · 71
- copy-anatomy by realjaymes · 68
Need help setting it up?
This page tells you what copy-generator does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.