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
  1. 1---
  2. 2name: sequence-writer
  3. 3description: Write a multi-step outbound sequence (cold email, LinkedIn, call talk track) for a persona and a buying signal, with personalization slots filled from research instead of fake flattery, then lint it for spam phrases, fake "Re:" subjects, invented familiarity ("as promised"), unsourced stats and hype, broken slots, link and length problems, and rushed cadence. Use when the user says "write an outbound sequence", "cold email cadence for VPs of Finance", "rewrite this sequence", "check my outreach for spammy stuff", or "turn this signal into emails". Works with any sales engagement tool.
  4. 4license: MIT
  5. 5---
  6. 6
  7. 7# Sequence writer
  8. 8
  9. 9Good 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.
  10. 11## When to use
  11. 13- New sequence for a persona, segment, or signal (often from `signal-based-outbound`).
  12. 14- Rewriting an old sequence that stopped getting replies.
  13. 15- Checking a draft someone else wrote.
  14. 16- Not for sending. The user loads the final copy into their own tool.
  15. 18## Inputs
  16. 20Ask for these if missing (one round of questions, then draft):
  17. 221. **Who**: persona (role, seniority, company size, industry).
  18. 232. **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.
  19. 243. **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).
  20. 254. **Ask**: what reply means success (a call, a yes or no, a referral to the right person).
  21. 265. **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.
  22. 28## Steps
  23. 301. Draft `data/sequence.json` (shape: the kit's `examples/sequence.json`). Rules for the copy:
  24. 31 - Under 120 words per email, subject of 6 words or fewer, lowercase is fine. One idea and one question per email.
  25. 32 - 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}}`.
  26. 33 - Each follow-up adds something new (a different angle, a resource, a question). Never "just bumping".
  27. 34 - Every number or customer claim needs an entry in that step's `sources`. If the user cannot source it, cut it.
  28. 35 - The last step gives an easy way out ("not your area? tell me and I will stop").
  29. 362. Lint:
  30. 38 ```bash
  31. 39 node scripts/lint-sequence.mjs data/sequence.json --out out --name lint
  32. 40 ```
  33. 423. Fix every **error** and every **warning** you can. Rerun until errors are 0. Explain any warning you chose to keep.
  34. 434. Preview with a real-looking contact (research results, not invented facts):
  35. 45 ```bash
  36. 46 node scripts/lint-sequence.mjs data/sequence.json --preview data/contact.json --out out --name lint
  37. 47 ```
  38. 49 `out/lint-preview.md` shows the filled copy; any `[MISSING slot]` means that contact is not ready to send.
  39. 505. Show the final sequence as a table (day, channel, subject, first line) plus the full copy, and the lint result.
  40. 52## Output to the user
  41. 54```markdown
  42. 55**RevOps leaders opening a second sales team**: 4 steps over 12 days. Lint: 0 errors, 0 warnings.
  43. 57| Day | Channel | Subject | Opens with |
  44. 58| ---: | --- | --- | --- |
  45. 59| 1 | Email | {{company}}'s new sales team | Saw {{trigger}}. |
  46. 60| 4 | LinkedIn | | Connection note, no pitch |
  47. 61| 7 | Email (thread) | | Routing is the first thing to break |
  48. 62| 12 | Email | routing rules for two teams | Checklist offer, easy out |
  49. 64Slots each contact needs: first_name, company, trigger, observation, peer_company, sender_name.
  50. 65```
  51. 67## Guardrails
  52. 69- Never invent facts about a prospect or a customer. Slots get filled from research the user has, or the sentence goes.
  53. 70- 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.
  54. 71- 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.
  55. 72- Do not load, schedule, or send anything.