Cleanskin
Skill NovateStudioGit/novate-studio-skills/copywriting/cleanskin
57 agent skills for Claude Code — creative production, paid growth, copywriting, ecommerce, email marketing & knowledge ops. By Novate Studio.
npx -y skills add NovateStudioGit/novate-studio-skills --skill cleanskinAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
2.8 KB, as published. Nobody here has run it
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.