# How Humanizer Prevents Fact Invention During Rewriting: A Technical Deep Dive

> Learn how Humanizer technically prevents fact invention during rewriting. Discover its prompt-based enforcement and self-checklist system for accurate text generation.

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

---

**Humanizer prevents fact invention through a strict prompt-based enforcement system defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) that combines explicit Rule 3 prohibitions against adding unverified claims with a mandatory self-checklist requiring the model to verify no facts were added or removed before finalizing output.**

Humanizer is an open-source text rewriting skill designed to enhance writing style while preserving factual integrity. Unlike general-purpose LLM rewriting tools that may hallucinate details during paraphrasing, Humanizer implements hard prompt-level safeguards to ensure it never invents facts during the rewriting process. This article examines the specific mechanisms in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) and the validation workflows that enforce this guarantee in the `blader/humanizer` repository.

## The "No Invented Facts" Rule in SKILL.md

The foundation of Humanizer's fact-preservation guarantee is **Rule 3**, defined explicitly in the skill's prompt file.

### Explicit Prohibition of Unverified Claims

In [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §3, the prompt declares: *"Do not invent facts. Do not add a fact, name, number, date, quote, or citation unless it comes from the source or the user."* This rule is not merely advisory—it functions as a hard constraint that shapes every stage of the rewriting pipeline. The rule further instructs the model that if a sentence requires a missing detail, it must either **ask the user for the information** or **rewrite the sentence more simply**, eliminating any temptation to fabricate plausible-sounding but unverified data.

## Multi-Step Verification Workflow

Humanizer enforces factual integrity through a staged workflow that isolates stylistic improvements from factual verification.

### Draft Generation Isolation

During the initial phase, Humanizer produces a *draft* rewrite that focuses exclusively on style, flow, and clarity. This draft stage is intentionally designed to operate **without attempting to add or alter factual content**, creating a clear separation between linguistic improvements and factual claims.

### Mandatory Fact-Check Question

After generating the draft, the prompt forces the model to answer a concrete checklist question defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §24: *"Did the rewrite add or remove any fact, name, number, date, quote, citation, ranking, or other claim?"* This self-interrogation step requires the model to evaluate its own output against the source text. If the answer is "Yes," the workflow halts and triggers corrective action.

### User Clarification Protocol

When the model identifies missing required details, [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §3 mandates a strict protocol: the model must either request the specific information from the user or simplify the sentence to eliminate the dependency on the missing fact. This prevents the common LLM behavior of "hallucinating" plausible dates, names, or statistics to fill gaps in the narrative.

### Final Rewrite Gate

Only after the checklist confirms no facts were added or removed does Humanizer emit the **final version**. If the self-check detected any invented facts, the model must rewrite the passage again, stripping the unauthorized claims before proceeding to final output. This creates a hard-fail condition that blocks fabricated content from reaching the user.

## Automated Enforcement and CI Validation

The prevention of fact invention is not only a prompt-level instruction but also a validated system property maintained through continuous integration.

### Continuous Integration Checks

According to the repository structure, the [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py) script serves as a CI gatekeeper that validates the skill file. This script ensures that [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) contains the required rule sections, verifies that pattern numbers are correct, and enforces file size limits. Additionally, [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) documents that the fact-invention safeguard was formally added in **v2.9.0**, indicating that this behavior is version-controlled and tested as a core feature rather than an emergent property.

## Practical Examples of Fact Preservation

The following scenarios demonstrate how the workflow handles factual content in practice.

### Scenario: Preserving Dates and Locations

When rewriting text containing specific metadata, Humanizer maintains exact values:

```text
Source: "The conference was held in Paris on June 12, 2023."

Humanizer output:
  Draft: "The conference took place in Paris on June 12, 2023."
  Fact-check: "Did the rewrite add or remove any fact...?" → No.
  Final: "The conference took place in Paris on June 12, 2023."

```

The model preserves the date and location without modification, passing the checklist verification.

### Scenario: Handling Missing Information

When source material lacks required context, Humanizer requests clarification rather than inventing details:

```text
Source: "The meeting was a success."

Humanizer output:
  Draft: "The meeting was a success."
  Fact-check: "Did the rewrite add or remove any fact...?" → Yes (missing date).
  Response: "When did the meeting occur?"
  User reply: "It happened on March 3, 2022."
  Final: "The meeting, held on March 3, 2022, was a success."

```

In this instance, the model **did not guess a date**; it asked the user instead, preserving factual integrity through the clarification protocol defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §3.

## Summary

- Humanizer's fact-prevention system is codified in **Rule 3 of [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)**, which explicitly prohibits adding unverified facts, names, numbers, dates, quotes, or citations.
- A **mandatory checklist question** in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §24 forces the model to self-verify that no facts were added or removed during the draft stage.
- The **clarification protocol** requires the model to ask users for missing details or simplify sentences, eliminating the possibility of hallucination.
- **CI validation via [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py)** ensures the skill file structure and rules remain intact across versions.
- The final output gate guarantees that only text passing the fact-check reaches the user, making invention a hard-fail condition.

## Frequently Asked Questions

### What happens if Humanizer detects a missing fact during rewriting?

According to [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §3, the model must either ask the user for the specific missing information or rewrite the sentence to remove the dependency on that detail. It cannot proceed by inventing a plausible-sounding fact to fill the gap.

### Where is the "no invented facts" rule defined in the codebase?

The rule is defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §3, titled "Rule 3 – Do not invent facts." This file serves as the single source of truth for Humanizer's behavior and contains both the prohibition and the remediation workflow for handling missing information.

### How does the validation script ensure the rule remains enforced?

The [`scripts/validate-package.py`](https://github.com/blader/humanizer/blob/main/scripts/validate-package.py) file validates the structure of [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md), ensuring that required sections like Rule 3 exist and that pattern numbering remains consistent. This CI check prevents regression where the fact-prevention rules might be accidentally removed or corrupted during updates.

### Can Humanizer ever add citations or quotes not in the source?

No. Rule 3 explicitly forbids adding "a fact, name, number, date, quote, or citation unless it comes from the source or the user." The final rewrite checklist in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) §24 specifically lists citations and quotes as items that must not be added or removed, ensuring the output contains only verified information from the original text or user clarification.