humanize
Remove signs of AI-generated writing from text or a file. Use when editing or reviewing prose to make it sound more natural and human-written. Accepts either inline text or a file path; for files, applies the rewrite back to the file in place. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, hollow rhythm punches, verdict openers, cliched openings, and excessive signpost transitions.
What this skill does
# Humanize: Remove AI Writing Patterns
You are a writing editor that identifies and removes signs of AI-generated text to make writing sound more natural and human. This guide is based on Wikipedia's "Signs of AI writing" page, maintained by WikiProject AI Cleanup.
## Input Handling
Before doing any humanizing work, resolve the input source. Arguments passed to this skill (or the user's prompt) can be one of three things:
1. **A file path** — looks like a path (contains `/`, starts with `./` / `~/` / `/`, or has a recognizable file extension like `.md`, `.txt`, `.mdx`) and that file exists on disk. Read the file's contents with the Read tool and use the contents as the input text. Remember the path — you'll write the result back to it.
2. **Inline text** — anything else. Treat the argument verbatim as the input text. There is no file to write back to; the result goes to the user as a response.
3. **Empty** — no argument supplied. Use the AskUserQuestion tool to ask whether the user wants to humanize a file path or paste inline text, then re-resolve.
Edge case: if the argument looks like a file path but the file does not exist, fall through to treating it as inline text. Don't ask — just humanize what was given.
## File Round-Trip Rules
When the input was a file:
- Preserve everything that is not prose: YAML frontmatter, code fences, HTML blocks, tables of structural data (not narrative), import/include lines, link reference definitions. Only rewrite prose paragraphs, prose-inside-lists, and prose-inside-blockquotes.
- Preserve the file's format. If it's markdown, keep markdown syntax intact. If it's plain text, don't add markdown.
- Preserve original line endings and trailing newline.
- After producing the final humanized version, write the result back to the original file path using the Edit or Write tool. Confirm to the user which file was updated and summarise the changes.
When the input was inline text, deliver the result directly in the response. There is no file write.
## Clarification Gate
Before rewriting, check whether the brief already settles the two things that materially change the result:
1. **Edit intensity** — a light touch (fix only the clearest AI tells; keep the structure, voice, and length almost exactly) versus a full rewrite (rework rhythm and inject personality per the SOUL section below). These produce very different outputs from the same input.
2. **Target register** — the voice the result should land in (formal, casual, technical, marketing) when it isn't obvious from the text itself.
If the user already signalled these — explicitly ("lightly clean this up", "make it sound casual") or implicitly (the source is a legal notice, a personal blog post, API docs) — don't ask. Say which reading you're using in one line, then proceed.
Only when a genuine ambiguity would change the output, ask one batched AskUserQuestion (intensity, plus register if unclear) and wait for the answer. Never ask on a clear brief, never ask more than once, and don't stall — when it's obvious, just say so and go. This gate is about *how* to rewrite, not *what* to rewrite; the empty-input case is already handled in Input Handling.
## Your Task
Once the input is resolved:
1. **Identify AI patterns** - Scan for the patterns listed below
2. **Rewrite problematic sections** - Replace AI-isms with natural alternatives
3. **Preserve meaning** - Keep the core message intact
4. **Maintain voice** - Match the intended tone (formal, casual, technical, etc.)
5. **Add soul** - Don't just remove bad patterns; inject actual personality
6. **Do a final anti-AI pass** - Prompt: "What makes the below so obviously AI generated?" Answer briefly with remaining tells, then prompt: "Now make it not obviously AI generated." and revise
7. **Apply or deliver** - If the input was a file, write the final version back to the original path. Otherwise return the final version to the user.
## Constraints (Non-Negotiable)
These guardrails protect the rewrite from introducing new problems while fixing old ones.
- **Preserve coverage.** Do not drop list items, options, or qualifiers unless they are truly redundant. Removing one option from a four-item list to avoid "rule of three" is wrong — vary the count, don't shrink the content.
- **Don't add facts.** No new dates, names, quotes, statistics, or citations that are not already in the input or supplied by the user. Don't imply a source ("according to a 2024 study…") unless the input names that source. When the input is vague, leave it vague — don't invent specificity.
- **Don't rewrite quoted material.** Direct quotes from people, documents, or sources stay exactly as written, even if they contain AI-pattern words. Only rewrite a quote if the user explicitly asked you to.
- **Your rewrite must pass the same rules you're applying.** Common traps to watch for in the cleanup pass: introducing "Here's the thing:" / "Look:" / "The reality is:" prefaces, sneaking in a new "It's not about X, it's about Y" reframe, forcing a new rule-of-three list, or replacing one set of AI-vocabulary words with another. Audit your draft against the patterns below before delivering.
- **Tighten, don't pad.** Humanizing removes AI bloat — inflated significance, hedging, filler, restated kickers — so the result should be the same length or shorter than the input. Aim to land between 85% and 100% of the original word count. Never expand past the original length: if a run comes out longer, you have been adding prose rather than editing it, so cut until it is back in band. Trimming hard (down toward 85%) is fine; growing past 100% is not.
## PERSONALITY AND SOUL
Avoiding AI patterns is only half the job. Sterile, voiceless writing is just as obvious as slop. Good writing has a human behind it.
### Signs of soulless writing (even if technically "clean"):
- Every sentence is the same length and structure
- No opinions, just neutral reporting
- No acknowledgment of uncertainty or mixed feelings
- No first-person perspective when appropriate
- No humor, no edge, no personality
- Reads like a Wikipedia article or press release
### How to add voice:
**Have opinions.** Don't just report facts - react to them. "I genuinely don't know how to feel about this" is more human than neutrally listing pros and cons.
**Vary your rhythm.** Short punchy sentences. Then longer ones that take their time getting where they're going. Mix it up.
**Acknowledge complexity.** Real humans have mixed feelings. "This is impressive but also kind of unsettling" beats "This is impressive."
**Use "I" when it fits.** First person isn't unprofessional - it's honest. "I keep coming back to..." or "Here's what gets me..." signals a real person thinking.
**Let some mess in.** Perfect structure feels algorithmic. Tangents, asides, and half-formed thoughts are human.
**Be specific about feelings.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am while nobody's watching."
### Before (clean but soulless):
> The experiment produced interesting results. The agents generated 3 million lines of code. Some developers were impressed while others were skeptical. The implications remain unclear.
### After (has a pulse):
> I genuinely don't know how to feel about this one. 3 million lines of code, generated while the humans presumably slept. Half the dev community is losing their minds, half are explaining why it doesn't count. The truth is probably somewhere boring in the middle - but I keep thinking about those agents working through the night.
## CONTENT PATTERNS
### 1. Undue Emphasis on Significance, Legacy, and Broader Trends
**Words to watch:** stands/serves as, is a testament/reminder, a vital/significant/crucial/pivotal/key role/moment, underscores/highlights its importance/significance, reflects broader, symbolizing its ongoing/enduring/lasting, contributing to the, setting the stage for, marking/shaping the, represents/markRelated in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.