How Humanizer Ensures Factual Accuracy During Rewriting: A Technical Deep-Dive

Humanizer guarantees factual accuracy through a strict "no-add-facts" rule encoded in its SKILL.md prompt, which explicitly forbids adding any new fact, name, number, date, quote, or citation during the rewrite process.

Humanizer is an open-source tool designed to strip AI-sounding prose from text while preserving its original meaning. According to the blader/humanizer source code, the project achieves this through a carefully engineered prompt system that prioritizes factual fidelity over stylistic flair. The core mechanism resides in SKILL.md, a structured prompt file that governs every stage of the rewriting pipeline.

The Core "No-Add-Facts" Rule in SKILL.md

At the heart of Humanizer's factual accuracy guarantee is an unambiguous directive found at the top of SKILL.md (lines 4–5):

"Rewrite AI‑sounding text so it reads like the writer, not a chatbot. Keep what it says. Do not make anything up."

This foundational instruction sets the boundary for all subsequent operations. Every rewrite pass operates under this constraint, ensuring that the model treats the source text as the sole authoritative source of truth.

The Four-Stage Factual Safety Pipeline

Humanizer implements a systematic mark-tell-draft-check workflow, with explicit safeguards at each stage to prevent fact hallucination.

Stage 1: Mark and Tell — Preserve Existing Claims

During the "mark the tells" and "tell the pattern" steps, the model identifies AI-style linguistic markers without altering factual content. The critical instruction appears at lines 35–38 of SKILL.md:

"Keep every supported claim" and "never add a fact, name, number, date, quote, or citation" unless it already appears in the source.

This explicit enumeration of prohibited additions closes common hallucination vectors. The model cannot infer dates, invent statistics, or append plausible-sounding citations.

Stage 2: Draft with Constraints

The "draft the rewrite" step operates under the same constraint set. The prompt reinforces that any information not present in the source material must remain absent from the output.

Stage 3: Check — Detect Unsupported Additions

The verification stage (lines 38–39) introduces a binary error classification:

  • Unsupported addition → treated as error
  • Lost claim → treated as error unless pattern justifies removal

This creates accountability. The reviewer (whether human or automated) has clear criteria to flag deviations. The only permitted removals are those tied to identified AI-pattern elimination, not substantive content changes.

Knowledge-Limit Disclaimers Prevent Guessing

Lines 25–28 of SKILL.md contain a dedicated knowledge-limit disclaimer pattern:

Never present a guess as a fact. Explicitly note when the source does not provide the information.

This prevents the model from filling gaps with plausible-sounding but unverified information. When data is missing, the output must acknowledge the limitation rather than fabricate completion.

Guard Against Borrowed Authority

A specialized rule at lines 51–54 addresses attribution fabrication:

When a sentence references an unnamed authority, Humanizer removes the claim if the source does not name the real source.

This eliminates sentences like "Experts say..." or "Studies show..." when no specific expert or study is identified in the original text. The rule prevents the common LLM behavior of invoking vague authority to bolster weak claims.

Practical Implementation: Using the Skill File

The factual accuracy rules are not abstract documentation—they are operationalized through direct prompt injection. Here is how to invoke Humanizer with full safety protocols enabled:


# Load SKILL.md as the system prompt to enforce all factual constraints

import yaml
import json
import requests

with open("SKILL.md", "r") as f:
    skill_prompt = f.read()

def humanize(text: str) -> str:
    payload = {
        "model": "gpt-4o-mini",
        "messages": [
            {"role": "system", "content": skill_prompt},
            {"role": "user", "content": text}
        ],
        "max_tokens": 800
    }
    response = requests.post(
        "https://api.openai.com/v1/chat/completions",
        json=payload
    )
    return response.json()["choices"][0]["message"]["content"]

# Example: Text with specific factual claims

original = """
The company was founded in 1995 and quickly became the market leader.
It today employs more than 10000 people worldwide.
"""
print(humanize(original))

Expected behavior: The model preserves founded in 1995 and employs more than 10000 people exactly, removing only AI-style phrasing like "quickly became the market leader" if it matches an identified pattern.

OpenAI-Compatible Agent Configuration

For production deployments, agents/openai.yaml provides a declarative interface that automatically loads the safety-constrained prompt:

name: Humanizer
description: |
  Rewrite AI‑sounding prose while guaranteeing factual integrity.
metadata:
  version: "3.0.0"
prompt: |
  {{ read_file("SKILL.md") }}

When this agent is invoked through Claude-compatible platforms or OpenAI-compatible endpoints, the prompt field injects the complete SKILL.md, ensuring identical factual-safety enforcement across all deployment contexts.

Validation Infrastructure

The scripts/validate-package.py script provides automated verification that:

  • Metadata version matches SKILL.md versioning
  • README documentation reflects current prompt constraints
  • No drift occurs between published interfaces and actual safety rules

This synchronization check ensures that the factual accuracy guarantees documented for users remain aligned with the operational prompt.

Key Files Governing Factual Accuracy

File Purpose
SKILL.md Core prompt with all factual-safety directives and pattern definitions
agents/openai.yaml OpenAI-compatible wrapper that loads SKILL.md as default prompt
scripts/validate-package.py Validation ensuring rules stay synchronized across artifacts

Summary

Humanizer ensures factual accuracy during rewriting through five interconnected mechanisms:

  • Explicit prohibition of new facts, names, numbers, dates, quotes, or citations in SKILL.md (lines 35–38)
  • Dual-error detection for unsupported additions and lost claims during the check stage (lines 38–39)
  • Knowledge-limit disclaimers that block guess-presented-as-fact (lines 25–28)
  • Authority attribution rules that remove unnamed-source claims (lines 51–54)
  • Foundational "keep what it says" directive at the prompt's opening (lines 4–5)

These constraints are enforced through prompt engineering rather than post-hoc filtering, making factual fidelity an inseparable property of the rewrite process itself.

Frequently Asked Questions

How does Humanizer prevent hallucination of statistics?

The SKILL.md prompt explicitly forbids adding "number" or "date" unless already present in the source (lines 35–38). Any statistic not found in the input text is treated as an unsupported addition and flagged as error during the check stage.

Can Humanizer add citations to improve the text?

No. The skill strictly prohibits adding "quote, or citation" unless it already appears in the source (lines 35–38). This prevents the common LLM behavior of fabricating plausible-sounding academic references.

What happens if the source text contains factual errors?

Humanizer preserves the error. The "keep what it says" directive (lines 4–5) and prohibition against guessing (lines 25–28) require faithful reproduction of source content, including its imperfections. The tool rewrites style, not substance.

How is the factual accuracy system kept up to date?

The scripts/validate-package.py script continuously verifies alignment between SKILL.md, README.md, and agent configuration files. This prevents documentation drift and ensures deployed agents enforce the current safety rules.

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 →