What Style Patterns Does Humanizer Look For to Identify AI Writing?
Humanizer identifies 22 distinct style patterns—including excessive em-dashes, bold overuse, title case headings, chatbot phrases, and faux-candid openings—to detect and rewrite AI-generated text into natural human prose.
The open-source Humanizer skill (available at blader/humanizer) provides a systematic framework for detecting mechanical writing habits typical of large language models. According to the source code in SKILL.md, the tool checks for specific style patterns that create an "AI-y" feel, applying lexical rules to transform robotic prose into authentic human language.
Style Patterns vs. Content Patterns in Humanizer
Humanizer organizes its detection rules into two categories defined in SKILL.md. Content patterns (rules 1-13) target factual or structural habits like inflated claims and vague sources. Style patterns (rules 14-35) focus on wording, punctuation, formatting, and rhetorical devices that signal machine-generated text.
The detection engine processes these patterns sequentially, first scanning for content issues, then applying the 22 style-specific rules starting at line 79 in SKILL.md.
The 22 Style Patterns Humanizer Detects
Humanizer evaluates text against specific lexical markers defined in SKILL.md (lines 81-286). These patterns target punctuation quirks, formatting excesses, and rhetorical tells common in LLM output.
Punctuation and Formatting Tics
- Em and en dashes: Flags "—" or "–" characters (including spaced variants or "--") unless the writer's sample uses them (
SKILL.md, lines 81-90). - Curly quotation marks: Detects smart quotes ("…") instead of straight quotes ("...") (
SKILL.md, lines 125-132). - Emojis: Targets decorative emojis in headings or list items (
SKILL.md, lines 117-124).
Visual Formatting Excesses
- Too much bold text: Identifies unnecessary bold markup (e.g.,
**OKRs**) that adds no semantic meaning (SKILL.md, lines 95-100). - Lists with bold mini-headings: Finds vertical lists where every item starts with a bold label and colon (
SKILL.md, lines 101-108). - Title case in headings: Flags capitalizing every main word (e.g., "## Strategic Negotiations And Global Partnerships") (
SKILL.md, lines 111-116).
Conversational and Chatbot Residue
- Chatbot text left in the answer: Catches phrases like "I hope this helps", "Let me know", or "Here is …" that belong to conversational agents (
SKILL.md, lines 133-140). - Overly agreeable tone: Detects excessive praise or agreement before answering (e.g., "Great question!") (
SKILL.md, lines 151-158). - Fake-candid openings: Identifies staged intros like "Honestly?" or "Look" that act as faux-confessions (
SKILL.md, lines 257-266).
Meta-Commentary and Disclaimers
- Knowledge-limit DISCLAIMERS: Targets statements revealing model cutoff dates or unverifiable guesses (e.g., "as of 2023") (
SKILL.md, lines 141-150). - Writing about the previous version: Flags describing past implementations rather than current behavior (
SKILL.md, lines 227-236).
Language Bloat and Hedging
- Filler phrases: Identifies wordy constructions like "In order to achieve this goal" instead of "To achieve this" (
SKILL.md, lines 165-172). - Too many qualifiers: Catches repetitive hedge words ("could potentially", "might arguably") that dilute certainty (
SKILL.md, lines 173-180). - Hyphen-heavy word pairs: Flags overuse of hyphenated compounds ("high-quality", "data-driven") especially after the noun (
SKILL.md, lines 189-198).
Rhetorical Contrivances
- Pretending to reveal a deeper truth: Detects phrases that make ordinary claims sound profound ("The real question is…") (
SKILL.md, lines 199-206). - Announcing the next point: Targets introductory fluff like "Let's dive in" or "Here's what you need to know" that merely announces rather than states (
SKILL.md, lines 207-216). - Heading repeated in the first sentence: Flags sentences that simply restate the preceding heading (
SKILL.md, lines 217-226). - Forced punchlines and dramatic fragments: Identifies chains of short, punchy sentences that feel contrived (
SKILL.md, lines 237-246). - Formulaic sayings: Catches cliché "X is the Y of Z" constructions that lack concrete detail (
SKILL.md, lines 247-256). - Answering objections no one raised: Detects introduction of non-existent objections ("This isn't mainly about …") (
SKILL.md, lines 267-276). - Rejecting fake alternatives: Flags mention of a "tempting approach" that never existed and then dismissing it (
SKILL.md, lines 277-286). - Generic positive endings: Targets vague optimism adding no factual value (e.g., "The future looks bright") (
SKILL.md, lines 181-188).
How Humanizer Processes Style Pattern Detection
The detection engine operates through a five-step lexical pipeline defined entirely within the SKILL.md prompt.
- Parse input: The skill receives raw text via the agent's
humanizerprompt. - Pattern matching: Each style pattern uses simple regex or keyword lists (e.g., "—", "–",
\bHonestly\?\b,**\w+**). The skill iterates through patterns 14-35, marking matches. - Rewrite: For each flagged occurrence, the skill replaces it with human-centric wording from the "After" column in
SKILL.md, preserving original meaning. - Verification: The system asks two internal questions—"What still sounds AI-generated?" and "Did the rewrite add or remove any fact?"—to catch missed patterns or factual drift.
- Final output: The rewritten text returns to the caller.
Because the logic lives entirely in the prompt markup, no external libraries are required. The host LLM (Claude, OpenAI, etc.) interprets the rules directly.
Implementing Humanizer in Your Workflow
You can invoke Humanizer through direct prompts, Claude plugins, or programmatic API calls.
Direct Prompt Usage
You are Humanizer.
Rewrite the following text and remove AI style patterns:
<Insert your text here>
The model applies the 35 patterns automatically and returns the cleaned version.
Claude Plugin Configuration
Configure the plugin via .claude-plugin/plugin.json:
{
"name": "humanizer",
"description": "Remove AI writing patterns from supplied text",
"skill": "SKILL.md"
}
Then invoke via API:
curl -X POST https://api.claude.ai/v1/messages \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"model": "humanizer",
"messages": [
{"role": "user", "content": "Rewrite this: ..."}
]
}'
Python Integration
import openai
prompt = """You are Humanizer.
Rewrite the following text and remove AI style patterns:
""" + raw_text
response = openai.ChatCompletion.create(
model="humanizer",
messages=[{"role": "user", "content": prompt}]
)
humanized = response.choices[0].message.content
print(humanized)
Core Source Files
The detection logic resides in these repository files:
SKILL.md: Contains all 35 patterns (1-13 content, 14-35 style) with "Before → After" examples and rewrite procedures..claude-plugin/plugin.json: Manifest file pointing the Claude agent toSKILL.md.scripts/validate-package.py: Validation script ensuring consistency betweenSKILL.md,README.md, and the plugin manifest.
Summary
- Humanizer identifies 22 style patterns (rules 14-35) distinct from content patterns to detect AI-generated prose.
- These patterns target punctuation quirks (em-dashes, curly quotes), formatting excesses (bold overuse, title case), and rhetorical tells (fake-candid openings, chatbot residue).
- Detection uses lexical matching via regex and keyword lists defined in
SKILL.md, requiring no external dependencies. - The skill processes text through a five-step pipeline: parsing, pattern matching, rewriting, verification, and final output.
- Implementation options include direct prompts, Claude plugins, or programmatic API integration.
Frequently Asked Questions
What is the difference between content patterns and style patterns in Humanizer?
Content patterns (rules 1-13) target factual or structural habits like inflated claims and name-dropping, while style patterns (rules 14-35) focus on wording, punctuation, formatting, and rhetorical devices that give text an "AI-y" feel. Both categories are defined in SKILL.md.
How does Humanizer handle punctuation like em-dashes and curly quotes?
Humanizer flags em-dashes (—), en-dashes (–), and curly quotation marks ("…") as style patterns unless the user's writing sample demonstrates consistent intentional use. The skill replaces these with standard hyphens or straight quotes during the rewrite phase.
Can I customize which style patterns Humanizer checks for?
Currently, the detection rules are hardcoded in SKILL.md as a fixed list of 35 patterns. To customize behavior, you would need to fork the repository and modify the pattern definitions or "Before → After" examples in the skill file directly.
Is Humanizer available as a standalone Python library or only as an LLM skill?
Humanizer operates as an LLM skill (prompt-based) rather than a standalone library. The logic resides entirely in SKILL.md and is interpreted by the host language model (Claude, OpenAI, etc.), meaning it requires an LLM backend to function and cannot run as independent Python code without API calls.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →