Skip to content
SlashClone

Sequence writer

@gtmengineer/sequence-writer

Write multi-step outbound sequences (email, LinkedIn, call) built on a real reason to reach out, with personalization slots instead of fake personalization. A built-in linter blocks spam phrases, fake Re: subjects, invented familiarity, unsourced stats, broken slots, too many links, and rushed cadence before anything is loaded into a sending tool.

SkillContentv1.0.0 (latest)Tested
Activity
New: be the first to try it

Real output from this kit

How this works

  1. It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
  2. While it works, it reads and changes files in the places it lists, nowhere else.
  3. It runs these commands on your computer: node scripts/lint-sequence.mjs.
  4. Nothing runs until you choose to use it, and you can remove it any time.

SKILL.md

Sequence writer

Good outbound is short, specific, and honest about why you are writing. This kit writes sequences around a real reason to reach out, keeps personalization in explicit slots, and runs a linter so nothing spammy or misleading gets loaded into a sending tool.

When to use

  • New sequence for a persona, segment, or signal (often from signal-based-outbound).
  • Rewriting an old sequence that stopped getting replies.
  • Checking a draft someone else wrote.
  • Not for sending. The user loads the final copy into their own tool.

Inputs

Ask for these if missing (one round of questions, then draft):

  1. Who: persona (role, seniority, company size, industry).
  2. Why now: the signal or trigger (a hire, a launch, a funding round, a tech change, product usage). No trigger means a weaker sequence; say so.
  3. What we offer in one sentence, and proof the user can stand behind (a customer story they may cite, a public stat with a source).
  4. Ask: what reply means success (a call, a yes or no, a referral to the right person).
  5. Channels and length: default 4 to 6 steps over 2 to 3 weeks: email, LinkedIn, email in thread, new-thread email with an easy out.

Steps

  1. Draft data/sequence.json (shape: the kit's examples/sequence.json). Rules for the copy:

    • Under 120 words per email, subject of 6 words or fewer, lowercase is fine. One idea and one question per email.
    • Open with the trigger, not with "I" or the company name. Every new-thread email uses at least one research slot ({{trigger}}, {{observation}}), not just {{first_name}}.
    • Each follow-up adds something new (a different angle, a resource, a question). Never "just bumping".
    • Every number or customer claim needs an entry in that step's sources. If the user cannot source it, cut it.
    • The last step gives an easy way out ("not your area? tell me and I will stop").
  2. Lint:

    node scripts/lint-sequence.mjs data/sequence.json --out out --name lint
  3. Fix every error and every warning you can. Rerun until errors are 0. Explain any warning you chose to keep.
  4. Preview with a real-looking contact (research results, not invented facts):

    node scripts/lint-sequence.mjs data/sequence.json --preview data/contact.json --out out --name lint

    out/lint-preview.md shows the filled copy; any [MISSING slot] means that contact is not ready to send.

  5. Show the final sequence as a table (day, channel, subject, first line) plus the full copy, and the lint result.

Output to the user

**RevOps leaders opening a second sales team**: 4 steps over 12 days. Lint: 0 errors, 0 warnings.

| Day | Channel | Subject | Opens with |
| ---: | --- | --- | --- |
| 1 | Email | {{company}}'s new sales team | Saw {{trigger}}. |
| 4 | LinkedIn | | Connection note, no pitch |
| 7 | Email (thread) | | Routing is the first thing to break |
| 12 | Email | routing rules for two teams | Checklist offer, easy out |

Slots each contact needs: first_name, company, trigger, observation, peer_company, sender_name.

Guardrails

  • Never invent facts about a prospect or a customer. Slots get filled from research the user has, or the sentence goes.
  • No fake reply or forward subjects, no fake familiarity, no false urgency, no deceptive claims. The linter blocks the common ones; apply the same spirit to anything it misses.
  • Remind the user that outbound rules (consent, opt-out, sender identification) depend on where recipients are. The user is responsible for compliance; suggest they check before sending.
  • Do not load, schedule, or send anything.

README.md

Sequence writer

Writes outbound sequences built on a real reason to reach out, with personalization slots you fill from research, and lints them before they go anywhere near a sending tool. Spam phrases, fake "Re:" subjects, "as promised" lines, unsourced stats, broken slots, too many links, and rushed follow-ups all get caught.

Who it is for

SDRs, founders doing their own outbound, and GTM engineers building sequences in any sales engagement tool, who want replies without burning their domain or their reputation.

Example

Input: examples/draft-needs-work.json, a two-step draft.

Output (out/lint.md), first step:

ERROR (slots): placeholder in square or angle brackets. Use {{slot}}.
ERROR (spam): spam trigger phrase "guarantee"
ERROR (fake-familiarity): subject starts with "Re:" but this is not a real reply
ERROR (fake-familiarity): "as promised" implies a conversation that did not happen
WARNING (unsupported-claim): "3x" needs a source in this step's sources list, or remove it
WARNING (links): link in the first email hurts deliverability.

The rewritten examples/sequence.json lints clean, and --preview examples/contact.json shows the filled copy with any missing values flagged.

What it can access

  • Runs node scripts/lint-sequence.mjs (Node built-ins only, no network).
  • Reads data/ (plus the kit's own examples/), writes data/ and out/. Sends nothing.

Setup

None.

Files

  • README.md
  • SKILL.md
  • examples/contact.json
  • examples/draft-needs-work.json
  • examples/sequence.json
  • kit.json
  • scripts/lint-sequence.mjs

Did it work?

0worked for them0did not work

Sign in to say whether it worked for you.

Nobody has said yet. Tried it? Tell the next person.