# Pattern 1 Not X but Y in Humanizer: Removing AI Contrast Tells

> Discover Pattern 1 Not X but Y in Humanizer, the key rule for removing AI contrast tells. Learn how to directly state facts by eliminating empty negations and enhancing your writing.

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

---

**Pattern 1 Not X but Y is the primary detection rule in the Humanizer skill that identifies AI-generated constructions contrasting a negative premise with a positive claim, instructing editors to remove the empty negation and state the fact directly.**

The `blader/humanizer` repository provides an open-source editing skill designed to strip stylistic tells from machine-generated prose. Pattern 1 Not X but Y specifically targets sentences like "not X but Y" or "not just X, but Y" that artificially inflate importance through unnecessary negation. According to the source code in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), this pattern represents the first and strongest tell that distinguishes synthetic text from natural human writing.

## What is Pattern 1 Not X but Y?

Pattern 1 Not X but Y captures a common rhetorical scaffolding where writers (typically AI models) construct sentences by first rejecting a straw-man position before asserting the actual point. The pattern appears in forms including "not X but Y," "not just X, but Y," "it’s not X, it’s Y," and split-sentence variants like "This does not mean X. It means Y."

In [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at lines 58-73, the skill defines this construction as gratuitous because the negative clause typically adds no factual content while the positive clause restates the obvious with artificial weight. The rationale states that human authors simply state facts without the "not-X-but-Y" scaffolding.

### Technical Location and Definition

The primary definition resides in the Humanizer skill specification:

- **File**: [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) (section `### 1. Not X but Y`)

- **Lines**: 58-73
- **Purpose**: Detect and eliminate contrastive framing that serves no corrective function

The skill recognizes multiple surface forms:
- "not X but Y"
- "not just X, but Y"
- "it's not X, it's Y"
- "X rather than Y"
- Split sentences: "This does not mean X. It means Y."

### The Three-Step Correction Process

When [`agents/openai.yaml`](https://github.com/blader/humanizer/blob/main/agents/openai.yaml) invokes the Humanizer skill, it applies a systematic correction workflow:

1. **Detect**: Identify any contrastive construction matching the pattern variants.
2. **Assess**: Determine whether the negative clause corrects an actual misconception the reader holds. If not, the contrast is unnecessary.
3. **Rewrite**: State the claim directly, preserving useful information from the positive clause while deleting the gratuitous negative framing.

## Pattern 1 Not X but Y Examples

The following transformations demonstrate how Humanizer rewrites AI-generated prose to remove Pattern 1 constructions. Each example shows the original machine-style phrasing followed by the humanized rewrite.

### Music Review Example

**Before (AI style):**

```text
It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere.

```

**After (Humanized):**

```text
The heavy beat adds to the aggressive tone.

```

The rewrite eliminates the empty negation ("not just about") and condenses the remaining semantic content into a direct statement.

### Philosophical Argument Example

**Before (AI style):**

```text
This does not mean every choice is equal. It means there is no external system that confirms which choice is right.

```

**After (Humanized):**

```text
No external system confirms which choice is right, although the choices still have different consequences.

```

Here, Humanizer merges the two split sentences into one coherent statement, removing the "This does not mean" scaffolding while preserving the nuanced caveat about consequences.

### Technical Documentation Example

**Before (AI style):**

```text
The options come from the selected item, no guessing.

```

**After (Humanized):**

```text
The options come from the selected item without forcing the user to guess.

```

The pattern transforms ambiguous AI phrasing into explicit, user-centered documentation.

## Implementation and Configuration

To utilize Pattern 1 Not X but Y programmatically, load the skill markup into an OpenAI-compatible agent using the configuration provided in [`agents/openai.yaml`](https://github.com/blader/humanizer/blob/main/agents/openai.yaml). The agent automatically applies the detection rules defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) to incoming text blocks.

The [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py) utility ensures that skill files remain synchronized, validating pattern numbering and cross-references between [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) and the agent configuration files. This prevents drift between the rule definitions and their runtime implementations.

## Summary

- **Pattern 1 Not X but Y** is defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) (lines 58-73) as the strongest AI stylistic tell in the Humanizer skill set.
- The pattern detects constructions like "not X but Y," "not just X, but Y," and split-sentence variants that artificially contrast negations with affirmations.
- The correction workflow requires detecting the pattern, assessing whether the negation serves a corrective purpose, and rewriting to state the positive claim directly.
- For programmatic use, reference the skill through [`agents/openai.yaml`](https://github.com/blader/humanizer/blob/main/agents/openai.yaml) and validate deployments using [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py).

## Frequently Asked Questions

### What is Pattern 1 Not X but Y in Humanizer?

Pattern 1 Not X but Y is the first detection rule defined in the Humanizer open-source skill. It identifies sentences that use contrastive framing—such as "not X but Y" or "not just X, but Y"—to artificially add weight to statements. The pattern operates on the principle that such negations usually add no factual value and mark text as likely AI-generated.

### How does Humanizer detect the Not X but Y pattern?

The detection logic resides in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) and recognizes multiple surface forms including "it's not X, it's Y," "X rather than Y," and split constructions like "This does not mean X. It means Y." The skill instructs agents to flag these patterns during editing operations, then assess whether the negative clause corrects an actual reader misconception before suggesting a rewrite.

### Where is Pattern 1 defined in the Humanizer codebase?

Pattern 1 is formally defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) at lines 58-73 under the section "### 1. Not X but Y". The repository `blader/humanizer` maintains this definition alongside agent configurations in [`agents/openai.yaml`](https://github.com/blader/humanizer/blob/main/agents/openai.yaml) that enable OpenAI-compatible systems to load and apply the skill automatically.

### Can Pattern 1 be customized or disabled?

While the core definition in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) provides the canonical detection rules, the modular skill architecture allows developers to modify [`agents/openai.yaml`](https://github.com/blader/humanizer/blob/main/agents/openai.yaml) or create custom agent configurations that adjust enforcement levels. The [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py) validation script ensures that any modifications to pattern numbering or structure maintain consistency across the codebase.