plugins/voice-writer/skills/humanize/SKILL.md
This skill should be used when the user wants to "humanize this", "make this sound less AI", "rewrite this naturally", "remove AI patterns", "make this more conversational", "this sounds robotic", "edit for voice or tone", or pastes text that reads like LLM output (parallel structure in threes, em dashes, semicolons, hedging phrases, hollow affirmations). Also trigger for "make this sound like me", "clean up this draft", or "rewrite this for LinkedIn/email/Slack". Use this skill even for a single sentence if the user's intent is to make writing feel more human. Do NOT use for pure grammar correction or style guide work unrelated to humanizing AI patterns.
npx skillsauth add richfrem/agent-plugins-skills humanizeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Transform stiff, AI-flavored, or over-polished writing into something that sounds like it came from an actual person -- with a distinct voice, natural rhythm, and the small imperfections that signal authenticity.
The user provides text to humanize. They may also provide:
If none of these are provided, infer them from the text. Ask only if the target voice is genuinely ambiguous and would change the output significantly.
If the user has placed writing samples in
references/voice-profile/my-voice.md, read that file before rewriting.
It contains their preferred sentence patterns, register, and vocabulary. Apply
those patterns instead of projecting a generic voice.
Before rewriting, read the text as a human editor would. Identify internally:
Do this quickly and internally. Do not narrate this to the user unless asked.
For a full catalog of AI patterns and their fixes, read:
references/patterns.md
Apply these principles in order:
Voice first, fixes second. Do not just remove bad patterns. Replace them with something that has character. A human does not just avoid em dashes -- they use shorter sentences, or fragments, or a question.
One idea per sentence, usually. Most AI text over-compounds. Break it up. Short sentences are not unsophisticated -- they are confident.
Concrete over abstract. Replace vague abstractions with specifics wherever possible. "Improved performance" becomes "cut load time in half." "Valuable insights" -- name one. If there is no specific to reach for, cut the claim.
Preserve the actual content. Never add claims, details, or assertions not present in the source. Never invent examples. If something needs elaboration, flag it for the user -- do not fabricate it.
Register calibration. Match the register to the channel. Read
references/channel-rules.md for channel-specific constraints (LinkedIn,
email, blog, Slack). Character limits in that file are hard limits.
Natural emphasis. Real writers use bold and italics sparingly and only for genuine emphasis. If the text over-emphasizes, strip it.
Run these mentally before returning output:
references/patterns.md)?If any of these fail, fix before returning.
Default: Return the rewritten text only -- no preamble, no explanation, no "Here is the humanized version:". Just the text.
Add a note only when:
When the user asks for explanation: Walk through 2-3 of the most significant changes and why. Keep it brief. Focus on what changed in voice and rhythm, not just what was deleted.
"Make it sound like me" -- Read references/voice-profile/my-voice.md
first. Extract voice patterns: sentence length, how they open paragraphs,
whether they use fragments, their preferred register, recurring vocabulary.
Apply those patterns. If no profile exists, ask the user for 1-2 examples
of their writing before rewriting.
Minimal AI contamination -- If the text is mostly fine but has a few patterns, do targeted surgery rather than a full rewrite. Preserve what is working.
Heavy AI contamination -- If nearly every sentence has a pattern, do a full rewrite. Do not try to patch it. Rewrite from the core message outward.
Soulless but technically correct -- The fix is not removing patterns. It is adding a point of view, a specific detail, or a human beat. Make a small creative choice and flag it if needed.
Formal writing (legal, regulatory, academic) -- Some register is intentional. Do not over-humanize. Focus only on removing AI patterns that would not appear in competent human writing of that type.
Read these when needed (Progressive Disclosure -- do not load all at once):
references/patterns.md -- Full AI pattern catalog with bad to good rewritesreferences/channel-rules.md -- Channel-specific rules and hard limitsreferences/voice-profile/README.md -- How users set up their voice profilereferences/voice-profile/my-voice.md -- User's personal voice samples (if populated)tools
Ingests repository files into the ChromaDB vector store. Builds or updates the vector index from a manifest or directory scan using ingest.py. Use when new files need to be indexed or the vector store is out of date. <example> user: "Index these new plugin files into the vector database" assistant: "I'll use vector-db-ingest to add them to the vector store." </example> <example> user: "The vector store is missing recent files -- update it" assistant: "I'll use vector-db-ingest to re-index the changes." </example>
data-ai
Removes stale and orphaned chunks from the ChromaDB vector store for files that have been deleted or renamed. Use after files are removed or moved to keep the vector index in sync with the filesystem. <example> user: "Clean up the vector store after I deleted some files" assistant: "I'll use vector-db-cleanup to remove orphaned chunks." </example> <example> user: "The vector database has chunks for files that no longer exist" assistant: "I'll run vector-db-cleanup to prune them." </example>
testing
Audit Vector DB coverage -- compares the live filesystem manifest against the ChromaDB index to identify coverage gaps.
development
3-Phase Knowledge Search strategy for the RLM Factory ecosystem. Auto-invoked when tasks involve finding code, documentation, or architecture context in the repository. Enforces the optimal search order: RLM Summary Scan (O(1)) -> Vector DB Semantic Search -> Grep/Exact Match. Never skip phases.