no-em-dashes

A Claude Code skill that produces writing
with zero em dashes, and, just as important, writing built out of sentences that never
reach for one in the first place.
Heavy em-dash use has become one of the most recognizable fingerprints of
machine-written text. Many readers now skim a dash-laden paragraph and think "a bot
wrote this." This skill keeps prose reading as a person's, and it forces tighter,
more deliberate sentences along the way.
Built and shared in the open by Exmergo, the team building
AI agents for data analytics. See more of our work at
exmergo.com/open-research.
Install (Claude Code)
Option 1: As a plugin (recommended)
This skill is published through the Exmergo Skills
marketplace. Add the catalog once, then install the skill. Inside Claude Code:
- Add the marketplace
/plugin marketplace add exmergo/exmergo-skills
- Install the skill as a plugin
/plugin install no-em-dashes@exmergo-skills
The skill then loads automatically and runs whenever Claude writes or edits prose for
you. To update later, run /plugin marketplace update exmergo-skills.
Option 2: Manual copy
If you would rather not use the plugin system, copy the skill folder into your skills
directory:
git clone https://github.com/exmergo/skill-no-em-dashes
cp -r skill-no-em-dashes/skills/no-em-dashes ~/.claude/skills/ # personal, every project
# or, project-scoped:
cp -r skill-no-em-dashes/skills/no-em-dashes .claude/skills/
Claude Code auto-discovers any folder containing a SKILL.md. Either way, you do not
have to mention em dashes; clean output is the default.
Use with other coding agents
The two-command install above is specific to Claude Code, which has a plugin
marketplace. Most other agents do not install packages; they read committed
instruction files. The good news is that one file reaches almost all of them.
Start here: AGENTS.md
This repo ships an AGENTS.md, the open standard (now under the Linux
Foundation) that Cursor, GitHub Copilot agent mode, Codex, Continue, Aider, Windsurf,
and others read automatically. To get the behavior in your own project, copy the
contents of our AGENTS.md into your repository's AGENTS.md (merge if you already
have one). That single step covers the majority of agents, with no install command.
AGENTS.md is the canonical source of the guidance. The per-tool files below are thin
pointers to it, so nothing drifts.
Per-tool files
Two honest caveats
- Mostly project-scoped. For these agents you get the rule by placing the file in a
given project, not by installing it once for everything. The cleanest "applies
everywhere" options remain the Claude Code plugin above and Cursor's Remote Rules.
- The checker needs a shell. The prose guidance works in every agent. The
check_em_dashes.py scan only helps in agents that can run a terminal command (Cursor
agent mode, Windsurf, Claude Code), and only when the rule tells them to run it.
What it does
When the skill is active, any prose Claude writes or edits comes out free of:
- the em dash itself (
U+2014),
- and its disguises: a double hyphen (
word--word or --), a hyphen padded with
spaces (-), a stray en dash between words, and the horizontal bar.
The point is not to swap one dash character for a look-alike. It is to recognize the
sentence shape that wanted the dash, then rewrite with real punctuation: a comma,
semicolon, colon, period, or parentheses. The skill includes a playbook for each job
an em dash typically does (the dramatic reveal, the "not just X but Y" pivot, the
interruptive aside, joined clauses, the summary dash, and interrupted dialogue) with
worked before-and-after examples.
It deliberately leaves legitimate hyphens alone: compounds like well-known and
state-of-the-art, number and date ranges like 10-20 and 2019-2024, and hyphens
in code, file paths, URLs, and math.