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
— Willbecomes justWill).
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.