# How Humanizer Manages "Too Many Hyphenated Word Pairs" (Pattern 26)

> Discover how Humanizer expertly handles too many hyphenated word pairs, removing unnecessary hyphens while ensuring grammatical correctness for better text.

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

---

**Humanizer treats over-used hyphenated noun phrases as a weak-alone tell that removes unnecessary hyphens while preserving grammatically correct ones before nouns.**

The `blader/humanizer` repository implements a prose refinement system that detects and corrects excessive hyphenation patterns in writing. Pattern 26 specifically targets the overuse of hyphenated word pairs—a common issue in business and technical writing where authors compound adjectives unnecessarily.

## Understanding the Hyphenated Pairs Rule

According to the source code in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), the **"Hyphenated pairs everywhere"** section defines this pattern as a readability improvement that eliminates redundant hyphens without sacrificing grammatical precision. The rule operates on a curated list of frequently over-hyphenated pairs including *third-party*, *cross-functional*, *client-facing*, *data-driven*, and similar constructions.

### When Hyphens Are Removed vs. Preserved

Humanizer applies contextual logic to determine hyphen retention:

- **Hyphens are dropped** when the compound adjective appears *after* the noun it modifies
- **Hyphens are retained** when the compound adjective appears *before* the noun (grammatically required)

This distinction ensures corrections maintain standard English punctuation rules while eliminating visual clutter from prose.

## Pattern 26 Implementation Details

The skill definition resides in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at line 77, where pattern matching logic identifies candidate pairs and applies transformation rules. The implementation explicitly excludes protected contexts—code blocks, URLs, and inline commands remain unmodified even when they contain matching hyphenated terms.

### Scope and Boundaries

| Context | Handling |
|---------|----------|
| Prose paragraphs | Full pattern matching and correction |
| Pre-noun compounds | Preserved (grammatically required) |
| Post-noun compounds | Hyphen removed |
| Code blocks | Ignored |
| URLs | Ignored |
| Inline commands | Ignored |

## Code Examples and Transformations

The following examples demonstrate Pattern 26 behavior based on the Humanizer source:

**Multiple hyphenated adjectives after nouns:**

```markdown
Before: The team is cross‑functional, the report is high‑quality, and the methodology is data‑driven.
After:  The team is cross functional, the report is high quality, and the methodology is data driven.

```

**Grammatically correct pre-noun compound (unchanged):**

```markdown
Before: We need a high‑quality report for the board.
After:  We need a high‑quality report for the board.  // hyphen retained

```

**Em-dash usage (Pattern 8 overlap):**

```markdown
Before: The new policy — announced without warning — affects thousands of workers.
After:  The new policy, announced without warning, affects thousands of workers.

```

## Key Source Files

| File | Purpose |
|------|---------|
| [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) | Core pattern definitions including Pattern 26 at line 77 |
| [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) | End-user documentation and pattern summaries |
| [`.claude-plugin/plugin.json`](https://github.com/blader/humanizer/blob/main/.claude-plugin/plugin.json) | Plugin metadata pointing to skill definitions |

## Summary

- Pattern 26 targets **excessive hyphenation** in compound adjectives that appear after their nouns
- The rule maintains a **whitelist of common hyphenated pairs** for detection
- **Grammatical correctness is preserved**: pre-noun compounds keep their hyphens
- **Protected contexts** (code, URLs, commands) are excluded from transformation
- Transformations are defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) with practical examples for validation

## Frequently Asked Questions

### What triggers Pattern 26 in Humanizer?

Pattern 26 activates when text contains multiple instances of common hyphenated pairs—such as *cross-functional*, *data-driven*, or *third-party*—used as post-noun modifiers. The pattern looks for repetition across a passage rather than isolated usage, treating overuse as a style weakness that hampers readability.

### Why does Humanizer keep some hyphens while removing others?

Humanizer preserves hyphens required by standard grammar rules. When a compound adjective appears **before** the noun it modifies (e.g., "high-quality report"), the hyphen prevents misreading and stays intact. When the same compound appears **after** the noun (e.g., "the report is high quality"), the hyphen becomes unnecessary and is removed.

### Does Pattern 26 affect technical content like code or URLs?

No. The Humanizer implementation explicitly guards against modifying content inside code blocks, URLs, and inline commands. This protection ensures that syntactically significant hyphens in identifiers, flags, or paths remain untouched regardless of pattern matching.

### Where is the Pattern 26 logic defined in the repository?

The complete rule specification, including the hyphenated pairs list and transformation logic, appears in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at line 77 under the **"Hyphenated pairs everywhere"** section. The [`.claude-plugin/plugin.json`](https://github.com/blader/humanizer/blob/main/.claude-plugin/plugin.json) file points AI agents to this skill definition for implementation.