How Weak Alone Patterns Differ from Strong Patterns in Humanizer's Analysis

Weak alone patterns require company from other tells in the same passage before triggering an edit, while strong patterns justify immediate rewrites upon a single occurrence.

The blader/humanizer repository implements a two-tier classification system for detecting AI-generated writing tells. This distinction between weak alone patterns and strong patterns governs when the analysis engine intervenes, balancing thorough detection against the risk of over-editing natural stylistic variations.

The Two-Tier Classification System

Humanizer organizes its detection rules into two distinct categories based on editorial urgency. This hierarchy is defined in SKILL.md, which serves as the core skill definition containing the full pattern list and ranking rules.

Strong Patterns (Stand-Alone Signals)

Strong patterns represent the most frequent and impactful AI-generated tells, cataloged in sections A-E and numbered 1 through 5. These are considered stand-alone signals that can justify a rewrite in isolation.

According to the source code, a single instance of any strong pattern is sufficient to trigger an edit. When the engine detects tells such as "Not X but Y" constructions, one-line closers, or forced triads, it acts immediately without requiring additional corroborating evidence in the same passage.

Weak Alone Patterns (Context-Dependent Signals)

Patterns marked with the *weak alone* tag—including dashes, hyphenated pairs, passive voice, and curly quotes—operate under stricter activation rules. As explicitly stated in SKILL.md lines 29-30: "a pattern marked weak alone needs company from other tells in the same passage before you act."

This "company-required" rule prevents the engine from flagging isolated stylistic quirks. For example, the dash rule at line 62, hyphenated pairs at line 80, and passive voice at line 86 all carry the *weak alone* annotation, signaling that these patterns must cluster with other tells before Humanizer modifies the text.

How the Editing Logic Works in Practice

The engine implements a conditional check that evaluates pattern strength against surrounding context. When scanning text, the system first categorizes each detected tell, then applies the appropriate threshold for intervention.

def should_edit(pattern, surrounding_patterns):
    """Return True if the pattern warrants an edit."""
    if pattern.is_strong:
        return True                     # act on any single strong tell

    # weak-alone: require ≥2 other tells in the same paragraph

    return len(surrounding_patterns) >= 2

# Example usage

text = "The new policy — announced without warning — affects thousands."
found = detect_patterns(text)           # returns list of Pattern objects

for p in found:
    context = patterns_in_same_paragraph(p, found)
    if should_edit(p, context):
        rewrite(p, text)

This logic ensures that strong patterns (p.is_strong) trigger instant edits, while weak alone patterns require at least two companion tells in the same paragraph before the engine initiates a rewrite.

Identifying Patterns in the Source Code

The SKILL.md file contains the canonical definitions for both pattern types. Strong patterns appear in sections A-E without the weak alone qualifier, whereas weak alone patterns are explicitly annotated throughout the document.

Key file references include:

  • SKILL.md (lines 62-66): Defines the dash rule with the weak alone tag
  • SKILL.md (lines 78-82): Specifies hyphenated pairs as weak alone
  • SKILL.md (lines 86-88): Marks passive voice as weak alone
  • scripts/validate-package.py: Validates the integrity of the skill file, ensuring correct numbering and the presence of weak alone tags where required

The validation script specifically checks that weak alone patterns maintain their proper annotations, ensuring consistent behavior across different deployment platforms described in AGENTS.md.

Summary

  • Strong patterns (numbered 1-5) are stand-alone signals that trigger edits immediately upon detection
  • Weak alone patterns require multiple tells in the same passage before activating, preventing over-editing of isolated stylistic choices
  • The distinction is codified in SKILL.md lines 29-30 and enforced by scripts/validate-package.py
  • The engine uses context-aware logic to distinguish between urgent AI tells and benign stylistic variations

Frequently Asked Questions

What makes a pattern "weak alone" in Humanizer?

A pattern receives the weak alone designation when it represents a stylistic quirk rather than a substantive AI-generated tell. These patterns—such as em dashes, hyphenated pairs, or passive voice constructions—appear frequently in human writing and require corroborating evidence from other tells before the system recommends edits.

How does Humanizer handle strong patterns differently?

Strong patterns trigger automatic edits upon a single occurrence. These high-priority tells, numbered 1-5 in sections A-E of SKILL.md, indicate systematic AI-generated habits that warrant immediate rewriting without requiring additional context or companion patterns in the same passage.

Where are weak alone patterns defined in the codebase?

The weak alone patterns are defined in SKILL.md at the repository root, with specific instances appearing at lines 62-66 (dashes), 78-82 (hyphenated pairs), and 86-88 (passive voice). The scripts/validate-package.py file ensures these annotations remain consistent across the skill package.

Can a weak alone pattern trigger an edit by itself?

No. According to the rule specified in SKILL.md lines 29-30, weak alone patterns explicitly require "company from other tells in the same passage before you act." A single occurrence of a weak alone pattern—such as an isolated em dash or curly quote—will not prompt the engine to rewrite the text.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →