Systems Lab

Agent skill

fivos-copywriter

Use this skill to write email and LinkedIn sequences for a scored outbound list, personalised per contact and tier-aware.

dormantSelf-containedInstructions only1,060 words

Filed under Content and SEO.

From fivosaresti/workflows-outbound-skills · 10 skills · 1 · pushed 2026-04-21

What it does when it runs

Use this skill to write email and LinkedIn sequences for a scored outbound list, personalised per contact and tier-aware. Trigger when the user says 'write the copy', 'generate sequences', 'write emails for these leads', or after fivos-lead-scoring.

Read from the skill and the 0 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
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about fivos-copywriter

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/fivosaresti/workflows-outbound-skills.git /tmp/workflows-outbound-skills
git -C /tmp/workflows-outbound-skills sparse-checkout set "copywriter"
mkdir -p ~/.claude/skills/fivos-copywriter
cp -R "/tmp/workflows-outbound-skills/copywriter/." ~/.claude/skills/fivos-copywriter/

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.

Reproduced in full from fivosaresti/workflows-outbound-skills/blob/9076ebf601c5fd71b9898101205cdb4efa6e01e9/copywriter/SKILL.md, which is licensed MIT (repository). 1,060 words, 21 headings.

Fivos Copywriter

Writes email + LinkedIn sequences, personalized per contact, tier-aware. Runs after scoring, before campaign launch.

Hard rules

  • Tier drives personalisation depth. No exceptions.
    • A - deep personalisation using at least 2 hooks per email (signal + research finding).
    • B - signal-triggered personalisation (1 strong hook from the signal column).
    • C - pattern-only, 1 light insert field (first name + company).
  • Sequence shape is locked by the strategist (Shape A / B / C). Do not invent new shapes.
  • No em dashes. Use - instead. Applies to subject lines, body, and LI messages. (CLAUDE.md rule.)
  • No AI tells. Blocked patterns: delve, dive in, game-changer, leverage as verb, in today's fast-paced world, I hope this email finds you well, Hope you're doing well, I came across your profile, reaching out because. See full blocklist below.
  • Length caps are hard. Exceed them and the skill rewrites, not extends.

Inputs

  • Scored CSV from fivos-lead-scoring (required).
  • Campaign plan from fivos-campaign-strategist (required) - gives sequence shape per tier.
  • Client brand voice doc (required for Tier A, optional for B/C).
  • Product one-liner + primary value props (from ICP doc) - required.
  • Reference emails (optional) - past campaigns that performed well for this client.

Outputs

  1. CSV with per-row copy columns. For a 3-step email sequence: email_1_subject, email_1_body, email_2_subject, email_2_body, email_3_subject, email_3_body. For LI: li_connection_note, li_followup_1, li_followup_2.
  2. Personalisation-hook provenance: hook_1_source (which column it came from), hook_2_source for Tier A.
  3. QA summary - rows that hit length caps, rows where hooks weren't available, AI-tell hits that required rewrites.

Personalisation hooks (priority order)

Use these columns from the enriched CSV in priority order. Tier A needs 2 hooks per email; Tier B needs 1.

  1. Funding signal - last_round_stage, last_round_date, last_round_amount_usd. Best for "budget unlock" framing.
  2. Hiring signal - open_roles_target_titles. Best for "champion-in-seat" framing.
  3. Tech-stack adjacency - builtwith_tech_json. Best for "we integrate with X" framing.
  4. Recent product launch - blog_last_post_date + title. Best for "saw your launch" framing.
  5. LinkedIn content engagement - li_post_engagement_json (if pre-scraped). Best for "noticed your post on X" framing.
  6. Mutual connection - client CRM overlap. Best for warm intro asks.
  7. Competitor churn - client-specific signal column. Best for "replacing X" framing.

If no strong hook is available for a Tier A row, flag it for manual review rather than downgrade silently.

Length caps (hard)

AssetCapTarget
Email subject60 chars30-50
Email body (touch 1)700 chars400-600
Email body (touch 2)600 chars300-500
Email body (touch 3 - breakup)300 chars150-250
LI connection note280 chars180-240 (300-char LinkedIn max)
LI follow-up message1,000 chars500-800

Tier-specific templates

Tier A (deep personalisation - Shape B or C)

Email 1 body structure:

<opening hook (specific, from signal)>

<bridge: why this matters for <recipient role>>

<value prop in one sentence, product-specific>

<single ask: "worth a 15-min look?" or "open to exploring?">

<signature line>

Opening hook example: "Saw the Series B closed last week - congrats. Curious how you're thinking about scaling the data team now that hiring for a Head of Analytics is open."

Tier B (signal-triggered - Shape A)

Shorter, 1 hook, crisper ask.

<signal-referenced opener>
<one-sentence value prop>
<specific ask>

Example opener: "Saw you're hiring two Analytics Engineers - usually a sign the warehouse layer is hitting a wall."

Tier C (pattern-only - Shape A at volume)

Template with 2 insert fields ({{first_name}}, {{company}}). No research per row.

Hi {{first_name}},

<one-sentence pattern opener referencing company segment, not company specifically>
<one-sentence value prop>
<specific ask>

<signature>

LinkedIn specifics

  • Connection notes: no pitch. Reference a mutual topic or a signal if available. If nothing, send without a note (higher acceptance rate).
  • First follow-up (after connection accepted): short, conversational, no link. Open a topic.
  • Second follow-up: allow one soft ask. Link optional.

AI-tell blocklist

These phrases trigger automatic rewrite. Not exhaustive - the skill also runs a style check:

delve, dive in, game-changer, unlock potential, leverage (as verb),
revolutionize, in today's fast-paced world, I hope this email finds you well,
Hope you're doing well, I came across your profile, reaching out because,
I wanted to reach out, just wanted to check in, circling back, touching base,
streamline, seamless, robust (as default adjective), cutting-edge,
it's worth noting, as an AI, navigate the complexities,
"Are you the right person" (do not use as opener)

Also blocked: ellipses for pacing (...), excessive exclamation marks, and any sentence over 25 words.

Workflow

Step 1 - Input check

Confirm scored CSV has tier column, strategist plan has sequence shape per tier, brand voice doc is present for Tier A. If any are missing, stop and ask.

Step 2 - Hook availability audit

For each Tier A and B row, check that at least one hook column (from the priority list) is populated. Report:

Hook audit:
  Tier A: X/Y rows have >=2 hooks, Z/Y have <2 hooks (flagged for review)
  Tier B: X/Y rows have >=1 hook, Z/Y have 0 hooks (downgrade to C or drop)

Step 3 - Pilot run (3 rows per tier)

Generate copy for 3 rows per tier. Engineer reviews for voice, length, hook quality.

Step 4 - Gate 1

Engineer signs off on voice. If tweaks are needed, revise system prompt / brand voice and re-pilot.

Step 5 - Full generation

Run the full CSV. Parallelise across rows. Apply the AI-tell blocklist + length check as post-filters, re-generating any rows that fail.

Step 6 - QA report

Copy QA report - <client> / <campaign>

Rows generated: N
Passed first gen: M (M%)
Rewritten (AI-tell / length): R (R%)
Manual review flagged: F (F%)

Hook coverage:
  Tier A mean hooks/row: 2.X
  Tier B mean hooks/row: 1.X

Step 7 - Handoff

Invoke fivos-campaign-launcher with the copy CSV and the campaign plan. Launcher pushes to the right sequencer.

References

  • ~/.agents/skills/gtm-meta-skill/writing-outreach.md - full writing guide, rubrics, examples.
  • ~/.agents/skills/gtm-meta-skill/prompts.json - prompt templates by sequence step.
  • CLAUDE.md: no em dashes rule.

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.

Need help setting it up?

This page tells you what fivos-copywriter 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.