From no-em-dashes
Enforce em-dash-free writing. Use this skill whenever you write or edit prose for the user, including drafts, emails, essays, reports, documentation, blog and social posts, marketing copy, creative writing, summaries, and rewrites, so the output contains zero em dashes and avoids the grammatical structures that invite them. Replace em-dash constructions with commas, semicolons, colons, periods, or parentheses, and recast sentences when a plain swap would read awkwardly. Trigger this even when the user does not explicitly mention em dashes, dashes, or punctuation, because the point is that every piece of writing comes out clean by default. Also apply it when polishing or proofreading text the user pastes in, and when the user asks for writing that does not look machine-generated.
How this skill is triggered — by the user, by Claude, or both
Slash command
/no-em-dashes:no-em-dashesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guarantee that writing produced for the user contains no em dashes, and, just as important, that it is built out of sentences that never reach for one in the first place.
evals/evals.jsonevals/results/README.mdevals/results/benchmark.mdevals/results/em_dash_counts.csvevals/results/examples/breakroom-dialogue.baseline.txtevals/results/examples/breakroom-dialogue.with-skill.txtevals/results/examples/release-delay-email.baseline.txtevals/results/examples/release-delay-email.with-skill.txtscripts/check_em_dashes.pyGuarantee that writing produced for the user contains no em dashes, and, just as important, that it is built out of sentences that never reach for one in the first place.
Two reasons this is worth real care:
The wrong way to satisfy this skill is to swap one em dash for a lookalike (a spaced hyphen, a double hyphen, a stray en dash). That is the same move wearing a disguise. The right way is to recognize the sentence shape that wanted the dash and rewrite so it is no longer needed.
word--word or --), a hyphen padded with spaces (-), a stray en dash (U+2013) used between words, and the horizontal bar (U+2015). Replace the construction with real punctuation, not with another dash.The target is the em dash and its stand-ins acting as sentence punctuation. Nothing else.
| --- | --- | are formatting, not punctuation. A run of three hyphens used as a pause inside a sentence is still a stand-in, so recast that.An em dash is almost always doing one of a small number of rhetorical jobs. Identify the job, then use the matching replacement. If you only swap the character you sometimes create a comma splice or a limp sentence, so when in doubt, recast.
The construction reached for most often. Some setup, then a dash, then a payoff.
This is the one job with no clean comma or semicolon swap, so handle it honestly rather than forcing a bad substitute.
If you are quoting a source word for word and the original contains an em dash, you may keep it inside the direct quotation, because silently altering a quote misrepresents the source. Prefer to paraphrase so the question does not arise. Never introduce an em dash in your own voice, and never add one to a quote that did not have it.
Scan the finished text for the em dash and its stand-ins, then fix any that punctuate a sentence.
If code execution is available, run the bundled checker on a draft file or via stdin:
python "${CLAUDE_SKILL_DIR}/scripts/check_em_dashes.py" path/to/draft.txt
echo "Your text here" | python "${CLAUDE_SKILL_DIR}/scripts/check_em_dashes.py"
${CLAUDE_SKILL_DIR} resolves to this skill's folder however it was installed (personal, project, or plugin). If it is not set, point at scripts/check_em_dashes.py inside this skill directory. It prints every hit with its location and a suggested fix, and exits nonzero if anything is found. If you cannot run code, do the scan by eye: search the text for the em dash character, for a double hyphen, and for a hyphen with a space on each side, and rewrite each one using the playbook above.
In each "Before" line below, [em dash] marks where the original used the em dash character. The "After" line shows the clean rewrite.
Example 1 (reveal): Before: The data was clear [em dash] engagement had collapsed. After: The data was clear: engagement had collapsed.
Example 2 (pivot): Before: We don't sell software [em dash] we sell outcomes. After: We sell outcomes, not software.
Example 3 (aside): Before: Our flagship store [em dash] the one downtown [em dash] closes in May. After: Our flagship store (the one downtown) closes in May.
Example 4 (two clauses): Before: The fix shipped on Friday [em dash] nobody noticed until Monday. After: The fix shipped on Friday; nobody noticed until Monday.
Example 5 (summary): Before: Lower cost, faster turnaround, fewer defects [em dash] that's the pitch. After: The pitch is lower cost, faster turnaround, and fewer defects.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub exmergo/exmergo-skills --plugin no-em-dashes