# How Humanizer Patterns Are Categorized by Strength and Frequency: The 2S Framework

> Discover how Humanizer categorizes its 25 AI writing patterns into strong and weak groups based on frequency and strength. Learn about the 2S Framework for effective editing.

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

---

**Humanizer splits its 25 AI-writing detection patterns into two strength-based groups—Strong (patterns 1‑5) and Weak (patterns 6‑25)—where strong patterns warrant immediate editing on a single sighting while weak patterns require multiple simultaneous tells before triggering intervention.**

The `blader/humanizer` repository provides a comprehensive editorial framework for identifying AI-generated prose through 25 distinct linguistic tells. These Humanizer patterns categorized by strength and frequency determine precisely when text requires human revision versus when stylistic quirks can be ignored.

## The 2S Classification System

Humanizer’s "2S" designation refers to the two **strength-based sets** that govern editorial decisions. The categorization appears in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at line 29: "The patterns are **numbered strongest first**: §1‑§5 justify an edit on one sighting, and a pattern marked *weak alone* needs company from other tells in the same passage before you act."

### Strong Patterns (Single-Sight Triggers)

**Patterns 1 through 5** constitute the strong group. Defined in **Section A: Staging instead of stating** (lines 55‑79 of [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)), these are the most powerful tells that justify an edit on a **single occurrence**. Each instance adds weight without adding new information, making them the **most common** indicators in current LLM output.

When the system encounters strong patterns like "Not X but Y" (pattern 1), it triggers an immediate rewrite regardless of surrounding context.

### Weak Patterns (Context-Dependent Tells)

**Patterns 6 through 25** form the weak group. Documented across **Section B: Rhythm by rule**, **Section C: Inflation and borrowed authority**, and **Section D: Formatting by rule** (lines 135‑375 of [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)), these patterns are marked **"weak alone"**. A lone occurrence is ignored because it is not harmful enough on its own; the system requires multiple weak tells in close proximity before flagging the passage.

These patterns occur **less frequently** or appear only as stylistic quirks, such as "Dashes as the universal connector" (pattern 8).

## Editorial Logic and Pattern Strength

The categorization directly determines the agent’s decision algorithm. Strong patterns override context, while weak patterns demand corroboration.

```python
def should_edit(pattern_id, surrounding_tells):
    """Return True if a pattern warrants an edit."""
    strong_ids = {1, 2, 3, 4, 5}          # Strong (single-sight)

    weak_ids   = set(range(6, 26))       # Weak (needs company)

    if pattern_id in strong_ids:
        return True                      # Edit immediately

    if pattern_id in weak_ids:
        return len(surrounding_tells) > 1   # Need multiple tells

    return False

```

When `should_edit` receives pattern 1, it returns `True` immediately. For pattern 8, it returns `True` only if at least one other tell appears nearby.

## Source File Structure and Pattern Definitions

The strength and frequency classifications are encoded across three primary files:

| File | Role in Categorization |
|------|------------------------|
| **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** | Contains the full list of patterns, the split into strong (§1‑5) and weak (§6‑25) groups, and the definition of "weak alone". |
| **[`README.md`](https://github.com/blader/humanizer/blob/main/README.md)** | Provides repository overview, links to pattern sections, and explains the editorial workflow. |
| **[`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md)** | Describes skill export to agents, ensuring the categorization logic persists across platforms. |

These files are available at:
- **Skill definition:** https://github.com/blader/humanizer/blob/main/SKILL.md
- **Project overview:** https://github.com/blader/humanizer/blob/main/README.md
- **Agent integration:** https://github.com/blader/humanizer/blob/main/AGENTS.md

## Summary

- Humanizer organizes **25 AI-writing patterns** into two strength-based categories: **Strong (1‑5)** and **Weak (6‑25)**.
- **Strong patterns** defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) lines 55‑79 trigger edits on a **single occurrence** and represent the most common LLM tells.
- **Weak patterns** defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) lines 135‑375 require **multiple simultaneous tells** before intervention and appear less frequently in AI text.
- The **"2S" framework** refers to these two strength sets that correspond directly to frequency of appearance in model-generated prose.

## Frequently Asked Questions

### What does the "2S" in Humanizer's pattern system stand for?

The "2S" refers to the **two strength-based sets**: Strong (patterns 1‑5) and Weak (patterns 6‑25). According to the source code in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), these sets distinguish between patterns that justify an edit on a single sighting versus those requiring company from other tells.

### Which Humanizer patterns trigger an edit immediately?

**Patterns 1 through 5** trigger immediate edits. Located in Section A of [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) (lines 55‑79), these strong patterns include specific rhetorical structures like "Not X but Y" that add weight without information and appear most frequently in LLM output.

### How do weak patterns differ from strong patterns in AI text detection?

Weak patterns (6‑25) are marked **"weak alone"** in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) and only merit editing when appearing alongside other tells in the same passage. Unlike strong patterns, a single occurrence of a weak pattern is ignored because it represents a stylistic quirk rather than a decisive AI indicator.

### Where can I find the complete list of the 25 Humanizer patterns?

The complete numbered list appears in **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** at https://github.com/blader/humanizer/blob/main/SKILL.md. Lines 55‑79 cover the strong patterns (1‑5), while lines 135‑375 document the weak patterns (6‑25) across sections B, C, and D.