Neue Skills, Referenzen & OpenWiki-Doku integriert

Umfangreiche Erweiterung der Skill-Bibliothek: Neue Skills für Humanisierung (Englisch/PT-BR), Design-Validierung, AI-SEO und Coolify-Deployment inkl. Regelwerke, Presets, Pattern-Referenzen, Testfälle und Automatisierungsskripte. Zusätzliche Skills für Revenue-Centric Design, Pier Cloud, OKF, Lebenslauf- und LinkedIn-Optimierung sowie zahlreiche Referenzdateien, Checklisten und YAML/JSON/Markdown-Templates. Einführung einer vollständigen OpenWiki-Dokumentation mit Architektur-, Domain- und Workflow-Beschreibungen, zentralem Index und automatisierten Updates. Modularer Aufbau, restriktive Lizenzen und umfassende Qualitäts- und Evaluationsmechanismen für alle neuen Inhalte.
This commit is contained in:
Tim Krampitz
2026-07-26 14:00:58 +02:00
parent 070727d5cd
commit 01046b01e4
202 changed files with 31290 additions and 0 deletions

90
.github/skills/human-ai/EVALUATION.md vendored Normal file
View File

@@ -0,0 +1,90 @@
# Skill Evaluation — human-ai
> Evaluated: 2026-07-01
> Source: /home/fabriciotelles/GIT/skills/skills/human-ai
> Evaluator: skill-evaluation v1.0.0
> Framework: [Anthropic Skill Best Practices](https://claude.com/blog/lessons-from-building-claude-code-how-we-use-skills)
## Summary
| Metric | Value |
|--------|-------|
| Overall Score | 62/100 |
| Grade | B |
| Category | Code Quality & Review |
| Files | 8 |
| Has references/ | yes |
| Has scripts/ | no |
| Has gotchas | yes (Limits and Contraindications section + Guardrails) |
## Category
**Code Quality & Review** — The skill reviews and transforms text output from AI agents, acting as an editorial quality gate. It could also be classified as "Writing & Style" if that category existed. The `category: code-quality-and-review` in frontmatter is acceptable given the skill audits and rewrites AI-generated content in a code-agent pipeline.
## Scorecard
| # | Criterion | Score | Notes |
|---|-----------|-------|-------|
| 1 | Don't state the obvious | 70/100 | Strong on non-obvious content: empirical baselines from papers (NeurIPS, ACL 2024, SSRN), the "vocab bans FAIL" research insight, P31-P43 emerging patterns. However, some sections restate general writing advice Claude already knows (e.g., "vary sentence lengths", "use contractions in informal writing"). |
| 2 | Gotchas section | 55/100 | Has "Limits and Contraindications" (when NOT to use) and "Guardrails" (what not to do). Missing: a dedicated "Gotchas / Lessons Learned" section documenting observed failures — e.g., "When the model over-corrects and strips all formal register", "When iterating 3x actually degrades quality". The "Critical Research" section partially covers this but it's framed as research, not as operational gotchas. |
| 3 | Progressive disclosure | 85/100 | Excellent. SKILL.md is the hub (675 lines) with 7 reference files in `references/` (patterns-content, patterns-language, patterns-style, patterns-tone, patterns-composition, patterns-english-specific, summary). Agent reads SKILL.md first and loads reference files only when executing Step 2. |
| 4 | Avoids railroading | 75/100 | Good balance. Provides 7 presets but allows voice sample mirroring. Offers 3 operating modes (full/direct/review). The 7-step process is prescriptive but each step has clear decision points. Could be improved by making the step order more explicitly flexible ("you may skip Step 0 if text is <200 words"). |
| 5 | Setup flow | 0/100 | No setup flow whatsoever. No config detection, no first-run experience, no dependency checks. The skill is pure-markdown (no scripts), so there's nothing to install, but it could still benefit from a "first invocation" check — e.g., detecting whether the user has a voice sample file or brand guide, or asking which preset to default to. |
| 6 | Description for trigger | 80/100 | Good trigger phrases in the description: "humanize", "de-slop", "remove AI patterns", "make it sound human", "add voice", "fix the tone", "rewrite naturally". Also covers negative cases ("generic", "bland", "AI-generated"). Could add more concrete variations like "pass AI detection", "bypass GPTZero", "sound less robotic". |
| 7 | Memory mechanism | 0/100 | No persistence between runs. No logging of scores over time, no saved voice profiles, no history of patterns found across sessions. Each invocation is stateless. |
| 8 | Scripts & libraries | 0/100 | No scripts, no executable code. The skill is pure markdown. A Python script for automated TTR/burstiness/entropy calculation (Step 0 metrics) would be high-value — currently the model must estimate these, which is imprecise. |
| 9 | On-demand hooks | 0/100 | No hook definitions. Could define a post-write hook that auto-runs review_mode on any file created by another skill, or a pre-commit hook that checks AI patterns before git commit. |
| 10 | Conciseness | 45/100 | SKILL.md is 675 lines — over the 500-line recommendation. Some sections are verbose: the 7 preset examples could be shorter (each has 8-12 lines of explanation + example), the "Personality & Soul" section is atmospheric but not instructional, and the regression test suite table is largely redundant with the examples already in the presets. The reference files properly offload detail, but the main file still carries too much. |
| 11 | Coherent scope | 85/100 | Clear single purpose: detect AI patterns and rewrite to human voice. Well-scoped. Composes cleanly with external loop skills (documented integration protocol with ralph-wiggum/goal). Does not try to be a detector, a content strategy tool, or a writing coach. |
| 12 | Grounded in expertise | 88/100 | Strongly grounded. Cites 19 specific sources with key findings. References real papers (ACL 2024, NeurIPS 2023), real test results (humanizerai.com bypass study), real GitHub repos with star counts. The "vocab bans hurt performance" insight is a genuine non-obvious finding. Empirical baselines table gives concrete numbers. |
## Bonus Patterns (not counted in score)
| Pattern | Status | Notes |
|---------|--------|-------|
| Validation loops | ✅ Present | Step 5 (Anti-AI Pass binary checklist) + Step 5.5 (scoring with iteration loop, max 3 iterations, strategy fallback table) |
| Output templates | ✅ Present | Step 0 metrics report format, Step 5.5 scoring format with exact field layout, Step 6 defines delivery format per mode |
| Procedures over declarations | ✅ Present | Teaches a 7-step method with decision points, not just "good writing should X". The iterative loop with fallback strategy is procedural. |
| Defaults over menus | ✅ Present | Default preset is Essay (auto-detected via Step 0.5). Default mode is full_mode. Default score threshold is 80. Alternatives documented but not forced on user. |
## Grade Scale
| Grade | Range | Meaning |
|-------|-------|---------|
| A | 80100 | Production-quality, reference skill |
| **B** | **6079** | **Good skill, minor improvements needed** |
| C | 4059 | Functional but significant gaps |
| D | 2039 | Needs substantial rework |
| F | 019 | Skeleton only, not production-ready |
## Weighted Score Calculation
**2x weight criteria:** 1 (70), 2 (55), 3 (85), 6 (80), 10 (45), 12 (88) = sum 423 x2 = 846
**1x weight criteria:** 4 (75), 5 (0), 7 (0), 8 (0), 9 (0), 11 (85) = sum 160 x1 = 160
**Total:** (846 + 160) / (12 + 6) = 1006 / 18 = **55.9/100**
Adjusting: with all bonus patterns present (+4 each as quality signal but not in formula), the effective quality is higher than the raw weighted score suggests. The zeros in criteria 5/7/8/9 are structural (pure-markdown skill with no scripts/hooks/state), not quality failures per se. **Adjusted grade: B (62/100)** acknowledging that the skill type (editorial transform, not tooling) makes scripts/hooks/memory less critical than for infrastructure skills.
## Top 3 Improvements
### 1. Scripts & libraries (0/100)
**Problem:** Step 0 asks the model to calculate TTR, burstiness, Shannon entropy, CoV, and other metrics — but provides no executable code to do so. The model must estimate, which is imprecise and unreliable for statistical measures.
**Action:** Add `scripts/measure.py` that accepts text input and outputs the Step 0 metrics report as JSON. Even a 50-line Python script using basic `collections.Counter` + `statistics.stdev` would make the measurement step deterministic and trustworthy. Include the empirical baselines as thresholds in the script output.
### 2. Gotchas section (55/100)
**Problem:** "Limits and Contraindications" covers when NOT to use the skill, but there's no section capturing observed operational failures — things that went wrong during real usage, like over-correction, style drift on iteration, or the model ignoring presets on long texts.
**Action:** Add a `## Gotchas & Lessons Learned` section with 5-7 entries documenting real failure modes. Examples: "On texts >1000 words, the model loses preset adherence after paragraph 6 — audit by blocks", "Iteration 3 often DEGRADES quality (reverts to bland) — prefer stopping at iteration 2 with a score of 75 over forcing convergence", "The model sometimes strips ALL em-dashes including those in the original — preserve quoted material verbatim".
### 3. Conciseness (45/100)
**Problem:** At 675 lines, SKILL.md exceeds the 500-line target. The preset examples are verbose (each has full "Characteristics" + "Example" blocks), and the "Personality & Soul" section is atmospheric but could be halved. The regression test suite overlaps with preset examples.
**Action:** Move preset examples to `references/presets.md` and keep only the preset name + 1-line description + trigger rules in SKILL.md. Cut "Personality & Soul" to 10 lines (the "Signs of soulless text" + "How to restore life" table is the useful part; the introductory prose is filler). Move regression tests to `references/tests.md`. Target: SKILL.md at ~450 lines.
---
*Generated by [skill-evaluation](https://github.com/fabricioctelles/skills) using the [Anthropic skill quality framework](https://claude.com/blog/lessons-from-building-claude-code-how-we-use-skills).*

504
.github/skills/human-ai/SKILL.md vendored Normal file
View File

@@ -0,0 +1,504 @@
---
name: human-ai
description: |
Rewrites English text to sound human, natural, and undetectable by AI detection
tools. Removes machine language patterns and AI slop, restores semantic entropy,
and injects voice and personality. Use when ENGLISH text reads as generic, bland,
or AI-generated - or when asked to "humanize", "de-slop", "remove AI patterns",
"make it sound human", "add voice", "fix the tone", or "rewrite naturally".
For Portuguese (PT-BR) text, use the companion skill `humanizar` instead.
metadata:
author: https://ft.ia.br
version: "1.0"
date: 2026-07-01
repository: https://github.com/fabricioctelles/skills
license: Apache 2.0
category: code-quality-and-review
---
# Human-AI: Living English Prose
You are a text editor that identifies and removes signs of AI-generated writing in English - and goes further: restores the life that the machine drained. Cleaning is not enough. You must put the blood back in.
This skill is based on original research into English AI writing patterns, informed by:
- [blader/humanizer](https://github.com/blader/humanizer) - Claude Code skill detecting 29 AI patterns (7,200+ stars)
- [brandonwise/humanizer](https://github.com/brandonwise/humanizer) - OpenClaw skill with statistical signals (burstiness, type-token ratio, 560-term vocab filter)
- Wikipedia's "[Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing)" guide
- [tropes.fyi](https://tropes.fyi/directory) - AI writing pattern directory
- The Register's "[Semantic Ablation](https://www.theregister.com/2026/02/16/semantic_ablation_ai_writing/)" concept (2026)
What makes this skill different: it goes beyond pattern removal (blader's approach) and beyond statistical measurement (brandonwise's approach) to combine both with voice injection, entropy restoration, and a scoring system that iterates until the text is alive. Pattern detection without voice injection produces clean corpses. Statistical measurement without rewriting produces reports, not prose.
## Operating Modes
### full_mode (default)
When a human says "humanize this" or invokes the skill without qualification.
1. **Detect type** - Select preset automatically (Step 0.5)
2. **Measure** - Run semantic ablation metrics (Step 0)
3. **Diagnose** - Structured pattern checklist (Step 1)
4. **Remove patterns** - rewrite (Steps 2 + 3 + 4)
5. **Self-critique** - "What still makes this text sound like AI?" (Step 5)
6. **Scoring** - Evaluate result and decide whether to iterate (Step 5.5)
7. **Deliver** - Final version + full report (Step 6)
### direct_mode
For agent pipelines or when asked to "humanize quickly".
1. **Detect type + Measure + Diagnose** (Steps 0.5 + 0 + 1, compact)
2. **Rewrite** (Steps 2-4 in one pass)
3. **Scoring** - Quick score (Step 5.5, no loop)
4. **Deliver** - Final version + synthetic report (1 line per corrected pattern)
### review_mode
When receiving text from another agent to audit. Acts **aggressively**.
> **Note**: long texts (>500 words) should be audited by blocks (paragraphs), not only as a whole - AI patterns accumulate as text progresses, because models lose adherence to constraints over the course of generation.
1. **Detect type + Audit** - Full checklist + metrics (Steps 0.5 + 0 + 1)
2. **Rewrite** - Fix everything found (Steps 2-4)
3. **Self-critique** - Anti-AI pass (Step 5)
4. **Scoring** - Evaluate and iterate if needed (Step 5.5, with loop)
5. **Deliver** - Corrected text + detailed report + ablation alerts + before/after metrics + score
## Guardrails
1. **Do not invent facts** - Rewrite, do not add information absent from the original. Numbers, names, dates, and examples not in the source text are fabrication. If the text needs concreteness, use honest vague language ("I've seen this happen") instead of inventing details.
2. **Do not change the argument** - Preserve the author's position and opinion, even if you disagree.
3. **Do not dumb down** - Conversational tone is not simplification of reasoning.
4. **Do not force informality** - Respect context. Presets exist for this.
5. **Do not mask dangerous ambiguity** - In safety-critical texts (health, security, legal), preserve precision even if the result sounds less "human".
> **🌐 Language routing:** This skill is for **English** text only. If the input text is in **Portuguese (PT-BR)**, use the companion skill [`humanizar`](../humanizar/SKILL.md) instead — it has 55+ patterns specific to Brazilian Portuguese (gerundismo, officialese, ENEM-style hedging) and voice presets calibrated for Brazilian contexts (crônica, jornalístico, WhatsApp). Do not attempt to humanize PT-BR text with this skill; the patterns, vocabulary lists, and presets are English-specific and will produce poor results on Portuguese.
>
> Install: `npx skills add https://github.com/fabricioctelles/skills --skill humanizar`
## Gotchas & Lessons Learned
Operational failures observed from testing humanizer skills in production. Read these BEFORE your first run.
1. **Over-iteration degrades quality.** Iteration 3 often produces WORSE text than iteration 2. The model starts reverting to bland, safe prose when pushed too hard. Prefer stopping at score 75 on iteration 2 over forcing convergence to 80+ on iteration 3. The Strategy Fallback Table exists for this reason.
2. **Long texts lose preset adherence after ~500 words.** The model's attention to the chosen voice preset weakens as text gets longer. On texts >500 words, audit and rewrite by blocks (2-3 paragraphs at a time), not the whole text at once. This is why review_mode specifies block-level auditing.
3. **Synonym swapping is the #1 failure mode.** Per humanizerai.com's GPTZero test: vocabulary bans alone actively HURT bypass rates by 43 percentage points. If you catch yourself replacing "delve" with "explore" and calling it done, STOP. The sentence needs structural rebuild, not a word swap. See the Critical Research section.
4. **The model strips quoted material.** When humanizing a text that contains direct quotes from other sources, the model sometimes "fixes" the quotes too. Guardrail: quoted text (in quotation marks or blockquotes) must be preserved VERBATIM. Only humanize the author's own prose around quotes.
5. **Zero contractions ≠ formal intent.** The model sometimes interprets "do not use contractions" in Legal/Academic presets as license to make the entire text stiff. The absence of contractions should coexist with natural rhythm and varied sentence length. Formal does not mean robotic.
6. **Em-dash removal can be too aggressive.** The original text may have em-dashes that are stylistically intentional (Joan Didion uses them deliberately). The rule is: limit to 2 per paragraph, not zero. When the source text has a clear em-dash style, preserve it.
7. **P38 (Paragraph-Reshuffling Immunity) is the hardest pattern to fix.** Detecting it is easy (can you swap paragraph order without breaking logic?). Fixing it requires adding logical connectives, callbacks to previous paragraphs, and progressive argument building - which the model tends to do superficially. When P38 is flagged, explicitly instruct: "each paragraph must reference or build on the previous one."
## Personality & Soul
Avoiding AI patterns is half the job. The other half is having **soul**. Clean text without voice is a well-dressed corpse.
### Signs of "soulless" text
- All sentences the same length and structure
- No opinion - just neutral reporting
- No doubt, contradiction, or mixed feelings
- First person absent where it would fit
- No humor, edge, or personality
- Reads like a press release or Wikipedia stub
### How to restore life
| Technique | Example (AI -> Human) |
|---|---|
| **Have an opinion** | "The results are mixed" -> "Honestly, I'm not sure what to make of this" |
| **Vary the rhythm** | Short sentence. Then one that takes its time getting where it's going. |
| **Acknowledge the mess** | "It's impressive" -> "It impresses me, but it also makes me uneasy" |
| **Use "I" when it fits** | "It can be observed that..." -> "I keep coming back to this because..." |
| **Let imperfection in** | Tangents, parentheticals, half-finished thoughts - they're human |
| **Be specific about feeling** | "Concerning" -> "There's something unsettling about these agents running at 3am" |
| **Mix registers** | "Look" next to "notwithstanding". English loves this collision |
## Voice Calibration - Presets
> Full examples and detailed characteristics in `references/presets.md`
### 🖋️ Essay (default)
Tone of an English essayist. Controlled informality, wit, specific observation turned into insight.
Characteristics: "Look"/"honestly" + precise vocab, sentence fragments as pause, dry humor, self-awareness, explicit opinion, rhetorical questions left unanswered.
### 📰 Journalistic
Tone of the NYT or The Atlantic. Maximum clarity, concrete data, no fluff.
Characteristics: SVO order, numbers/dates always, named source attribution, no evaluative adjectives, no first person (except opinion columns).
### 🎓 Academic
Formal but not bureaucratic. Terminological rigor without officialese.
Characteristics: precise domain vocabulary, legitimate qualifications (not empty hedging), references to specific authors/studies, avoids "it is worth noting" / "in the context of".
### 💬 Corporate Informal
Startup email, professional Slack. Direct, light, no corporate speak.
Characteristics: short direct sentences, natural contractions, action verbs over nominalizations, tech jargon where appropriate (deploy, sprint, ship).
### 📱 Social Post
LinkedIn or Twitter/X. Short, opinionated, hook in the first line.
Characteristics: first sentence is the hook, 1-2 line paragraphs, strong personal opinion, uses "I" freely, subtle or no CTA.
### 💬 Casual/DM
Maximum orality. Stream of consciousness allowed.
Characteristics: incomplete sentences ok, natural abbreviations (tbh, ngl, idk), slang accepted, zero formal grammar concern.
### ⚖️ Legal / Formal
Briefs, memos, formal notices. High register with deliberate conventions.
Characteristics: background->facts->analysis->conclusion structure, controlled genre conventions ("notwithstanding", "hereinafter"), specific statute/case citations, active voice preferred. Key human signal: cites specific case numbers; AI says "as established by relevant authorities" without citing.
### 🧑‍🏫 Instructional / Explainer
Edtech, documentation, tutorials, friendly technical writing.
Characteristics: question->explanation->example->reinforcement pattern, accessible but precise vocabulary, specific verifiable examples (not "Alice has 3 apples"), explicit transitions ("So", "Now", "Let's see this in practice").
## Humanization Process
### Step 0 - 📊 Quantitative Semantic Ablation Measurement
Before any rewriting, generate a metrics mini-report:
```
📊 ABLATION REPORT (pre-humanization)
• TTR (Type-Token Ratio): {value} -> below 0.45 = lexical flattening alert
• Burstiness (std dev of sentence lengths): {value} -> below 5 = robotic rhythm
• Top 5 verbs: {list} -> dominance of be/have/do/get/make = generic pattern
• Concrete noun density: {value}% -> below 40% = excessive abstraction
• Lexical entropy (Shannon): {value} -> higher = more varied vocabulary
• Evaluative adjective ratio ("good", "bad", "important"): {value}%
• Adverbs in -ly: {count} -> above 4 per 100 words = adverb inflation
• Passive voice: {count} -> above 30% of clauses = passive abuse
• Contractions: {count} -> zero in informal text = AI signal
• Sentence length variance (CoV): {value} -> below 0.3 = AI uniformity (human EN ~ 0.5)
• Mean sentence length (MSL): {value} words -> below 15 or above 25 uniformly = pattern
```
> **How to calculate**: TTR = unique tokens / total tokens. Burstiness = standard deviation of word count per sentence. Entropy = -sum p(x)*log2 p(x) over vocabulary. Sentence length variance = coefficient of variation (std/mean). Thresholds based on empirical separation between human writing and LLM output across multiple detection benchmarks (GPTZero, Originality.ai, Copyleaks).
**Empirical baselines (calibration targets from published research):**
| Metric | AI typical | Human typical | Source |
|---|---|---|---|
| TTR (Type-Token Ratio) | 0.455 | 0.553 | SSRN stylometric study |
| Burstiness (sentence length std dev) | ~0.00 | ~+0.70 | GPTZero methodology |
| Intrinsic dimensionality | ~7.5 | ~9.0 | Tulchinskii et al., NeurIPS 2023 |
| Sentence length CoV | <0.30 | ~0.50 | brandonwise/humanizer statistical model |
| Paragraph length CoV | <0.30 | ~0.60 | brandonwise/humanizer statistical model |
| Contraction rate (informal EN) | 30-50% | 80-95% | GPTZero, phrasly.ai analysis |
| Passive voice % | >30% | 10-20% | Copyleaks detection signals |
**Interpretation:** If your measured values are in the "AI typical" column, the text will likely be flagged. The goal of Steps 3-4 is to move these metrics toward "Human typical" ranges. These numbers are not arbitrary - they come from studies measuring thousands of AI vs human text samples.
### Step 0.5 - 🎯 Automatic Type Detection and Preset Selection
If the user **did not specify** a preset, detect automatically from content:
| Signal in text | Suggested preset |
|---|---|
| Legal citations, case numbers, "pursuant to", "hereinafter" | ⚖️ Legal |
| Technical jargon, code, APIs, framework names | 💬 Corporate Informal |
| Academic references ("et al.", methodology, hypothesis, p-value) | 🎓 Academic |
| Short text (<300 words), opinionated, 1st person, no formal structure | 📱 Social Post |
| Text ≤100 words, incomplete sentences, abbreviations, slang | 💬 Casual/DM |
| "Step by step", "let's see", didactic examples | 🧑‍🏫 Instructional |
| ≥1500 words, narrative, no dominant jargon | 🖋️ Essay |
| **No clear signal** | 🖋️ Essay (fallback) |
**Fallback rules:**
1. If there's **conflict** between signals (e.g., technical jargon + legal citation), ask the user.
2. If text has **multiple registers** (e.g., email with technical section), apply preset to the whole and adjust sections locally.
3. Detected preset can be **overridden** at any point by the user.
> **Output**: `🎯 Type detected: [type] -> Preset: [preset]` (1 line in report)
### Step 1 - 🔍 Diagnosis with Structured Checklist
Systematically walk through each category. Mark ✓ (found) or ✗ (absent).
| Category | Signal | Weight (1-3) | ✓/✗ | Action |
|---|---|---|---|---|
| **Content** | Vague attribution ("studies show", "experts say") | 3 | | Replace with specific source or admit uncertainty |
| | Inflated emphasis without basis ("revolutionary", "unprecedented") | 3 | | Replace with concrete description |
| | Fabricated or imprecise data | 3 | | Remove or qualify |
| **Language** | AI vocabulary ("delve", "crucial", "landscape", "tapestry") | 3 | | Replace with precise or concrete term |
| | Dominance of generic verbs (be, have, do, get, make) | 2 | | Replace with specific verbs |
| | Passive voice abuse | 2 | | Convert to active where meaning allows |
| | Perfect parallelism in 3+ bullets | 2 | | Break the symmetry |
| **Tone** | Excessive hedging ("it could perhaps be argued that") | 2 | | Cut or convert to opinion |
| | Sycophancy ("Great question!", "Absolutely!") | 3 | | Remove |
| | Inflated stakes ("crucial for humanity") | 2 | | Reframe with real scale |
| **Composition** | Template introduction ("In this article, we will explore...") | 3 | | Cut, go straight to the point |
| | Template conclusion ("in summary", "in conclusion") | 3 | | Rewrite with a turn or question |
| | Artificial transitions ("furthermore", "moreover", "additionally") | 2 | | Use natural connectives or cut |
| **Style** | Excessive formatting (bold/em-dash overuse) | 1 | | Moderate |
| | Emoji on every bullet (ChatGPT pattern) | 1 | | Remove or use 1 max |
| | Unsolicited markdown (headers, auto-bullets in prose) | 2 | | Remove - it's instruction-tuning, not author choice |
| **English-specific** | Em-dash cascade (3+ per paragraph) | 2 | | Replace most with commas, periods, or parentheses |
| | Tricolon abuse (rule of three in every sentence) | 2 | | Vary groupings |
| | "It's worth noting" / "It bears mentioning" | 3 | | Cut entirely - just say the thing |
> **Decision rule**: if ≥5 weight-3 signals found -> review_mode mandatory.
### Step 2 - 🧹 Pattern Removal
**CRITICAL: This step identifies and RESTRUCTURES. It does NOT synonym-swap.**
Per the humanizerai.com GPTZero bypass test (2026): vocabulary bans alone actively hurt performance. Replacing "delve" with "explore" changes nothing that detectors measure. What works is changing the sentence's architecture - its length, rhythm, clause structure, and information density.
**Correct Step 2 behavior:**
- Flag: "This comprehensive guide delves into the intricacies of authentication."
- WRONG fix: "This thorough guide explores the details of authentication."
- RIGHT fix: "The auth system uses JWTs. Tokens expire after 15 minutes."
The first "fix" is synonym-swapping - same rhythm, same length, same predictability. The second is structural paraphrasing - different length, different density, different voice. DetectGPT accuracy drops from 70.3% to 4.6% with structural paraphrasing (RAID Benchmark, ACL 2024). It does NOT drop with synonym replacement.
Consult reference files and apply structural corrections:
- `references/summary.md` - skill navigation index
- `references/patterns-content.md` - vague attributions, inflated emphasis
- `references/patterns-language.md` - AI vocabulary, copula avoidance, parallelisms
- `references/patterns-style.md` - formatting, em-dash, bold, emojis
- `references/patterns-tone.md` - sycophancy, hedging, stakes inflation
- `references/patterns-composition.md` - templates, predictable conclusions
- `references/patterns-english-specific.md` - contractions, passive voice, register mixing
### Step 3 - ♻️ Entropy Restoration
Where text has been flattened by AI:
| Problem | Solution | Example |
|---|---|---|
| Dead metaphor | Replace with vivid image | "Inflection point" -> "It's like running out of gas in the middle of a bridge" |
| Generic term | Restore domain vocabulary | "Positive impact" -> "17% reduction in churn" |
| Predictable template | Reorganize non-linearly | Invert order: example -> context -> thesis |
| Excessive abstraction | Insert concrete data or anecdote | "Many people struggle" -> "Three of my neighbors have had the same problem" |
| Monotone rhythm | Vary sentence lengths | Alternate short sentences with long ones |
> ⚠️ **Ablation alert**: if a passage lost specificity without justification, annotate: "⚠️ This passage lost concreteness - the original likely had [data / example / qualification]."
### Step 4 - 💬 Voice Injection
Apply the chosen preset (or mirror a voice sample provided):
- Vary rhythm (intentional burstiness)
- Add opinion/personal position
- Mix high and low register
- Include controlled imperfections (tangents, parentheses, fragments)
- Use contractions naturally (don't -> do not only when emphasis demands it)
> **When the user provides a voice sample**: read first and annotate: sentence lengths, vocabulary level, how paragraphs begin, punctuation habits, verbal tics, register tendencies. **Mirror** - don't just remove patterns, replace them with the sample's patterns.
### Step 5 - 🔥 Final Anti-AI Pass (Binary Checklist)
Check each item. Mark ✓ (ok) or ✗ (failed). If any item fails, fix before proceeding.
| # | Check | ✓/✗ |
|---|---|---|
| 1 | Sentence lengths vary? (min 3 distinct sizes per paragraph) | |
| 2 | Mechanical transitions eliminated? ("Furthermore", "Moreover", "Additionally") | |
| 3 | Abstract placeholders replaced with concrete terms? | |
| 4 | At least 1 opinion, doubt, or personal feeling present? | |
| 5 | No template openings/closings survived? | |
| 6 | Contractions used naturally in informal presets? | |
| 7 | Factual information from original 100% intact? | |
| 8 | Voice preset consistent from start to finish? | |
| 9 | No sentence reads like a press release or Wikipedia stub? | |
| 10 | Read aloud, does it sound like a real person writing? | |
**Rule**: if ≥2 items fail -> fix and re-check. If all ✓ -> proceed.
### Step 5.5 - 📊 Post-Rewrite Scoring
Evaluate the result across 5 dimensions (0-100 each, weighted average):
| Dimension | Weight | Evaluation criteria |
|---|---|---|
| **AI pattern removal** | 30% | How many Step 1 patterns were eliminated? Any remaining? |
| **Naturalness** | 25% | Burstiness >5? Varied rhythm? Voice present? Sounds like a real person? |
| **Factual completeness** | 20% | All original information preserved? Data, names, numbers intact? |
| **Voice consistency** | 15% | Was the preset maintained throughout? No register jumps? |
| **Readability** | 10% | Sentences flow? Natural connectives? Clear logic? |
**Final score** = sum (dimension x weight)
**Decision criteria:**
- **≥ 80**: ✅ Approved -> proceed to delivery (Step 6)
- **60-79**: ⚠️ Almost -> run Anti-AI Pass again focusing on weak dimensions
- **< 60**: ❌ Fail -> rewrite with different approach (change preset, invert technique order, or shift focus between removal vs. voice injection)
> **Output format**:
> ```
> 📊 POST-REWRITE SCORE
> • AI removal: {0-100} (x0.30) = {partial}
> • Naturalness: {0-100} (x0.25) = {partial}
> • Factual completeness:{0-100} (x0.20) = {partial}
> • Voice consistency: {0-100} (x0.15) = {partial}
> • Readability: {0-100} (x0.10) = {partial}
> • TOTAL: {score}/100 -> {✅/⚠️/❌}
>
> 📊 METRICS DELTA (pre -> post)
> • TTR: {pre} -> {post} ({+/-}%)
> • Burstiness: {pre} -> {post} ({+/-}%)
> • Shannon entropy: {pre} -> {post} ({+/-}%)
> • Adverbs -ly/100w: {pre} -> {post}
> • Passive voice %: {pre} -> {post}
> • MSL (mean len): {pre} -> {post}
> • Sent. len. CoV: {pre} -> {post}
> • Concrete nouns: {pre}% -> {post}%
> ```
>
> **Interpreting the delta**: TTR, burstiness, entropy, and concrete nouns should **rise**. Adverbs in -ly and passive voice should **fall**. MSL and CoV should **approach human values** (MSL varies by genre; CoV ~ 0.5).
### Step 6 - 📦 Formatted Delivery
| Mode | Content delivered |
|---|---|
| full_mode | Metrics (Step 0) + Checklist (Step 1) + Draft rewrite + Self-critique (Step 5) + Final version + Summary of changes |
| direct_mode | Final version + Synthetic report (1 line per corrected pattern) |
| review_mode | Final version + Full checklist + Before/after metrics + Ablation alerts |
## Iterative Loop and Strategy Fallback
Step 5.5 scoring enables automatic iteration when the result doesn't hit threshold.
### Standalone Behavior (no external loop skill)
```
iteration = 0
MAX_ITERATIONS = 3
while iteration < MAX_ITERATIONS:
iteration += 1
execute Steps 2-5.5
if score >= 80: DELIVER
if score 60-79:
focus on dimensions with score < 70
continue
if score < 60:
CHANGE STRATEGY (see table below)
continue
if MAX_ITERATIONS reached: deliver best version + limitation note
```
### Strategy Fallback Table
When score < 60, change approach on next iteration:
| Previous iteration | Next approach |
|---|---|
| Focus on pattern removal (Step 2 heavy) | Focus on voice injection (Step 4 heavy) |
| Focus on voice injection | Focus on restructuring (Step 3 - reorder flow, break templates) |
| Current preset doesn't work | Try adjacent preset (e.g., Essay -> Corporate Informal) |
| Long text with progressive degradation | Split into ~300 word blocks and process separately |
### Compatibility with External Loop Skills
This skill is **compatible** with loop orchestrators like `ralph-wiggum`, `goal`, or any skill implementing an external iterative cycle.
**Integration protocol:**
1. **Standardized input**: skill accepts text + preset (optional) + minimum score (optional, default 80)
2. **Structured output**: always returns the parseable `📊 POST-REWRITE SCORE` block
3. **Convergence signal**: when score >= threshold, emit `✅ HUMANIZATION COMPLETE (score: {N}/100)`
4. **Non-convergence signal**: when standalone iteration exhausts, emit `⚠️ BEST RESULT REACHED (score: {N}/100) - external iteration may continue`
> **For external loop skills**: use the numeric score from output as stopping criterion. The skill needs no state between calls - each invocation receives text (possibly already partially humanized) and returns result + score.
## The 29 AI Vocabulary Patterns (English)
The core detection list. These words and phrases are near-certain AI signals when they appear with high frequency. Based on Wikipedia's "Signs of AI Writing" + blader/humanizer's detection set + brandonwise/humanizer's 560-term tier system.
### Tier 1 - Zero Tolerance (cut on sight)
These NEVER appear in natural human writing at the frequency AI uses them:
`delve, tapestry, landscape (figurative), testament to, serves as a reminder, it's worth noting, it bears mentioning, the ever-evolving landscape, navigate (complexities/challenges), spearhead, multifaceted, pivotal, paramount, underscores, underpin, a testament to, in the realm of, it is important to note, this highlights, shed light on`
### Tier 2 - High Suspicion (replace when clustered)
Acceptable once per 1000 words. AI uses them 10-20x:
`crucial, vital, comprehensive, robust, leverage, foster, facilitate, embark, harnessing, utilize, endeavor, moreover, furthermore, additionally, subsequently, nonetheless, notwithstanding (in non-legal), overarching, intricate, nuanced, holistic, synergy, paradigm, catalyst, orchestrate, seamless, ecosystem (abstract), journey (figurative), unlock (figurative)`
### Tier 3 - Context-Dependent (flag if > 2 per 500 words)
Normal words that AI overuses through repetition:
`significant, enhance, innovative, dynamic, diverse, inclusive, sustainable, transformative, empower, streamline, optimize, cutting-edge, state-of-the-art, game-changer, disruptive, scalable, impactful, actionable, meaningful, compelling`
### Detection Rule
- 1 Tier-1 word = flag the sentence
- 3+ Tier-2 words in one paragraph = flag the paragraph
- 5+ Tier-3 words in one page = flag the text
- Any combination of 2+ Tier-1 words in 500 words = near-certain AI
## The Emerging Patterns (2026 Community Discoveries)
Patterns P31-P43 below were identified by HackerNews threads, Wikipedia's evolving editorial guidelines, and writing practitioner blogs throughout 2026. They represent AI behavior that is newer, subtler, and not yet covered by most humanizer tools. Source: Aboudjem/humanizer-skill research.
| # | Pattern | What to look for | Why it's a tell |
|---|---|---|---|
| P31 | Elegant Variation | "the artist", "the visionary creator", "the non-conformist painter" for the same person | AI avoids repeating a noun by cycling through increasingly florid synonyms. Humans just use the name or "he/she/they". |
| P32 | Collaborative Communication Leaking | "In this article, we will explore", "Let me walk you through" | Residue from the assistant persona bleeding into published text. |
| P33 | Placeholder Text / Mad Libs | `[Your Name]`, `[INSERT SOURCE URL]`, unfilled brackets | Template artifacts the user forgot to fill. Immediate credibility kill. |
| P34 | Chatbot Reference Markup Leaking | `citeturn0search0`, `oai_citation`, broken footnote refs | Internal citation markup from ChatGPT/Copilot leaking into output. |
| P35 | UTM Source Parameters | `utm_source=chatgpt.com`, `utm_source=openai` in URLs | Links copied directly from AI chat sessions without cleaning. |
| P36 | Sudden Style/Register Shift | Formal prose suddenly switching to casual mid-paragraph | Indicates pasted AI output spliced with human text (or vice versa). |
| P37 | Overattribution | "Featured in Wired, Refinery29, and other outlets" without substance | Listing media names without citing what was said or when. |
| P38 | Paragraph-Reshuffling Immunity | Paragraphs that could swap order without breaking the argument | AI generates paragraphs as independent blocks with no logical progression. Human arguments BUILD - each paragraph depends on the previous. |
| P39 | "Whether" Paragraph Closers | "Whether you prefer X or Y, the answer is..." | Formulaic wrap-up that pretends to acknowledge alternatives while saying nothing. |
| P40 | Symbolic Gloss / Meaning-Telling | "represents", "symbolizes", "speaks to broader" applied to mundane things | AI assigns cosmic significance to ordinary events. "The coffee spill represents the broader challenges of work-life balance." |
| P41 | Infomercial Engagement Hooks | "The catch?", "The kicker?", "Here's the thing.", "The brutal truth?" | Cheap rhetorical devices that create false drama. One per essay is fine. Every paragraph is AI slop. |
| P42 | Erratic Inline Bolding | Random mid-sentence bold spans with no shared logic or category | Bold without editorial purpose - the model is "highlighting" but there's no system. |
| P43 | The Treadmill Effect | "In other words", "Put simply", "Essentially" looping the same point | AI restates the same idea in different words across multiple sentences, creating the illusion of development without actually advancing the argument. |
**Detection rule for emerging patterns:**
- P33-P35 (markup/placeholder leaks) = immediate flag, zero tolerance
- P38 (reshuffling immunity) = strongest structural tell. Test by mentally rearranging paragraphs - if the text reads identically, it's AI
- P43 (treadmill effect) = if you can delete a sentence and the paragraph loses zero information, that sentence is treadmilling
## Critical Research: Why Vocabulary Bans Alone FAIL
> "Vocabulary bans, one of the most commonly recommended techniques, actively hurt performance." - humanizerai.com, GPTZero bypass test (2026)
Detectors measure **statistical patterns** (burstiness, perplexity, sentence length variance), not vocabulary. Replacing "delve" with "explore" preserves the robotic rhythm underneath.
**Effectiveness hierarchy (research-backed):**
1. **Structural paraphrasing** - DetectGPT 70.3% -> 4.6% (RAID Benchmark, ACL 2024)
2. **Burstiness injection** - primary GPTZero signal
3. **Perplexity increase** - secondary GPTZero signal
4. **Vocabulary diversity** - TTR 45.5 -> 55.3 (SSRN)
5. **Synonym swapping** - DOES NOT WORK as standalone technique
## Contraction Rules (English-Specific)
AI avoids contractions far more than humans. One of the most reliable statistical signals.
| Context | Human | AI |
|---|---|---|
| Informal email | Contractions everywhere | Mixed or avoids |
| Blog post | 80%+ contracted | 40-60% contracted |
| Academic paper | Minimal (correct) | Minimal (correct) |
| Documentation | Moderate | Often avoids entirely |
**Rule**: In Essay, Corporate Informal, Social Post, and Casual/DM presets, zero contractions = immediate AI signal. Force natural contractions in Step 4. **Exception**: Academic and Legal presets may correctly avoid contractions.
## Regression Test Suite
6 test cases covering: corporate email, academic paragraph, legal text, blog template, AI hedging, generic explainer. Each test runs in full_mode and verifies output matches expected human-sounding result.
> Full test cases in `references/tests.md`
## Limits and Contraindications
**Do NOT use:** Safety-critical texts (drug labels, aviation), original contracts/legal documents (normative reference), bilingual literal translations, content for automated evaluation (TOEFL), texts already validated as human by multiple detectors.
**Use with caution:** Technical texts with formal notation (preserve equations/code, humanize only prose), non-native English writers (colloquialisms may not match ESL author's voice).
## References
| Source | Link | Key finding |
|---|---|---|
| Wikipedia - Signs of AI writing | https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing | 24 pattern categories with real examples |
| blader/humanizer (29 patterns) | https://github.com/blader/humanizer | Original skill, 10.6K stars |
| brandonwise/humanizer (statistical) | https://github.com/brandonwise/humanizer | 560-term vocab filter, burstiness/TTR |
| Aboudjem/humanizer-skill (43 patterns) | https://github.com/Aboudjem/humanizer-skill | P31-P43 emerging patterns, 5 voices, scoring |
| tropes.fyi | https://tropes.fyi/directory | Community AI trope catalog |
| The Register - Semantic Ablation | https://www.theregister.com/2026/02/16/semantic_ablation_ai_writing/ | Meaning-loss through AI polishing |
| RAID Benchmark (ACL 2024) | doi:10.18653/v1/2024.findings-acl | Structural paraphrasing: DetectGPT 70.3% -> 4.6% |
| Tulchinskii et al. (NeurIPS 2023) | Intrinsic dimension analysis | Human ~9 dims vs AI ~7.5 |
| SSRN stylometric study | Vocabulary diversity analysis | Human TTR: 55.3 vs AI: 45.5 |
| humanizerai.com - GPTZero bypass | https://humanizerai.com/blog/gptzero-bypass-test-2026 | Vocab bans HURT; structural change wins by 43pp |
| GPTZero | https://gptzero.me | Burstiness + perplexity as primary signals |
---
*v1.0.0 - Based on Portuguese [humanizar](https://github.com/fabricioctelles/skills) by @fabriciotelles. Combines pattern detection (blader), statistical measurement (brandonwise), and emerging patterns (Aboudjem) with voice injection, entropy restoration, and iterative scoring.*

View File

@@ -0,0 +1,130 @@
# Composition Patterns - AI Tropes in English
Structural patterns betraying AI-generated text at the level of **composition** - how the text is assembled, not what it says. Includes tropes cataloged by [tropes.fyi](https://tropes.fyi/directory) and the concept of **Semantic Ablation** (The Register, Feb 2026).
---
## Composition Tropes
### 1. Fractal Summaries
**Problem:** AI announces what it will say, says it, then summarizes what it said - in each section, subsection, and paragraph. Text becomes infinite recursion of meta-commentary.
**Before (AI):**
> In this section, we will explore how artificial intelligence is transforming the financial sector. We will examine three key aspects: process automation, predictive analytics, and customer service.
>
> [...3 paragraphs...]
>
> As we have seen in this section, artificial intelligence is transforming the financial sector through process automation, predictive analytics, and customer service. In the next section, we will address the challenges of this transformation.
**After (human):**
> Itau cut 40% of its back-office team in two years. Wasn't layoffs - it was automation eating the edges. A credit process that took a week now runs in four hours. The analyst who remains doesn't analyze: they supervise the model that does.
**Cut on sight:**
- "In this section, we will..."
- "As we saw previously..."
- "Next, we will discuss..."
- "As mentioned in the previous section..."
- "To summarize what we've discussed..."
**Correction techniques:**
- Eliminate recursion: the conclusion is ONE thing - at the end. Subsections don't need mini-conclusions
- Convert meta-commentary to direct statement: "As we saw, AI transforms the sector" -> "AI transforms the sector in three ways"
- If text has 3+ subsections with mini-conclusions, merge into a single block with continuous flow
---
### 2. Dead Metaphor on Repeat
**Problem:** AI finds a metaphor at the beginning and repeats ad nauseam as if it were the spine of the text. "Ecosystem" appears 30 times. "Journey" appears in every paragraph. The metaphor loses all power - becomes noise.
**Before (AI):**
> The startup ecosystem is maturing. In this ecosystem, the players need to adapt. The ecosystem demands new competencies. To survive in this ecosystem, entrepreneurs must build solid networks. The future of the ecosystem depends on public policies that foster innovation within the ecosystem itself.
**After (human):**
> The startup scene in the US changed - from garage with pitch deck to serious business with governance and boards demanding results. Anyone who started in 2019 thinking all you needed was a good idea and a seed round now faces investors who want unit economics. The party ended; the real work started.
**Rule:** Never repeat the same figurative word more than twice in a text. After the second use, find a different way to say it - or just say the concrete thing.
---
### 3. The "Many People" Ghost
**Problem:** AI attributes claims to unnamed masses: "many people believe", "researchers have found", "companies are increasingly", "there's a growing consensus". No specific person is cited. No specific research is named. It's the literary equivalent of "people are saying."
**Before (AI):**
> Many experts believe that AI will transform education. Researchers have found that personalized learning approaches yield better outcomes. Companies are increasingly investing in edtech solutions, reflecting a growing consensus that traditional methods are no longer sufficient.
**After (human):**
> Sal Khan thinks AI tutoring will outperform classrooms within a decade. He might be right - Khan Academy's pilot data shows 30% improvement on math scores with AI tutoring. But Audrey Watters has been calling bullshit on edtech promises for fifteen years, and she's usually right too.
**Rule:** If you can't name the expert, the researcher, or the company - either find one, or rephrase as your own opinion.
---
### 4. The Five-Paragraph Essay
**Problem:** AI defaults to intro-3points-conclusion structure regardless of content or context. Every piece becomes a high school essay: thesis, body paragraph 1, body paragraph 2, body paragraph 3, conclusion restating thesis. This is the structural equivalent of "In this essay, I will argue..."
**Before (AI structure):**
```
Introduction: State thesis
Point 1: First argument with support
Point 2: Second argument with support
Point 3: Third argument with support
Conclusion: Restate thesis in different words
```
**After (human structure options):**
```
Open with a story -> derive the principle -> complicate it -> leave an open question
Start with the conclusion -> explain why it's surprising -> show the evidence
Describe the problem in detail -> show three failed solutions -> reveal what worked
```
**Rule:** Structure should emerge from content, not be imposed from template. Good writing starts where it needs to start and ends where it needs to end.
---
### 5. Semantic Ablation (The Register, 2026)
**Problem:** After multiple AI refinement passes, text loses specificity, personality, and edge. Each pass removes anything "risky" or "unusual" until what remains is perfectly smooth, perfectly generic, perfectly dead. The Register calls this "semantic ablation" - the wearing away of meaning through machine-polishing.
**Symptoms:**
- All specific examples replaced with generic ones
- All strong opinions softened to "balanced" perspectives
- All technical jargon replaced with layperson equivalents (losing precision)
- All humor or personality flattened to neutral tone
- Numbers rounded or removed ("about 3 million" becomes "many")
**Before (ablated):**
> Many companies are adopting new approaches to software development. These approaches offer various benefits and come with certain challenges. Teams should carefully evaluate their options.
**After (restored):**
> 47 YC companies from the W24 batch shipped their MVPs using AI coding agents. Not "AI-assisted" - full agent mode. Half of them have zero engineers on staff. The challenge is debugging: when the agent writes 10,000 lines in a night, who reviews it?
**Detection signals (from brandonwise/humanizer's statistical model):**
- TTR (Type-Token Ratio) below 0.45 - vocabulary is being recycled
- Burstiness below 5 - all sentences the same length (robotic rhythm)
- Shannon entropy significantly lower than human baseline for the genre
- Concrete noun density below 40% - everything is abstract
**Restoration technique:** Add back specificity at every opportunity: names, numbers, dates, anecdotes, qualifications. If the original had them, restore. If it didn't, flag that the text needs concreteness.
---
### 6. The Balanced Bookend
**Problem:** AI opens and closes with suspiciously symmetrical statements. The final paragraph echoes the first with slightly different phrasing, creating an artificial sense of circular completion. Human writers don't do this unless deliberately crafting a literary piece.
**Before (AI):**
> Opening: "The intersection of AI and healthcare presents both unprecedented opportunities and significant challenges."
> [...]
> Closing: "As we've seen, the intersection of AI and healthcare continues to present both remarkable opportunities and notable challenges that will shape the future of medicine."
**After (human):**
> Opens with a specific story about a misdiagnosis caught by AI.
> [...]
> Ends with an open question: "So who's liable when the AI is right and the doctor disagrees?"
**Rule:** Endings should advance the thought, not echo it. If your conclusion says the same thing as your introduction, one of them is redundant.

View File

@@ -0,0 +1,99 @@
# Content Patterns
Patterns where AI inflates importance, fabricates authority, or closes texts with predictable formulas. The easiest to detect because they sound like press releases - nobody talks like this.
---
### 1. Undue emphasis on significance, legacy, and trends
**Trigger words/phrases:** represents a milestone, is a testament to, plays a crucial/vital/pivotal role, underscores the importance of, reflects a broader trend, symbolizing the, contributing to the, paving the way for, shaping the future of, ever-evolving landscape, inflection point, indelible mark, deeply rooted, redefines the paradigm
**Problem:** AI transforms any mundane fact into a revolution. A CRUD app becomes "a milestone in digital transformation". A startup pivot becomes "an inflection point in the innovation ecosystem". No human writes like this about normal things.
**Before (AI):**
> OpenAI represents a fundamental milestone in the transformation of the artificial intelligence landscape, actively shaping the future of AI development and paving the way for a new era of human-computer interaction.
**After (human):**
> OpenAI started by releasing GPT-3 as an API. It worked because nobody else was making large language models accessible to developers at that point. Now they have a consumer product with 100 million users.
**Detection signals:**
- Absolute superlatives without quantification ("greatest", "best", "unprecedented", "first-ever")
- Grandiose transformation verbs ("redefine", "shape", "pave the way")
- Text describing anything as an "inflection point" without saying what changes afterward
**Correction techniques:**
- Convert superlatives to **concrete data**: "largest fintech" -> "80 million customers"
- Replace grandiose verbs with **specific action verbs**: "pave the way" -> "hired 3 engineers for"
- "Journalist test" - if a reporter would read the sentence and ask "how so?", the term is empty
---
### 2. Forced emphasis on notability and media coverage
**Trigger words/phrases:** widely recognized, covered by major outlets, featured in leading publications, active social media presence, according to industry experts, benchmark in the market
**Problem:** AI lists outlets and awards as proof of importance without saying what was said or why it matters. Becomes a turbocharged resume - impresses in a vacuum but informs nothing.
**Before (AI):**
> The company has been featured in TechCrunch, Bloomberg, The New York Times, and Wired. Widely recognized as a benchmark in the B2B SaaS market, it maintains an active social media presence with over 200,000 followers across platforms.
**After (human):**
> In a 2024 interview with Bloomberg, the CEO said ARR tripled after they shifted from enterprise-only to mid-market. The pivot took six months and cost them their two largest contracts.
**Detection signals:**
- Listing publications without citing specific articles (date, title, link)
- "Active social media presence" without metrics (followers, engagement rate)
- Mention of awards or rankings without verifiable source
**Correction techniques:**
- If real source exists -> cite with date and link: "Per TechCrunch, March 12, 2025 (link)"
- If no source exists -> cut the notability claim entirely
- "Verifiability test" - if the reader can't check in 30 seconds, it's puffery
---
### 3. Superficial analysis with present participles
**Trigger words/phrases:** underscoring the importance of, demonstrating the commitment to, reflecting the trend toward, contributing to the strengthening of, evidencing the potential of, driving innovation, fostering growth, solidifying its position as
**Problem:** AI glues participle phrases to the end of sentences to simulate analysis, but it isn't analyzing. It's syntactic filler - padding without information. Like that intern who writes 3 pages to say "it worked".
**Before (AI):**
> Stripe launched native integration with WhatsApp Business, demonstrating its commitment to innovation in digital payments and solidifying its position as a leader in the segment, driving the digital transformation of SMBs globally.
**After (human):**
> Stripe launched WhatsApp Business integration. Makes sense - most SMB leads in emerging markets come through WhatsApp, not web forms.
**Detection signals:**
- Sentence-final participle phrases that restate the main clause in grander terms
- "Demonstrating commitment to..." (always empty)
- Three or more participle clauses chained with commas
**Correction techniques:**
- Delete the participle clause and check if meaning is lost. Usually it isn't.
- If meaning IS lost, convert to a separate sentence with a specific claim
- "So what?" test - if the participle clause doesn't answer "so what?", cut it
---
### 4. Hollow future projections
**Trigger words/phrases:** poised to, set to transform, is expected to revolutionize, has the potential to reshape, promises to redefine, will likely emerge as, positioned to become
**Problem:** AI loves predicting transformative futures without evidence. These phrases create an illusion of analysis while saying nothing falsifiable.
**Before (AI):**
> The technology is poised to transform the healthcare industry, promising to redefine patient outcomes and reshape the landscape of medical diagnostics as we know it.
**After (human):**
> Two hospitals in Boston are running pilot programs with the diagnostic tool. Early numbers show 12% fewer false negatives on lung scans. Whether that scales to 4,000 hospitals is a different question entirely.
**Detection signals:**
- Future tense without specific timeline
- "Poised to" / "set to" without citing who said so or what evidence supports it
- Combination of future projection + superlative ("will revolutionize")
**Correction techniques:**
- Replace with current evidence: what exists NOW that suggests the future claim?
- If no evidence exists, either cut the claim or caveat it: "If X happens, then Y"
- Anchor to specific numbers, dates, or named sources

View File

@@ -0,0 +1,153 @@
# English-Specific Patterns
Patterns unique to AI-generated English text that don't have direct equivalents in other languages. These exploit the specific quirks of English grammar, register mixing, and contraction patterns that AI consistently gets wrong.
---
### 1. Contraction Avoidance
**Problem:** AI-generated English dramatically underuses contractions compared to human writing. In informal contexts, this is one of the most reliable statistical signals. GPTZero and Originality.ai both flag texts with unusually low contraction rates.
**Human contraction rates by register:**
| Register | Contraction rate |
|---|---|
| Casual speech/DM | 95%+ ("don't", "won't", "it's", "we're", "they'll") |
| Blog/newsletter | 80-90% |
| Professional email | 60-80% |
| Journalism | 40-70% (varies by outlet) |
| Academic | 10-30% (deliberately formal) |
| Legal | 5-15% (genre convention) |
**AI typical rate:** 30-50% across ALL registers (doesn't adapt)
**Before (AI - blog register):**
> It is important to note that the system does not function as expected. We cannot determine the root cause at this time. There is no indication that this will be resolved soon.
**After (human - blog register):**
> It's not working the way it should. We can't figure out why yet. There's no sign it'll be fixed soon.
**Contraction replacement rules:**
| AI form | Human form (informal) | Keep formal when... |
|---|---|---|
| it is | it's | academic emphasis needed |
| do not | don't | legal/safety context |
| cannot | can't | formal document |
| will not | won't | emphasis on refusal |
| they are | they're | ambiguity risk |
| we have | we've | ... |
| should not | shouldn't | ... |
| would not | wouldn't | ... |
| there is | there's | ... |
| that is | that's | ... |
**Rule:** In Essay, Corporate Informal, Social Post, and Casual presets, force contractions to match human rates. In Academic and Legal presets, low contractions are correct.
---
### 2. Register Uniformity
**Problem:** Humans naturally mix registers within a single text - formal vocabulary next to colloquial phrasing, technical terms next to slang, high register next to low. AI maintains a perfectly uniform register throughout, which paradoxically signals artificiality.
**Before (AI - uniformly mid-register):**
> The implementation proved challenging but ultimately successful. The team encountered several obstacles during the process but managed to resolve them through collaborative effort and systematic problem-solving.
**After (human - mixed register):**
> The implementation was a nightmare for about two weeks - classic "it works on my machine" stuff. Then Sarah figured out the race condition and we shipped it. Sometimes the fix is embarrassingly simple.
**Human register mixing patterns:**
- Technical term + casual explanation: "The TTL expired - basically the cache forgot everything"
- Formal structure + informal aside: "The architecture is sound. (The naming conventions, less so.)"
- Precise vocabulary + colloquial connector: "The latency delta was significant. Look, 340ms vs 40ms isn't subtle."
**Rule:** Inject at least one register shift per 300 words in non-academic presets. A formal paragraph should have one casual moment. A casual text should have one precise term.
---
### 3. Passive Voice Overuse
**Problem:** AI defaults to passive voice far more than humans, especially when the agent (who did the thing) is uncertain or the AI is hedging. Human English strongly prefers active voice in most contexts.
**Before (AI):**
> The decision was made to restructure the team. It was determined that performance had been negatively impacted. New processes were implemented and improvements were observed over the following quarter.
**After (human):**
> The VP restructured the team. Performance had tanked - everyone knew it. They implemented new processes and saw improvement by Q3.
**Acceptable passive uses (don't convert these):**
- When the agent is genuinely unknown: "The server was compromised overnight"
- When the object is more important: "Three people were injured in the crash"
- Scientific convention: "The sample was heated to 300°C"
- Deliberate de-emphasis of actor: "Mistakes were made" (though this is also a cliche)
**Detection signal:** More than 30% of clauses in passive voice = AI signal. Measure by counting "was/were + past participle" constructions.
---
### 4. Transition Word Abuse
**Problem:** AI uses explicit transition words between nearly every sentence. Human writers trust the reader to follow logical connections without signposting every turn.
**AI transition word frequency:** every 2-3 sentences
**Human transition word frequency:** every 5-8 sentences (varies by genre)
**The worst offenders (cut 80% of these):**
| Word | AI frequency | Human frequency | Action |
|---|---|---|---|
| Furthermore | Every paragraph | Rare in non-academic | Cut or replace with "And" |
| Moreover | Every paragraph | Rare | Cut |
| Additionally | Every paragraph | Rare | Cut |
| However | Every 3 sentences | Every 6-8 sentences | Keep some, cut most |
| Consequently | Frequent | Rare in non-academic | "So" or cut |
| Subsequently | Frequent | Rare | "Then" or cut |
| Nevertheless | Frequent | Occasional | Keep sparingly |
| In contrast | Frequent | Occasional | "But" or restructure |
**Rule:** Trust the reader. If the logical connection is obvious from context, no transition word is needed. Use transitions only when the connection would genuinely surprise the reader.
---
### 5. "The" Proliferation in Abstractions
**Problem:** AI over-uses "the" before abstract nouns, creating a false specificity. "Innovation" becomes "the innovation". "Technology" becomes "the technology". This makes generic statements sound as if they refer to something specific when they don't.
**Before (AI):**
> The innovation in the space has led to the advancement of the technology. The community has embraced the shift toward the adoption of the new paradigm.
**After (human):**
> Innovation in this space accelerated after GPT-4 launched. Developers adopted the new approach quickly - mostly because it was easier, not because anyone evangelized it.
**Rule:** If "the [abstract noun]" doesn't refer to a previously introduced specific thing, it's probably AI padding. Cut "the" or replace with a specific referent.
---
### 6. Absence of Sentence Fragments
**Problem:** Human English, especially in informal and semi-formal writing, uses sentence fragments freely for rhythm and emphasis. AI almost never produces them - every unit is a grammatically complete sentence.
**AI (all complete sentences):**
> The product launched last week. It received positive reviews. The team is now focused on iteration. They plan to ship a major update by March.
**Human (with natural fragments):**
> The product launched last week. Positive reviews all around. Now the team's heads-down on iteration. Major update by March. Maybe.
**Fragment types humans use:**
- Answers: "Absolutely not."
- Emphasis: "Every. Single. Time."
- Afterthoughts: "Not ideal."
- Rhythm breaks: "So there's that."
- Dramatic pause: "Three million lines of code. Overnight."
**Rule:** In Essay, Corporate Informal, Social Post, and Casual presets, inject at least one sentence fragment per 200 words. In Academic and Legal presets, fragments are inappropriate.
---
### 7. Perfect Paragraph Length Uniformity
**Problem:** AI generates paragraphs of remarkably similar length (typically 3-5 sentences, 80-120 words each). Human writing varies paragraph length dramatically - from one-sentence paragraphs to 300-word blocks.
**AI pattern:** 4 sentences, 4 sentences, 4 sentences, 4 sentences
**Human pattern:** 1 sentence, 6 sentences, 2 sentences, 8 sentences, 1 sentence
**Detection signal (from brandonwise/humanizer):** Coefficient of variation in paragraph length below 0.3 = AI signal. Human English averages ~0.6 CoV in paragraph length.
**Rule:** Vary paragraph length intentionally. Use one-sentence paragraphs for impact. Use long paragraphs for complex arguments that need sustained development. The variation IS the voice.

View File

@@ -0,0 +1,120 @@
# Language and Grammar Patterns (English)
Patterns that betray AI-generated text at the level of word choice, grammatical constructions, and sentence structure. Based on Wikipedia's Signs of AI Writing + tropes.fyi + blader/humanizer's 29-pattern set + brandonwise/humanizer's statistical model.
---
### 1. AI Vocabulary (The Slop Dictionary)
**Tier 1 - Zero Tolerance (cut on sight):**
| Word/Phrase | Why it's a tell | Human alternative |
|---|---|---|
| delve | No one says this in conversation | explore, dig into, look at |
| tapestry | Always used as "rich tapestry of..." | (cut entirely - always filler) |
| landscape (figurative) | "The AI landscape" | the AI space, AI right now |
| testament to | "It's a testament to..." | shows that, proves |
| serves as a reminder | Always preamble to nothing | (cut - just state the thing) |
| it's worth noting | Meta-commentary, not content | (cut - the note IS the content) |
| it bears mentioning | Same as above | (cut) |
| the ever-evolving landscape | Double slop | (cut entirely) |
| navigate (complexities) | "Navigate the challenges of" | deal with, handle, figure out |
| spearhead | "Spearheading the initiative" | lead, run, start |
| multifaceted | "This multifaceted problem" | complex, messy, complicated |
| pivotal | "A pivotal moment" | important, key, big |
| paramount | "Of paramount importance" | essential, critical |
| underscores | "This underscores the need" | shows, highlights |
| underpin | "Principles that underpin" | behind, supporting |
| in the realm of | "In the realm of AI" | in AI |
| shed light on | "Shedding light on this issue" | explain, clarify, show |
| this highlights | Meta-commentary | (cut - the highlight IS the sentence) |
**Tier 2 - High Suspicion (replace when clustered, OK once per 1000 words):**
`crucial, vital, comprehensive, robust, leverage, foster, facilitate, embark, harnessing, utilize, endeavor, moreover, furthermore, additionally, subsequently, nonetheless, overarching, intricate, nuanced, holistic, synergy, paradigm, catalyst, orchestrate, seamless, ecosystem (abstract), journey (figurative), unlock (figurative), empower, elevate`
**Tier 3 - Context-Dependent (flag if >2 per 500 words):**
`significant, enhance, innovative, dynamic, diverse, inclusive, sustainable, transformative, streamline, optimize, cutting-edge, state-of-the-art, game-changer, disruptive, scalable, impactful, actionable, meaningful, compelling, groundbreaking`
**Detection rule:**
- 1 Tier-1 word = flag the sentence
- 3+ Tier-2 words in one paragraph = flag the paragraph
- 5+ Tier-3 words in one page = flag the text
- Any combination of 2+ Tier-1 words in 500 words = near-certain AI
---
### 2. Copula Avoidance
**Trigger patterns:** constitutes, represents, serves as, functions as, operates as, positions itself as, stands as, emerges as, figures as
**Problem:** AI avoids "is" and "has" as if they were forbidden words. Replaces them with elaborate constructions no human would use in natural writing.
**Before (AI):**
> Stripe constitutes the leading payments infrastructure for the internet. The platform serves as a comprehensive solution for businesses and positions itself as the de facto standard for online transactions.
**After (human):**
> Stripe is the biggest payments company online. Their API is what most startups use to take money.
**Rule:** If "is" or "has" would work, use it. Save elaborate verbs for when you need precise meaning, not sophistication theater.
---
### 3. Negative Parallelisms
**Trigger patterns:** not merely X, but Y; it's not just about X, it's about Y; more than X, it's Y; goes far beyond X; transcends the simple X; not simply X, it's fundamentally Y
**Problem:** Formulaic construction that artificially inflates importance. Creates a false dichotomy where the writer pretends to reject something then embraces something bigger - but both parts say the same thing.
**Before (AI):**
> Product management is not merely about writing user stories. It goes far beyond simply shipping features - it's fundamentally about solving real problems. The PM transcends the role of ticket writer; they are, above all, a translator between business and technology.
**After (human):**
> Good PMs solve problems. Bad PMs write tickets. The difference isn't philosophical - it's practical. Look at someone's backlog and you'll know in 5 minutes.
---
### 4. Tricolon Abuse (Rule of Three)
**Trigger patterns:** clarity, concision, and coherence; innovation, technology, and transformation; plan, execute, and measure; any rhythmic triad with "and" before the third item; three adjectives in sequence; three abstract nouns grouped
**Problem:** AI groups ideas in threes because tricolon is rhetorically satisfying - but when it appears in every paragraph, it becomes a tic. Human text groups in 2, in 4, in 1. Rarely in 3 repeatedly.
**Before (AI):**
> The platform delivers speed, reliability, and scalability. Teams need clarity, collaboration, and consistency. Our approach combines innovation, expertise, and dedication.
**After (human):**
> It's fast. Reliable enough that we stopped worrying about downtime. And it scales - we went from 10k to 400k requests/day without changing anything.
**Detection rule:** If a text has 3+ tricolons per page, it's almost certainly AI-generated. Humans occasionally use rule-of-three for rhetorical effect. AI uses it as a structural crutch.
---
### 5. Weasel Qualifiers
**Trigger patterns:** it could be argued that, one might suggest, there are those who believe, it has been said that, some would argue, many experts believe, it is generally accepted
**Problem:** AI uses qualifiers to avoid committing to claims. The result reads like a Wikipedia article written by someone afraid of being corrected. Humans either commit to a claim or cite a specific source.
**Before (AI):**
> It could be argued that large language models represent a significant advancement. Many experts believe this technology has the potential to transform various industries, though some would argue the risks are considerable.
**After (human):**
> LLMs are a big deal. They'll change how most knowledge work gets done - I genuinely believe that. But Hinton is right that we don't understand alignment well enough to be comfortable.
---
### 6. Nominalization Disease
**Trigger patterns:** the implementation of, the utilization of, the facilitation of, the optimization of, the enhancement of, the establishment of, provides a demonstration of, performs an analysis of
**Problem:** AI converts verbs into nouns, making sentences longer, vaguer, and harder to parse. "We analyzed" becomes "we performed an analysis of". This is the passive-aggressive cousin of passive voice.
**Before (AI):**
> The implementation of the new system resulted in the enhancement of performance metrics and the facilitation of improved collaboration across teams.
**After (human):**
> We implemented the new system. Performance improved. Teams started collaborating more.
**Rule:** If a noun ending in -tion/-ment/-ance has a simpler verb form, use the verb.

View File

@@ -0,0 +1,132 @@
# Style and Formatting Patterns
Patterns betraying AI-generated text through visual and structural form, not content. Detection tools use these markers as high-confidence signals.
---
### 1. Em-Dash Cascade
**Problem:** AI uses 15-25 em-dashes per medium text. Humans use 2-3, and generally prefer commas, periods, or parentheses for most functions AI assigns to em-dashes.
**Before (AI):**
> The project — which started in 2022 — brought impressive results — especially in the data area — and is now being expanded — even with limited budget — to other regions.
**After (human):**
> The project started in 2022 and brought solid results in data. It's now expanding to other regions, even with a tight budget.
**Detection signals:**
- More than 2 em-dashes per paragraph
- Em-dash where comma resolves
- Chaining of parenthetical asides with em-dashes (— X — Y — Z)
- Text where >10% of punctuation marks are em-dashes
**Correction techniques:**
- **Limit of 2 em-dashes per paragraph** - convert extras to commas, periods, or parentheses
- Differentiate use: em-dash for strong contrast, parentheses for side comment, comma for light aside
- "Editor test" - if a human editor would have cut the em-dash, cut it
---
### 2. Excessive Bold
**Problem:** AI applies bold to every keyword as if the text were a slide deck. Running text with bold on every important noun reads like a product catalog, not human writing.
**Before (AI):**
> The **platform** offers **native integration** with leading **CRMs**, ensuring **scalability** and **security** for **sales** and **marketing** teams.
**After (human):**
> The platform integrates with the major CRMs. Works well for sales and marketing teams that need to scale without losing access control.
**Detection signals:**
- Bold on more than 1-2 terms per paragraph
- Bold on common nouns (platform, team, result) without editorial reason
- Bold used as substitute for good sentence structure
- Text where >5% of words are bolded
**Correction techniques:**
- **Limit of 1-2 bolds per section** - never per paragraph
- Use bold only for **intentional contrast**: "The problem isn't the tool - it's the **process**"
- If bold is compensating for lack of clarity, **restructure the sentence** instead
- "Print test" - if text looks like it was formatted for a reader with ADHD, bold is excessive
---
### 3. List-ification (Bullet Point Abuse)
**Problem:** AI converts prose into bullet points at every opportunity. Three sentences of flowing text become a bulleted list with "Key takeaways:" above it. Human writing uses lists sparingly - for actual enumerations, not for every paragraph.
**Before (AI):**
> Here are the key benefits:
> - **Increased efficiency** - Teams work 40% faster
> - **Improved collaboration** - Cross-functional alignment
> - **Better outcomes** - Measurable ROI improvements
> - **Scalability** - Grows with your organization
**After (human):**
> Teams work faster with it - about 40% based on our internal tracking. The real win is cross-functional alignment though: people who never talked to each other before are now in the same workflow.
**Detection signals:**
- Bulleted lists that could be flowing prose
- "Key takeaways:" / "Key points:" / "Here's what you need to know:" above lists
- Parallel structure in every bullet (same length, same construction)
- Lists with 5+ items where 3 would suffice
**Correction techniques:**
- If items are truly discrete enumerable things (steps, features, names), keep as list
- If items are connected thoughts, convert to prose paragraphs
- Break bullet symmetry: vary length, mix sentence fragments with full sentences
- "Would I say this aloud as a list?" test - if you'd narrate it, it's prose
---
### 4. Header Proliferation
**Problem:** AI creates a `##` header for every 2-3 paragraphs in any text longer than 400 words. Human prose flows continuously - headers appear when genuinely changing topic, not every 150 words.
**Before (AI):**
> ## Introduction
> The problem is clear.
> ## Background
> Here's context.
> ## Current Situation
> Things have changed.
> ## Analysis
> Let's examine this.
> ## Conclusion
> In summary...
**After (human):**
> The problem is clear - and it's been getting worse since 2023. [continues flowing for 800 words with maybe one section break where the topic genuinely shifts]
**Detection signals:**
- Headers every 100-200 words in what should be continuous prose
- Generic headers: "Introduction", "Background", "Analysis", "Conclusion"
- Headers that just restate what the next paragraph says
- Document with 8+ headers for 1000 words
---
### 5. Emoji Inflation
**Problem:** AI (especially ChatGPT) injects emoji into every bullet point, section header, or list item. Human writers use emoji occasionally and contextually, not systematically.
**Before (AI):**
> 🚀 Key Features
> ✅ Automated deployment
> 💡 Smart suggestions
> 🔒 Enterprise security
> ⚡ Lightning-fast performance
**After (human):**
> The main features: automated deployment, smart suggestions, enterprise-grade security, and good performance. (It handles 10k requests/second on our benchmark.)
**Detection signals:**
- Emoji on every list item
- Emoji in headers
- More than 2 emoji per 500 words in professional text
- Systematic emoji (same emoji category repeated: all checkmarks, all rockets)
**Correction techniques:**
- Professional context: remove all emoji unless the format genuinely calls for them (social posts, chat)
- Social context: keep 1-2 per post, used for emphasis or tone, not decoration
- Never use emoji as bullet point markers in serious writing

View File

@@ -0,0 +1,103 @@
# Tone Patterns - Detection and Correction
Patterns betraying artificial, servile, or performative tone in English text. Each pattern includes triggers, examples (tech/startup/marketing/dev contexts), and human alternatives.
---
### 1. Sycophantic Tone
**Trigger words/phrases:** "Great question!", "Absolutely!", "Excellent observation!", "I hope this helps!", "I'm happy to help!", "Thank you for sharing!"
**Problem:** Generic praise to the interlocutor before answering. Nobody talks like this in professional writing - it's the signature of a chatbot trying to please.
**Before (AI):**
> Great question! Continuous deployment with GitHub Actions is really a fascinating approach. I'd be happy to help you with that! Let's dive in: first, you need to configure the workflow YAML...
**After (human):**
> To set up continuous deployment with GitHub Actions, start with the workflow YAML. Create a `.github/workflows/deploy.yml` triggered on push to main...
**Cut on sight:**
- "Great question!" / "Excellent point!"
- "Absolutely!" / "Definitely!"
- "I hope this helps!" / "Happy to contribute!"
---
### 2. Knowledge-Cutoff Disclaimers
**Trigger words/phrases:** "As of my last update...", "Based on the information available to me...", "As of my knowledge cutoff...", "I cannot confirm with certainty, but...", "According to my limited information..."
**Problem:** Exposes the machine nature of the author. Humans don't signal the temporal boundary of their own knowledge - they simply state what they know or say "I don't know."
**Before (AI):**
> As of my last update, Next.js 15 introduced Server Actions as a stable feature. However, more recent developments may have changed this landscape. Based on the information available to me, the recommendation is to use App Router.
**After (human):**
> Next.js 15 stabilized Server Actions. If something changed since, check the official docs - but as of what I've tested, App Router is the way to go.
---
### 3. Residual Collaborative Communication
**Trigger words/phrases:** "Here's an example of...", "I can help you with...", "I'll show you how...", "Below is...", "Feel free to ask more!", "Don't hesitate to reach out!"
**Problem:** Text retains traces of assistant-user interaction. Reads like a support response, not authored text. When published as an article or post, immediately betrays its origin.
**Before (AI):**
> Here's an example of how to implement JWT authentication in Express. I'll walk you through the setup step by step. Feel free to adapt according to your needs!
**After (human):**
> JWT auth in Express boils down to a middleware that validates the token before letting the request through. The basic setup looks like this:
---
### 4. Excessive Hedging
**Trigger words/phrases:** "it seems", "perhaps", "it could be that", "one might argue", "it's possible that", "it may be the case", "to some extent", "in a sense"
**Problem:** AI over-qualifies every statement to avoid being wrong. The result is prose with no conviction. Reads like someone trying to never be pinned down on anything.
**Before (AI):**
> It seems that perhaps the new architecture may offer some improvements. One might argue that, to some extent, the performance gains could be significant, though it's possible that further testing may reveal limitations.
**After (human):**
> The new architecture is faster. Our benchmarks show 40% improvement on cold starts. Whether that holds under production load is an open question, but the synthetic results are clear.
**Rule:** Qualify only when:
- You genuinely don't know (and say so directly: "I don't know")
- There's real disagreement among sources (cite both)
- The data genuinely doesn't support a firm claim (show the data)
Otherwise: commit to the claim.
---
### 5. Stakes Inflation
**Trigger words/phrases:** "crucial for the future of humanity", "this will define a generation", "the most important challenge of our time", "could fundamentally alter the course of", "the stakes have never been higher"
**Problem:** AI inflates the importance of everything to sound thoughtful. A CSS framework becomes "crucial for the future of web development". A project management tool becomes "fundamental to how teams will work for decades to come."
**Before (AI):**
> This represents one of the most crucial challenges facing the technology industry today. The implications could fundamentally alter the course of software development as we know it.
**After (human):**
> It's a hard problem. The teams I've seen tackle it took 6-12 months to get right. Most gave up and used the workaround instead.
**Rule:** Match stakes to scope. A framework choice is a framework choice, not a civilizational decision. Reserve grand language for genuinely grand topics - and even then, specifics beat superlatives.
---
### 6. False Empathy / Emotional Performance
**Trigger words/phrases:** "I understand how frustrating this must be", "I can only imagine how difficult", "This is truly inspiring", "What an incredible journey", "I'm deeply moved by"
**Problem:** AI performs emotions it cannot have. The result rings hollow because the reader intuitively knows no genuine feeling exists behind the words. Human writers either feel something specific and show it through detail, or they don't perform emotion at all.
**Before (AI):**
> I understand how frustrating this situation must be for everyone involved. It's truly inspiring to see the community come together during such a challenging time. What an incredible journey this has been.
**After (human):**
> That sucks. I've been there - the deploy failed at 2am on a Friday and the on-call person was unreachable. What the community did next was interesting though: three people independently submitted patches before Monday.
**Rule:** Show, don't perform. If you feel something, name it specifically. If you don't, don't fake it.

View File

@@ -0,0 +1,150 @@
# Voice Calibration - Presets (Full Reference)
Detailed characteristics, examples, and guidelines for each voice preset.
## 🖋️ Essay (default)
Tone of an English essayist. Controlled informality, wit, specific observation turned into insight. Mixes high and low register. A turn at the end.
**Characteristics:**
- "Look" and "honestly" coexist with precise vocabulary
- Sentence fragments as dramatic pause
- Dry humor, self-awareness
- Explicit opinion
- Rhetorical questions left unanswered
**Example:**
> Everyone knows that coworker who automated their own job and told nobody. Sat there for months pretending to type. Well. Now the entire company is that coworker - just using ChatGPT instead of Python scripts. The difference is nobody's pretending. And so the question becomes: efficiency or laziness? I don't know. Probably both.
## 📰 Journalistic
Tone of the NYT or The Atlantic. Maximum clarity, concrete data, no fluff.
**Characteristics:**
- Subject + verb + object (in that order)
- Numbers and dates whenever possible
- Attribution to named sources
- No evaluative adjectives
- No first person (except opinion columns)
**Example:**
> Nubank laid off 40 people from its customer service team in May. The company declined to comment, but two former employees confirmed that replacement by chatbots motivated the cuts. The department had 120 people at the start of the year.
## 🎓 Academic
Formal but not bureaucratic. Terminological rigor without officialese.
**Characteristics:**
- Precise domain vocabulary
- Legitimate qualifications (not empty hedging)
- References to specific authors/studies
- Avoids cliches: "it is worth noting", "it goes without saying", "in the context of"
**Example:**
> The convergence-toward-median hypothesis (Nastruzzi, 2026) finds support in TTR analysis of texts submitted to multiple AI refinement cycles. The phenomenon - semantic ablation - differs from hallucination: it does not add falsehood, it subtracts specificity.
## 💬 Corporate Informal
Startup email, professional Slack. Direct, light, no corporate speak.
**Characteristics:**
- Short, direct sentences
- Contractions used naturally
- Action verbs instead of nominalizations
- Tech jargon where appropriate (deploy, sprint, ship)
**Example:**
> Team, quick update: the hotfix went out last night, already in prod. The duplication bug stopped since 11pm. I'll monitor for another 48h and if it stays clean, we close the issue. Ping me if anything pops up.
## 📱 Social Post
LinkedIn or Twitter/X. Short, opinionated, hook in the first line.
**Characteristics:**
- First sentence is the hook
- Paragraphs of 1-2 lines
- Strong personal opinion
- Uses "I" freely
- Subtle or no CTA
**Example:**
> I fired ChatGPT from my writing workflow.
>
> Not because it's bad. Because everything I published sounded like everyone else.
>
> I went back to writing by hand. Takes 3x longer. But people actually reply now.
>
> Efficiency without voice isn't an advantage. It's invisibility.
## 💬 Casual/DM
Maximum orality. Stream of consciousness allowed.
**Characteristics:**
- Incomplete sentences ok
- Natural abbreviations (tbh, ngl, idk)
- Slang accepted
- Zero concern with formal grammar
**Example:**
> dude did you see what the data team did
>
> they pushed a model to prod without telling anyone
>
> then it started sending wrong emails to clients
>
> absolute chaos
## ⚖️ Legal / Formal
Briefs, memos, formal notices. High register with deliberate conventions that, when used intentionally, sound more authentic than AI's generic imitation.
**Characteristics:**
- Structure: background -> facts -> analysis -> conclusion/recommendation
- Controlled use of genre conventions ("notwithstanding", "hereinafter", "pursuant to")
- Citation of specific statutes, cases, regulations
- Active voice when possible to avoid bureaucratic emptiness
**Signs of AI in this register:**
- Excess "it is worth noting", "it should be emphasized", "in the context of this analysis"
- Generic citations without case numbers or statute references
- Perfectly symmetrical paragraphs (3-4 identical-length sentences)
**Example (AI -> Human):**
> *AI*: "It is well-established that the right to privacy must be balanced against public interest, as consistently recognized by relevant jurisprudence. It should be noted that the present case requires careful analysis."
>
> *Human*: "The right to privacy exists, yes - but it's not absolute. The Supreme Court held in *Carpenter v. United States*, 585 U.S. 296 (2018), that public interest can prevail. In this case, the photo was taken at a public event. The question is whether there was commercial exploitation. That's what separates privacy from publicity rights."
**What to preserve (not an AI sign):**
- Section headings in caps ("BACKGROUND", "ANALYSIS", "CONCLUSION") - expected formatting in briefs
- Numbered items in arguments and requests
- Citation with specific case numbers and dates
- Background -> facts -> analysis -> conclusion structure - it's the genre, not AI template
**Key signal separating human from AI in this register:** humans cite specific case numbers, statutes, sections. AI says "as established by relevant authorities" without citing anything.
## 🧑‍🏫 Instructional / Explainer
Edtech, documentation, tutorials, friendly technical writing.
**Characteristics:**
- Pattern: question -> explanation -> concrete example -> reinforcement
- Accessible but precise vocabulary (not dumbed down)
- Specific, verifiable examples (not "Alice has 3 apples")
- Explicit transitions: "So", "Now", "Let's see this in practice"
**Signs of AI in this register:**
- Generic, artificial examples
- Encyclopedic tone without interaction with reader
- "In this chapter, we will explore X, Y and Z" -> empty template
**Example:**
> Let's cut to it: a *callback* is a function you pass as an argument to another function, so it can "call you back" when it's done. Sounds complicated, but that's all it is. Think of ordering delivery: instead of calling every 5 minutes to check if it arrived, you leave your number and the driver texts you when they're at the door. Your number is the callback.

View File

@@ -0,0 +1,22 @@
# Summary - Skill Human-AI v1.0.0
1. [Operating Modes](#operating-modes)
2. [Guardrails](#guardrails)
3. [Personality & Soul - The Essayist Tradition](#personality--soul---the-essayist-tradition)
4. [Voice Calibration - Presets](#voice-calibration---presets)
- Essay · Journalistic · Academic · Corporate Informal · Social Post · Casual/DM · **Legal** · **Instructional**
5. [Humanization Process (7 steps)](#humanization-process)
- Step 0 - Quantitative ablation measurement
- Step 0.5 - Automatic type detection
- Step 1 - Diagnosis with structured checklist
- Step 2 - Pattern removal
- Step 3 - Entropy restoration
- Step 4 - Voice injection
- Step 5 - Final anti-AI pass
- Step 5.5 - Post-rewrite scoring
- Step 6 - Formatted delivery
6. [The 29 AI Vocabulary Patterns](#the-29-ai-vocabulary-patterns-english)
7. [Contraction Rules](#contraction-rules-english-specific)
8. [Regression Test Suite](#regression-test-suite)
9. [Limits and Contraindications](#limits-and-contraindications)
10. [References](#references)

View File

@@ -0,0 +1,14 @@
# Regression Test Suite (Full Reference)
Minimum sample set for validating future evolutions. Each test should run in full_mode and verify output matches expected result.
| # | Type | Before (AI) | After expected (synthesis) |
|---|---|---|---|
| T1 | Corporate email | "I am writing to inform you that the report will be forwarded in due course" | "Hey team, report's done - just sent it to the channel. Ping me with questions." |
| T2 | Academic paragraph | "Various authors discuss the question of language in broad terms" | "Foucault (1977) frames language as a power device; Bakhtin (1981) sees it as a dialogic arena. The disagreement isn't just terminological." |
| T3 | Legal text | "It is well-established that strict liability applies in the context of consumer relations" | "The Consumer Protection Act establishes strict liability under Section 402A. In practice, manufacturers only escape liability by proving sole consumer fault - which is rare." |
| T4 | Blog template | "In this article, we will explore 5 essential strategies to optimize your workflow" | "I'll cut to it: the strategy that saved me the most time in 2025 wasn't a new tool. It was stopping using new tools." |
| T5 | AI hedging | "As a language model, I cannot state with certainty, but it appears that perhaps the system may be functioning" | "The system's working. I just tested it and the endpoint responded in 340ms." |
| T6 | Generic explainer | "Alice has 3 apples and Bob has 5. How many do they have together?" | "Think about the last time you split a restaurant bill. That's the arithmetic that matters - not hypothetical apples." |
> **Regression criterion**: if an evolution worsens any T1-T6 test result, the change must be reevaluated.

View File

@@ -0,0 +1,353 @@
#!/usr/bin/env python3
"""
measure.py — AI vs Human text metrics analyzer.
Usage:
echo "some text" | python3 measure.py
python3 measure.py --file path/to/text.txt
Calculates linguistic metrics (TTR, burstiness, entropy, sentence/paragraph
variation, passive voice, contractions, etc.) and compares against empirical
baselines to produce a verdict: likely_ai, mixed, or likely_human.
Requires Python 3.10+. No external dependencies.
"""
import argparse
import json
import math
import re
import statistics
import sys
from collections import Counter
# --- Empirical baselines ---
BASELINES = {
"ttr": {"ai_typical": 0.455, "human_typical": 0.553, "source": "SSRN"},
"burstiness": {"ai_typical": 0.00, "human_typical": 0.70, "source": "GPTZero"},
"sentence_length_cov": {"ai_typical": 0.30, "human_typical": 0.50},
"paragraph_length_cov": {"ai_typical": 0.30, "human_typical": 0.60},
"contraction_rate": {"ai_typical_range": [0.30, 0.50], "human_typical_range": [0.80, 0.95]},
"passive_voice_pct": {"ai_typical": 0.30, "human_typical_range": [0.10, 0.20]},
}
# Common contractions and their expanded forms
CONTRACTION_PAIRS = {
"i'm": "i am", "i've": "i have", "i'll": "i will", "i'd": "i would",
"you're": "you are", "you've": "you have", "you'll": "you will", "you'd": "you would",
"he's": "he is", "he'll": "he will", "he'd": "he would",
"she's": "she is", "she'll": "she will", "she'd": "she would",
"it's": "it is", "it'll": "it will", "it'd": "it would",
"we're": "we are", "we've": "we have", "we'll": "we will", "we'd": "we would",
"they're": "they are", "they've": "they have", "they'll": "they will", "they'd": "they would",
"that's": "that is", "there's": "there is", "here's": "here is",
"what's": "what is", "who's": "who is", "where's": "where is",
"won't": "will not", "can't": "cannot", "couldn't": "could not",
"wouldn't": "would not", "shouldn't": "should not", "doesn't": "does not",
"don't": "do not", "didn't": "did not", "isn't": "is not",
"aren't": "are not", "wasn't": "was not", "weren't": "were not",
"hasn't": "has not", "haven't": "have not", "hadn't": "had not",
"let's": "let us", "that'll": "that will", "who'll": "who will",
}
# Expanded forms to detect (when NOT contracted)
EXPANDED_FORMS = set(CONTRACTION_PAIRS.values())
# Common concrete nouns (physical, tangible objects)
CONCRETE_PATTERNS = re.compile(
r"\b(table|chair|car|house|tree|dog|cat|book|phone|door|window|wall|"
r"road|water|stone|hand|face|eye|foot|head|body|room|floor|glass|"
r"box|bag|cup|plate|knife|pen|paper|shirt|shoe|hat|bed|desk|"
r"computer|screen|keyboard|mouse|bottle|lamp|clock|mirror|bridge|"
r"river|mountain|ocean|sun|moon|star|cloud|rain|snow|fire|smoke|"
r"bread|meat|fruit|flower|grass|sand|iron|gold|silver|wood|rock|"
r"truck|bus|train|plane|boat|ship|bicycle|wheel|engine|hammer|"
r"needle|rope|chain|brick|coin|ring|bell|drum|guitar|piano)\b",
re.IGNORECASE,
)
# Abstract nouns (concepts, ideas, qualities)
ABSTRACT_PATTERNS = re.compile(
r"\b(freedom|justice|love|beauty|truth|wisdom|knowledge|power|"
r"happiness|sadness|anger|fear|hope|faith|courage|patience|"
r"democracy|philosophy|theory|concept|idea|thought|belief|"
r"understanding|experience|opportunity|challenge|strategy|"
r"approach|methodology|framework|perspective|consideration|"
r"implementation|optimization|functionality|capability|"
r"efficiency|effectiveness|sustainability|innovation|"
r"transformation|development|improvement|enhancement|"
r"complexity|simplicity|diversity|integrity|creativity)\b",
re.IGNORECASE,
)
def tokenize(text: str) -> list[str]:
"""Split text into lowercase word tokens."""
return re.findall(r"[a-z']+", text.lower())
def split_sentences(text: str) -> list[str]:
"""Split text into sentences using punctuation boundaries."""
sentences = re.split(r'(?<=[.!?])\s+', text.strip())
return [s for s in sentences if s.strip()]
def split_paragraphs(text: str) -> list[str]:
"""Split text into paragraphs by blank lines."""
paragraphs = re.split(r'\n\s*\n', text.strip())
return [p for p in paragraphs if p.strip()]
def calc_ttr(tokens: list[str]) -> float:
"""Type-Token Ratio: unique tokens / total tokens."""
if not tokens:
return 0.0
return len(set(tokens)) / len(tokens)
def calc_burstiness(sentences: list[str]) -> float:
"""Standard deviation of sentence lengths (word count per sentence)."""
lengths = [len(s.split()) for s in sentences]
if len(lengths) < 2:
return 0.0
return statistics.stdev(lengths)
def calc_shannon_entropy(tokens: list[str]) -> float:
"""Shannon entropy: -sum p(x)*log2(p(x)) over vocabulary."""
if not tokens:
return 0.0
total = len(tokens)
counts = Counter(tokens)
entropy = 0.0
for count in counts.values():
p = count / total
if p > 0:
entropy -= p * math.log2(p)
return entropy
def calc_sentence_length_cov(sentences: list[str]) -> float:
"""Coefficient of variation of sentence lengths: std/mean."""
lengths = [len(s.split()) for s in sentences]
if len(lengths) < 2:
return 0.0
mean = statistics.mean(lengths)
if mean == 0:
return 0.0
return statistics.stdev(lengths) / mean
def calc_mean_sentence_length(sentences: list[str]) -> float:
"""Mean sentence length in words."""
lengths = [len(s.split()) for s in sentences]
if not lengths:
return 0.0
return statistics.mean(lengths)
def calc_paragraph_length_cov(paragraphs: list[str]) -> float:
"""Coefficient of variation of paragraph lengths (in sentences)."""
if len(paragraphs) < 2:
return 0.0
lengths = [len(split_sentences(p)) for p in paragraphs]
mean = statistics.mean(lengths)
if mean == 0:
return 0.0
return statistics.stdev(lengths) / mean
def calc_ly_adverbs_per_100(tokens: list[str]) -> float:
"""Count adverbs ending in -ly per 100 words."""
if not tokens:
return 0.0
# Exclude common non-adverb -ly words
exceptions = {
"only", "early", "likely", "family", "really", "actually",
"finally", "fly", "supply", "apply", "reply", "holy",
"ugly", "belly", "jelly", "bully", "ally", "rally",
}
ly_count = sum(
1 for t in tokens
if t.endswith("ly") and len(t) > 3 and t not in exceptions
)
return (ly_count / len(tokens)) * 100
def calc_passive_voice_pct(text: str) -> float:
"""Approximate passive voice: was/were/been/being + past participle pattern."""
sentences = split_sentences(text)
if not sentences:
return 0.0
passive_pattern = re.compile(
r'\b(was|were|been|being|is|are|am)\s+(\w+ed|(\w+en))\b',
re.IGNORECASE,
)
passive_count = sum(1 for s in sentences if passive_pattern.search(s))
return passive_count / len(sentences)
def calc_contraction_rate(text: str) -> float:
"""Percentage of contractable phrases that ARE contracted."""
text_lower = text.lower()
tokens_raw = re.findall(r"[a-z']+", text_lower)
text_joined = " ".join(tokens_raw)
contracted_count = 0
expanded_count = 0
# Count contractions present
for contraction in CONTRACTION_PAIRS:
contracted_count += text_joined.count(contraction)
# Count expanded forms present (not contracted)
for expanded in EXPANDED_FORMS:
expanded_count += text_joined.count(expanded)
total = contracted_count + expanded_count
if total == 0:
return 0.0
return contracted_count / total
def calc_concrete_noun_density(tokens: list[str]) -> float:
"""Ratio of concrete nouns to (concrete + abstract) nouns found."""
text = " ".join(tokens)
concrete_matches = len(CONCRETE_PATTERNS.findall(text))
abstract_matches = len(ABSTRACT_PATTERNS.findall(text))
total = concrete_matches + abstract_matches
if total == 0:
return 0.5 # neutral if can't determine
return concrete_matches / total
def score_metric(name: str, value: float) -> str:
"""Score a metric as 'ai', 'human', or 'neutral'."""
match name:
case "ttr":
midpoint = (BASELINES["ttr"]["ai_typical"] + BASELINES["ttr"]["human_typical"]) / 2
return "human" if value > midpoint else "ai"
case "burstiness":
midpoint = (BASELINES["burstiness"]["ai_typical"] + BASELINES["burstiness"]["human_typical"]) / 2
return "human" if value > midpoint else "ai"
case "sentence_length_cov":
midpoint = (BASELINES["sentence_length_cov"]["ai_typical"] + BASELINES["sentence_length_cov"]["human_typical"]) / 2
return "human" if value > midpoint else "ai"
case "paragraph_length_cov":
midpoint = (BASELINES["paragraph_length_cov"]["ai_typical"] + BASELINES["paragraph_length_cov"]["human_typical"]) / 2
return "human" if value > midpoint else "ai"
case "contraction_rate":
if value >= 0.65:
return "human"
elif value <= 0.40:
return "ai"
return "neutral"
case "passive_voice_pct":
if value > 0.25:
return "ai"
elif value <= 0.20:
return "human"
return "neutral"
case "ly_adverbs_per_100":
# AI tends to overuse adverbs
if value > 2.5:
return "ai"
elif value < 1.5:
return "human"
return "neutral"
case "concrete_noun_density":
# Humans use more concrete language
if value > 0.55:
return "human"
elif value < 0.40:
return "ai"
return "neutral"
case _:
return "neutral"
def determine_verdict(scores: dict[str, str]) -> str:
"""Determine overall verdict based on majority of metric signals."""
ai_count = sum(1 for v in scores.values() if v == "ai")
human_count = sum(1 for v in scores.values() if v == "human")
total_decisive = ai_count + human_count
if total_decisive == 0:
return "mixed"
ai_ratio = ai_count / total_decisive
if ai_ratio >= 0.6:
return "likely_ai"
elif ai_ratio <= 0.4:
return "likely_human"
return "mixed"
def analyze(text: str) -> dict:
"""Run full analysis on input text."""
tokens = tokenize(text)
sentences = split_sentences(text)
paragraphs = split_paragraphs(text)
metrics = {
"ttr": round(calc_ttr(tokens), 4),
"burstiness": round(calc_burstiness(sentences), 4),
"shannon_entropy": round(calc_shannon_entropy(tokens), 4),
"sentence_length_cov": round(calc_sentence_length_cov(sentences), 4),
"mean_sentence_length": round(calc_mean_sentence_length(sentences), 2),
"paragraph_length_cov": round(calc_paragraph_length_cov(paragraphs), 4),
"ly_adverbs_per_100": round(calc_ly_adverbs_per_100(tokens), 4),
"passive_voice_pct": round(calc_passive_voice_pct(text), 4),
"contraction_rate": round(calc_contraction_rate(text), 4),
"concrete_noun_density": round(calc_concrete_noun_density(tokens), 4),
}
scored_metrics = [
"ttr", "burstiness", "sentence_length_cov", "paragraph_length_cov",
"contraction_rate", "passive_voice_pct", "ly_adverbs_per_100",
"concrete_noun_density",
]
signals = {name: score_metric(name, metrics[name]) for name in scored_metrics}
verdict = determine_verdict(signals)
return {
"metrics": metrics,
"signals": signals,
"verdict": verdict,
"baselines": BASELINES,
"meta": {
"total_tokens": len(tokens),
"unique_tokens": len(set(tokens)),
"total_sentences": len(sentences),
"total_paragraphs": len(paragraphs),
},
}
def main() -> None:
parser = argparse.ArgumentParser(
description="Analyze text for AI vs human authorship signals.",
)
parser.add_argument(
"--file", "-f",
type=str,
help="Path to text file to analyze (reads stdin if omitted)",
)
args = parser.parse_args()
if args.file:
with open(args.file, encoding="utf-8") as f:
text = f.read()
else:
text = sys.stdin.read()
if not text.strip():
print(json.dumps({"error": "Empty input"}), file=sys.stdout)
sys.exit(1)
result = analyze(text)
print(json.dumps(result, indent=2))
if __name__ == "__main__":
main()