cleanskin

star 0

Strip the em dash (—) and en dash (–) — the

NovateStudioGit By NovateStudioGit schedule Updated 6/6/2026

name: cleanskin description: Strip the em dash (—) and en dash (–) — the #1 "written by AI" tell — from any copy, and replace it with human punctuation (normal hyphen, comma, or full stop). Use whenever the user wants to remove em dashes / "AI dashes" / "long dashes" from text, a file, a folder of prompts, or a LIVE Instantly cold-email campaign; or says "de-AI this copy", "make this read human", "kill the em dashes", "scrub the dashes". Triggered by /cleanskin or natural language like those.

CLEANSKIN — kill the AI dash

The em dash () and its shorter cousin the en dash () are the single most recognisable "this was written by AI" signal. A normal keyboard hyphen is -. CLEANSKIN removes em/en dashes everywhere and swaps in punctuation a human would actually type.

The rule (never violate)

Never emit an em dash () or en dash () in any copy you write for Will — cold emails, captions, ads, headlines, landing pages, Klaviyo, anything. Replace it with:

  • a normal hyphen - for "topic - name" subject/headline separators and number ranges (2-3),
  • a comma for a clause aside ("across Brisbane, steady inbound"),
  • a full stop when it joins two sentences,
  • or nothing (drop it — e.g. the sign-off — Will becomes just Will).

This applies to copy you generate AND to copy you clean for him.

The tool — scrub.py

Deterministic, regex-based, reversible (writes .emdash.bak before editing files). Three modes:

# 1. Clean a string (or piped text)
python3 scrub.py text "we built voice agents — they answer after hours"
echo "$DRAFT" | python3 scrub.py text

# 2. Clean file(s) in place (.bak saved per file)
python3 scrub.py file path/to/copy.md path/to/prompt.yaml

# 3. Clean a LIVE Instantly campaign — per-lead subject/body (custom_variables +
#    personalization) AND the follow-up sequence-step templates.
python3 scrub.py instantly <campaign_id> --dry   # preview counts, no writes
python3 scrub.py instantly <campaign_id>         # apply (idempotent; re-run safe)

Instantly mode reads INSTANTLY_API_KEY from ~/Desktop/ADMIN/.env, leaves real business names (companyName/business_name) untouched, treats email_1_subject/personalization as subjects (hyphen) and everything else as prose (comma), and retries on rate-limits. Back up first for large live campaigns — dump leads to JSON before a multi-thousand-lead run.

Where it's wired in already

The cold-email generator (~/.claude/skills/cold-email-ai-agents/run.py) now scrubs every generated subject + body through this same logic before it ever reaches Instantly, and its validator rejects any em/en dash. So new batches are clean at the source; CLEANSKIN is for cleaning existing copy, other pipelines, and one-off text.

Install via CLI
npx skills add https://github.com/NovateStudioGit/novate-studio-skills --skill cleanskin
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
NovateStudioGit
NovateStudioGit Explore all skills →