# When Does Writing‑Sample Voice Matching Override the Dash Rule in Humanizer?

> Discover when Humanizer's writing-sample voice matching overrides the dash rule. Learn how reference text with dashes preserves original punctuation instead of replacements.

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

---

**Writing‑sample voice matching overrides the dash rule whenever a user provides a reference text that contains dashes, causing Humanizer to preserve the original punctuation rather than replace it with periods, commas, or colons.**

The `blader/humanizer` repository is an open‑source editorial engine that applies strict punctuation and rhythm rules to polish prose. While the tool’s Pattern 8 (the dash rule) typically replaces dashes with stronger punctuation marks, **writing‑sample voice matching** creates a specific exception that maintains the author’s original stylistic choices when the sample itself uses dashes.

## Understanding Pattern 8 (the Dash Rule)

According to [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) at lines 97‑98, Pattern 8 states that dashes are “*weak alone*” and instructs the model to “**Use periods, commas, colons, or parentheses**” instead. By default, Humanizer treats isolated dashes as low‑impact connectors and substitutes them with more definitive punctuation to tighten the rhythm of the text.

## Circumstances That Override the Dash Rule

The override occurs under a single condition: **when a writing sample is supplied for voice matching and that sample contains dashes**. In this scenario, Humanizer treats the sample’s punctuation as a deliberate stylistic cue rather than an error to be corrected.

The [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) explains this behavior at lines 64‑65: “Humanizer follows the sample's rhythm, word choice, punctuation, and deliberate quirks, **including dashes if you use them**.” Consequently, if the reference text includes em‑dashes or en‑dashes, Pattern 8 is suppressed and the original dashes are preserved in the output to maintain voice consistency.

### Practical Implications

- If no sample is provided, the dash rule applies universally.
- If a sample is provided but contains no dashes, the dash rule still applies.
- If a sample contains dashes, the rule yields to the sample’s voice.

## Code Examples

### Example 1: Default Behavior (No Writing Sample)

When no voice sample is provided, the dash rule transforms the punctuation:

```markdown
Input:
The project — which was delayed — finally shipped.

Output (dash rule applied):
The project, which was delayed, finally shipped.

```

### Example 2: Voice Matching Override

When a writing sample containing dashes is supplied, the rule is suspended:

```markdown
Writing sample:
"I love road‑trips — they’re the best way to see the country."

Input:
The new update — which added features — improves performance.

Output (voice match override):
The new update — which added features — improves performance.

```

## Source File Reference

The behavior is defined across three key files in the repository:

- **[`README.md`](https://github.com/blader/humanizer/blob/main/README.md)** – Contains the user‑facing description of Pattern 8 (lines 97‑98) and the voice‑matching override clause (lines 64‑65).
- **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** – Houses the formal pattern definitions, including the “weak alone” classification of the dash rule and its conditional logic when processing writing samples.
- **[`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md)** – Provides agent‑compatibility metadata and skill configuration details.

## Summary

- The dash rule (Pattern 8) normally replaces dashes with periods, commas, colons, or parentheses.
- **Writing‑sample voice matching** overrides this rule only when the provided sample text contains dashes.
- When overridden, Humanizer preserves the original punctuation to maintain stylistic consistency with the sample.
- The override logic is documented in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) and formalized in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md).

## Frequently Asked Questions

### What is the dash rule in Humanizer?

The dash rule (Pattern 8) is an editorial constraint that treats standalone dashes as weak connectors. According to the source code in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) lines 97‑98, the rule instructs the model to substitute dashes with “periods, commas, colons, or parentheses” unless a writing sample dictates otherwise.

### How do I provide a writing sample to preserve dashes?

Supply a reference text that includes the stylistic elements you want to keep. As noted in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) lines 64‑65, Humanizer “follows the sample's rhythm, word choice, punctuation, and deliberate quirks, including dashes.” If your sample contains em‑dashes or en‑dashes, the tool will retain them in the rewritten output.

### Does the override apply to both en‑dashes and em‑dashes?

Yes. The override condition is triggered by the presence of any dash characters in the writing sample. The rule description in Pattern 8 refers broadly to dashes, and the voice‑matching logic preserves whichever dash variant appears in the provided sample.

### Where is the override logic documented in the source code?

The primary documentation resides in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) (lines 64‑65 and 97‑98). The formal pattern definition and its “weak alone” status are stored in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), while [`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md) contains implementation metadata for agent integrations.