# How Humanizer Handles 'Dashes as the Universal Connector' Pattern

> Discover how Humanizer effectively handles dashes as universal connectors in AI text. Learn how it replaces or rewrites sentences, ensuring clarity and accuracy for your content.

- Repository: [Siqi Chen/humanizer](https://github.com/blader/humanizer)
- Tags: deep-dive
- Published: 2026-09-10

---

**Humanizer eliminates em-dashes (—) and en-dashes (–) from AI-generated text by replacing them with explicit punctuation—such as commas, periods, or colons—or rewriting sentences entirely, unless the dashes appear within code blocks or the original human sample explicitly uses them.**

The `blader/humanizer` repository treats frequent dash usage as a hallmark of AI-generated "rhythm-by-rule" writing. According to the project's skill definitions in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), the "Dashes as the universal connector" pattern represents a common automated writing habit where models rely on vague connective punctuation rather than clear relational clauses. Humanizer's architecture enforces strict rewrite rules to neutralize this tell while preserving semantic meaning.

## The Core Rewrite Mechanism for Dash Removal

Humanizer enforces a strict constraint defined in **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** at lines 59-62: the final output must not contain dashes unless the original writer's sample explicitly uses them. When processing text, the system identifies every dash—including spaced variants and double-hyphen forms (`--`)—and applies deterministic replacements.

The transformation logic converts each dash into one of four explicit punctuation options:

- **Periods** for sentence breaks
- **Commas** for clause separation
- **Colons** for exposition
- **Parentheses** for parenthetical asides

Alternatively, the engine may rewrite the entire sentence to convey equivalent meaning without any dash-based connectives.

## Protected Contexts Where Dashes Persist

Not all dashes trigger removal. Humanizer's parser recognizes specific syntactic contexts where dashes serve functional rather than stylistic purposes. According to the source documentation, the system leaves dashes untouched when they appear inside:

- **Code blocks** and fenced code regions
- **Inline code** spans (single backticks)
- **Command-line snippets** and terminal examples
- **File paths** and directory structures
- **URLs** and hyperlink definitions

This exclusion prevents the corruption of technical syntax while still sanitizing narrative prose.

## Transformation Examples: Before and After

The skill definition provides concrete examples at lines 64-66 demonstrating the conversion patterns. Consider these transformations:

Original text with em-dashes:

```markdown
The new policy — announced without warning — affects thousands of workers.

```

Humanized output with commas:

```markdown
The new policy, announced without warning, affects thousands of workers.

```

Double-hyphen variant conversion:

```markdown
The changes -- long overdue according to critics -- will take effect immediately.

```

Becomes:

```markdown
The changes, long overdue according to critics, will take effect immediately.

```

These examples illustrate how Humanizer replaces the "universal connector" with more precise punctuation that forces explicit relational logic between clauses.

## Source Code Organization

The rewrite rules reside in the repository's primary skill definition file:

- **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** (section 8, lines 59-66): Contains the complete "Dashes as the universal connector" specification, including the constraint logic, replacement options, and worked examples.

The **[`README.md`](https://github.com/blader/humanizer/blob/main/README.md)** file provides installation instructions and architectural overview but delegates specific pattern definitions to the skill documentation.

## Summary

- Humanizer treats em-dashes and en-dashes as AI-generation artifacts that require removal from prose contexts.
- The engine replaces dashes with **periods, commas, colons, or parentheses**, or rewrites sentences to eliminate the connective entirely.
- Technical contexts including **code blocks, file paths, and URLs** are automatically exempt from dash removal.
- All rules are defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at lines 59-66, which specifies both the constraint logic and transformation examples.
- The system preserves dash frequency only when the original human sample explicitly uses them, ensuring stylistic fidelity to authentic writing patterns.

## Frequently Asked Questions

### What punctuation does Humanizer use to replace dashes?

Humanizer substitutes dashes with **commas, periods, colons, or parentheses** depending on the semantic relationship between clauses. Alternatively, it may restructure the entire sentence to convey the same meaning without parenthetical interruption.

### Does Humanizer remove dashes from code examples?

No. The system explicitly protects dashes that appear inside **code blocks, inline code, command-line snippets, file paths, and URLs**. These technical contexts are preserved to prevent breaking functional syntax while prose is sanitized.

### Where is the "Dashes as the universal connector" rule defined?

The complete specification resides in **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** at lines 59-66 within the `blader/humanizer` repository. This section defines the constraint logic, lists acceptable replacement punctuation, and provides before/after transformation examples.

### Will Humanizer keep dashes if the original text contains them?

Yes, but only conditionally. If the original writer's sample explicitly uses dashes, Humanizer matches that frequency rather than eliminating them entirely. This preserves authentic human writing patterns while still identifying and removing AI-generated dash overuse.